-Dscenery.Server=trueand the client needs to be pointed to the server via
scenery.MainPort- Port for the main channel. Default:
scenery.BackchannelPort- Port for the Backchannel. Default:
-Dscenery.RemoteCamera=trueis set cameras from the server scene are disregarded and a local one is used. If it is not or to false set the server scene has to provide a camera.
constructWithParameters(parameters)functions in the
Networkableinterface. No matter how the object was created afterwards the update method is called with the same object from the server again. The update happens after the object has been added to the scene graph.
Networkableobject needs to implement the
updatemethod. In the
updatemethod a fresh copy from the server is given as parameter and should be used to copy over relevant values to the client-side object.
@Transientare not serialized and therefore not available on the client-side copy of a object from the server. If those properties need to be synced anyway they should be returned in a serializable form in an overwrite of the
getAdditionalUpdateData()method. This method is called on the server at the serialization and the results are transmitted next to the object. The transmitted result of the
getAdditionalUpdateData()function is another parameter of the update function. Special attention has to be paid to parent classes which might also have additional data. This data has to be handled manually in the overriding methods.
Networkableobjects besides parent/child relations of the scene graph and node/attribute relations can't be synced automatically. For those the
Networkable.networkIDneeds to be saved as additional data on the server side and resolved in the
updatemethod with the
modifiedAtproperty need to be updated. For convenience the
updateModifiedAtmethod simply may be called like in [DefaultSpatial].
wantsSyncreturns false the object will be skipped in the registration like in [Camera].
getSubcomponents. The registration of attributes is handled that way for [DefaultNode]. One could extends this for rarely changing data objects to reduce the amount of times they are transmitted.
Volume.forNetworkcreate method should be used. It takes an implementation of the [VolumeInitalizer] interface.
VolumeFileSourcehas two parameters with each two options:
Given(val filePath: String)- for fixed file path witch are the same on every machine (eg. network drive or something like "C://Volume")
Settings(val settingsName: String = "VolumeFile")- the file path is taken from the VM parameter "-DVolumeFile=$pathquot; of each individual application
Resource(val path:String)- the volume is a resource reachable by the java loader
TIFF- tiff file format
SPIM- Spim xml data format