Class SpeckleUnityReceiver
A SpeckleUnityClient
specialised in receiving streams and updating the scene to reflect
any updates made to the stream. Made serializable so that it would render in the inspector along
with its exposed fields.
Inherited Members
Namespace: SpeckleUnity
Assembly: cs.temp.dll.dll
Syntax
public class SpeckleUnityReceiver : SpeckleUnityClient
Constructors
SpeckleUnityReceiver(String, Transform)
Creates an uninitialized instance of a SpeckleUnityReceiver
.
Declaration
public SpeckleUnityReceiver(string streamID, Transform streamRoot = null)
Parameters
Type | Name | Description |
---|---|---|
System.String | streamID | The stream ID to be received. |
Transform | streamRoot | An optional root object for the stream to be spawnted under. |
Fields
deserializedStreamObjects
A list containing all the Speckle objects from the stream AFTER they had been converted into native Unity objects.
Declaration
protected List<object> deserializedStreamObjects
Field Value
Type | Description |
---|---|
System.Collections.Generic.List<System.Object> |
layerLookup
Key value pairs of SpeckleCore Layer
s and Unity Transform
s to help with reconstructing
the Stream layer heirarchy within the scene heirarchy.
Declaration
protected Dictionary<Layer, Transform> layerLookup
Field Value
Type | Description |
---|---|
System.Collections.Generic.Dictionary<Layer, Transform> |
messageContent
String used to help with the coroutine workaround. Is set to the conent of the web socket event when it is fired for the manager to respond against.
Declaration
protected string messageContent
Field Value
Type | Description |
---|---|
System.String |
messageReceived
Boolean used to help with the coroutine workaround. Is set to true when the web socket event is fired for the manager to respond against and then immediately set back to false.
Declaration
protected bool messageReceived
Field Value
Type | Description |
---|---|
System.Boolean |
propertyBlock
Declaration
protected MaterialPropertyBlock propertyBlock
Field Value
Type | Description |
---|---|
MaterialPropertyBlock |
streamRoot
An optional Transform
that can be optionally set in the inspector for the received stream
to be spawned under. If left null, a new one will be created and named after the stream ID.
Declaration
public Transform streamRoot
Field Value
Type | Description |
---|---|
Transform |
Methods
ClientOnWsMessage(Object, SpeckleEventArgs)
Invoked whenever this client is notified of updates to the stream from the server.
Declaration
protected override void ClientOnWsMessage(object source, SpeckleEventArgs e)
Parameters
Type | Name | Description |
---|---|---|
System.Object | source | |
SpeckleEventArgs | e |
Overrides
Remarks
NOTE: At the time of writing, coroutines can't be invoked via event
callbacks for some reason. Until this is resolved, the OnWsMessageCheck ()
method can't be called directly and instead, the manager instance will
check on each frame whether the method needs to be called in response
to this method being invoked.
ConstructLayers()
According to the available layers found in the stream, create a heirarchy of transforms with the same names as those layers and map them against their original layer objects in a dictionary.
Declaration
protected virtual void ConstructLayers()
CreateContents()
First constructs the layers for the stream then deserializes the json of all the stream's
objects into Unity gameobjects. The speed of this process is determined by
SpeckleUnityManager.spawnSpeed
.
Declaration
protected virtual Task CreateContents()
Returns
Type | Description |
---|---|
Task | An async |
FindParentInHierarchy(String[])
An algorithm which looks up the layer heirarchy already created in the scene to find the
parent Transform
of the next layer to create.
Declaration
protected Transform FindParentInHierarchy(string[] parents)
Parameters
Type | Name | Description |
---|---|---|
System.String[] | parents | An array of strings which contains the names of the parent layers leading up to and including the direct parent of the next layer to create. |
Returns
Type | Description |
---|---|
Transform | The |
InitializeClient(SpeckleUnityManager, String, String)
All clients need to be initialized which creates an instance of an internal speckle client object, authenticates against the server and provides a manager object to receive inspector arguments from.
Declaration
public override Task InitializeClient(SpeckleUnityManager manager, string url, string apiToken)
Parameters
Type | Name | Description |
---|---|---|
SpeckleUnityManager | manager | The manager instance that provides inspector values for this client. |
System.String | url | The url of the speckle server to connect to. |
System.String | apiToken | The authentication token of the user to connect as. |
Returns
Type | Description |
---|---|
Task | An async |
Overrides
OnWsMessageCheck()
Checks the content of the web socket message received from the server and invokes the appropriate coroutine for updating the scene locally to represent the latest state of the stream being received.
Declaration
public virtual void OnWsMessageCheck()
PostProcessObject(Object, Int32)
Called on each stream object after it's been deserialized. Checks against what Type
the
object ended up as and assigns some additional stuff to it including setting geometry objects under
the correct layer.
Declaration
public virtual void PostProcessObject(object deserializedStreamObject, int objectIndex)
Parameters
Type | Name | Description |
---|---|---|
System.Object | deserializedStreamObject | The stream object after it had been converted from json into a native object. |
System.Int32 | objectIndex | The indext of this stream object to help with placing it in the layer hierarchy. |
ReApplyRenderingRule()
Declaration
public virtual void ReApplyRenderingRule()
RemoveContents()
Clean up all gameobjects for the geometry spawned in from the stream including layer objects.
Declaration
public virtual void RemoveContents()
UpdateGlobal()
Coroutine for the global update message for the stream. Simply put, it redownloads the stream data, cleans up everything locally and respawns the whole stream.
Declaration
protected virtual Task UpdateGlobal()
Returns
Type | Description |
---|---|
Task | An async |