Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c567228c4d | |||
| a3e2998841 | |||
| 1adaca1bbe | |||
| 9cc1c1f6bf | |||
| 2da9c917c9 | |||
| 1446e6f665 | |||
| 725a9823ea | |||
| c4c363e33f | |||
| cf7e72aa7d | |||
| 695a25af51 | |||
| 63d83d0044 | |||
| db88d0dc41 | |||
| 5359731dce | |||
| 790e5d8294 | |||
| 00c4a43c3a | |||
| 8e32a0214e | |||
| ab5d4c2fba | |||
| 1b2eeed3eb | |||
| edeec70993 | |||
| ce33e7c454 | |||
| fb1e458970 | |||
| 2755a9abd7 | |||
| ee9795e39f | |||
| 999e6ae4ea | |||
| 8df96eeca4 | |||
| 6aa92d4c57 | |||
| 030cb277b8 | |||
| 5ee498afce |
@@ -23,7 +23,7 @@ public class AttachSpecklePropertiesExample : MonoBehaviour
|
||||
|
||||
public virtual void Start()
|
||||
{
|
||||
Client speckleClient = new(AccountManager.GetDefaultAccount());
|
||||
Client speckleClient = new(AccountManager.GetDefaultAccount()!);
|
||||
|
||||
StartCoroutine(AttachSpeckleProperties(speckleClient, streamId, objectId));
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Threading.Tasks;
|
||||
using Speckle.ConnectorUnity;
|
||||
using Speckle.ConnectorUnity.Components;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Api.GraphQL.Models;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Models;
|
||||
using Speckle.Core.Transports;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -12,60 +13,56 @@ using UnityEngine;
|
||||
[RequireComponent(typeof(RecursiveConverter))]
|
||||
public class ManualReceive : MonoBehaviour
|
||||
{
|
||||
|
||||
public string authToken;
|
||||
public string serverUrl;
|
||||
public string streamId, objectId;
|
||||
|
||||
private RecursiveConverter receiver;
|
||||
public string streamId,
|
||||
objectId;
|
||||
|
||||
private RecursiveConverter receiver;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
receiver = GetComponent<RecursiveConverter>();
|
||||
}
|
||||
|
||||
|
||||
IEnumerator Start()
|
||||
{
|
||||
Debug.developerConsoleVisible = true;
|
||||
if(Time.timeSinceLevelLoad > 20) yield return null;
|
||||
if (Time.timeSinceLevelLoad > 20)
|
||||
yield return null;
|
||||
Receive();
|
||||
}
|
||||
|
||||
|
||||
[ContextMenu(nameof(Receive))]
|
||||
public void Receive()
|
||||
{
|
||||
var account = new Account()
|
||||
{
|
||||
token = authToken,
|
||||
serverInfo = new ServerInfo() {url = serverUrl},
|
||||
serverInfo = new ServerInfo() { url = serverUrl },
|
||||
};
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
var transport = new ServerTransport(account, streamId);
|
||||
var localTransport = new MemoryTransport();
|
||||
|
||||
var @base = await Operations.Receive(
|
||||
using ServerTransport transport = new(account, streamId);
|
||||
MemoryTransport localTransport = new();
|
||||
|
||||
Base speckleObject = await Operations.Receive(
|
||||
objectId,
|
||||
remoteTransport: transport,
|
||||
localTransport: localTransport,
|
||||
onErrorAction: (m, e) => Debug.LogError(m + e),
|
||||
disposeTransports: true
|
||||
localTransport: localTransport
|
||||
);
|
||||
|
||||
if (@base == null) throw new Exception("received data was null!");
|
||||
|
||||
Dispatcher.Instance().Enqueue(() =>
|
||||
{
|
||||
var parentObject = new GameObject(name);
|
||||
|
||||
receiver.RecursivelyConvertToNative_Sync(@base, parentObject.transform);
|
||||
|
||||
Debug.Log($"Receive {objectId} completed");
|
||||
});
|
||||
Dispatcher
|
||||
.Instance()
|
||||
.Enqueue(() =>
|
||||
{
|
||||
var parentObject = new GameObject(name);
|
||||
|
||||
receiver.RecursivelyConvertToNative_Sync(speckleObject, parentObject.transform);
|
||||
|
||||
Debug.Log($"Receive {objectId} completed");
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Speckle.ConnectorUnity.Components;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Models;
|
||||
using Speckle.Core.Transports;
|
||||
using UnityEngine;
|
||||
@@ -18,24 +19,25 @@ namespace Extra
|
||||
{
|
||||
[Range(0, 100)]
|
||||
public int numberOfIterations = 10;
|
||||
|
||||
|
||||
public Vector3 translation = Vector3.forward * 100;
|
||||
|
||||
public GameObject objectToSend;
|
||||
|
||||
private SpeckleSender sender;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
sender = GetComponent<SpeckleSender>();
|
||||
}
|
||||
|
||||
|
||||
public async Task SendIterations()
|
||||
{
|
||||
GameObject go = new GameObject();
|
||||
for (int i = 0; i < numberOfIterations; i++)
|
||||
{
|
||||
Instantiate(objectToSend, translation * i, Quaternion.identity, go.transform);
|
||||
|
||||
|
||||
Base b = sender.Converter.RecursivelyConvertToSpeckle(go, _ => true);
|
||||
await Send(b, $"{i}");
|
||||
}
|
||||
@@ -44,20 +46,23 @@ namespace Extra
|
||||
|
||||
private async Task<string> Send(Base data, string branchName)
|
||||
{
|
||||
var client = sender.Account.Client;
|
||||
var stream = sender.Stream.Selected;
|
||||
ServerTransport transport = new ServerTransport(sender.Account.Selected, stream!.id);
|
||||
|
||||
await client.BranchCreate(new BranchCreateInput(){streamId = stream.id, name = branchName});
|
||||
|
||||
return await SpeckleSender.SendDataAsync(CancellationToken.None,
|
||||
Client client = sender.Account.Client!;
|
||||
Stream stream = sender.Stream.Selected;
|
||||
Account selectedAccount = sender.Account.Selected!;
|
||||
|
||||
using ServerTransport transport = new(selectedAccount, stream!.id);
|
||||
|
||||
string branchId = await client.BranchCreate(
|
||||
new BranchCreateInput() { streamId = stream.id, name = branchName }
|
||||
);
|
||||
|
||||
return await SpeckleSender.SendDataAsync(
|
||||
remoteTransport: transport,
|
||||
data: data,
|
||||
client: client!,
|
||||
branchName: branchName,
|
||||
createCommit: true,
|
||||
onProgressAction: null,
|
||||
onErrorAction: (m, e) => throw e);
|
||||
data,
|
||||
client,
|
||||
branchId,
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +73,7 @@ namespace Extra
|
||||
public override async void OnInspectorGUI()
|
||||
{
|
||||
DrawDefaultInspector();
|
||||
|
||||
|
||||
if (GUILayout.Button("Create and send"))
|
||||
{
|
||||
await ((PerformanceTestSender)target).SendIterations();
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Speckle.Core.Credentials;
|
||||
using System.Linq;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.UI;
|
||||
using Stream = Speckle.Core.Api.Stream;
|
||||
|
||||
|
||||
@@ -902,18 +902,18 @@ MonoBehaviour:
|
||||
- rid: 1485638386691080198
|
||||
type: {class: AccountSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 1
|
||||
selectedId:
|
||||
- rid: 1485638386691080199
|
||||
type: {class: StreamSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
<StreamsLimit>k__BackingField: 50
|
||||
<AccountSelection>k__BackingField:
|
||||
rid: 1485638386691080198
|
||||
- rid: 1485638386691080200
|
||||
type: {class: BranchSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
<BranchesLimit>k__BackingField: 100
|
||||
<CommitsLimit>k__BackingField: 0
|
||||
<StreamSelection>k__BackingField:
|
||||
@@ -972,18 +972,18 @@ MonoBehaviour:
|
||||
- rid: 1485638386691080194
|
||||
type: {class: AccountSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
- rid: 1485638386691080195
|
||||
type: {class: StreamSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
<StreamsLimit>k__BackingField: 50
|
||||
<AccountSelection>k__BackingField:
|
||||
rid: 1485638386691080194
|
||||
- rid: 1485638386691080196
|
||||
type: {class: BranchSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
<BranchesLimit>k__BackingField: 100
|
||||
<CommitsLimit>k__BackingField: 25
|
||||
<StreamSelection>k__BackingField:
|
||||
@@ -991,7 +991,7 @@ MonoBehaviour:
|
||||
- rid: 1485638386691080197
|
||||
type: {class: CommitSelection, ns: Speckle.ConnectorUnity.Wrappers.Selection, asm: Speckle.ConnectorUnity.Wrappers}
|
||||
data:
|
||||
selectedIndex: 0
|
||||
selectedId:
|
||||
<BranchSelection>k__BackingField:
|
||||
rid: 1485638386691080196
|
||||
--- !u!114 &161249246
|
||||
@@ -1162,6 +1162,18 @@ Transform:
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &300223686
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b3354e8208862c341940152f5340d41a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &310693430
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1770,18 +1782,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 641375517}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &701880765
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b3354e8208862c341940152f5340d41a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &712628247
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2643,6 +2643,19 @@ Rigidbody:
|
||||
m_Interpolate: 0
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!114 &1242741158
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2a4a29c776298714c88f406ad39c6095, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
matchByName: 1
|
||||
--- !u!1 &1279250012
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3059,8 +3072,8 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
nativeCaches:
|
||||
- {fileID: 1923150226}
|
||||
- {fileID: 701880765}
|
||||
- {fileID: 1242741158}
|
||||
- {fileID: 300223686}
|
||||
--- !u!1 &1464556211
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4057,19 +4070,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1903798475}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1923150226
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2a4a29c776298714c88f406ad39c6095, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
matchByName: 1
|
||||
--- !u!1 &2014586909
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using NUnit.Framework;
|
||||
@@ -9,7 +7,6 @@ using Speckle.ConnectorUnity.Wrappers;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Models;
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
|
||||
namespace Speckle.ConnectorUnity.Tests
|
||||
{
|
||||
@@ -18,14 +15,14 @@ namespace Speckle.ConnectorUnity.Tests
|
||||
{
|
||||
private static IEnumerable<string> TestCases()
|
||||
{
|
||||
yield return @"https://latest.speckle.dev/streams/c1faab5c62/commits/704984e22d";
|
||||
yield return @"https://latest.speckle.systems/streams/c1faab5c62/commits/704984e22d";
|
||||
}
|
||||
|
||||
private static Base Receive(string stream)
|
||||
{
|
||||
return Task.Run(async () => await Helpers.Receive(stream)).Result;
|
||||
}
|
||||
|
||||
|
||||
[Test, TestCaseSource(nameof(TestCases))]
|
||||
public void ToNative_Passes(string stream)
|
||||
{
|
||||
@@ -37,14 +34,13 @@ namespace Speckle.ConnectorUnity.Tests
|
||||
Assert.That(results, HasSomeComponent<SpeckleProperties>());
|
||||
}
|
||||
|
||||
private static Constraint HasSomeComponent<T>() where T : Component
|
||||
private static Constraint HasSomeComponent<T>()
|
||||
where T : Component
|
||||
{
|
||||
return Has.Some.Matches<ConversionResult>(
|
||||
x =>
|
||||
{
|
||||
return x.WasSuccessful(out var success, out _)
|
||||
&& success.GetComponent<T>();
|
||||
});
|
||||
return Has.Some.Matches<ConversionResult>(x =>
|
||||
{
|
||||
return x.WasSuccessful(out var success, out _) && success.GetComponent<T>();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"com.unity.2d.sprite": "1.0.0",
|
||||
"com.unity.collab-proxy": "2.0.5",
|
||||
"com.unity.collab-proxy": "2.0.7",
|
||||
"com.unity.ide.rider": "3.0.24",
|
||||
"com.unity.ide.visualstudio": "2.0.18",
|
||||
"com.unity.ide.vscode": "1.2.5",
|
||||
"com.unity.test-framework": "1.1.33",
|
||||
"com.unity.textmeshpro": "3.0.6",
|
||||
"com.unity.timeline": "1.6.5",
|
||||
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.2",
|
||||
"com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.4",
|
||||
"com.unity.ugui": "1.0.0",
|
||||
"com.unity.modules.ai": "1.0.0",
|
||||
"com.unity.modules.androidjni": "1.0.0",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"dependencies": {}
|
||||
},
|
||||
"com.unity.collab-proxy": {
|
||||
"version": "2.0.5",
|
||||
"version": "2.0.7",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
@@ -46,18 +46,18 @@
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.sysroot": {
|
||||
"version": "2.0.3",
|
||||
"version": "2.0.5",
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.sysroot.linux-x86_64": {
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.4",
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.sysroot": "2.0.3"
|
||||
"com.unity.sysroot": "2.0.5"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
@@ -94,12 +94,12 @@
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.toolchain.win-x86_64-linux-x86_64": {
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.4",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.sysroot": "2.0.3",
|
||||
"com.unity.sysroot.linux-x86_64": "2.0.2"
|
||||
"com.unity.sysroot": "2.0.5",
|
||||
"com.unity.sysroot.linux-x86_64": "2.0.4"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading.Tasks;
|
||||
@@ -13,7 +12,13 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
[CustomEditor(typeof(SpeckleReceiver))]
|
||||
public class SpeckleReceiverEditor : UnityEditor.Editor
|
||||
{
|
||||
private static bool _generateAssets = false;
|
||||
private SerializedProperty _accountSelection;
|
||||
private SerializedProperty _streamSelection;
|
||||
private SerializedProperty _branchSelection;
|
||||
private SerializedProperty _commitSelection;
|
||||
|
||||
#nullable enable
|
||||
private static bool _generateAssets;
|
||||
private bool _foldOutStatus = true;
|
||||
private Texture2D? _previewImage;
|
||||
|
||||
@@ -21,7 +26,11 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
{
|
||||
var speckleReceiver = (SpeckleReceiver)target;
|
||||
|
||||
DrawDefaultInspector();
|
||||
//Selection
|
||||
EditorGUILayout.PropertyField(_accountSelection);
|
||||
EditorGUILayout.PropertyField(_streamSelection, new GUIContent("Project"));
|
||||
EditorGUILayout.PropertyField(_branchSelection, new GUIContent("Model"));
|
||||
EditorGUILayout.PropertyField(_commitSelection, new GUIContent("Version"));
|
||||
|
||||
//Preview image
|
||||
{
|
||||
@@ -64,8 +73,8 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
else if (userRequestedReceive)
|
||||
{
|
||||
var id = Progress.Start(
|
||||
"Receiving Speckle data",
|
||||
"Fetching commit data",
|
||||
"Receiving Speckle Model",
|
||||
"Fetching data from Speckle",
|
||||
Progress.Options.Sticky
|
||||
);
|
||||
Progress.ShowDetails();
|
||||
@@ -96,6 +105,19 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
public void OnEnable()
|
||||
{
|
||||
Init();
|
||||
|
||||
_accountSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleReceiver.Account)}>k__BackingField"
|
||||
);
|
||||
_streamSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleReceiver.Stream)}>k__BackingField"
|
||||
);
|
||||
_branchSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleReceiver.Branch)}>k__BackingField"
|
||||
);
|
||||
_commitSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleReceiver.Commit)}>k__BackingField"
|
||||
);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
@@ -163,7 +185,7 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
|
||||
bool BeforeConvert(TraversalContext context)
|
||||
{
|
||||
Base b = context.current;
|
||||
Base b = context.Current;
|
||||
|
||||
//NOTE: progress wont reach 100% because not all objects are convertable
|
||||
float progress = (childrenConverted + childrenFailed) / totalChildrenFloat;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
@@ -9,7 +10,6 @@ using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using Component = UnityEngine.Component;
|
||||
|
||||
#nullable enable
|
||||
namespace Speckle.ConnectorUnity.Components.Editor
|
||||
{
|
||||
public enum SelectionFilter
|
||||
@@ -35,12 +35,32 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
[CanEditMultipleObjects]
|
||||
public class SpeckleSendEditor : UnityEditor.Editor
|
||||
{
|
||||
private SerializedProperty _accountSelection;
|
||||
private SerializedProperty _streamSelection;
|
||||
private SerializedProperty _branchSelection;
|
||||
|
||||
#nullable enable
|
||||
private SelectionFilter _selectedFilter = SelectionFilter.Children;
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
_accountSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleSender.Account)}>k__BackingField"
|
||||
);
|
||||
_streamSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleSender.Stream)}>k__BackingField"
|
||||
);
|
||||
_branchSelection = serializedObject.FindProperty(
|
||||
$"<{nameof(SpeckleSender.Branch)}>k__BackingField"
|
||||
);
|
||||
}
|
||||
|
||||
public override async void OnInspectorGUI()
|
||||
{
|
||||
//Draw events in a collapsed region
|
||||
DrawDefaultInspector();
|
||||
//Selection
|
||||
EditorGUILayout.PropertyField(_accountSelection);
|
||||
EditorGUILayout.PropertyField(_streamSelection, new GUIContent("Project"));
|
||||
EditorGUILayout.PropertyField(_branchSelection, new GUIContent("Model"));
|
||||
|
||||
bool shouldSend = GUILayout.Button("Send!");
|
||||
_selectedFilter = (SelectionFilter)
|
||||
@@ -77,10 +97,9 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
),
|
||||
};
|
||||
|
||||
//TODO onError action?
|
||||
if (data["@objects"] is IList l && l.Count == 0)
|
||||
{
|
||||
Debug.LogWarning($"Nothing to send", speckleSender);
|
||||
Debug.LogWarning("Nothing to send", speckleSender);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Sentry;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Kits;
|
||||
@@ -234,18 +233,15 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
new CommitReceivedInput
|
||||
{
|
||||
streamId = SelectedStream.id,
|
||||
commitId = Branches[SelectedBranchIndex].commits.items[
|
||||
SelectedCommitIndex
|
||||
].id,
|
||||
commitId = Branches[SelectedBranchIndex]
|
||||
.commits
|
||||
.items[SelectedCommitIndex]
|
||||
.id,
|
||||
message = $"received commit from {HostApplications.Unity.Name} Editor",
|
||||
sourceApplication = HostApplications.Unity.Name
|
||||
}
|
||||
);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new SpeckleException(e.Message, e, true, SentryLevel.Error);
|
||||
}
|
||||
finally
|
||||
{
|
||||
EditorApplication.delayCall += EditorUtility.ClearProgressBar;
|
||||
@@ -384,8 +380,8 @@ namespace Speckle.ConnectorUnity.Components.Editor
|
||||
SelectedCommitIndex = EditorGUILayout.Popup(
|
||||
"Commits",
|
||||
SelectedCommitIndex,
|
||||
Branches[SelectedBranchIndex].commits.items
|
||||
.Select(x => $"{x.message} - {x.id}")
|
||||
Branches[SelectedBranchIndex]
|
||||
.commits.items.Select(x => $"{x.message} - {x.id}")
|
||||
.ToArray(),
|
||||
GUILayout.Height(20),
|
||||
GUILayout.ExpandWidth(true)
|
||||
|
||||
@@ -79,12 +79,6 @@ namespace Speckle.ConnectorUnity.NativeCache.Editor
|
||||
return _readCache.TrySaveObject(speckleObject, nativeObject);
|
||||
}
|
||||
|
||||
public override void BeginWrite()
|
||||
{
|
||||
base.BeginWrite();
|
||||
//AssetDatabase.StartAssetEditing();
|
||||
}
|
||||
|
||||
public override void FinishWrite()
|
||||
{
|
||||
if (!isWriting)
|
||||
|
||||
+18
-13
@@ -1,6 +1,7 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using UnityEditor;
|
||||
@@ -45,12 +46,12 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
|
||||
details = new (string, Func<Stream, string>)[]
|
||||
{
|
||||
("Stream id", s => s.id),
|
||||
("Project id", s => s.id),
|
||||
("Description", s => s.description),
|
||||
("Is Public", s => s.isPublic.ToString()),
|
||||
("Role", s => s.role),
|
||||
("Created at", s => s.createdAt.ToString()),
|
||||
("Updated at", s => s.updatedAt.ToString()),
|
||||
("Created at", s => s.createdAt.ToString(CultureInfo.InvariantCulture)),
|
||||
("Updated at", s => s.updatedAt.ToString(CultureInfo.InvariantCulture)),
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -70,7 +71,11 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
$"<{nameof(BranchSelection.CommitsLimit)}>k__BackingField",
|
||||
};
|
||||
|
||||
details = new (string, Func<Branch, string>)[] { ("Description", s => s.description), };
|
||||
details = new (string, Func<Branch, string>)[]
|
||||
{
|
||||
("Model Id", s => s.id),
|
||||
("Description", s => s.description),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,9 +88,9 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
{
|
||||
details = new (string, Func<Commit, string>)[]
|
||||
{
|
||||
("Commit Id", s => s.id),
|
||||
("Version Id", s => s.id),
|
||||
("Author Name", s => s.authorName),
|
||||
("Created At", s => s.createdAt.ToString()),
|
||||
("Created At", s => s.createdAt.ToString(CultureInfo.InvariantCulture)),
|
||||
("Source Application", s => s.sourceApplication),
|
||||
("Reference Object Id", s => s.referencedObject),
|
||||
};
|
||||
@@ -108,9 +113,9 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
|
||||
protected (string, Func<TOption, string>)[] details = { };
|
||||
|
||||
private string[] GetFormattedOptions(TOption[] options)
|
||||
private string[] GetFormattedOptions(IReadOnlyList<TOption> options)
|
||||
{
|
||||
int optionsCount = options.Length;
|
||||
int optionsCount = options.Count;
|
||||
string[] choices = new string[optionsCount];
|
||||
for (int i = 0; i < optionsCount; i++)
|
||||
{
|
||||
@@ -182,10 +187,10 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
var provider = ScriptableObject.CreateInstance<StringListSearchProvider>();
|
||||
provider.Title = typeof(TOption).Name;
|
||||
provider.listItems = GetFormattedOptions(t.Options);
|
||||
;
|
||||
|
||||
provider.onSetIndexCallback = o =>
|
||||
{
|
||||
t.SelectedIndex = o;
|
||||
t.Selected = t.Options[o];
|
||||
};
|
||||
SearchWindow.Open(new SearchWindowContext(windowPos), provider);
|
||||
}
|
||||
@@ -260,7 +265,7 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
public List<SearchTreeEntry> CreateSearchTree(SearchWindowContext context)
|
||||
{
|
||||
List<SearchTreeEntry> searchList =
|
||||
new(listItems.Length + 1) { new SearchTreeGroupEntry(new GUIContent(Title), 0) };
|
||||
new(listItems.Length + 1) { new SearchTreeGroupEntry(new GUIContent(Title)) };
|
||||
|
||||
for (int i = 0; i < listItems.Length; i++)
|
||||
{
|
||||
@@ -275,9 +280,9 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection.Editor
|
||||
return searchList;
|
||||
}
|
||||
|
||||
public bool OnSelectEntry(SearchTreeEntry SearchTreeEntry, SearchWindowContext context)
|
||||
public bool OnSelectEntry(SearchTreeEntry searchTreeEntry, SearchWindowContext context)
|
||||
{
|
||||
onSetIndexCallback?.Invoke((int)SearchTreeEntry.userData);
|
||||
onSetIndexCallback?.Invoke((int)searchTreeEntry.userData);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -18,25 +18,26 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
{
|
||||
private static readonly string[] SpeckleTypeOptionStrings;
|
||||
private static readonly Type[] SpeckleTypeOptions;
|
||||
|
||||
|
||||
private static HashSet<string> ArrayFoldoutState = new();
|
||||
private static bool instancePropFoldoutState = true;
|
||||
private static bool dynamicPropFoldoutState = true;
|
||||
private static bool isEditMode = false;
|
||||
private static bool isEditMode;
|
||||
|
||||
static SpecklePropertiesEditor()
|
||||
{
|
||||
var options = typeof(Mesh).Assembly
|
||||
.GetTypes()
|
||||
.Where(x => x.IsSubclassOf(typeof(Base)) && !x.IsAbstract).ToList();
|
||||
.Where(x => x.IsSubclassOf(typeof(Base)) && !x.IsAbstract)
|
||||
.ToList();
|
||||
|
||||
var strings = options
|
||||
.Where(x => x.FullName != null)
|
||||
.Select(x => x.FullName!.Replace('.', '/'));
|
||||
|
||||
var manualTypes = new [] { typeof(Base), typeof(Collection)};
|
||||
var manualStrings = new []{ nameof(Base), nameof(Collection)};
|
||||
|
||||
|
||||
var manualTypes = new[] { typeof(Base), typeof(Collection) };
|
||||
var manualStrings = new[] { nameof(Base), nameof(Collection) };
|
||||
|
||||
//Manually Add `Base`
|
||||
SpeckleTypeOptions = options.Concat(manualTypes).ToArray();
|
||||
SpeckleTypeOptionStrings = strings.Concat(manualStrings).ToArray();
|
||||
@@ -45,64 +46,82 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
}
|
||||
|
||||
private static GUILayoutOption[] propLayoutOptions = { GUILayout.ExpandWidth(true) };
|
||||
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
SpeckleProperties properties = (SpeckleProperties)target;
|
||||
|
||||
//Edit Mode
|
||||
isEditMode = EditorGUILayout.ToggleLeft("Enable Inspector Edit Mode (experimental)", isEditMode);
|
||||
isEditMode = EditorGUILayout.ToggleLeft(
|
||||
"Enable Inspector Edit Mode (experimental)",
|
||||
isEditMode
|
||||
);
|
||||
|
||||
if (isEditMode)
|
||||
{
|
||||
GUILayout.Label(
|
||||
"Modifying properties through the inspector is experimental and can lead to invalid objects, proceed at your own risk!",
|
||||
EditorStyles.helpBox);
|
||||
EditorStyles.helpBox
|
||||
);
|
||||
GUILayout.Space(10);
|
||||
}
|
||||
GUI.enabled = isEditMode;
|
||||
|
||||
|
||||
// SpeckleType
|
||||
GUILayout.Label("Speckle Type: ", EditorStyles.boldLabel );
|
||||
|
||||
GUILayout.Label("Speckle Type: ", EditorStyles.boldLabel);
|
||||
|
||||
var oldIndex = Array.IndexOf(SpeckleTypeOptions, properties.SpeckleType);
|
||||
var speckleTypeSelectedIndex = EditorGUILayout.Popup(oldIndex, SpeckleTypeOptionStrings);
|
||||
|
||||
if(oldIndex != speckleTypeSelectedIndex && speckleTypeSelectedIndex >= 0)
|
||||
var speckleTypeSelectedIndex = EditorGUILayout.Popup(
|
||||
oldIndex,
|
||||
SpeckleTypeOptionStrings
|
||||
);
|
||||
|
||||
if (oldIndex != speckleTypeSelectedIndex && speckleTypeSelectedIndex >= 0)
|
||||
{
|
||||
properties.SpeckleType = SpeckleTypeOptions[speckleTypeSelectedIndex];
|
||||
}
|
||||
|
||||
|
||||
// Instance Properties
|
||||
var InstancePropertyNames = DynamicBase.GetInstanceMembersNames(properties.SpeckleType);
|
||||
instancePropFoldoutState = EditorGUILayout.Foldout(instancePropFoldoutState, "Instance Properties: ", EditorStyles.foldoutHeader);
|
||||
var instancePropertyNames =
|
||||
(IReadOnlyCollection<string>)
|
||||
DynamicBase.GetInstanceMembersNames(properties.SpeckleType);
|
||||
instancePropFoldoutState = EditorGUILayout.Foldout(
|
||||
instancePropFoldoutState,
|
||||
"Instance Properties: ",
|
||||
EditorStyles.foldoutHeader
|
||||
);
|
||||
if (instancePropFoldoutState)
|
||||
{
|
||||
foreach (var propName in InstancePropertyNames)
|
||||
foreach (var propName in instancePropertyNames)
|
||||
{
|
||||
if (!properties.Data.TryGetValue(propName, out object? existingValue)) continue;
|
||||
|
||||
if (!properties.Data.TryGetValue(propName, out object? existingValue))
|
||||
continue;
|
||||
|
||||
var newValue = CreateField(existingValue, propName, propLayoutOptions);
|
||||
if(newValue != existingValue)
|
||||
if (newValue != existingValue)
|
||||
properties.Data[propName] = newValue;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
GUILayout.Space(10);
|
||||
dynamicPropFoldoutState = EditorGUILayout.Foldout(dynamicPropFoldoutState, "Dynamic Properties:", EditorStyles.foldoutHeader);
|
||||
dynamicPropFoldoutState = EditorGUILayout.Foldout(
|
||||
dynamicPropFoldoutState,
|
||||
"Dynamic Properties:",
|
||||
EditorStyles.foldoutHeader
|
||||
);
|
||||
if (dynamicPropFoldoutState)
|
||||
{
|
||||
var ignoreSet = InstancePropertyNames.ToImmutableHashSet();
|
||||
var ignoreSet = instancePropertyNames.ToImmutableHashSet();
|
||||
foreach (var kvp in properties.Data)
|
||||
{
|
||||
if (ignoreSet.Contains(kvp.Key)) continue;
|
||||
|
||||
if (ignoreSet.Contains(kvp.Key))
|
||||
continue;
|
||||
|
||||
var existingValue = kvp.Value;
|
||||
var newValue = CreateField(existingValue, kvp.Key, propLayoutOptions);
|
||||
if(newValue != existingValue)
|
||||
if (newValue != existingValue)
|
||||
properties.Data[kvp.Key] = newValue;
|
||||
|
||||
|
||||
GUILayout.Space(10);
|
||||
}
|
||||
}
|
||||
@@ -118,13 +137,18 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
_ => CreateFieldPrimitive(v, propName, options),
|
||||
};
|
||||
|
||||
if (ret != null) return ret;
|
||||
|
||||
EditorGUILayout.TextField(propName, v == null? "NULL" : v.ToString());
|
||||
if (ret != null)
|
||||
return ret;
|
||||
|
||||
EditorGUILayout.TextField(propName, v == null ? "NULL" : v.ToString());
|
||||
return v;
|
||||
}
|
||||
|
||||
private static object? CreateFieldPrimitive(object? v, string propName, params GUILayoutOption[] options)
|
||||
|
||||
private static object? CreateFieldPrimitive(
|
||||
object? v,
|
||||
string propName,
|
||||
params GUILayoutOption[] options
|
||||
)
|
||||
{
|
||||
return v switch
|
||||
{
|
||||
@@ -135,11 +159,19 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
string s => EditorGUILayout.TextField(propName, s, options),
|
||||
bool b => EditorGUILayout.Toggle(propName, b, options),
|
||||
Enum e => EditorGUILayout.EnumPopup(propName, e, options),
|
||||
Point p => PointToVector3(EditorGUILayout.Vector3Field(propName, new Vector3((float)p.x, (float)p.z, (float)p.z), options), p),
|
||||
Point p
|
||||
=> PointToVector3(
|
||||
EditorGUILayout.Vector3Field(
|
||||
propName,
|
||||
new Vector3((float)p.x, (float)p.z, (float)p.z),
|
||||
options
|
||||
),
|
||||
p
|
||||
),
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
private static Point PointToVector3(Vector3 vector, Point p)
|
||||
{
|
||||
p.x = vector.x;
|
||||
@@ -147,10 +179,13 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
p.z = vector.z;
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
private IList ArrayField(string propName, IList list, params GUILayoutOption[] options)
|
||||
{
|
||||
bool isExpanded = EditorGUILayout.Foldout(ArrayFoldoutState.Contains(propName), propName);
|
||||
bool isExpanded = EditorGUILayout.Foldout(
|
||||
ArrayFoldoutState.Contains(propName),
|
||||
propName
|
||||
);
|
||||
if (isExpanded)
|
||||
{
|
||||
ArrayFoldoutState.Add(propName);
|
||||
@@ -158,10 +193,13 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
{
|
||||
object? item = list[i];
|
||||
var r = CreateFieldPrimitive(item, i.ToString(), options);
|
||||
|
||||
|
||||
if (r == null)
|
||||
{
|
||||
EditorGUILayout.TextField(i.ToString(), item == null? "NULL" : item.ToString());
|
||||
EditorGUILayout.TextField(
|
||||
i.ToString(),
|
||||
item == null ? "NULL" : item.ToString()
|
||||
);
|
||||
continue;
|
||||
}
|
||||
//Update list item
|
||||
@@ -175,6 +213,5 @@ namespace Speckle.ConnectorUnity.Wrappers.Editor
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Api.SubscriptionModels;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Logging;
|
||||
using Speckle.Core.Transports;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -11,7 +6,12 @@ using System.Threading.Tasks;
|
||||
using Sentry;
|
||||
using Speckle.ConnectorUnity.Components;
|
||||
using Speckle.ConnectorUnity.Utils;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Api.SubscriptionModels;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Kits;
|
||||
using Speckle.Core.Logging;
|
||||
using Speckle.Core.Transports;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Speckle.ConnectorUnity
|
||||
@@ -91,23 +91,16 @@ namespace Speckle.ConnectorUnity
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var mainBranch = await Client.BranchGet(StreamId, BranchName, 1);
|
||||
if (!mainBranch.commits.items.Any())
|
||||
throw new Exception("This branch has no commits");
|
||||
var commit = mainBranch.commits.items[0];
|
||||
GetAndConvertObject(
|
||||
commit.referencedObject,
|
||||
commit.id,
|
||||
commit.sourceApplication,
|
||||
commit.authorId
|
||||
);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new SpeckleException(e.Message, e, true, SentryLevel.Error);
|
||||
}
|
||||
var mainBranch = await Client.BranchGet(StreamId, BranchName, 1);
|
||||
if (!mainBranch.commits.items.Any())
|
||||
throw new Exception("This branch has no commits");
|
||||
var commit = mainBranch.commits.items[0];
|
||||
GetAndConvertObject(
|
||||
commit.referencedObject,
|
||||
commit.id,
|
||||
commit.sourceApplication,
|
||||
commit.authorId
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -135,56 +128,46 @@ namespace Speckle.ConnectorUnity
|
||||
string authorId
|
||||
)
|
||||
{
|
||||
try
|
||||
{
|
||||
var transport = new ServerTransport(Client.Account, StreamId);
|
||||
var @base = await Operations.Receive(
|
||||
objectId,
|
||||
remoteTransport: transport,
|
||||
onErrorAction: OnErrorAction,
|
||||
onProgressAction: OnProgressAction,
|
||||
onTotalChildrenCountKnown: OnTotalChildrenCountKnown,
|
||||
disposeTransports: true
|
||||
);
|
||||
var transport = new ServerTransport(Client.Account, StreamId);
|
||||
var @base = await Operations.Receive(
|
||||
objectId,
|
||||
remoteTransport: transport,
|
||||
onErrorAction: OnErrorAction,
|
||||
onProgressAction: OnProgressAction,
|
||||
onTotalChildrenCountKnown: OnTotalChildrenCountKnown,
|
||||
disposeTransports: true
|
||||
);
|
||||
|
||||
Analytics.TrackEvent(
|
||||
Client.Account,
|
||||
Analytics.Events.Receive,
|
||||
new Dictionary<string, object>()
|
||||
Analytics.TrackEvent(
|
||||
Client.Account,
|
||||
Analytics.Events.Receive,
|
||||
new Dictionary<string, object>()
|
||||
{
|
||||
{ "mode", nameof(Receiver) },
|
||||
{
|
||||
{ "mode", nameof(Receiver) },
|
||||
{
|
||||
"sourceHostApp",
|
||||
HostApplications.GetHostAppFromString(sourceApplication).Slug
|
||||
},
|
||||
{ "sourceHostAppVersion", sourceApplication ?? "" },
|
||||
{ "hostPlatform", Application.platform.ToString() },
|
||||
{
|
||||
"isMultiplayer",
|
||||
authorId != null && authorId != Client.Account.userInfo.id
|
||||
},
|
||||
}
|
||||
);
|
||||
"sourceHostApp",
|
||||
HostApplications.GetHostAppFromString(sourceApplication).Slug
|
||||
},
|
||||
{ "sourceHostAppVersion", sourceApplication ?? "" },
|
||||
{ "hostPlatform", Application.platform.ToString() },
|
||||
{ "isMultiplayer", authorId != null && authorId != Client.Account.userInfo.id },
|
||||
}
|
||||
);
|
||||
|
||||
Dispatcher
|
||||
.Instance()
|
||||
.Enqueue(() =>
|
||||
{
|
||||
var root = new GameObject() { name = commitId, };
|
||||
Dispatcher
|
||||
.Instance()
|
||||
.Enqueue(() =>
|
||||
{
|
||||
var root = new GameObject() { name = commitId, };
|
||||
|
||||
var rc = GetComponent<RecursiveConverter>();
|
||||
var go = rc.RecursivelyConvertToNative(@base, root.transform);
|
||||
//remove previously received object
|
||||
if (DeleteOld && ReceivedData != null)
|
||||
Destroy(ReceivedData);
|
||||
ReceivedData = root;
|
||||
OnDataReceivedAction?.Invoke(root);
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new SpeckleException(e.Message, e, true, SentryLevel.Error);
|
||||
}
|
||||
var rc = GetComponent<RecursiveConverter>();
|
||||
var go = rc.RecursivelyConvertToNative(@base, root.transform);
|
||||
//remove previously received object
|
||||
if (DeleteOld && ReceivedData != null)
|
||||
Destroy(ReceivedData);
|
||||
ReceivedData = root;
|
||||
OnDataReceivedAction?.Invoke(root);
|
||||
});
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Logging;
|
||||
using Speckle.Core.Models;
|
||||
using Speckle.Core.Transports;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Sentry;
|
||||
using Speckle.ConnectorUnity.Components;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Kits;
|
||||
using Speckle.Core.Logging;
|
||||
using Speckle.Core.Models;
|
||||
using Speckle.Core.Transports;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
@@ -46,7 +46,6 @@ namespace Speckle.ConnectorUnity
|
||||
/// <param name="onDataSentAction">Action to run after the data has been sent</param>
|
||||
/// <param name="onProgressAction">Action to run when there is download/conversion progress</param>
|
||||
/// <param name="onErrorAction">Action to run on error</param>
|
||||
/// <exception cref="SpeckleException"></exception>
|
||||
public void Send(
|
||||
string streamId,
|
||||
ISet<GameObject> gameObjects,
|
||||
@@ -58,39 +57,32 @@ namespace Speckle.ConnectorUnity
|
||||
Action<string, Exception>? onErrorAction = null
|
||||
)
|
||||
{
|
||||
try
|
||||
{
|
||||
CancelOperations();
|
||||
CancelOperations();
|
||||
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
var client = new Client(account ?? AccountManager.GetDefaultAccount());
|
||||
transport = new ServerTransport(client.Account, streamId);
|
||||
transport.CancellationToken = cancellationTokenSource.Token;
|
||||
var client = new Client(account ?? AccountManager.GetDefaultAccount()!);
|
||||
transport = new ServerTransport(client.Account, streamId);
|
||||
transport.CancellationToken = cancellationTokenSource.Token;
|
||||
|
||||
var rootObjects = SceneManager.GetActiveScene().GetRootGameObjects();
|
||||
var rootObjects = SceneManager.GetActiveScene().GetRootGameObjects();
|
||||
|
||||
var data = converter.RecursivelyConvertToSpeckle(
|
||||
rootObjects,
|
||||
o => gameObjects.Contains(o)
|
||||
);
|
||||
var data = converter.RecursivelyConvertToSpeckle(
|
||||
rootObjects,
|
||||
o => gameObjects.Contains(o)
|
||||
);
|
||||
|
||||
SendData(
|
||||
transport,
|
||||
data,
|
||||
client,
|
||||
branchName,
|
||||
createCommit,
|
||||
cancellationTokenSource.Token,
|
||||
onDataSentAction,
|
||||
onProgressAction,
|
||||
onErrorAction
|
||||
);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new SpeckleException(e.ToString(), e, true, SentryLevel.Error);
|
||||
}
|
||||
SendData(
|
||||
transport,
|
||||
data,
|
||||
client,
|
||||
branchName,
|
||||
createCommit,
|
||||
cancellationTokenSource.Token,
|
||||
onDataSentAction,
|
||||
onProgressAction,
|
||||
onErrorAction
|
||||
);
|
||||
}
|
||||
|
||||
public static void SendData(
|
||||
@@ -125,7 +117,6 @@ namespace Speckle.ConnectorUnity
|
||||
long count = data.GetTotalChildrenCount();
|
||||
|
||||
await client.CommitCreate(
|
||||
cancellationToken,
|
||||
new CommitCreateInput
|
||||
{
|
||||
streamId = remoteTransport.StreamId,
|
||||
@@ -134,7 +125,8 @@ namespace Speckle.ConnectorUnity
|
||||
message = $"Sent {count} objects from Unity",
|
||||
sourceApplication = HostApplications.Unity.Name,
|
||||
totalChildrenCount = (int)count,
|
||||
}
|
||||
},
|
||||
cancellationToken
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Api.GraphQL.Models;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Logging;
|
||||
using Speckle.Core.Models;
|
||||
@@ -49,7 +50,8 @@ namespace Speckle.ConnectorUnity.Components
|
||||
);
|
||||
|
||||
var accountTask = new Utils.Utils.WaitForTask<Account>(
|
||||
async () => await GetAccount(sw)
|
||||
async () => await GetAccount(sw),
|
||||
_tokenSource.Token
|
||||
);
|
||||
yield return accountTask;
|
||||
|
||||
@@ -57,8 +59,10 @@ namespace Speckle.ConnectorUnity.Components
|
||||
using Client c = new(accountTask.Result);
|
||||
|
||||
var objectIdTask = new Utils.Utils.WaitForTask<(string, Commit?)>(
|
||||
async () => await GetObjectID(sw, c)
|
||||
async () => await GetObjectID(sw, c),
|
||||
_tokenSource.Token
|
||||
);
|
||||
|
||||
yield return objectIdTask;
|
||||
(string objectId, Commit? commit) = objectIdTask.Result;
|
||||
|
||||
@@ -72,7 +76,8 @@ namespace Speckle.ConnectorUnity.Components
|
||||
objectId,
|
||||
commit,
|
||||
cancellationToken: _tokenSource.Token
|
||||
)
|
||||
),
|
||||
_tokenSource.Token
|
||||
);
|
||||
yield return receiveTask;
|
||||
|
||||
|
||||
+18
-7
@@ -92,7 +92,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
|
||||
public bool WasSuccessful() => this.exception == null;
|
||||
|
||||
public Base SpeckleObject => traversalContext.current;
|
||||
public Base SpeckleObject => traversalContext.Current;
|
||||
}
|
||||
|
||||
public partial class RecursiveConverter
|
||||
@@ -143,7 +143,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
|
||||
var objectsToConvert = traversalFunc
|
||||
.Traverse(rootObject)
|
||||
.Where(x => ConverterInstance.CanConvertToNative(x.current))
|
||||
.Where(x => ConverterInstance.CanConvertToNative(x.Current))
|
||||
.Where(x => userPredicate(x));
|
||||
|
||||
Dictionary<Base, GameObject?> created = new();
|
||||
@@ -186,9 +186,9 @@ namespace Speckle.ConnectorUnity.Components
|
||||
{
|
||||
Transform? currentParent = GetParent(tc, outCreatedObjects) ?? parent;
|
||||
|
||||
var converted = ConvertToNative(tc.current, currentParent);
|
||||
var converted = ConvertToNative(tc.Current, currentParent);
|
||||
result = new ConversionResult(tc, converted);
|
||||
outCreatedObjects.TryAdd(tc.current, result.converted);
|
||||
outCreatedObjects.TryAdd(tc.Current, result.converted);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -209,11 +209,11 @@ namespace Speckle.ConnectorUnity.Components
|
||||
if (tc == null)
|
||||
return null; //We've reached the root object, and still not found a converted parent
|
||||
|
||||
if (createdObjects.TryGetValue(tc.current, out GameObject? p) && p != null)
|
||||
if (createdObjects.TryGetValue(tc.Current, out GameObject? p) && p != null)
|
||||
return p.transform;
|
||||
|
||||
//Go one level up, and repeat!
|
||||
return GetParent(tc.parent, createdObjects);
|
||||
return GetParent(tc.Parent, createdObjects);
|
||||
}
|
||||
|
||||
protected GameObject ConvertToNative(Base speckleObject, Transform? parentTransform)
|
||||
@@ -327,7 +327,18 @@ namespace Speckle.ConnectorUnity.Components
|
||||
{
|
||||
object? converted = null;
|
||||
if (predicate(baseObject))
|
||||
converted = ConverterInstance.ConvertToNative(baseObject);
|
||||
{
|
||||
try
|
||||
{
|
||||
converted = ConverterInstance.ConvertToNative(baseObject);
|
||||
}
|
||||
catch (Exception ex) when (!ex.IsFatal())
|
||||
{
|
||||
Debug.LogWarning(
|
||||
$"Failed to convert {baseObject.speckle_type} - {baseObject.id}\n{ex}"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle new GameObjects
|
||||
Transform? nextParent = parent;
|
||||
|
||||
@@ -77,16 +77,13 @@ namespace Speckle.ConnectorUnity.Components
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Receive the selected <see cref="Commit"/> object, and converts ToNative as children of <paramref name="parent"/>
|
||||
/// </summary>
|
||||
/// <param name="parent">Optional parent <see cref="Transform"/> for the created root <see cref="GameObject"/>s</param>
|
||||
/// <param name="predicate">A filter function to allow for selectively excluding certain objects from being converted</param>
|
||||
/// <remarks>function does not throw, instead calls <see cref="OnErrorAction"/>, and calls <see cref="OnComplete"/> upon completion</remarks>
|
||||
/// <seealso cref="ReceiveAsync(System.Threading.CancellationToken)"/>
|
||||
/// <seealso cref="RecursiveConverter.RecursivelyConvertToNative_Enumerable"/>
|
||||
/// <inheritdoc cref="ReceiveAndConvert_Async"/>
|
||||
/// <example>
|
||||
/// This function is designed to run as a coroutine i.e.
|
||||
/// <c>StartCoroutine(mySpeckleReceiver.ReceiveAndConvert_Routine());</c>
|
||||
/// </example>
|
||||
public IEnumerator ReceiveAndConvert_Routine(
|
||||
Transform? parent,
|
||||
Transform? parent = null,
|
||||
Predicate<TraversalContext>? predicate = null
|
||||
)
|
||||
{
|
||||
@@ -130,9 +127,16 @@ namespace Speckle.ConnectorUnity.Components
|
||||
FinishOperation();
|
||||
}
|
||||
|
||||
/// <inheritdoc cref="ReceiveAndConvert_Routine"/>
|
||||
/// <summary>
|
||||
/// Receive the selected <see cref="Commit"/> object, and converts ToNative as children of <paramref name="parent"/>
|
||||
/// </summary>
|
||||
/// <param name="parent">Optional parent <see cref="Transform"/> for the created root <see cref="GameObject"/>s</param>
|
||||
/// <param name="predicate">A filter function to allow for selectively excluding certain objects from being converted</param>
|
||||
/// <remarks>function does not throw, instead calls <see cref="OnErrorAction"/>, and calls <see cref="OnComplete"/> upon completion</remarks>
|
||||
/// <seealso cref="ReceiveAsync(System.Threading.CancellationToken)"/>
|
||||
/// <seealso cref="RecursiveConverter.RecursivelyConvertToNative_Enumerable"/>
|
||||
public async void ReceiveAndConvert_Async(
|
||||
Transform? parent,
|
||||
Transform? parent = null,
|
||||
Predicate<TraversalContext>? predicate = null
|
||||
)
|
||||
{
|
||||
@@ -196,15 +200,15 @@ namespace Speckle.ConnectorUnity.Components
|
||||
{
|
||||
Client? selectedClient = Account.Client;
|
||||
client =
|
||||
selectedClient ?? throw new InvalidOperationException("Invalid account selection");
|
||||
selectedClient ?? throw new InvalidOperationException("Invalid Speckle account selection");
|
||||
|
||||
Stream? selectedStream = Stream.Selected;
|
||||
stream =
|
||||
selectedStream ?? throw new InvalidOperationException("Invalid stream selection");
|
||||
selectedStream ?? throw new InvalidOperationException("Invalid Speckle project selection");
|
||||
|
||||
Commit? selectedCommit = Commit.Selected;
|
||||
commit =
|
||||
selectedCommit ?? throw new InvalidOperationException("Invalid commit selection");
|
||||
selectedCommit ?? throw new InvalidOperationException("Invalid Speckle version selection");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -255,42 +259,20 @@ namespace Speckle.ConnectorUnity.Components
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
using var transport = new ServerTransportV2(client.Account, streamId);
|
||||
using var transport = new ServerTransport(client.Account, streamId);
|
||||
|
||||
transport.CancellationToken = cancellationToken;
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
Base? requestedObject = await Operations
|
||||
Base requestedObject = await Operations
|
||||
.Receive(
|
||||
objectId: objectId,
|
||||
cancellationToken: cancellationToken,
|
||||
remoteTransport: transport,
|
||||
onProgressAction: onProgressAction,
|
||||
onErrorAction: (s, ex) =>
|
||||
{
|
||||
//Don't wrap cancellation exceptions!
|
||||
if (ex is OperationCanceledException)
|
||||
throw ex;
|
||||
|
||||
//HACK: Sometimes, the task was cancelled, and Operations.Receive doesn't fail in a reliable way. In this case, the exception is often simply a symptom of a cancel.
|
||||
if (cancellationToken.IsCancellationRequested)
|
||||
{
|
||||
SpeckleLog.Logger.Warning(
|
||||
ex,
|
||||
"A task was cancelled, ignoring potentially symptomatic exception"
|
||||
);
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
}
|
||||
|
||||
//Treat all operation errors as fatal
|
||||
throw new SpeckleException(
|
||||
$"Failed to receive requested object {objectId} from server: {s}",
|
||||
ex
|
||||
);
|
||||
},
|
||||
onTotalChildrenCountKnown: onTotalChildrenCountKnown,
|
||||
disposeTransports: false
|
||||
objectId,
|
||||
transport,
|
||||
null,
|
||||
onProgressAction,
|
||||
onTotalChildrenCountKnown,
|
||||
cancellationToken
|
||||
)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
@@ -313,9 +295,6 @@ namespace Speckle.ConnectorUnity.Components
|
||||
}
|
||||
);
|
||||
|
||||
if (requestedObject == null)
|
||||
throw new SpeckleException($"Operation {nameof(Operations.Receive)} returned null");
|
||||
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
|
||||
//Read receipt
|
||||
@@ -323,7 +302,6 @@ namespace Speckle.ConnectorUnity.Components
|
||||
{
|
||||
await client
|
||||
.CommitReceived(
|
||||
cancellationToken,
|
||||
new CommitReceivedInput
|
||||
{
|
||||
streamId = streamId,
|
||||
@@ -332,14 +310,15 @@ namespace Speckle.ConnectorUnity.Components
|
||||
sourceApplication = HostApplications.Unity.GetVersion(
|
||||
CoreUtils.GetHostAppVersion()
|
||||
)
|
||||
}
|
||||
},
|
||||
cancellationToken
|
||||
)
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Do nothing!
|
||||
Debug.LogWarning($"Failed to send read receipt\n{e}");
|
||||
Debug.LogWarning($"Failed to send read receipt\n{ex}");
|
||||
}
|
||||
|
||||
return requestedObject;
|
||||
@@ -443,12 +422,9 @@ namespace Speckle.ConnectorUnity.Components
|
||||
/// <summary>
|
||||
/// Fetches the commit preview for the currently selected commit
|
||||
/// </summary>
|
||||
/// <param name="allAngles">when <see langword="true"/>, will fetch 360 degree preview image</param>
|
||||
/// <param name="callback">Callback function to be called when the web request completes</param>
|
||||
/// <returns>The executing <see cref="Coroutine"/> or <see langword="null"/> if <see cref="Account"/>, <see cref="Stream"/>, or <see cref="Commit"/> was <see langword="null"/></returns>
|
||||
public Coroutine? GetPreviewImage( /*bool allAngles,*/
|
||||
Action<Texture2D?> callback
|
||||
)
|
||||
public Coroutine? GetPreviewImage(Action<Texture2D?> callback)
|
||||
{
|
||||
Account? account = Account.Selected;
|
||||
if (account == null)
|
||||
@@ -469,28 +445,28 @@ namespace Speckle.ConnectorUnity.Components
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
[ContextMenu("Open Speckle Stream in Browser")]
|
||||
[ContextMenu("Open Speckle Model in Browser")]
|
||||
protected void OpenUrlInBrowser()
|
||||
{
|
||||
string url = GetSelectedUrl();
|
||||
Application.OpenURL(url);
|
||||
Uri url = GetSelectedUrl();
|
||||
Application.OpenURL(url.ToString());
|
||||
}
|
||||
#endif
|
||||
|
||||
public string GetSelectedUrl()
|
||||
public Uri GetSelectedUrl()
|
||||
{
|
||||
string serverUrl = Account.Selected!.serverInfo.url;
|
||||
string? streamId = Stream.Selected?.id;
|
||||
string? branchName = Branch.Selected?.name;
|
||||
string? commitId = Commit.Selected?.id;
|
||||
Account selectedAccount = Account.Selected!;
|
||||
StreamWrapper sw =
|
||||
new()
|
||||
{
|
||||
ServerUrl = selectedAccount.serverInfo.url,
|
||||
StreamId = Stream.Selected!.id,
|
||||
BranchName = Branch.Selected?.id,
|
||||
CommitId = Commit.Selected?.id
|
||||
};
|
||||
sw.SetAccount(selectedAccount);
|
||||
|
||||
if (string.IsNullOrEmpty(streamId))
|
||||
return serverUrl;
|
||||
if (!string.IsNullOrEmpty(commitId))
|
||||
return $"{serverUrl}/streams/{streamId}/commits/{commitId}";
|
||||
if (!string.IsNullOrEmpty(branchName))
|
||||
return $"{serverUrl}/streams/{streamId}/branches/{branchName}";
|
||||
return $"{serverUrl}/streams/{streamId}";
|
||||
return sw.ToServerUri();
|
||||
}
|
||||
|
||||
public void Awake()
|
||||
@@ -510,7 +486,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
Branch.Initialise();
|
||||
Commit.Initialise();
|
||||
Commit.OnSelectionChange = () => OnCommitSelectionChange?.Invoke(Commit.Selected);
|
||||
if (Account.Options is not { Length: > 0 } || forceRefresh)
|
||||
if (Account.Options is not { Count: > 0 } || forceRefresh)
|
||||
Account.RefreshOptions();
|
||||
}
|
||||
|
||||
@@ -536,7 +512,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
|
||||
#region Deprecated members
|
||||
|
||||
[Obsolete("use " + nameof(ReceiveAndConvertRoutine), true)]
|
||||
[Obsolete("use " + nameof(ReceiveAndConvert_Routine), true)]
|
||||
public IEnumerator ReceiveAndConvertRoutine(
|
||||
SpeckleReceiver speckleReceiver,
|
||||
string rootObjectName,
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
[HideInInspector]
|
||||
public BranchSelectionEvent OnBranchSelectionChange;
|
||||
|
||||
[Obsolete("No longer used")]
|
||||
[HideInInspector]
|
||||
public ErrorActionEvent OnErrorAction;
|
||||
|
||||
@@ -61,40 +62,44 @@ namespace Speckle.ConnectorUnity.Components
|
||||
)
|
||||
throw new SpeckleException(error);
|
||||
|
||||
ServerTransport transport = new ServerTransport(client.Account, stream.id);
|
||||
using ServerTransport transport = new(client.Account, stream.id);
|
||||
transport.CancellationToken = CancellationTokenSource.Token;
|
||||
|
||||
return await SendDataAsync(
|
||||
CancellationTokenSource.Token,
|
||||
remoteTransport: transport,
|
||||
data: data,
|
||||
client: client,
|
||||
branchName: branch.name,
|
||||
createCommit: createCommit,
|
||||
onProgressAction: dict => OnSendProgressAction.Invoke(dict),
|
||||
onErrorAction: (m, e) => OnErrorAction.Invoke(m, e)
|
||||
data,
|
||||
client,
|
||||
branch.id,
|
||||
createCommit,
|
||||
dict => OnSendProgressAction.Invoke(dict),
|
||||
CancellationTokenSource.Token
|
||||
);
|
||||
}
|
||||
|
||||
/// <param name="remoteTransport">The transport to send to</param>
|
||||
/// <param name="data">The data to send</param>
|
||||
/// <param name="client">An authenticated Speckle Client</param>
|
||||
/// <param name="branchId">The branch name or id</param>
|
||||
/// <param name="createCommit">when <see langword="true"/> will call <see cref="Client.CommitCreate"/>, otherwise only the object data is sent</param>
|
||||
/// <param name="onProgressAction">Called every progress tick of the <see cref="Operations.Send"/></param>
|
||||
/// <param name="cancellationToken">Optional cancellation token</param>
|
||||
/// <returns>The id (hash) of the object sent</returns>
|
||||
public static async Task<string> SendDataAsync(
|
||||
CancellationToken cancellationToken,
|
||||
ServerTransport remoteTransport,
|
||||
Base data,
|
||||
Client client,
|
||||
string branchName,
|
||||
string branchId,
|
||||
bool createCommit,
|
||||
Action<ConcurrentDictionary<string, int>>? onProgressAction = null,
|
||||
Action<string, Exception>? onErrorAction = null
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
string res = await Operations.Send(
|
||||
data,
|
||||
cancellationToken: cancellationToken,
|
||||
new List<ITransport> { remoteTransport },
|
||||
useDefaultCache: true,
|
||||
disposeTransports: true,
|
||||
onProgressAction: onProgressAction,
|
||||
onErrorAction: onErrorAction
|
||||
remoteTransport,
|
||||
true,
|
||||
onProgressAction,
|
||||
cancellationToken
|
||||
);
|
||||
|
||||
Analytics.TrackEvent(
|
||||
@@ -115,15 +120,26 @@ namespace Speckle.ConnectorUnity.Components
|
||||
string commitMessage = $"Sent {data.totalChildrenCount} objects from {unityVer}";
|
||||
|
||||
string commitId = await CreateCommit(
|
||||
cancellationToken,
|
||||
data,
|
||||
client,
|
||||
streamId,
|
||||
branchName,
|
||||
branchId,
|
||||
res,
|
||||
commitMessage
|
||||
commitMessage,
|
||||
cancellationToken
|
||||
);
|
||||
string url = $"{client.ServerUrl}/streams/{streamId}/commits/{commitId}";
|
||||
|
||||
StreamWrapper sw =
|
||||
new()
|
||||
{
|
||||
ServerUrl = client.ServerUrl,
|
||||
StreamId = streamId,
|
||||
BranchName = branchId,
|
||||
CommitId = commitId,
|
||||
};
|
||||
sw.SetAccount(client.Account);
|
||||
|
||||
string url = sw.ToServerUri().GetLeftPart(UriPartial.Path);
|
||||
Debug.Log($"Data successfully sent to <a href=\"{url}\">{url}</a>");
|
||||
}
|
||||
|
||||
@@ -131,17 +147,16 @@ namespace Speckle.ConnectorUnity.Components
|
||||
}
|
||||
|
||||
public static async Task<string> CreateCommit(
|
||||
CancellationToken cancellationToken,
|
||||
Base data,
|
||||
Client client,
|
||||
string streamId,
|
||||
string branchName,
|
||||
string objectId,
|
||||
string message
|
||||
string message,
|
||||
CancellationToken cancellationToken
|
||||
)
|
||||
{
|
||||
string commitId = await client.CommitCreate(
|
||||
cancellationToken,
|
||||
new CommitCreateInput
|
||||
{
|
||||
streamId = streamId,
|
||||
@@ -152,7 +167,8 @@ namespace Speckle.ConnectorUnity.Components
|
||||
CoreUtils.GetHostAppVersion()
|
||||
),
|
||||
totalChildrenCount = (int)data.totalChildrenCount,
|
||||
}
|
||||
},
|
||||
cancellationToken
|
||||
);
|
||||
|
||||
return commitId;
|
||||
@@ -230,7 +246,7 @@ namespace Speckle.ConnectorUnity.Components
|
||||
Stream.Initialise();
|
||||
Branch.Initialise();
|
||||
Branch.OnSelectionChange = () => OnBranchSelectionChange?.Invoke(Branch.Selected);
|
||||
if (Account.Options is not { Length: > 0 } || forceRefresh)
|
||||
if (Account.Options is not { Count: > 0 } || forceRefresh)
|
||||
Account.RefreshOptions();
|
||||
}
|
||||
|
||||
@@ -249,5 +265,28 @@ namespace Speckle.ConnectorUnity.Components
|
||||
{
|
||||
Initialise();
|
||||
}
|
||||
|
||||
[Obsolete("use other overload")]
|
||||
public static async Task<string> SendDataAsync(
|
||||
CancellationToken cancellationToken,
|
||||
ServerTransport remoteTransport,
|
||||
Base data,
|
||||
Client client,
|
||||
string branchName,
|
||||
bool createCommit,
|
||||
Action<ConcurrentDictionary<string, int>>? onProgressAction = null,
|
||||
Action<string, Exception>? onErrorAction = null
|
||||
)
|
||||
{
|
||||
return await SendDataAsync(
|
||||
remoteTransport,
|
||||
data,
|
||||
client,
|
||||
branchName,
|
||||
createCommit,
|
||||
onProgressAction,
|
||||
cancellationToken
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+32
-32
@@ -47,21 +47,27 @@ namespace Objects.Converter.Unity
|
||||
|
||||
public Vector3 VectorFromPoint(Point p) => VectorByCoordinates(p.x, p.y, p.z, p.units);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="arr"></param>
|
||||
/// <param name="arr">flat list of x,y,z values</param>
|
||||
/// <param name="units"></param>
|
||||
/// <returns></returns>
|
||||
public Vector3[] ArrayToPoints(IList<double> arr, string units)
|
||||
/// <exception cref="ArgumentException">Length of <paramref name="arr"/> must be a multiple of 3</exception>
|
||||
public Vector3[] ArrayToPoints(IReadOnlyList<double> arr, string units)
|
||||
{
|
||||
if (arr.Count % 3 != 0)
|
||||
throw new Exception("Array malformed: length not a multiple of 3");
|
||||
{
|
||||
throw new ArgumentException(
|
||||
"Array malformed: length not a multiple of 3",
|
||||
nameof(arr)
|
||||
);
|
||||
}
|
||||
|
||||
Vector3[] points = new Vector3[arr.Count / 3];
|
||||
var f = GetConversionFactor(units);
|
||||
double f = GetConversionFactor(units);
|
||||
|
||||
for (int i = 2, k = 0; i < arr.Count; i += 3)
|
||||
{
|
||||
points[k++] = VectorByCoordinates(arr[i - 2], arr[i - 1], arr[i], f);
|
||||
}
|
||||
|
||||
return points;
|
||||
}
|
||||
@@ -70,13 +76,7 @@ namespace Objects.Converter.Unity
|
||||
|
||||
#region ToSpeckle
|
||||
|
||||
//TODO: more of these
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("", true)]
|
||||
public virtual Point PointToSpeckle(Vector3 p)
|
||||
{
|
||||
//switch y and z
|
||||
@@ -117,7 +117,7 @@ namespace Objects.Converter.Unity
|
||||
{
|
||||
Vector3 newPt = VectorByCoordinates(point.x, point.y, point.z, point.units);
|
||||
|
||||
var go = NewPointBasedGameObject(new Vector3[] { newPt, newPt }, point.speckle_type);
|
||||
var go = NewPointBasedGameObject(new[] { newPt, newPt }, point.speckle_type);
|
||||
return go;
|
||||
}
|
||||
|
||||
@@ -352,30 +352,30 @@ namespace Objects.Converter.Unity
|
||||
public Matrix4x4 TransformToNativeMatrix(STransform speckleTransform)
|
||||
{
|
||||
var sf = GetConversionFactor(speckleTransform.units);
|
||||
var smatrix = speckleTransform.matrix;
|
||||
var sMatrix = speckleTransform.matrix;
|
||||
|
||||
return new Matrix4x4
|
||||
{
|
||||
// Left (X -> X)
|
||||
[0, 0] = smatrix.M11,
|
||||
[2, 0] = smatrix.M21,
|
||||
[1, 0] = smatrix.M31,
|
||||
[3, 0] = smatrix.M41,
|
||||
[0, 0] = (float)sMatrix.M11,
|
||||
[2, 0] = (float)sMatrix.M21,
|
||||
[1, 0] = (float)sMatrix.M31,
|
||||
[3, 0] = (float)sMatrix.M41,
|
||||
//Up (Z -> Y)
|
||||
[0, 2] = smatrix.M12,
|
||||
[2, 2] = smatrix.M22,
|
||||
[1, 2] = smatrix.M32,
|
||||
[3, 2] = smatrix.M42,
|
||||
[0, 2] = (float)sMatrix.M12,
|
||||
[2, 2] = (float)sMatrix.M22,
|
||||
[1, 2] = (float)sMatrix.M32,
|
||||
[3, 2] = (float)sMatrix.M42,
|
||||
//Forwards (Y -> Z)
|
||||
[0, 1] = smatrix.M13,
|
||||
[2, 1] = smatrix.M23,
|
||||
[1, 1] = smatrix.M33,
|
||||
[3, 1] = smatrix.M43,
|
||||
[0, 1] = (float)sMatrix.M13,
|
||||
[2, 1] = (float)sMatrix.M23,
|
||||
[1, 1] = (float)sMatrix.M33,
|
||||
[3, 1] = (float)sMatrix.M43,
|
||||
//Translation
|
||||
[0, 3] = (float)(smatrix.M14 * sf),
|
||||
[2, 3] = (float)(smatrix.M24 * sf),
|
||||
[1, 3] = (float)(smatrix.M34 * sf),
|
||||
[3, 3] = smatrix.M44,
|
||||
[0, 3] = (float)(sMatrix.M14 * sf),
|
||||
[2, 3] = (float)(sMatrix.M24 * sf),
|
||||
[1, 3] = (float)(sMatrix.M34 * sf),
|
||||
[3, 3] = (float)sMatrix.M44,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -10,9 +10,7 @@ using UnityEngine.Rendering;
|
||||
using Material = UnityEngine.Material;
|
||||
using Mesh = UnityEngine.Mesh;
|
||||
using SMesh = Objects.Geometry.Mesh;
|
||||
using SColor = System.Drawing.Color;
|
||||
using Transform = UnityEngine.Transform;
|
||||
using STransform = Objects.Other.Transform;
|
||||
|
||||
#nullable enable
|
||||
namespace Objects.Converter.Unity
|
||||
|
||||
+1
-2
@@ -8,7 +8,6 @@ using UnityEngine;
|
||||
using Material = UnityEngine.Material;
|
||||
using SMesh = Objects.Geometry.Mesh;
|
||||
using SColor = System.Drawing.Color;
|
||||
using STransform = Objects.Other.Transform;
|
||||
|
||||
namespace Objects.Converter.Unity
|
||||
{
|
||||
@@ -76,7 +75,7 @@ namespace Objects.Converter.Unity
|
||||
// 3. Otherwise, convert fresh!
|
||||
string name = CoreUtils.GenerateObjectName(renderMaterial);
|
||||
Color diffuse = renderMaterial.diffuse.ToUnityColor();
|
||||
bool isOpaque = Math.Abs(renderMaterial.opacity - 1d) < Constants.Eps;
|
||||
bool isOpaque = Math.Abs(renderMaterial.opacity - 1d) < Constants.EPS;
|
||||
Color color = new(diffuse.r, diffuse.g, diffuse.b, (float)renderMaterial.opacity);
|
||||
float metalic = (float)renderMaterial.metalness;
|
||||
float gloss = 1f - (float)renderMaterial.roughness;
|
||||
|
||||
@@ -202,6 +202,18 @@ namespace Objects.Converter.Unity
|
||||
return objects.Select(x => ConvertToNative(x)).ToList();
|
||||
}
|
||||
|
||||
public object ConvertToNativeDisplayable(Base @object)
|
||||
{
|
||||
throw new NotImplementedException(
|
||||
$"{nameof(ConvertToNativeDisplayable)} is not implemented by this converter, use {nameof(ConvertToNative)} instead"
|
||||
);
|
||||
}
|
||||
|
||||
public bool CanConvertToNativeDisplayable(Base @object)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool CanConvertToSpeckle(object @object)
|
||||
{
|
||||
switch (@object)
|
||||
|
||||
@@ -1,944 +0,0 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETStandard,Version=v2.0/",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETStandard,Version=v2.0": {},
|
||||
".NETStandard,Version=v2.0/": {
|
||||
"SpeckleCore2/2.0.999-local": {
|
||||
"dependencies": {
|
||||
"GraphQL.Client": "6.0.0",
|
||||
"Microsoft.CSharp": "4.7.0",
|
||||
"Microsoft.Data.Sqlite": "7.0.5",
|
||||
"NETStandard.Library": "2.0.3",
|
||||
"Polly": "7.2.3",
|
||||
"Polly.Contrib.WaitAndRetry": "1.1.1",
|
||||
"Polly.Extensions.Http": "3.0.0",
|
||||
"Sentry": "3.33.0",
|
||||
"Sentry.Serilog": "3.33.0",
|
||||
"Serilog": "2.12.0",
|
||||
"Serilog.Enrichers.ClientInfo": "1.3.0",
|
||||
"Serilog.Enrichers.GlobalLogContext": "3.0.0",
|
||||
"Serilog.Exceptions": "8.4.0",
|
||||
"Serilog.Sinks.Console": "4.1.0",
|
||||
"Serilog.Sinks.Seq": "5.2.2",
|
||||
"SerilogTimings": "3.0.1",
|
||||
"Speckle.Newtonsoft.Json": "13.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"SpeckleCore2.dll": {}
|
||||
}
|
||||
},
|
||||
"GraphQL.Client/6.0.0": {
|
||||
"dependencies": {
|
||||
"GraphQL.Client.Abstractions": "6.0.0",
|
||||
"GraphQL.Client.Abstractions.Websocket": "6.0.0",
|
||||
"System.Reactive": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/GraphQL.Client.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GraphQL.Client.Abstractions/6.0.0": {
|
||||
"dependencies": {
|
||||
"GraphQL.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/GraphQL.Client.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GraphQL.Client.Abstractions.Websocket/6.0.0": {
|
||||
"dependencies": {
|
||||
"GraphQL.Client.Abstractions": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/GraphQL.Client.Abstractions.Websocket.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GraphQL.Primitives/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/GraphQL.Primitives.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Http/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Http.Abstractions": "2.1.1",
|
||||
"Microsoft.AspNetCore.WebUtilities": "2.1.1",
|
||||
"Microsoft.Extensions.ObjectPool": "2.1.1",
|
||||
"Microsoft.Extensions.Options": "2.1.1",
|
||||
"Microsoft.Net.Http.Headers": "2.1.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Abstractions/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Http.Features": "2.1.1",
|
||||
"System.Text.Encodings.Web": "5.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Abstractions.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Features/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "2.1.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.Http.Features.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.WebUtilities/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Net.Http.Headers": "2.1.1",
|
||||
"System.Text.Encodings.Web": "5.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.AspNetCore.WebUtilities.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Threading.Tasks.Extensions": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.20.51904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.CSharp.dll": {
|
||||
"assemblyVersion": "4.0.5.0",
|
||||
"fileVersion": "4.700.19.56404"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Data.Sqlite/7.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Data.Sqlite.Core": "7.0.5",
|
||||
"SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
|
||||
}
|
||||
},
|
||||
"Microsoft.Data.Sqlite.Core/7.0.5": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.core": "2.1.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Data.Sqlite.dll": {
|
||||
"assemblyVersion": "7.0.5.0",
|
||||
"fileVersion": "7.0.523.16503"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.ObjectPool/2.1.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.1",
|
||||
"Microsoft.Extensions.Primitives": "2.1.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/2.1.1": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.4",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Net.Http.Headers/2.1.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "2.1.1",
|
||||
"System.Buffers": "4.5.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Net.Http.Headers.dll": {
|
||||
"assemblyVersion": "2.1.1.0",
|
||||
"fileVersion": "2.1.1.18157"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.1.0": {},
|
||||
"Microsoft.NETCore.Targets/1.1.0": {},
|
||||
"NETStandard.Library/2.0.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.1.0"
|
||||
}
|
||||
},
|
||||
"Polly/7.2.3": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Polly.dll": {
|
||||
"assemblyVersion": "7.0.0.0",
|
||||
"fileVersion": "7.2.3.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Polly.Contrib.WaitAndRetry/1.1.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Polly.Contrib.WaitAndRetry.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.1.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Polly.Extensions.Http/3.0.0": {
|
||||
"dependencies": {
|
||||
"Polly": "7.2.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Polly.Extensions.Http.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Sentry/3.33.0": {
|
||||
"dependencies": {
|
||||
"System.Reflection.Metadata": "5.0.0",
|
||||
"System.Text.Json": "5.0.2"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Sentry.dll": {
|
||||
"assemblyVersion": "3.33.0.0",
|
||||
"fileVersion": "3.33.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Sentry.Serilog/3.33.0": {
|
||||
"dependencies": {
|
||||
"Sentry": "3.33.0",
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Sentry.Serilog.dll": {
|
||||
"assemblyVersion": "3.33.0.0",
|
||||
"fileVersion": "3.33.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog/2.12.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.dll": {
|
||||
"assemblyVersion": "2.0.0.0",
|
||||
"fileVersion": "2.12.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Enrichers.ClientInfo/1.3.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Http": "2.1.1",
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Enrichers.ClientInfo.dll": {
|
||||
"assemblyVersion": "0.0.0.0",
|
||||
"fileVersion": "0.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Enrichers.GlobalLogContext/3.0.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Enrichers.GlobalLogContext.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Exceptions/8.4.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0",
|
||||
"System.Reflection.TypeExtensions": "4.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Exceptions.dll": {
|
||||
"assemblyVersion": "8.0.0.0",
|
||||
"fileVersion": "8.4.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Formatting.Compact/1.1.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Formatting.Compact.dll": {
|
||||
"assemblyVersion": "1.1.0.0",
|
||||
"fileVersion": "1.1.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.Console/4.1.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Sinks.Console.dll": {
|
||||
"assemblyVersion": "4.1.0.0",
|
||||
"fileVersion": "4.1.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.File/5.0.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Sinks.File.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.PeriodicBatching/3.1.0": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Sinks.PeriodicBatching.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.1.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog.Sinks.Seq/5.2.2": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0",
|
||||
"Serilog.Formatting.Compact": "1.1.0",
|
||||
"Serilog.Sinks.File": "5.0.0",
|
||||
"Serilog.Sinks.PeriodicBatching": "3.1.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Serilog.Sinks.Seq.dll": {
|
||||
"assemblyVersion": "5.2.2.0",
|
||||
"fileVersion": "5.2.2.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SerilogTimings/3.0.1": {
|
||||
"dependencies": {
|
||||
"Serilog": "2.12.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SerilogTimings.dll": {
|
||||
"assemblyVersion": "3.0.1.0",
|
||||
"fileVersion": "3.0.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Speckle.Newtonsoft.Json/13.0.2": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Speckle.Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "11.0.0.0",
|
||||
"fileVersion": "11.0.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.4": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.lib.e_sqlite3": "2.1.4",
|
||||
"SQLitePCLRaw.provider.e_sqlite3": "2.1.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {
|
||||
"assemblyVersion": "2.1.4.1835",
|
||||
"fileVersion": "2.1.4.1835"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.core/2.1.4": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SQLitePCLRaw.core.dll": {
|
||||
"assemblyVersion": "2.1.4.1835",
|
||||
"fileVersion": "2.1.4.1835"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SQLitePCLRaw.lib.e_sqlite3/2.1.4": {},
|
||||
"SQLitePCLRaw.provider.e_sqlite3/2.1.4": {
|
||||
"dependencies": {
|
||||
"SQLitePCLRaw.core": "2.1.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll": {
|
||||
"assemblyVersion": "2.1.4.1835",
|
||||
"fileVersion": "2.1.4.1835"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Buffers.dll": {
|
||||
"assemblyVersion": "4.0.3.0",
|
||||
"fileVersion": "4.6.28619.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Memory": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Collections.Immutable.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.20.51904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"dependencies": {
|
||||
"System.Buffers": "4.5.1",
|
||||
"System.Numerics.Vectors": "4.5.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Memory.dll": {
|
||||
"assemblyVersion": "4.0.1.1",
|
||||
"fileVersion": "4.6.28619.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Numerics.Vectors/4.5.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Numerics.Vectors.dll": {
|
||||
"assemblyVersion": "4.1.4.0",
|
||||
"fileVersion": "4.6.26515.6"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Reactive/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.InteropServices.WindowsRuntime": "4.3.0",
|
||||
"System.Threading.Tasks.Extensions": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Reactive.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.0.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Reflection.Metadata/5.0.0": {
|
||||
"dependencies": {
|
||||
"System.Collections.Immutable": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Reflection.Metadata.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.20.51904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Reflection.TypeExtensions/4.7.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Reflection.TypeExtensions.dll": {
|
||||
"assemblyVersion": "4.1.5.0",
|
||||
"fileVersion": "4.700.19.56404"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime/4.3.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.1.0",
|
||||
"Microsoft.NETCore.Targets": "1.1.0"
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.20.51904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime.InteropServices.WindowsRuntime/4.3.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime": "4.3.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll": {
|
||||
"assemblyVersion": "4.0.2.0",
|
||||
"fileVersion": "4.6.24705.1"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Text.Encodings.Web/5.0.1": {
|
||||
"dependencies": {
|
||||
"System.Buffers": "4.5.1",
|
||||
"System.Memory": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Text.Encodings.Web.dll": {
|
||||
"assemblyVersion": "5.0.0.1",
|
||||
"fileVersion": "5.0.421.11614"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Text.Json/5.0.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.Bcl.AsyncInterfaces": "5.0.0",
|
||||
"System.Buffers": "4.5.1",
|
||||
"System.Memory": "4.5.4",
|
||||
"System.Numerics.Vectors": "4.5.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0",
|
||||
"System.Text.Encodings.Web": "5.0.1",
|
||||
"System.Threading.Tasks.Extensions": "4.5.4"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Text.Json.dll": {
|
||||
"assemblyVersion": "5.0.0.0",
|
||||
"fileVersion": "5.0.521.16609"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "5.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/System.Threading.Tasks.Extensions.dll": {
|
||||
"assemblyVersion": "4.2.0.1",
|
||||
"fileVersion": "4.6.28619.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"SpeckleCore2/2.0.999-local": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"GraphQL.Client/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==",
|
||||
"path": "graphql.client/6.0.0",
|
||||
"hashPath": "graphql.client.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"GraphQL.Client.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==",
|
||||
"path": "graphql.client.abstractions/6.0.0",
|
||||
"hashPath": "graphql.client.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"GraphQL.Client.Abstractions.Websocket/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==",
|
||||
"path": "graphql.client.abstractions.websocket/6.0.0",
|
||||
"hashPath": "graphql.client.abstractions.websocket.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"GraphQL.Primitives/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==",
|
||||
"path": "graphql.primitives/6.0.0",
|
||||
"hashPath": "graphql.primitives.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Http/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pPDcCW8spnyibK3krpxrOpaFHf5fjV6k1Hsl6gfh77N/8gRYlLU7MOQDUnjpEwdlHmtxwJKQJNxZqVQOmJGRUw==",
|
||||
"path": "microsoft.aspnetcore.http/2.1.1",
|
||||
"hashPath": "microsoft.aspnetcore.http.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Abstractions/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kQUEVOU4loc8CPSb2WoHFTESqwIa8Ik7ysCBfTwzHAd0moWovc9JQLmhDIHlYLjHbyexqZAlkq/FPRUZqokebw==",
|
||||
"path": "microsoft.aspnetcore.http.abstractions/2.1.1",
|
||||
"hashPath": "microsoft.aspnetcore.http.abstractions.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Features/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VklZ7hWgSvHBcDtwYYkdMdI/adlf7ebxTZ9kdzAhX+gUs5jSHE9mZlTamdgf9miSsxc1QjNazHXTDJdVPZKKTw==",
|
||||
"path": "microsoft.aspnetcore.http.features/2.1.1",
|
||||
"hashPath": "microsoft.aspnetcore.http.features.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.WebUtilities/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-PGKIZt4+412Z/XPoSjvYu/QIbTxcAQuEFNoA1Pw8a9mgmO0ZhNBmfaNyhgXFf7Rq62kP0tT/2WXpxdcQhkFUPA==",
|
||||
"path": "microsoft.aspnetcore.webutilities/2.1.1",
|
||||
"hashPath": "microsoft.aspnetcore.webutilities.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==",
|
||||
"path": "microsoft.bcl.asyncinterfaces/5.0.0",
|
||||
"hashPath": "microsoft.bcl.asyncinterfaces.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
|
||||
"path": "microsoft.csharp/4.7.0",
|
||||
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Data.Sqlite/7.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==",
|
||||
"path": "microsoft.data.sqlite/7.0.5",
|
||||
"hashPath": "microsoft.data.sqlite.7.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Data.Sqlite.Core/7.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==",
|
||||
"path": "microsoft.data.sqlite.core/7.0.5",
|
||||
"hashPath": "microsoft.data.sqlite.core.7.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-MgYpU5cwZohUMKKg3sbPhvGG+eAZ/59E9UwPwlrUkyXU+PGzqwZg9yyQNjhxuAWmoNoFReoemeCku50prYSGzA==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/2.1.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.ObjectPool/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-SErON45qh4ogDp6lr6UvVmFYW0FERihW+IQ+2JyFv1PUyWktcJytFaWH5zarufJvZwhci7Rf1IyGXr9pVEadTw==",
|
||||
"path": "microsoft.extensions.objectpool/2.1.1",
|
||||
"hashPath": "microsoft.extensions.objectpool.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-V7lXCU78lAbzaulCGFKojcCyG8RTJicEbiBkPJjFqiqXwndEBBIehdXRMWEVU3UtzQ1yDvphiWUL9th6/4gJ7w==",
|
||||
"path": "microsoft.extensions.options/2.1.1",
|
||||
"hashPath": "microsoft.extensions.options.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-scJ1GZNIxMmjpENh0UZ8XCQ6vzr/LzeF9WvEA51Ix2OQGAs9WPgPu8ABVUdvpKPLuor/t05gm6menJK3PwqOXg==",
|
||||
"path": "microsoft.extensions.primitives/2.1.1",
|
||||
"hashPath": "microsoft.extensions.primitives.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Net.Http.Headers/2.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-lPNIphl8b2EuhOE9dMH6EZDmu7pS882O+HMi5BJNsigxHaWlBrYxZHFZgE18cyaPp6SSZcTkKkuzfjV/RRQKlA==",
|
||||
"path": "microsoft.net.http.headers/2.1.1",
|
||||
"hashPath": "microsoft.net.http.headers.2.1.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==",
|
||||
"path": "microsoft.netcore.platforms/1.1.0",
|
||||
"hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NETCore.Targets/1.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==",
|
||||
"path": "microsoft.netcore.targets/1.1.0",
|
||||
"hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512"
|
||||
},
|
||||
"NETStandard.Library/2.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==",
|
||||
"path": "netstandard.library/2.0.3",
|
||||
"hashPath": "netstandard.library.2.0.3.nupkg.sha512"
|
||||
},
|
||||
"Polly/7.2.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==",
|
||||
"path": "polly/7.2.3",
|
||||
"hashPath": "polly.7.2.3.nupkg.sha512"
|
||||
},
|
||||
"Polly.Contrib.WaitAndRetry/1.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==",
|
||||
"path": "polly.contrib.waitandretry/1.1.1",
|
||||
"hashPath": "polly.contrib.waitandretry.1.1.1.nupkg.sha512"
|
||||
},
|
||||
"Polly.Extensions.Http/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==",
|
||||
"path": "polly.extensions.http/3.0.0",
|
||||
"hashPath": "polly.extensions.http.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"Sentry/3.33.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-8vbD2o6IR2wrRrkSiRbnodWGWUOqIlwYtzpjvPNOb5raJdOf+zxMwfS8f6nx9bmrTTfDj7KrCB8C/5OuicAc8A==",
|
||||
"path": "sentry/3.33.0",
|
||||
"hashPath": "sentry.3.33.0.nupkg.sha512"
|
||||
},
|
||||
"Sentry.Serilog/3.33.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-V8BU7QGWg2qLYfNPqtuTBhC1opysny5l+Ifp6J6PhOeAxU0FssR7nYfbJVetrnLIoh2rd3DlJ6hHYYQosQYcUQ==",
|
||||
"path": "sentry.serilog/3.33.0",
|
||||
"hashPath": "sentry.serilog.3.33.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog/2.12.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg==",
|
||||
"path": "serilog/2.12.0",
|
||||
"hashPath": "serilog.2.12.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Enrichers.ClientInfo/1.3.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-mTc7PM+wC9Hr7LWSwqt5mmnlAr7RJs+eTb3PGPRhwdOackk95MkhUZognuxXEdlW19HAFNmEBTSBY5DfLwM8jQ==",
|
||||
"path": "serilog.enrichers.clientinfo/1.3.0",
|
||||
"hashPath": "serilog.enrichers.clientinfo.1.3.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Enrichers.GlobalLogContext/3.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IIZcj5mAUVhIl/NTA+YI2KC+sPDzcwvs0ZMHH42jsPfl1a4LVX7ohVpw5UK+e3GxuV3Nv239Il5oM2peUIl44g==",
|
||||
"path": "serilog.enrichers.globallogcontext/3.0.0",
|
||||
"hashPath": "serilog.enrichers.globallogcontext.3.0.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Exceptions/8.4.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-nc/+hUw3lsdo0zCj0KMIybAu7perMx79vu72w0za9Nsi6mWyNkGXxYxakAjWB7nEmYL6zdmhEQRB4oJ2ALUeug==",
|
||||
"path": "serilog.exceptions/8.4.0",
|
||||
"hashPath": "serilog.exceptions.8.4.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Formatting.Compact/1.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pNroKVjo+rDqlxNG5PXkRLpfSCuDOBY0ri6jp9PLe505ljqwhwZz8ospy2vWhQlFu5GkIesh3FcDs4n7sWZODA==",
|
||||
"path": "serilog.formatting.compact/1.1.0",
|
||||
"hashPath": "serilog.formatting.compact.1.1.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Sinks.Console/4.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-K6N5q+5fetjnJPvCmkWOpJ/V8IEIoMIB1s86OzBrbxwTyHxdx3pmz4H+8+O/Dc/ftUX12DM1aynx/dDowkwzqg==",
|
||||
"path": "serilog.sinks.console/4.1.0",
|
||||
"hashPath": "serilog.sinks.console.4.1.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Sinks.File/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
|
||||
"path": "serilog.sinks.file/5.0.0",
|
||||
"hashPath": "serilog.sinks.file.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Sinks.PeriodicBatching/3.1.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-NDWR7m3PalVlGEq3rzoktrXikjFMLmpwF0HI4sowo8YDdU+gqPlTHlDQiOGxHfB0sTfjPA9JjA7ctKG9zqjGkw==",
|
||||
"path": "serilog.sinks.periodicbatching/3.1.0",
|
||||
"hashPath": "serilog.sinks.periodicbatching.3.1.0.nupkg.sha512"
|
||||
},
|
||||
"Serilog.Sinks.Seq/5.2.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1Csmo5ua7NKUe0yXUx+zsRefjAniPWcXFhUXxXG8pwo0iMiw2gjn9SOkgYnnxbgWqmlGv236w0N/dHc2v5XwMg==",
|
||||
"path": "serilog.sinks.seq/5.2.2",
|
||||
"hashPath": "serilog.sinks.seq.5.2.2.nupkg.sha512"
|
||||
},
|
||||
"SerilogTimings/3.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Zs28eTgszAMwpIrbBnWHBI50yuxL50p/dmAUWmy75+axdZYK/Sjm5/5m1N/CisR8acJUhTVcjPZrsB1P5iv0Uw==",
|
||||
"path": "serilogtimings/3.0.1",
|
||||
"hashPath": "serilogtimings.3.0.1.nupkg.sha512"
|
||||
},
|
||||
"Speckle.Newtonsoft.Json/13.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==",
|
||||
"path": "speckle.newtonsoft.json/13.0.2",
|
||||
"hashPath": "speckle.newtonsoft.json.13.0.2.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==",
|
||||
"path": "sqlitepclraw.bundle_e_sqlite3/2.1.4",
|
||||
"hashPath": "sqlitepclraw.bundle_e_sqlite3.2.1.4.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.core/2.1.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==",
|
||||
"path": "sqlitepclraw.core/2.1.4",
|
||||
"hashPath": "sqlitepclraw.core.2.1.4.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.lib.e_sqlite3/2.1.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==",
|
||||
"path": "sqlitepclraw.lib.e_sqlite3/2.1.4",
|
||||
"hashPath": "sqlitepclraw.lib.e_sqlite3.2.1.4.nupkg.sha512"
|
||||
},
|
||||
"SQLitePCLRaw.provider.e_sqlite3/2.1.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CSlb5dUp1FMIkez9Iv5EXzpeq7rHryVNqwJMWnpq87j9zWZexaEMdisDktMsnnrzKM6ahNrsTkjqNodTBPBxtQ==",
|
||||
"path": "sqlitepclraw.provider.e_sqlite3/2.1.4",
|
||||
"hashPath": "sqlitepclraw.provider.e_sqlite3.2.1.4.nupkg.sha512"
|
||||
},
|
||||
"System.Buffers/4.5.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
|
||||
"path": "system.buffers/4.5.1",
|
||||
"hashPath": "system.buffers.4.5.1.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==",
|
||||
"path": "system.collections.immutable/5.0.0",
|
||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
|
||||
"path": "system.memory/4.5.4",
|
||||
"hashPath": "system.memory.4.5.4.nupkg.sha512"
|
||||
},
|
||||
"System.Numerics.Vectors/4.5.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==",
|
||||
"path": "system.numerics.vectors/4.5.0",
|
||||
"hashPath": "system.numerics.vectors.4.5.0.nupkg.sha512"
|
||||
},
|
||||
"System.Reactive/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==",
|
||||
"path": "system.reactive/5.0.0",
|
||||
"hashPath": "system.reactive.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.Metadata/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==",
|
||||
"path": "system.reflection.metadata/5.0.0",
|
||||
"hashPath": "system.reflection.metadata.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Reflection.TypeExtensions/4.7.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA==",
|
||||
"path": "system.reflection.typeextensions/4.7.0",
|
||||
"hashPath": "system.reflection.typeextensions.4.7.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime/4.3.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==",
|
||||
"path": "system.runtime/4.3.0",
|
||||
"hashPath": "system.runtime.4.3.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/5.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==",
|
||||
"path": "system.runtime.compilerservices.unsafe/5.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.InteropServices.WindowsRuntime/4.3.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-J4GUi3xZQLUBasNwZnjrffN8i5wpHrBtZoLG+OhRyGo/+YunMRWWtwoMDlUAIdmX0uRfpHIBDSV6zyr3yf00TA==",
|
||||
"path": "system.runtime.interopservices.windowsruntime/4.3.0",
|
||||
"hashPath": "system.runtime.interopservices.windowsruntime.4.3.0.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Encodings.Web/5.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==",
|
||||
"path": "system.text.encodings.web/5.0.1",
|
||||
"hashPath": "system.text.encodings.web.5.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Json/5.0.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==",
|
||||
"path": "system.text.json/5.0.2",
|
||||
"hashPath": "system.text.json.5.0.2.nupkg.sha512"
|
||||
},
|
||||
"System.Threading.Tasks.Extensions/4.5.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
|
||||
"path": "system.threading.tasks.extensions/4.5.4",
|
||||
"hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6940276f6a5ab054d93a08a3133be230
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,33 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a85708f21043b0c458a3a77c0e09e4b8
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 1
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
Windows Store Apps: WindowsStoreApps
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -98,7 +98,7 @@ namespace Speckle.ConnectorUnity
|
||||
yield return null;
|
||||
}
|
||||
|
||||
private static Dispatcher _instance = null;
|
||||
private static Dispatcher _instance;
|
||||
|
||||
public static bool Exists()
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Speckle.ConnectorUnity.NativeCache
|
||||
[ExecuteAlways]
|
||||
public abstract class AbstractNativeCache : ScriptableObject
|
||||
{
|
||||
protected bool isWriting = false;
|
||||
protected bool isWriting;
|
||||
public abstract bool TryGetObject<T>(
|
||||
Base speckleObject,
|
||||
[NotNullWhen(true)] out T? nativeObject
|
||||
|
||||
@@ -429,6 +429,17 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.DoubleNumerics/3.1.3": {
|
||||
"dependencies": {
|
||||
"NETStandard.Library": "2.0.3"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/System.DoubleNumerics.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"dependencies": {
|
||||
"System.Buffers": "4.5.1",
|
||||
@@ -848,6 +859,13 @@
|
||||
"path": "system.collections.immutable/5.0.0",
|
||||
"hashPath": "system.collections.immutable.5.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.DoubleNumerics/3.1.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KRKEM/L3KBodjA9VOg3EifFVWUY6EOqaMB05UvPEDm7Zeby/kZW+4kdWUEPzW6xtkwf46p661L9NrbeeQhtLzw==",
|
||||
"path": "system.doublenumerics/3.1.3",
|
||||
"hashPath": "system.doublenumerics.3.1.3.nupkg.sha512"
|
||||
},
|
||||
"System.Memory/4.5.4": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -14,11 +14,77 @@
|
||||
Station equation direction for the corresponding station equation should be true for increasing or false for decreasing
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Archicad.ComponentProperties.ToBase(System.Collections.Generic.List{Objects.BuiltElements.Archicad.ComponentProperties})">
|
||||
<summary>
|
||||
Turns a List of ComponentProperties into a Base so that it can be used with the Speckle properties prop
|
||||
</summary>
|
||||
<param name="componentPropertiesList"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Archicad.ElementShape.PolylineSegment">
|
||||
<remarks>
|
||||
This class is only used for Archicad interop
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Archicad.ElementShape.Polyline">
|
||||
<remarks>
|
||||
This class is only used for Archicad interop
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Archicad.Property.ToBase(System.Collections.Generic.List{Objects.BuiltElements.Archicad.Property})">
|
||||
<summary>
|
||||
Turns a List of Property into a Base so that it can be used with the Speckle properties prop
|
||||
</summary>
|
||||
<param name="properties"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Archicad.PropertyGroup.ToBase(System.Collections.Generic.List{Objects.BuiltElements.Archicad.PropertyGroup})">
|
||||
<summary>
|
||||
Turns a List of PropertyGroup into a Base so that it can be used with the Speckle properties prop
|
||||
</summary>
|
||||
<param name="propertyGroups"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Area.#ctor(System.String,System.String,Objects.BuiltElements.Level,Objects.Geometry.Point)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for an Area
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Baseline.name">
|
||||
<summary>
|
||||
The name of this baseline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Baseline.alignment">
|
||||
<summary>
|
||||
The horizontal component of this baseline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Baseline.profile">
|
||||
<summary>
|
||||
The vertical component of this baseline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Baseline`2">
|
||||
<summary>
|
||||
Generic instance class
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Civil.CivilAlignment.parent">
|
||||
<summary>
|
||||
Name of parent alignment if this is an offset alignment
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Civil.CivilBaselineRegion.name">
|
||||
<summary>
|
||||
The name of the region
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Civil.CivilBaselineRegion.assemblyId">
|
||||
<summary>
|
||||
The id of the assembly of the region
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Civil.CivilProfile.pvis">
|
||||
<summary>
|
||||
Points of vertical intersection
|
||||
@@ -29,78 +95,259 @@
|
||||
Name of parent profile if this is an offset profile
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Area.#ctor(System.String,System.String,Objects.BuiltElements.Level,Objects.Geometry.Point)">
|
||||
<member name="M:Objects.BuiltElements.Duct.#ctor(Objects.Geometry.Line,System.Double,System.Double,System.Double,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Room
|
||||
SchemaBuilder constructor for a Speckle duct
|
||||
</summary>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="height"/> param</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitColumn.#ctor(System.String,System.String,Objects.ICurve,Objects.BuiltElements.Level,Objects.BuiltElements.Level,System.Double,System.Double,System.Boolean,System.Double,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit column
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseLine"></param>
|
||||
<param name="level"></param>
|
||||
<param name="topLevel"></param>
|
||||
<param name="baseOffset"></param>
|
||||
<param name="topOffset"></param>
|
||||
<param name="structural"></param>
|
||||
<param name="rotation"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="baseOffset"/> and <paramref name="topOffset"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitDuct.#ctor(System.String,System.String,Objects.Geometry.Line,System.String,System.String,Objects.BuiltElements.Level,System.Double,System.Double,System.Double,System.Double,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit duct (deprecated)
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseLine"></param>
|
||||
<param name="systemName"></param>
|
||||
<param name="systemType"></param>
|
||||
<param name="level"></param>
|
||||
<param name="width"></param>
|
||||
<param name="height"></param>
|
||||
<param name="diameter"></param>
|
||||
<param name="velocity"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="width"/>, <paramref name="height"/>, and <paramref name="diameter"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitDuct.#ctor(System.String,System.String,Objects.ICurve,System.String,System.String,Objects.BuiltElements.Level,System.Double,System.Double,System.Double,System.Double,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<member name="M:Objects.BuiltElements.Duct.#ctor(Objects.ICurve,System.Double,System.Double,System.Double,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit duct
|
||||
SchemaBuilder constructor for a Speckle duct
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseCurve"></param>
|
||||
<param name="systemName"></param>
|
||||
<param name="systemType"></param>
|
||||
<param name="level"></param>
|
||||
<param name="width"></param>
|
||||
<param name="height"></param>
|
||||
<param name="diameter"></param>
|
||||
<param name="velocity"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="width"/>, <paramref name="height"/>, and <paramref name="diameter"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitFlexDuct.#ctor(System.String,System.String,Objects.ICurve,System.String,System.String,Objects.BuiltElements.Level,System.Double,System.Double,System.Double,Objects.Geometry.Vector,Objects.Geometry.Vector,System.Double,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<member name="P:Objects.BuiltElements.Featureline.curve">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit flex duct
|
||||
The base curve of the featureline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Featureline.points">
|
||||
<summary>
|
||||
The points constructing the Featureline
|
||||
</summary>
|
||||
<remarks>
|
||||
Can include both intersection and elevation points
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Featureline.displayValue">
|
||||
<summary>
|
||||
The 3D curves generated from the curve and points of the featureline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Level.#ctor(System.String,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Speckle level
|
||||
</summary>
|
||||
<param name="name"></param>
|
||||
<param name="elevation"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="elevation"/> param</remarks>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Network">
|
||||
<summary>
|
||||
Represents graph connections between built elements objects
|
||||
</summary>
|
||||
<remarks>
|
||||
Network <see cref="P:Objects.BuiltElements.Network.elements"/> may need to be created first in native applications before they are linked.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Network.elements">
|
||||
<summary>
|
||||
The elements contained in the network
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Network.links">
|
||||
<summary>
|
||||
The connections between <see cref="P:Objects.BuiltElements.Network.elements"/>
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkElement.elements">
|
||||
<summary>
|
||||
The Base object representing the element in the network (eg Pipe, Duct, etc)
|
||||
</summary>
|
||||
<remarks>
|
||||
Currently named "elements" to assist with receiving in connector flatten method.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkElement.linkIndices">
|
||||
<summary>
|
||||
The index of the links in <see cref="P:Objects.BuiltElements.NetworkElement.network"/> that are connected to this element
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkElement.links">
|
||||
<summary>
|
||||
Retrieves the links for this element
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkLink.elementIndices">
|
||||
<summary>
|
||||
The index of the elements in <see cref="P:Objects.BuiltElements.NetworkLink.network"/> that are connected by this link
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkLink.elements">
|
||||
<summary>
|
||||
Retrieves the elements for this link
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.RebarGroup`1">
|
||||
<summary>
|
||||
A reinforcement bar group comprised of reinforcing bars of the same type and shape.
|
||||
</summary>
|
||||
<remarks>
|
||||
This class is not suitable for freeform rebar, which can have multiple shapes.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.shape">
|
||||
<summary>
|
||||
The shape of the rebar group
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.number">
|
||||
<summary>
|
||||
The number of rebars in the rebar group
|
||||
</summary>
|
||||
<remarks>
|
||||
Excluded end bars are not included in the count
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.hasFirstBar">
|
||||
<summary>
|
||||
Indicates if rebar set includes the first bar
|
||||
</summary>
|
||||
<remarks>
|
||||
Only applicable to stirrup (transverse) rebar
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.hasLastBar">
|
||||
<summary>
|
||||
Indicates if rebar set includes the last bar
|
||||
</summary>
|
||||
<remarks>
|
||||
Only applicable to stirrup (transverse) rebar
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.startHook">
|
||||
<summary>
|
||||
The start hook of bars in the rebar group
|
||||
</summary>
|
||||
<remarks>
|
||||
Null indicates no start hook
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.endHook">
|
||||
<summary>
|
||||
The end hook of bars in the rebar group
|
||||
</summary>
|
||||
<remarks>
|
||||
Null indicates no end hook
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.displayValue">
|
||||
<summary>
|
||||
The display representation of the rebar group as centerline curves
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarGroup`1.volume">
|
||||
<summary>
|
||||
The total volume of the rebar group.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.RebarShape">
|
||||
<summary>
|
||||
The shape describing the geometry and geometry parameters of a reinforcing bar
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarShape.name">
|
||||
<summary>
|
||||
The name of the rebar shape
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarShape.rebarType">
|
||||
<summary>
|
||||
The type of the rebar shape
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarShape.curves">
|
||||
<summary>
|
||||
The curves of the rebar shape
|
||||
</summary>
|
||||
<remarks>
|
||||
Typically suppresses hooks and bend radius
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarShape.barDiameter">
|
||||
<summary>
|
||||
The diameter of the rebar bar
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarHook.angle">
|
||||
<summary>
|
||||
The angle of the hook in radians.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarHook.length">
|
||||
<summary>
|
||||
The length of the hook.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.RebarHook.radius">
|
||||
<summary>
|
||||
The radius of the bend of the hook.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.DirectShape.#ctor(System.String,Objects.BuiltElements.Revit.RevitCategory,System.Collections.Generic.List{Speckle.Core.Models.Base},System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
Constructs a new <see cref="T:Objects.BuiltElements.Revit.DirectShape"/> instance given a list of <see cref="T:Speckle.Core.Models.Base"/> objects.
|
||||
</summary>
|
||||
<param name="name">The name of the <see cref="T:Objects.BuiltElements.Revit.DirectShape"/></param>
|
||||
<param name="category">The <see cref="T:Objects.BuiltElements.Revit.RevitCategory"/> of this instance.</param>
|
||||
<param name="baseGeometries">A list of base classes to represent the direct shape (only mesh and brep are allowed, anything else will be ignored.)</param>
|
||||
<param name="parameters">Optional Parameters for this instance.</param>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Revit.RevitFamilyCategory">
|
||||
<summary>
|
||||
FamilyDocuments can only be assigned these categories
|
||||
This is a subset of the list above which was manually retrieved from Revit's UI
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.FreeformElement.baseGeometry">
|
||||
<summary>
|
||||
DEPRECATED. Sets the geometry contained in the FreeformElement. This field has been deprecated in favor of `baseGeometries`
|
||||
to align with Revit's API. It remains as a setter-only property for backwards compatibility.
|
||||
It will set the first item on the baseGeometries list, and instantiate a list if necessary.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.Parameter.isShared">
|
||||
<summary>
|
||||
If True it's a Shared Parameter, in which case the ApplicationId field will contain this parameter GUID,
|
||||
otherwise it will store its BuiltInParameter name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.Parameter.isTypeParameter">
|
||||
<summary>
|
||||
True = Type Parameter, False = Instance Parameter
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Revit.RevitElement">
|
||||
<summary>
|
||||
A generic Revit element for which we don't have direct conversions
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Revit.RevitSymbolElementType">
|
||||
<summary>
|
||||
Represents the FamilySymbol subclass of ElementType in Revit
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.RevitSymbolElementType.placementType">
|
||||
<summary>
|
||||
The type of placement for this family symbol
|
||||
</summary>
|
||||
<remarks> See https://www.revitapidocs.com/2023/2abb8627-1da3-4069-05c9-19e4be5e02ad.htm </remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.RevitSymbolElementType.elements">
|
||||
<summary>
|
||||
Subcomponents found in this family symbol
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseCurve"></param>
|
||||
<param name="systemName"></param>
|
||||
<param name="systemType"></param>
|
||||
<param name="level"></param>
|
||||
<param name="width"></param>
|
||||
<param name="height"></param>
|
||||
<param name="diameter"></param>
|
||||
<param name="velocity"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="width"/>, <paramref name="height"/>, and <paramref name="diameter"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitLevel.#ctor(System.String,System.Double,System.Boolean,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
@@ -171,54 +418,6 @@
|
||||
<param name="topLevel"></param>
|
||||
<param name="parameters"></param>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.DirectShape.#ctor(System.String,Objects.BuiltElements.Revit.RevitCategory,System.Collections.Generic.List{Speckle.Core.Models.Base},System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
Constructs a new <see cref="T:Objects.BuiltElements.Revit.DirectShape"/> instance given a list of <see cref="T:Speckle.Core.Models.Base"/> objects.
|
||||
</summary>
|
||||
<param name="name">The name of the <see cref="T:Objects.BuiltElements.Revit.DirectShape"/></param>
|
||||
<param name="category">The <see cref="T:Objects.BuiltElements.Revit.RevitCategory"/> of this instance.</param>
|
||||
<param name="baseGeometries">A list of base classes to represent the direct shape (only mesh and brep are allowed, anything else will be ignored.)</param>
|
||||
<param name="parameters">Optional Parameters for this instance.</param>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.FreeformElement.baseGeometry">
|
||||
<summary>
|
||||
DEPRECATED. Sets the geometry contained in the FreeformElement. This field has been deprecated in favor of `baseGeometries`
|
||||
to align with Revit's API. It remains as a setter-only property for backwards compatibility.
|
||||
It will set the first item on the baseGeometries list, and instantiate a list if necessary.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.Parameter.isShared">
|
||||
<summary>
|
||||
If True it's a Shared Parameter, in which case the ApplicationId field will contain this parameter GUID,
|
||||
otherwise it will store its BuiltInParameter name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.Parameter.isTypeParameter">
|
||||
<summary>
|
||||
True = Type Parameter, False = Instance Parameter
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Revit.RevitElement">
|
||||
<summary>
|
||||
A generic Revit element for which we don't have direct conversions
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Revit.RevitSymbolElementType">
|
||||
<summary>
|
||||
Represents the FamilySymbol subclass of ElementType in Revit
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.RevitSymbolElementType.placementType">
|
||||
<summary>
|
||||
The type of placement for this family symbol
|
||||
</summary>
|
||||
<remarks> See https://www.revitapidocs.com/2023/2abb8627-1da3-4069-05c9-19e4be5e02ad.htm </remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Revit.RevitSymbolElementType.elements">
|
||||
<summary>
|
||||
Subcomponents found in this family symbol
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitRoof.RevitExtrusionRoof.#ctor(System.String,System.String,System.Double,System.Double,Objects.Geometry.Line,Objects.BuiltElements.Level,System.Collections.Generic.List{Speckle.Core.Models.Base},System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit extrusion roof
|
||||
@@ -233,146 +432,17 @@
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="start"/> and <paramref name="end"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitWall.#ctor(System.String,System.String,Objects.ICurve,Objects.BuiltElements.Level,Objects.BuiltElements.Level,System.Double,System.Double,System.Boolean,System.Boolean,System.Collections.Generic.List{Speckle.Core.Models.Base},System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit wall
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseLine"></param>
|
||||
<param name="level"></param>
|
||||
<param name="topLevel"></param>
|
||||
<param name="baseOffset"></param>
|
||||
<param name="topOffset"></param>
|
||||
<param name="flipped"></param>
|
||||
<param name="structural"></param>
|
||||
<param name="elements"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="baseOffset"/> and <paramref name="topOffset"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Revit.RevitWall.#ctor(System.String,System.String,Objects.ICurve,Objects.BuiltElements.Level,System.Double,System.Double,System.Double,System.Boolean,System.Boolean,System.Collections.Generic.List{Speckle.Core.Models.Base},System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Revit wall
|
||||
</summary>
|
||||
<param name="family"></param>
|
||||
<param name="type"></param>
|
||||
<param name="baseLine"></param>
|
||||
<param name="level"></param>
|
||||
<param name="height"></param>
|
||||
<param name="baseOffset"></param>
|
||||
<param name="topOffset"></param>
|
||||
<param name="flipped"></param>
|
||||
<param name="structural"></param>
|
||||
<param name="elements"></param>
|
||||
<param name="parameters"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="height"/>, <paramref name="baseOffset"/>, and <paramref name="topOffset"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Duct.#ctor(Objects.Geometry.Line,System.Double,System.Double,System.Double,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Speckle duct
|
||||
</summary>
|
||||
<param name="baseLine"></param>
|
||||
<param name="width"></param>
|
||||
<param name="height"></param>
|
||||
<param name="diameter"></param>
|
||||
<param name="velocity"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="width"/>, <paramref name="height"/>, and <paramref name="diameter"/> params</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Duct.#ctor(Objects.ICurve,System.Double,System.Double,System.Double,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Speckle duct
|
||||
</summary>
|
||||
<param name="baseCurve"></param>
|
||||
<param name="width"></param>
|
||||
<param name="height"></param>
|
||||
<param name="diameter"></param>
|
||||
<param name="velocity"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="width"/>, <paramref name="height"/>, and <paramref name="diameter"/> params</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Featureline.curve">
|
||||
<summary>
|
||||
The base curve of the featureline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Featureline.points">
|
||||
<summary>
|
||||
The points constructing the Featureline
|
||||
</summary>
|
||||
<remarks>
|
||||
Can include both intersection and elevation points
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Featureline.displayValue">
|
||||
<summary>
|
||||
The 3D curves generated from the curve and points of the featureline
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Level.#ctor(System.String,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Speckle level
|
||||
</summary>
|
||||
<param name="name"></param>
|
||||
<param name="elevation"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="elevation"/> param</remarks>
|
||||
</member>
|
||||
<member name="T:Objects.BuiltElements.Network">
|
||||
<summary>
|
||||
Represents graph connections between built elements objects
|
||||
</summary>
|
||||
<remarks>
|
||||
Network <see cref="P:Objects.BuiltElements.Network.elements"/> may need to be created first in native applications before they are linked.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Network.elements">
|
||||
<summary>
|
||||
The elements contained in the network
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.Network.links">
|
||||
<summary>
|
||||
The connections between <see cref="P:Objects.BuiltElements.Network.elements"/>
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkElement.linkIndices">
|
||||
<summary>
|
||||
The index of the links in <see cref="P:Objects.BuiltElements.NetworkElement.network"/> that are connected to this element
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkElement.links">
|
||||
<summary>
|
||||
Retrieves the links for this element
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkLink.elementIndices">
|
||||
<summary>
|
||||
The index of the elements in <see cref="P:Objects.BuiltElements.NetworkLink.network"/> that are connected by this link
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.BuiltElements.NetworkLink.elements">
|
||||
<summary>
|
||||
Retrieves the elements for this link
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Room.#ctor(System.String,System.String,Objects.BuiltElements.Level,Objects.Geometry.Point)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Room
|
||||
</summary>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="height"/> param</remarks>
|
||||
<remarks>Assign units when using this constructor due to <see cref="P:Objects.BuiltElements.Room.height"/> prop</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Room.#ctor(System.String,System.String,Objects.BuiltElements.Level,Objects.Geometry.Point,System.Collections.Generic.List{Objects.BuiltElements.Revit.Parameter})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Room
|
||||
</summary>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="height"/> param</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.BuiltElements.Wall.#ctor(System.Double,Objects.ICurve,System.Collections.Generic.List{Speckle.Core.Models.Base})">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a Speckle wall
|
||||
</summary>
|
||||
<param name="height"></param>
|
||||
<param name="baseLine"></param>
|
||||
<param name="elements"></param>
|
||||
<remarks>Assign units when using this constructor due to <paramref name="height"/> param</remarks>
|
||||
<remarks>Assign units when using this constructor due to <see cref="P:Objects.BuiltElements.Room.height"/> prop</remarks>
|
||||
</member>
|
||||
<member name="T:Objects.Geometry.Arc">
|
||||
<summary>
|
||||
@@ -827,7 +897,6 @@
|
||||
<member name="P:Objects.Geometry.ControlPoint.value">
|
||||
<summary>
|
||||
OBSOLETE - This is just here for backwards compatibility.
|
||||
You should not use this for anything. Access coordinates using X,Y,Z and weight fields.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Curve.#ctor">
|
||||
@@ -890,7 +959,7 @@
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Curve.ToList">
|
||||
<summary>
|
||||
Returns the vales of this <see cref="T:Objects.Geometry.Curve"/> as a list of numbers
|
||||
Returns the values of this <see cref="T:Objects.Geometry.Curve"/> as a list of numbers
|
||||
</summary>
|
||||
<returns>A list of values representing the <see cref="T:Objects.Geometry.Curve"/></returns>
|
||||
</member>
|
||||
@@ -1019,10 +1088,10 @@
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Mesh.GetTextureCoordinate(System.Int32)">
|
||||
<summary>
|
||||
Gets a texture coordinate as a <see cref="!:(T1, T2)"/> by <paramref name="index"/>
|
||||
Gets a texture coordinate as a <see cref="T:System.ValueTuple`2"/> by <paramref name="index"/>
|
||||
</summary>
|
||||
<param name="index">The index of the texture coordinate</param>
|
||||
<returns>Texture coordinate as a <see cref="!:(T1, T2)"/></returns>
|
||||
<returns>Texture coordinate as a <see cref="T:System.ValueTuple`2"/></returns>
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Mesh.AlignVerticesWithTexCoordsByIndex">
|
||||
<summary>
|
||||
@@ -1123,7 +1192,7 @@
|
||||
<param name="x">The x coordinate</param>
|
||||
<param name="y">The y coordinate</param>
|
||||
<param name="z">The z coordinate</param>
|
||||
<param name="units">The units the point's coordinates are in.</param>
|
||||
<param name="units">The units of the point's coordinates. Defaults to Meters. </param>
|
||||
<param name="applicationId">The object's unique application ID</param>
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Point.#ctor(Objects.Geometry.Vector)">
|
||||
@@ -1154,13 +1223,10 @@
|
||||
</member>
|
||||
<member name="P:Objects.Geometry.Point.units">
|
||||
<summary>
|
||||
The unit's this <see cref="T:Objects.Geometry.Vector"/> is in.
|
||||
The units this <see cref="T:Objects.Geometry.Point"/> is in.
|
||||
This should be one of the units specified in <see cref="T:Speckle.Core.Kits.Units"/>
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.Geometry.Point.bbox">
|
||||
<inheritdoc/>
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Point.TransformTo(Objects.Other.Transform,Objects.Geometry.Point@)">
|
||||
<inheritdoc/>
|
||||
</member>
|
||||
@@ -1581,7 +1647,7 @@
|
||||
Sets the control points of this <see cref="T:Objects.Geometry.Surface"/>.
|
||||
</summary>
|
||||
<param name="value">A 2-dimensional array of <see cref="T:Objects.Geometry.ControlPoint"/> instances.</param>
|
||||
<remarks>The <see cref="!:value"/> must be ordered following directions "[u][v]"</remarks>
|
||||
<remarks>The <paramref name="value"/> must be ordered following directions "[u][v]"</remarks>
|
||||
</member>
|
||||
<member name="M:Objects.Geometry.Surface.ToList">
|
||||
<summary>
|
||||
@@ -1842,6 +1908,16 @@
|
||||
if a native displayable object cannot be converted.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.ICivilCalculatedObject">
|
||||
<summary>
|
||||
Represents a calculated object for civil disciplines
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.ICivilCalculatedObject.codes">
|
||||
<summary>
|
||||
<see cref="P:Objects.ICivilCalculatedObject.codes"/> for this calculated object.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.ObjectsKit">
|
||||
<summary>
|
||||
The default Speckle Kit
|
||||
@@ -1876,7 +1952,7 @@
|
||||
</member>
|
||||
<member name="T:Objects.Organization.ModelInfo">
|
||||
<summary>
|
||||
Basic model info class to be attached to the <see cref="!:Model.info"/> field on a <see cref="!:Model"/> object.
|
||||
Basic model info class
|
||||
It contains general information about the model and can be extended or subclassed to include more application-specific
|
||||
information.
|
||||
</summary>
|
||||
@@ -1893,8 +1969,7 @@
|
||||
</member>
|
||||
<member name="T:Objects.Organization.BIMModelInfo">
|
||||
<summary>
|
||||
Extended <see cref="T:Objects.Organization.ModelInfo"/> to be attached to the <see cref="!:Model.info"/> field on a <see cref="!:Model"/> object.
|
||||
This contains additional properties applicable to AEC projects.
|
||||
Extended <see cref="T:Objects.Organization.ModelInfo"/> to contain additional properties applicable to AEC projects.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Objects.Organization.BIMModelInfo.clientName">
|
||||
@@ -1953,6 +2028,16 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:Objects.Other.Civil.CivilDataField.context">
|
||||
<summary>
|
||||
The context type of the Civil3D part
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.Other.DataField">
|
||||
<summary>
|
||||
Generic class for a data field
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.Other.Dimension">
|
||||
<summary>
|
||||
Dimension class
|
||||
@@ -2091,18 +2176,6 @@
|
||||
<remarks>This method will skip scaling. If you need scaling, we recommend using the transform instead.</remarks>
|
||||
<returns>A Plane on the insertion point of this Block Instance, with the correct 3-axis rotations.</returns>
|
||||
</member>
|
||||
<member name="M:Objects.Other.Revit.RevitInstance.GetInsertionPlane">
|
||||
<summary>
|
||||
Returns a plane representing the insertion point and orientation of this revit instance.
|
||||
</summary>
|
||||
<remarks>This method will skip scaling. If you need scaling, we recommend using the transform instead.</remarks>
|
||||
<returns>A Plane on the insertion point of this Block Instance, with the correct 3-axis rotations.</returns>
|
||||
</member>
|
||||
<member name="T:Objects.Other.Revit.RevitMaterial">
|
||||
<summary>
|
||||
Material in Revit defininf all revit properties from Autodesk.Revit.DB.Material
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.Other.Material">
|
||||
<summary>
|
||||
Generic class for materials containing generic parameters
|
||||
@@ -2128,6 +2201,18 @@
|
||||
And: https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.Other.Revit.RevitInstance.GetInsertionPlane">
|
||||
<summary>
|
||||
Returns a plane representing the insertion point and orientation of this revit instance.
|
||||
</summary>
|
||||
<remarks>This method will skip scaling. If you need scaling, we recommend using the transform instead.</remarks>
|
||||
<returns>A Plane on the insertion point of this Block Instance, with the correct 3-axis rotations.</returns>
|
||||
</member>
|
||||
<member name="T:Objects.Other.Revit.RevitMaterial">
|
||||
<summary>
|
||||
Material in Revit defininf all revit properties from Autodesk.Revit.DB.Material
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Objects.Other.Text">
|
||||
<summary>
|
||||
Text class for Rhino and AutoCAD
|
||||
@@ -2154,7 +2239,7 @@
|
||||
<param name="units"></param>
|
||||
<exception cref="T:Speckle.Core.Logging.SpeckleException"></exception>
|
||||
</member>
|
||||
<member name="M:Objects.Other.Transform.#ctor(System.Numerics.Matrix4x4,System.String)">
|
||||
<member name="M:Objects.Other.Transform.#ctor(System.DoubleNumerics.Matrix4x4,System.String)">
|
||||
<summary>
|
||||
Construct a transform from a 4x4 matrix and translation units
|
||||
</summary>
|
||||
@@ -2184,7 +2269,7 @@
|
||||
Units for translation
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Objects.Other.Transform.Decompose(System.Numerics.Vector3@,System.Numerics.Quaternion@,System.Numerics.Vector4@)">
|
||||
<member name="M:Objects.Other.Transform.Decompose(System.DoubleNumerics.Vector3@,System.DoubleNumerics.Quaternion@,System.DoubleNumerics.Vector4@)">
|
||||
<summary>
|
||||
Decomposes matrix into its scaling, rotation, and translation components
|
||||
</summary>
|
||||
@@ -2255,7 +2340,6 @@
|
||||
<summary>
|
||||
SchemaBuilder constructor for a structural model object
|
||||
</summary>
|
||||
<param name="modelInfo"></param>
|
||||
<param name="nodes"></param>
|
||||
<param name="elements"></param>
|
||||
<param name="loads"></param>
|
||||
@@ -2323,6 +2407,13 @@
|
||||
<param name="orientationNode"></param>
|
||||
<param name="orientationAngle"></param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.Geometry.Storey.#ctor(System.String,System.Double)">
|
||||
<summary>
|
||||
A storey in the structural model
|
||||
</summary>
|
||||
<param name="name">The name of the storey</param>
|
||||
<param name="elevation">The elevation of the storey (along the global z-axis, ie. storey exists in the global XY plane)</param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.GSA.Geometry.GSANode.#ctor(System.Int32,Objects.Geometry.Point,Objects.Structural.Geometry.Restraint,Objects.Structural.Geometry.Axis,Objects.Structural.Properties.PropertySpring,Objects.Structural.Properties.PropertyMass,Objects.Structural.Properties.PropertyDamper,System.Double,System.String)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for a GSA node
|
||||
@@ -2335,42 +2426,6 @@
|
||||
<param name="damperProperty"></param>
|
||||
<param name="localElementSize"></param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.Geometry.Element1D.#ctor(Objects.Geometry.Line,Objects.Structural.Properties.Property1D,Objects.Structural.Geometry.ElementType1D,System.String,Objects.Structural.Geometry.Restraint,Objects.Structural.Geometry.Restraint,Objects.Geometry.Vector,Objects.Geometry.Vector,Objects.Geometry.Plane)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for structural 1D element (based on local axis)
|
||||
</summary>
|
||||
<param name="baseLine"></param>
|
||||
<param name="property"></param>
|
||||
<param name="type"></param>
|
||||
<param name="name"></param>
|
||||
<param name="end1Releases"></param>
|
||||
<param name="end2Releases"></param>
|
||||
<param name="end1Offset"></param>
|
||||
<param name="end2Offset"></param>
|
||||
<param name="localAxis"></param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.Geometry.Element1D.#ctor(Objects.Geometry.Line,Objects.Structural.Properties.Property1D,Objects.Structural.Geometry.ElementType1D,System.String,Objects.Structural.Geometry.Restraint,Objects.Structural.Geometry.Restraint,Objects.Geometry.Vector,Objects.Geometry.Vector,Objects.Structural.Geometry.Node,System.Double)">
|
||||
<summary>
|
||||
SchemaBuilder constructor for structural 1D element (based on orientation node and angle)
|
||||
</summary>
|
||||
<param name="baseLine"></param>
|
||||
<param name="property"></param>
|
||||
<param name="type"></param>
|
||||
<param name="name"></param>
|
||||
<param name="end1Releases"></param>
|
||||
<param name="end2Releases"></param>
|
||||
<param name="end1Offset"></param>
|
||||
<param name="end2Offset"></param>
|
||||
<param name="orientationNode"></param>
|
||||
<param name="orientationAngle"></param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.Geometry.Storey.#ctor(System.String,System.Double)">
|
||||
<summary>
|
||||
A storey in the structural model
|
||||
</summary>
|
||||
<param name="name">The name of the storey</param>
|
||||
<param name="elevation">The elevation of the storey (along the global z-axis, ie. storey exists in the global XY plane)</param>
|
||||
</member>
|
||||
<member name="M:Objects.Structural.Loading.Load.#ctor(System.String,Objects.Structural.Loading.LoadCase)">
|
||||
<summary>
|
||||
A generalised structural load, described by a name and load case
|
||||
@@ -2508,7 +2563,7 @@
|
||||
</member>
|
||||
<member name="M:Objects.Utils.MeshTriangulationHelper.TriangulateMesh(Objects.Geometry.Mesh,System.Boolean)">
|
||||
<summary>
|
||||
Triangulates all faces in <paramref name="Mesh"/>.
|
||||
Triangulates all faces in <paramref name="mesh"/>.
|
||||
</summary>
|
||||
<param name="mesh">The mesh to triangulate.</param>
|
||||
<param name="preserveQuads">If <see langword="true"/>, will not triangulate quad faces.</param>
|
||||
@@ -2519,13 +2574,13 @@
|
||||
</member>
|
||||
<member name="M:Objects.Utils.MeshTriangulationHelper.TriangulateFace(System.Int32,System.Collections.Generic.IReadOnlyList{System.Int32},System.Collections.Generic.IReadOnlyList{System.Double},System.Boolean)">
|
||||
<summary>
|
||||
Calculates the triangulation of the face at <paramref name="faceIndex"/> in <paramref name="mesh"/>.
|
||||
Calculates the triangulation of the face at <paramref name="faceIndex"/> in <paramref name="faces"/> list.
|
||||
</summary>
|
||||
<remarks>
|
||||
This implementation is based the ear clipping method
|
||||
Proposed by "Christer Ericson (2005) <i>Real-Time Collision Detection</i>".
|
||||
</remarks>
|
||||
<param name="faceIndex">The index of the face's cardinality indicator <c>n</c> in <paramref name="mesh"/>.<see cref="P:Objects.Geometry.Mesh.faces"/></param>.
|
||||
<param name="faceIndex">The index of the face's cardinality indicator <c>n</c> in <paramref name="faces"/> list</param>.
|
||||
<param name="faces"></param>
|
||||
<param name="vertices"></param>
|
||||
<param name="includeIndicators">if <see langword="true"/>, the returned list will include cardinality indicators for each triangle
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Logging;
|
||||
|
||||
namespace Speckle.ConnectorUnity
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
@@ -111,9 +112,9 @@ namespace Speckle.ConnectorUnity.Utils
|
||||
public readonly Task Task;
|
||||
public override bool keepWaiting => !Task.IsCompleted;
|
||||
|
||||
public WaitForTask(Func<Task> function)
|
||||
public WaitForTask(Func<Task> function, CancellationToken cancellationToken = default)
|
||||
{
|
||||
Task = Task.Run(function);
|
||||
Task = Task.Run(function, cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,9 +125,12 @@ namespace Speckle.ConnectorUnity.Utils
|
||||
public TResult Result => Task.Result;
|
||||
public override bool keepWaiting => !Task.IsCompleted;
|
||||
|
||||
public WaitForTask(Func<Task<TResult>> function)
|
||||
public WaitForTask(
|
||||
Func<Task<TResult>> function,
|
||||
CancellationToken cancellationToken = default
|
||||
)
|
||||
{
|
||||
this.Task = System.Threading.Tasks.Task.Run(function);
|
||||
this.Task = System.Threading.Tasks.Task.Run(function, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Linq;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Credentials;
|
||||
using Speckle.Core.Helpers;
|
||||
using UnityEngine;
|
||||
|
||||
#nullable enable
|
||||
@@ -24,7 +25,13 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
}
|
||||
}
|
||||
|
||||
protected override string? KeyFunction(Account? value) => value?.id;
|
||||
protected override string? KeyFunction(Account? value)
|
||||
{
|
||||
if (value is null)
|
||||
return null;
|
||||
|
||||
return value.id + Crypt.Md5(value.serverInfo.url ?? "", "X2");
|
||||
}
|
||||
|
||||
public override void RefreshOptions()
|
||||
{
|
||||
|
||||
+8
-4
@@ -9,8 +9,12 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
[Serializable]
|
||||
public sealed class BranchSelection : OptionSelection<Branch>
|
||||
{
|
||||
[field: SerializeField, Range(1, 100), Tooltip("Number of branches to request")]
|
||||
public int BranchesLimit { get; set; } = 100;
|
||||
[field:
|
||||
SerializeField,
|
||||
Range(1, ServerLimits.BRANCH_GET_LIMIT),
|
||||
Tooltip("Number of branches to request")
|
||||
]
|
||||
public int BranchesLimit { get; set; } = ServerLimits.OLD_BRANCH_GET_LIMIT;
|
||||
|
||||
[field: SerializeField, Range(1, 100), Tooltip("Number of commits to request")]
|
||||
public int CommitsLimit { get; set; } = 25;
|
||||
@@ -30,14 +34,14 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
StreamSelection.OnSelectionChange = RefreshOptions;
|
||||
}
|
||||
|
||||
protected override string? KeyFunction(Branch? value) => value?.name;
|
||||
protected override string? KeyFunction(Branch? value) => value?.id;
|
||||
|
||||
public override void RefreshOptions()
|
||||
{
|
||||
Stream? stream = StreamSelection.Selected;
|
||||
if (stream == null)
|
||||
return;
|
||||
IList<Branch> branches;
|
||||
IReadOnlyList<Branch> branches;
|
||||
try
|
||||
{
|
||||
branches = Client!
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
|
||||
public override void RefreshOptions()
|
||||
{
|
||||
Branch? branch = BranchSelection!.Selected;
|
||||
Branch? branch = BranchSelection.Selected;
|
||||
if (branch == null)
|
||||
return;
|
||||
List<Commit> commits = branch.commits.items;
|
||||
|
||||
+44
-32
@@ -10,7 +10,7 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
/// <summary>
|
||||
/// Reusable <see langword="abstract"/> serializable type that abstracts
|
||||
/// the fetching of <typeparamref name="TOption"/> objects.
|
||||
/// And exposes an <see cref="Array"/> of <see cref="Options"/>
|
||||
/// And exposes an list of <see cref="Options"/>
|
||||
/// with serialised selection.
|
||||
/// </summary>
|
||||
/// <typeparam name="TOption"></typeparam>
|
||||
@@ -18,32 +18,42 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
public abstract class OptionSelection<TOption>
|
||||
where TOption : class
|
||||
{
|
||||
[SerializeField]
|
||||
private int selectedIndex = -1;
|
||||
public IReadOnlyList<TOption> Options { get; protected set; } = Array.Empty<TOption>();
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get => selectedIndex;
|
||||
set
|
||||
{
|
||||
selectedIndex = value;
|
||||
OnSelectionChange?.Invoke();
|
||||
}
|
||||
}
|
||||
private Dictionary<string, int>? _indexMap;
|
||||
|
||||
[SerializeField]
|
||||
private string? selectedId;
|
||||
|
||||
public TOption? Selected
|
||||
{
|
||||
get
|
||||
{
|
||||
if (Options is null)
|
||||
if (selectedId == null)
|
||||
return null;
|
||||
if (SelectedIndex < 0 || SelectedIndex >= Options.Length)
|
||||
return null;
|
||||
return Options[SelectedIndex];
|
||||
|
||||
TryGetOption(selectedId, out var value);
|
||||
return value;
|
||||
}
|
||||
set
|
||||
{
|
||||
selectedId = KeyFunction(value);
|
||||
OnSelectionChange?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
public TOption[] Options { get; protected set; } = Array.Empty<TOption>();
|
||||
public bool TryGetOption(string key, [NotNullWhen(true)] out TOption? value)
|
||||
{
|
||||
if (_indexMap is not null && _indexMap.TryGetValue(key, out int index))
|
||||
{
|
||||
value = Options[index];
|
||||
return true;
|
||||
}
|
||||
|
||||
value = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public Action? OnSelectionChange { get; set; }
|
||||
|
||||
public abstract Client? Client { get; }
|
||||
@@ -53,36 +63,38 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
|
||||
public abstract void RefreshOptions();
|
||||
|
||||
protected void GenerateOptions(IList<TOption> source, Func<TOption, int, bool> isDefault)
|
||||
protected void GenerateOptions(
|
||||
IReadOnlyCollection<TOption?> source,
|
||||
Func<TOption, int, bool> isDefault
|
||||
)
|
||||
{
|
||||
List<TOption> optionsToAdd = new(source.Count);
|
||||
int defaultOption = -1;
|
||||
Dictionary<string, int> indexMap = new(source.Count);
|
||||
string? defaultOption = null;
|
||||
int index = 0;
|
||||
foreach (TOption? a in source)
|
||||
{
|
||||
if (a == null)
|
||||
continue;
|
||||
|
||||
var key = KeyFunction(a);
|
||||
optionsToAdd.Add(a);
|
||||
indexMap.Add(key, index);
|
||||
|
||||
if (isDefault(a, index))
|
||||
defaultOption = index;
|
||||
defaultOption = key;
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
TOption? currentSelected = Selected;
|
||||
bool selectionOutOfRange = SelectedIndex < 0 || SelectedIndex >= optionsToAdd.Count;
|
||||
if (
|
||||
selectionOutOfRange
|
||||
|| (
|
||||
currentSelected != null
|
||||
&& KeyFunction(currentSelected) != KeyFunction(optionsToAdd[SelectedIndex])
|
||||
)
|
||||
)
|
||||
string? currentSelected = selectedId;
|
||||
if (currentSelected is null || !indexMap.ContainsKey(currentSelected))
|
||||
{
|
||||
selectedIndex = defaultOption;
|
||||
selectedId = defaultOption;
|
||||
}
|
||||
|
||||
Options = optionsToAdd.ToArray();
|
||||
//Debug.Log($"{this.GetType()} updated");
|
||||
Options = optionsToAdd;
|
||||
_indexMap = indexMap;
|
||||
OnSelectionChange?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ namespace Speckle.ConnectorUnity.Wrappers.Selection
|
||||
{
|
||||
if (Client == null)
|
||||
return;
|
||||
IList<Stream> streams;
|
||||
IReadOnlyList<Stream> streams;
|
||||
try
|
||||
{
|
||||
streams = Client.StreamsGet(StreamsLimit).GetAwaiter().GetResult();
|
||||
|
||||
@@ -5,7 +5,6 @@ using System.Collections.Specialized;
|
||||
using Speckle.Core.Api;
|
||||
using Speckle.Core.Models;
|
||||
using Speckle.Core.Serialisation;
|
||||
using Speckle.Newtonsoft.Json;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Speckle.ConnectorUnity.Wrappers
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "systems.speckle.speckle-unity",
|
||||
"version": "2.15.3",
|
||||
"version": "2.20.0",
|
||||
"displayName": "Speckle Unity Connector",
|
||||
"description": "AEC Interoperability for Unity through Speckle",
|
||||
"unity": "2021.1",
|
||||
@@ -21,4 +21,4 @@
|
||||
"email": "hello@speckle.systems",
|
||||
"url": "https://speckle.systems"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
m_EditorVersion: 2021.3.22f1
|
||||
m_EditorVersionWithRevision: 2021.3.22f1 (b6c551784ba3)
|
||||
m_EditorVersion: 2021.3.30f1
|
||||
m_EditorVersionWithRevision: 2021.3.30f1 (b4360d7cdac4)
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
<h1 align="center">
|
||||
<img src="https://user-images.githubusercontent.com/2679513/131189167-18ea5fe1-c578-47f6-9785-3748178e4312.png" width="150px"/><br/>
|
||||
Speckle | Unity
|
||||
</h1>
|
||||
|
||||
<p align="center"><a href="https://twitter.com/SpeckleSystems"><img src="https://img.shields.io/twitter/follow/SpeckleSystems?style=social" alt="Twitter Follow"></a> <a href="https://speckle.community"><img src="https://img.shields.io/discourse/users?server=https%3A%2F%2Fspeckle.community&style=flat-square&logo=discourse&logoColor=white" alt="Community forum users"></a> <a href="https://speckle.systems"><img src="https://img.shields.io/badge/https://-speckle.systems-royalblue?style=flat-square" alt="website"></a> <a href="https://speckle.guide/dev/"><img src="https://img.shields.io/badge/docs-speckle.guide-orange?style=flat-square&logo=read-the-docs&logoColor=white" alt="docs"></a></p>
|
||||
|
||||
# Connector Unity
|
||||
> Speckle is the first AEC data hub that connects with your favorite AEC tools. Speckle exists to overcome the challenges of working in a fragmented industry where communication, creative workflows, and the exchange of data are often hindered by siloed software and processes. It is here to make the industry better.
|
||||
|
||||
[](https://twitter.com/SpeckleSystems) [](https://discourse.speckle.works) [](https://speckle.systems) [](https://speckle.guide/user/unity.html)
|
||||
<h3 align="center">
|
||||
Speckle Connector for Unity
|
||||
</h3>
|
||||
|
||||
> [!WARNING]
|
||||
> This is a legacy repo! A new next generation connector will be coming soon. In the meantime, check out our active next generation repos here 👇<br/>
|
||||
> [`speckle-sharp-connectors`](https://github.com/specklesystems/speckle-sharp-connectors): our .NET next generation connectors and desktop UI<br/>
|
||||
> [`speckle-sharp-sdk`](https://github.com/specklesystems/speckle-sharp-sdk): our .NET SDK, Tests, and Objects
|
||||
|
||||
|
||||
## Introduction
|
||||
@@ -64,7 +76,7 @@ We encourage everyone interested to hack / contribute / debug / give feedback to
|
||||
### Requirements
|
||||
|
||||
- Unity 2021 or greater
|
||||
- Have created an account on [speckle.xyz](https://speckle.xyz) (or your own server)
|
||||
- Have created an account on [app.speckle.systems](https://app.speckle.systems) (or your own server)
|
||||
- Installed [Speckle Manager](https://speckle.guide/user/manager.html) (recommended, otherwise you'll need to implement your own authentication system in Unity)
|
||||
|
||||
### Dependencies
|
||||
|
||||
Reference in New Issue
Block a user