SPIN Framework

SPIN OSC Protocol

The SPIN Framework is designed so multiple processes can share state over a network via OpenSoundControl (OSC) messages. Below is the complete list of accepted OSC messages for the following nodes:

State Types:


AnimationNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setIndex <(float) index>
A client interface that allows for setting the animation time using a normalized index in the range [0,1]

/SPIN/{sceneID}/{nodeID} setUpdateRate <(float) hz>
param hz Update rate in hz

/SPIN/{sceneID}/{nodeID} setPlay <(int) p>
Turns animation on/off.

/SPIN/{sceneID}/{nodeID} setRecord <(int) r>
Turns on/off automatic recording. This implies that whenever the node gets an update of translation or orientation, a new position will be saved. Each position will be added with a timestamp relative to the start of the recording.

/SPIN/{sceneID}/{nodeID} setLoopMode <'SWING','LOOP','NO_LOOPING'>
Sets the loop mode for the animation. eg, SWING, LOOP, NO_LOOPING.

/SPIN/{sceneID}/{nodeID} storeCurrentPosition
Stores the node's current position/rotation/scale as a control point in the animation sequence

/SPIN/{sceneID}/{nodeID} storeCurrentPosition <(double) timestamp>
Adds the current position/rotation/scale into the animation sequence at the specified time offset, overriding any previous position at that time.

/SPIN/{sceneID}/{nodeID} controlPoint <(double) timestamp> <(float) x> <(float) y> <(float) z> <(float) rotX> <(float) rotY> <(float) rotZ> <(float) rotW> <(float) scaleX> <(float) scaleY> <(float) scaleZ>
Explicitely adds a control point into the animation sequence

/SPIN/{sceneID}/{nodeID} clear
Clears the current animation sequence


AttractorNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setDistanceDecay <(float) decay>
setDistanceDecay specifies how the attractive force decays as a function of distance. A decay of 1.0 is a linear decay; greater than 1 is exponential (slow at start, faster as you approach the attractor); less than 1 is logarithmic (fast at start, slower as you approach); and zero implies a constant decay (independent of distance).

/SPIN/{sceneID}/{nodeID} setAngularDecay <(float) decay>
setAngularDecay specifies how the attractive force decays as a function of incidence to the attractor's current orientation. ie, whether the force falls off linearly (1.0), exponentially (>1), logarithmically (<1), or not at all (0.0) if the attractor is not pointing directly at the target.

/SPIN/{sceneID}/{nodeID} setAttractorMode <'EXTRINSIC','INTRINSIC'>
Change the mode (see attractorMode enum).

/SPIN/{sceneID}/{nodeID} setForce <(float) force>
Set the attractive force (negative force for repulsion)

/SPIN/{sceneID}/{nodeID} addTarget <(const char *) targetID>
Add a target node to the list

/SPIN/{sceneID}/{nodeID} removeTarget <(const char *) targetID>
Remove a target from the list


ConstraintsNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setTarget <(const char *) id>
Sets a target whose properties can be used to limit movement of this node, depending on the type on constraint selected. (this should be a model node or shape node, or a group node ideally not too complex, because large amounts of triangles will lead to excessive calculations)

/SPIN/{sceneID}/{nodeID} setConstraintMode <'BASIC','DROP','COLLIDE','BOUNCE','STICK','COLLIDE_THRU'>
Sets the node's constraint mode, based on the types in constrainMode enum (see enum for details)

/SPIN/{sceneID}/{nodeID} setCubeSize <(float) xScale> <(float) yScale> <(float) zScale>
Sets the size of the imaginary cube beyond which the constrained node cannot pass, when constraint type BASIC is set.

/SPIN/{sceneID}/{nodeID} setCubeOffset <(float) x> <(float) y> <(float) z>
Sets the center of the BASIC constraint cube with respect to the local coordinate system (either the parent object or the world grid).

/SPIN/{sceneID}/{nodeID} applyConstrainedTranslation
A pseudo-recursive function that checks if a translation results in one or more intersections with the target node. If no intersection, this method defaults to just a setTranslation call. Otherwise, it will do a setTranslation for the collision point, and call itself again until there are no collisions left.


Contour:
/SPIN/{sceneID}/{nodeID} setParent <(const char *) newvalue>
This method schedules a change in parent for this node. The setParent() does not immediately change the scenegraph, since it can be called at any time, even while in a traversal. The graph is updated later using the attach() method, which is called by SceneManager->updateGraph() when there is a legal time to re-order the scenegraph.Internally, this method just sets the newParent property.

/SPIN/{sceneID}/{nodeID} attachTo <(const char *) parentID>
Attach this node to the node with parentID (if found).

/SPIN/{sceneID}/{nodeID} detachFrom <(const char *) parentID>
Detaches the node from the parentID (if found). Note: you can pass "*" for the parentID and the node will be detached from ALL parents.

/SPIN/{sceneID}/{nodeID} setAlpha <(float) alpha>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
<no description available>

/SPIN/{sceneID}/{nodeID} updateTransforms
Updates the contour with respect to any new parameters recently set. This function is called automatically by most of the other functions, such as setCurrentIndex, add, etc.

/SPIN/{sceneID}/{nodeID} setIndex <(float) newValue>
Sets the "index" vertex where child nodes will be attached to the contour This is handled using a value in the range 0 to 1.

/SPIN/{sceneID}/{nodeID} prev
Sets the index to the vertex previous to the current index in the contour

/SPIN/{sceneID}/{nodeID} next
Sets the index to the vertex after the current index in the contour.

/SPIN/{sceneID}/{nodeID} reset
Clears all information from the contour, leaving an empty node.

/SPIN/{sceneID}/{nodeID} add <(float) x> <(float) y> <(float) z>
Add a vertex to the front of the contour the (vectorArray). If the list of vectors reaches maximum size, the final vector is removed from the end of the contour. Please note that the index vertex (where children nodes are attached) remains in the same position on the contour even as the vertices change because this value is set as a proportion of the vertex length (a 0,1 range value).

/SPIN/{sceneID}/{nodeID} setMaxVertices <(int) newValue>
Sets the maximum number of vertices on the contour.

/SPIN/{sceneID}/{nodeID} setTrackingMode <(int) newValue>
Sets the mode of the contour according to the trackingMode enumerator. Determines whether children node will rotate as they move along the contour (FULL6D0F) or move along the contour without rotation (POSITION).

/SPIN/{sceneID}/{nodeID} setVisible <(int) newValue>
Sets whether the contour is visible or not.

/SPIN/{sceneID}/{nodeID} setThickness <(float) newValue>
Sets the thickness of the contour.

/SPIN/{sceneID}/{nodeID} setLineType <(int) newValue>
Sets the contour type according to the contourType enumerator. Determines whether the connections between vertices on the contour will be drawn as line segments (THIN), boxes (CUBIC), or circles (CYLINDRICAL).

/SPIN/{sceneID}/{nodeID} setColor <(float) newR> <(float) newG> <(float) newB> <(float) newA>
Sets the color of the contour in RGBA value.

/SPIN/{sceneID}/{nodeID} setLighting <(int) i>
Set whether the contour is influenced by lighting

/SPIN/{sceneID}/{nodeID} draw
Draws the contour according to the parameters set, i.e. contour type, color, number of vertices.


DSPNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} connect <(spin::DSPNode *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connectSource <(const char *) src>
Sets the current node as a sink to the specified node.

/SPIN/{sceneID}/{nodeID} disconnect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} setDebugColor <(float) r> <(float) g> <(float) b> <(float) a>
<no description available>

/SPIN/{sceneID}/{nodeID} setVUmeterFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setDirectivityFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLaserFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setRadiusFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setIntensity <(float) newvalue>
<no description available>

/SPIN/{sceneID}/{nodeID} updateVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} updateLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} drawDirectivity
<no description available>

/SPIN/{sceneID}/{nodeID} drawLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawRadius
<no description available>


Fog:
/SPIN/{sceneID}/{nodeID} removeFromScene
Abstract method getPath needs to be implemented Remove this stateset from all parents... essentially destroying the state, since no reference to it will exist anymore, and OSG will kill it.

/SPIN/{sceneID}/{nodeID} replace
Replaces a StateSet in the scene graph with this one. ie, goes through all parents of the provided stateset and replaces the object's state with this.

/SPIN/{sceneID}/{nodeID} setFogDensity <(float) density>
Set fog density (good values are around 0.001 - 0.1)

/SPIN/{sceneID}/{nodeID} setFogColor <(float) r> <(float) g> <(float) b> <(float) a>
Set fog color in RGBA value.


GeometryNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setNumVertices <(int) i>
Sets the number of vertices that this geometry is supposed to have.This should be a multiple of 3 if you want to draw using GL_TRIANGLES or amultiple of 4 if you want to draw using GL_QUADS. Anything else will draw using GL_LINES.If you grow the number of vertices, all new vertices will be created with default values: position of (0,0,0), full white color, and texcoords of (0,0).

/SPIN/{sceneID}/{nodeID} setVertex <(int) index> <(float) x> <(float) y> <(float) z>
Update the position of one vertex in the geometry, using an index.

/SPIN/{sceneID}/{nodeID} setColor <(int) index> <(float) red> <(float) green> <(float) blue> <(float) alpha>
Update the color of one vertex in the geometry, using an index.

/SPIN/{sceneID}/{nodeID} setTexCoord <(int) index> <(float) x> <(float) y>
Update the texture coord of one vertex in the geometry, using an index.

/SPIN/{sceneID}/{nodeID} setSingleSided <(int) singleSided>
Specify whether both sides or only one side of the shape is rendered. ie, whether the backface is culled or not.


GridNode:
/SPIN/{sceneID}/{nodeID} setParent <(const char *) newvalue>
This method schedules a change in parent for this node. The setParent() does not immediately change the scenegraph, since it can be called at any time, even while in a traversal. The graph is updated later using the attach() method, which is called by SceneManager->updateGraph() when there is a legal time to re-order the scenegraph.Internally, this method just sets the newParent property.

/SPIN/{sceneID}/{nodeID} attachTo <(const char *) parentID>
Attach this node to the node with parentID (if found).

/SPIN/{sceneID}/{nodeID} detachFrom <(const char *) parentID>
Detaches the node from the parentID (if found). Note: you can pass "*" for the parentID and the node will be detached from ALL parents.

/SPIN/{sceneID}/{nodeID} setAlpha <(float) alpha>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
<no description available>

/SPIN/{sceneID}/{nodeID} setSize <(int) _size>
The grid size is measured in meters, and defines how far out from the center the grid is drawn (ie, half width).

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the grid's line color in RGBA value.


GroupNode:
/SPIN/{sceneID}/{nodeID} setParent <(const char *) newvalue>
This method schedules a change in parent for this node. The setParent() does not immediately change the scenegraph, since it can be called at any time, even while in a traversal. The graph is updated later using the attach() method, which is called by SceneManager->updateGraph() when there is a legal time to re-order the scenegraph.Internally, this method just sets the newParent property.

/SPIN/{sceneID}/{nodeID} attachTo <(const char *) parentID>
Attach this node to the node with parentID (if found).

/SPIN/{sceneID}/{nodeID} detachFrom <(const char *) parentID>
Detaches the node from the parentID (if found). Note: you can pass "*" for the parentID and the node will be detached from ALL parents.

/SPIN/{sceneID}/{nodeID} setAlpha <(float) alpha>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
<no description available>

/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>


ImageTexture:
/SPIN/{sceneID}/{nodeID} printShaderSource
<no description available>

/SPIN/{sceneID}/{nodeID} clearUniforms
Remove all uniforms from this stateset

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type>
Create a uniform with the provided name and type. The value will be set to some default value

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type> <(const char *) defaultValue>
Create a uniform with the provided name and type, and set the initial value for the uniform.Note that defaults are provided as strings in all cases. So in the case of several values, the defaultValue would be a space-separated list of values.It is also possible to specify an array of vectors. For example, if the type is vec2, you can specify a defaultValue of 0.0 0.1 1.0 1.0 and this will generate two vec2 uniforms with indexes automatically added to the name: uniform name[0] = vec2(0.0,0.1); uniform name[1] = vec2(1.0,1.0); To send OSC messages to control these uniforms, you need to use the full name including square brackets. For example: /SPIN/default/shader setUniform_vec2 name[0] 0.0 0.0

/SPIN/{sceneID}/{nodeID} loadGLSLShader <(std::string) path>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_bool <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_int <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_float <(const char *) name> <(float) f>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec2 <(const char *) name> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec3 <(const char *) name> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec4 <(const char *) name> <(float) x> <(float) y> <(float) z> <(float) w>
<no description available>

/SPIN/{sceneID}/{nodeID} setShader <(const char *) path>
Creates a texture from a path on disk.

/SPIN/{sceneID}/{nodeID} setPath <(const char *) newPath>
Creates a texture from a path on disk.

/SPIN/{sceneID}/{nodeID} setTextureMode <'TEXTURE_2D','TEXTURE_RECTANGLE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setTextureResize <(bool) b>
<no description available>


LightSource:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setVisible <(int) visibilityFlag>
Set whether the light source is visible.

/SPIN/{sceneID}/{nodeID} setCutoff <(float) cutoff>
Cutoff is an angle (in degrees), measured from the center of the cone to the outer edge. 0 would give us a single laser-point, while 90 degrees will give us a hemisphere of light. Note that 0 is the min, and 90 is the max, but a special value of 180 degrees will turn the spotlight into an omnidirectional light.

/SPIN/{sceneID}/{nodeID} setExponent <(float) exponent>
This value defines the intensity of the light towards the edges of the cone. As objects move from the center of the spotlight to the edges, we have the option of attenuating the intensity of the light on the surface of the objects

/SPIN/{sceneID}/{nodeID} setAttenuation <(float) attenuation>
The attenuation parameter controls the amount of attenuation that occurs, as a light moves away from a surface. A value of 0 means no attenuation, so light intensity will be the same for any distance. A value of 1 means full linear attenuation.

/SPIN/{sceneID}/{nodeID} setAmbient <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the ambient value for the light source in RGBA.

/SPIN/{sceneID}/{nodeID} setDiffuse <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the diffuse value for the light source in RGBA.

/SPIN/{sceneID}/{nodeID} setSpecular <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the specular value for the light source in RGBA.


Listener:
/SPIN/{sceneID}/{nodeID} connect <(spin::DSPNode *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connectSource <(const char *) src>
Sets the current node as a sink to the specified node.

/SPIN/{sceneID}/{nodeID} disconnect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} setDebugColor <(float) r> <(float) g> <(float) b> <(float) a>
<no description available>

/SPIN/{sceneID}/{nodeID} setVUmeterFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setDirectivityFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLaserFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setRadiusFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setIntensity <(float) newvalue>
<no description available>

/SPIN/{sceneID}/{nodeID} updateVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} updateLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} drawDirectivity
<no description available>

/SPIN/{sceneID}/{nodeID} drawLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawRadius
<no description available>


MeasurementNode:
/SPIN/{sceneID}/{nodeID} setParent <(const char *) newvalue>
This method schedules a change in parent for this node. The setParent() does not immediately change the scenegraph, since it can be called at any time, even while in a traversal. The graph is updated later using the attach() method, which is called by SceneManager->updateGraph() when there is a legal time to re-order the scenegraph.Internally, this method just sets the newParent property.

/SPIN/{sceneID}/{nodeID} attachTo <(const char *) parentID>
Attach this node to the node with parentID (if found).

/SPIN/{sceneID}/{nodeID} detachFrom <(const char *) parentID>
Detaches the node from the parentID (if found). Note: you can pass "*" for the parentID and the node will be detached from ALL parents.

/SPIN/{sceneID}/{nodeID} setAlpha <(float) alpha>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
<no description available>

/SPIN/{sceneID}/{nodeID} sendMeasurements
sendMeasurements is where the actual computation takes place, and, depending on the reportMode, the measurements are sent out on the network

/SPIN/{sceneID}/{nodeID} setTarget <(const char *) targetID>
MeasurementNode requires a targetNode to be set, which defines which node in the scene is being measured.

/SPIN/{sceneID}/{nodeID} setReportingLevel <'REPORT_NONE','REPORT_BASIC','REPORT_ANGLES'>
This sets the level of reporting (choose a reportMode)


Menu3D:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setEnabled <(int) i>
Toggle whether this menu node is enabled or disabled.

/SPIN/{sceneID}/{nodeID} addItem <(const char *) itemText>
Add an item (TextNode) to the list (server-side only)

/SPIN/{sceneID}/{nodeID} removeItem <(int) itemIndex>
Remove an item (textNode) from the list by its itemIndex.

/SPIN/{sceneID}/{nodeID} removeItem <(const char *) itemID>
Remove an item (textNode) from the list by its ID.

/SPIN/{sceneID}/{nodeID} clearItems
Removes all text nodes from the menu.

/SPIN/{sceneID}/{nodeID} redraw
Redraws the menu after items are removed to eliminate the space left by the recently removed item(s).

/SPIN/{sceneID}/{nodeID} setHighlighted <(int) itemIndex>
Highlight an item from the list by its itemIndex.

/SPIN/{sceneID}/{nodeID} setHighlighted <(const char *) itemID>
Highlight an item from the list by its itemID.

/SPIN/{sceneID}/{nodeID} setHighlightColor <(float) r> <(float) g> <(float) b> <(float) a>
Set the color of the font in RGBA values when highlighted

/SPIN/{sceneID}/{nodeID} highlightNext
Highlights the item that follows the currently highlighted item.

/SPIN/{sceneID}/{nodeID} highlightPrev
Highlights the item previous to the currently highlighted item.

/SPIN/{sceneID}/{nodeID} select
<no description available>

/SPIN/{sceneID}/{nodeID} setItemOffset <(float) x> <(float) y> <(float) z>
Each successive menu item will appear at an offset from the previous

/SPIN/{sceneID}/{nodeID} setFont <(const char *) s>
wrapped from TextNode: sets font type

/SPIN/{sceneID}/{nodeID} setBillboard <'RELATIVE','POINT_EYE','STAY_UP'>
wrapped from TextNode: types come from billboardType enum: RELATIVE, POINT_EYE, STAY_UP

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
wrapped from TextNode: sets color in RGBA values


ModelNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setModelFromFile <(const char *) filename>
Load a 3D model from a file (eg, .osg, .3ds, .obj, .dae, etc). Make sure that StateRegistration flag is set if you want to have control over any textures or shaders withing the model

/SPIN/{sceneID}/{nodeID} setAttachCentroid <(int) i>
If attachCentroid is enabled, then children will be attached to the centroid of the currently loaded model. If not then it will be attached to this ModelNode's local origin.

/SPIN/{sceneID}/{nodeID} makeCentered
Translate the model so that the centroid is at the local (0,0,0)

/SPIN/{sceneID}/{nodeID} setStateRegistration <(int) i>
The StateRegistration flag should be set if you want any textures or shaders to be parsed out when loading a model. Any statesets found in the file will generate corresponding ReferencedStateSets for use within SPIN. This way, you'll be able to swap textures, control videos, adjust shader parameters, etc.

/SPIN/{sceneID}/{nodeID} setRenderBin <(int) i>
Render bins allow you to control drawing order, and manage Z-fighting. The higher the number, the later it gets processed (ie, appears on top). Default renderBin = 11

/SPIN/{sceneID}/{nodeID} setKeyframe <(int) index> <(float) keyframe>
Control the keyframe of a particular animation saved within the model (there can be several animations, hence the required index number)

/SPIN/{sceneID}/{nodeID} setPlaying <(int) index> <(int) playState>
Set the playing state of a particular animation (paused by default)

/SPIN/{sceneID}/{nodeID} setStateSet <(int) index> <(const char *) replacement>
For statesets embedded in the model, it is possible to swap with some other (already existing) stateset.Note: for this to work, stateRegistration must be enabled.

/SPIN/{sceneID}/{nodeID} setLighting <(int) i>
This lets you enable or disable the lighting for the entire model, BUT, really this should be done in individual statesets and can be overridden


ParticleSystem:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setCenter <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLifeTime <(float) seconds>
<no description available>

/SPIN/{sceneID}/{nodeID} setRadius <(float) radius>
<no description available>

/SPIN/{sceneID}/{nodeID} setMass <(float) mass>
<no description available>

/SPIN/{sceneID}/{nodeID} setEmissive <(int) emissiveFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLighting <(int) lightingFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setImagePath <(const char *) path>
<no description available>

/SPIN/{sceneID}/{nodeID} setFrequencyRange <(float) min> <(float) max>
<no description available>

/SPIN/{sceneID}/{nodeID} setCircularRange <(float) min> <(float) max>
<no description available>

/SPIN/{sceneID}/{nodeID} setSpeedRange <(float) min> <(float) max>
<no description available>


PointerNode:
/SPIN/{sceneID}/{nodeID} setVisible <(int) visibilityFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLength <(float) length>
<no description available>

/SPIN/{sceneID}/{nodeID} setThickness <(float) thickness>
<no description available>

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
<no description available>

/SPIN/{sceneID}/{nodeID} manipulate <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} lockToTarget <(const char *) nodeToLock>
This looks to see if there is a node being pointed at, and if so, it tells the nodeToLock to lock it's orientation to always point at that target. Useful for cameras.

/SPIN/{sceneID}/{nodeID} setGrabMode <'ORIENTATION_LOCK','RELATIVE'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} grab <(int) b>
The grab method selects the closest intersected node and temporarily attaches it to the pointer, allowing it to inherit any translation or rotation offsets.Notes: Only nodes derived from GroupNode can be grabbed.If no node is intersected, the grab won't do anything.The node is re-attached to it's original parent when released, so don't delete the parent in the meantime param b A boolean grab indicator (1 to grab, 0 to release)

/SPIN/{sceneID}/{nodeID} translateOnPointer <(float) f>
Slides the currently grabbed node (if there is one) along the pointer axis (ie, increasing or decreasing the distance). param f The amount by which to slide (positive values slide the attached node AWAY from the pointer

/SPIN/{sceneID}/{nodeID} rotateOnPointer <(float) f>
Rotates the currently grabbed node (if there is one) around the pointer axis. param f The amount by which to rotate around the pointer ray (in degrees)


RayNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setVisible <(int) visibilityFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLength <(float) length>
<no description available>

/SPIN/{sceneID}/{nodeID} setThickness <(float) thickness>
<no description available>

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
<no description available>


ReporterNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} forceAllReports
Sometimes something happens in the scene that might not change the matrices of the reporter or the target (eg, a SwitchNode changes the visibility of the node). This method allows us to force a recomputation of all reports in such a case.

/SPIN/{sceneID}/{nodeID} sendReports <(spin::_reporterTarget *) target>
sendReports checks which reportTypes are enabled, and actually performs computation for necessary reports, which are then sent out on the network

/SPIN/{sceneID}/{nodeID} addTarget <(const char *) targetID>
Add a target node to the report list

/SPIN/{sceneID}/{nodeID} removeTarget <(const char *) targetID>
Remove a target from the report list

/SPIN/{sceneID}/{nodeID} setReporting <(const char *) type> <(bool) enabled>
This enables or disables a particular reporting type

/SPIN/{sceneID}/{nodeID} setMaxRate <(float) hz>
Set the maximum reporting rate (hz). Note: updates are only sent when necessary, so there is no constant reporting mode.


Shader:
/SPIN/{sceneID}/{nodeID} removeFromScene
Abstract method getPath needs to be implemented Remove this stateset from all parents... essentially destroying the state, since no reference to it will exist anymore, and OSG will kill it.

/SPIN/{sceneID}/{nodeID} replace
Replaces a StateSet in the scene graph with this one. ie, goes through all parents of the provided stateset and replaces the object's state with this.

/SPIN/{sceneID}/{nodeID} printShaderSource
<no description available>

/SPIN/{sceneID}/{nodeID} clearUniforms
Remove all uniforms from this stateset

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type>
Create a uniform with the provided name and type. The value will be set to some default value

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type> <(const char *) defaultValue>
Create a uniform with the provided name and type, and set the initial value for the uniform.Note that defaults are provided as strings in all cases. So in the case of several values, the defaultValue would be a space-separated list of values.It is also possible to specify an array of vectors. For example, if the type is vec2, you can specify a defaultValue of 0.0 0.1 1.0 1.0 and this will generate two vec2 uniforms with indexes automatically added to the name: uniform name[0] = vec2(0.0,0.1); uniform name[1] = vec2(1.0,1.0); To send OSC messages to control these uniforms, you need to use the full name including square brackets. For example: /SPIN/default/shader setUniform_vec2 name[0] 0.0 0.0

/SPIN/{sceneID}/{nodeID} loadGLSLShader <(std::string) path>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_bool <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_int <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_float <(const char *) name> <(float) f>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec2 <(const char *) name> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec3 <(const char *) name> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec4 <(const char *) name> <(float) x> <(float) y> <(float) z> <(float) w>
<no description available>

/SPIN/{sceneID}/{nodeID} setShader <(const char *) path>
Creates a texture from a path on disk.


ShapeNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setShape <'NONE','SPHERE','BOX','CYLINDER','CAPSULE','CONE','PLANE'>
Sets the shape this ShapeNode should have, identified by its number.

/SPIN/{sceneID}/{nodeID} setBillboard <'RELATIVE','POINT_EYE','STAY_UP'>
<no description available>

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
param red Red channel. Number in the range [0, 1] green Green channel. Number in the range [0, 1] blue Blue channel. Number in the range [0, 1] alpha Opacity channel. Number in the range [0, 1]

/SPIN/{sceneID}/{nodeID} setRenderBin <(int) i>
<no description available>

/SPIN/{sceneID}/{nodeID} setLighting <(int) i>
<no description available>

/SPIN/{sceneID}/{nodeID} setSingleSided <(int) singleSided>
Specify whether both sides or only one side of the shape is rendered. ie, whether the backface is culled or not.


SharedVideoTexture:
/SPIN/{sceneID}/{nodeID} printShaderSource
<no description available>

/SPIN/{sceneID}/{nodeID} clearUniforms
Remove all uniforms from this stateset

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type>
Create a uniform with the provided name and type. The value will be set to some default value

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type> <(const char *) defaultValue>
Create a uniform with the provided name and type, and set the initial value for the uniform.Note that defaults are provided as strings in all cases. So in the case of several values, the defaultValue would be a space-separated list of values.It is also possible to specify an array of vectors. For example, if the type is vec2, you can specify a defaultValue of 0.0 0.1 1.0 1.0 and this will generate two vec2 uniforms with indexes automatically added to the name: uniform name[0] = vec2(0.0,0.1); uniform name[1] = vec2(1.0,1.0); To send OSC messages to control these uniforms, you need to use the full name including square brackets. For example: /SPIN/default/shader setUniform_vec2 name[0] 0.0 0.0

/SPIN/{sceneID}/{nodeID} loadGLSLShader <(std::string) path>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_bool <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_int <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_float <(const char *) name> <(float) f>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec2 <(const char *) name> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec3 <(const char *) name> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec4 <(const char *) name> <(float) x> <(float) y> <(float) z> <(float) w>
<no description available>

/SPIN/{sceneID}/{nodeID} setShader <(const char *) path>
Creates a texture from a path on disk.

/SPIN/{sceneID}/{nodeID} setTextureID <(const char *) id>
<no description available>

/SPIN/{sceneID}/{nodeID} play
<no description available>

/SPIN/{sceneID}/{nodeID} pause
<no description available>


SoundNode:
/SPIN/{sceneID}/{nodeID} connect <(spin::DSPNode *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connectSource <(const char *) src>
Sets the current node as a sink to the specified node.

/SPIN/{sceneID}/{nodeID} disconnect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} setDebugColor <(float) r> <(float) g> <(float) b> <(float) a>
<no description available>

/SPIN/{sceneID}/{nodeID} setVUmeterFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setDirectivityFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLaserFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setRadiusFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setIntensity <(float) newvalue>
<no description available>

/SPIN/{sceneID}/{nodeID} updateVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} updateLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} drawDirectivity
<no description available>

/SPIN/{sceneID}/{nodeID} drawLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawRadius
<no description available>


SoundSpace:
/SPIN/{sceneID}/{nodeID} connect <(spin::DSPNode *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} connectSource <(const char *) src>
Sets the current node as a sink to the specified node.

/SPIN/{sceneID}/{nodeID} disconnect <(const char *) snk>
<no description available>

/SPIN/{sceneID}/{nodeID} setDebugColor <(float) r> <(float) g> <(float) b> <(float) a>
<no description available>

/SPIN/{sceneID}/{nodeID} setVUmeterFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setDirectivityFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setLaserFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setRadiusFlag <(float) newFlag>
<no description available>

/SPIN/{sceneID}/{nodeID} setIntensity <(float) newvalue>
<no description available>

/SPIN/{sceneID}/{nodeID} updateVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} updateLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawVUmeter
<no description available>

/SPIN/{sceneID}/{nodeID} drawDirectivity
<no description available>

/SPIN/{sceneID}/{nodeID} drawLaser
<no description available>

/SPIN/{sceneID}/{nodeID} drawRadius
<no description available>

/SPIN/{sceneID}/{nodeID} setAbsorption <(float) newval>
<no description available>

/SPIN/{sceneID}/{nodeID} setFilterCoef <(float) newval>
<no description available>

/SPIN/{sceneID}/{nodeID} setTransition <(float) newval>
<no description available>


SwitchNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setEnabled <(const char *) id> <(int) enabled>
This enables/disables a child of a certain id

/SPIN/{sceneID}/{nodeID} setAll <(int) enabled>
Set all child noded to be either disabled or enabled


TextNode:
/SPIN/{sceneID}/{nodeID} mouseEvent <(int) event> <(int) keyMask> <(int) buttonMask> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} event <(int) event> <(const char *) userString> <(float) eData1> <(float) eData2> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setLock <(const char *) userString> <(int) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} setStateSetFromFile <(const char *) filename>
setStateSetFromFile guesses the type of stateset from the filename extension, creates a new stateset of that type and assigns it to this node

/SPIN/{sceneID}/{nodeID} setStateSet <(const char *) s>
Assign an existing stateset to this node

/SPIN/{sceneID}/{nodeID} setReportMode <'NONE','GLOBAL_6DOF','GLOBAL_ALL'>
<no description available>

/SPIN/{sceneID}/{nodeID} setInteractionMode <'STATIC','PASSTHRU','SELECT','DRAG','THROW','DRAW'>
<no description available>

/SPIN/{sceneID}/{nodeID} setComputationMode <'SERVER_SIDE','CLIENT_SIDE'>
<no description available>

/SPIN/{sceneID}/{nodeID} setClipping <(float) x> <(float) y> <(float) z>
Set a clipping rectangle for the model so that geometry outside of the region (+-x, +-y, +-z) will not be shown (or used in interactive events)

/SPIN/{sceneID}/{nodeID} setOrientationMode <'NORMAL','POINT_TO_TARGET','POINT_TO_TARGET_CENTROID','POINT_TO_ORIGIN'>
Set the OrientationMode of the node, which will be applied after every transformation.

/SPIN/{sceneID}/{nodeID} setOrientationTarget <(const char *) target>
<no description available>

/SPIN/{sceneID}/{nodeID} setBroadcastLock <(bool) lock>
<no description available>

/SPIN/{sceneID}/{nodeID} updateDraggerMatrix
<no description available>

/SPIN/{sceneID}/{nodeID} setDrawMode <'GLYPH','TEXT3D'>
Choose whether the text is drawn in 2D glyphs, or as 3D geometry.

/SPIN/{sceneID}/{nodeID} setText <(const char *) s>
Accepts user-entered string for the node's text.

/SPIN/{sceneID}/{nodeID} setTextValue <(const char *) s>
Deprecated method (here for backwards compatibility).

/SPIN/{sceneID}/{nodeID} setRepetitions <(int) repetitions>
Set the number of times the text should repeat

/SPIN/{sceneID}/{nodeID} setFont <(const char *) s>
Sets the font for the text associated with this node.

/SPIN/{sceneID}/{nodeID} setFontResolution <(int) resolution>
Set the font resolution. eg, 128 will produce 128x128 textures

/SPIN/{sceneID}/{nodeID} setCharacterSize <(float) s>
Sets the size of text characters (in local coordinate system units)

/SPIN/{sceneID}/{nodeID} setThickness <(float) thickness>
Set the thickness of 3D text

/SPIN/{sceneID}/{nodeID} setBoxSize <(float) width> <(float) height>
Sets the maximum size of the text box. Values of 0 in either dimension means no maximum, so that the box will stretch to fit the text

/SPIN/{sceneID}/{nodeID} setLineSpacing <(float) spacing>
Sets the line spacing, as a percentage of the character height. The default is 0

/SPIN/{sceneID}/{nodeID} setAlignment <(int) alignment>
Sets the maximum size of the text box.

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the color for the text associated to this node in RGBA values.

/SPIN/{sceneID}/{nodeID} setBgColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
Sets the background color for this node.

/SPIN/{sceneID}/{nodeID} setMargin <(float) margin>
Sets the margins for the text associated to this node.

/SPIN/{sceneID}/{nodeID} setBillboard <'RELATIVE','POINT_EYE','STAY_UP'>
Sets the type of billboarding asigned to this node (drawn from the enum billboardType).

/SPIN/{sceneID}/{nodeID} setDecoration <'DROP_SHADOW_BOTTOM_RIGHT','DROP_SHADOW_CENTER_RIGHT','DROP_SHADOW_TOP_RIGHT','DROP_SHADOW_BOTTOM_CENTER','DROP_SHADOW_TOP_CENTER','DROP_SHADOW_BOTTOM_LEFT','DROP_SHADOW_CENTER_LEFT','DROP_SHADOW_TOP_LEFT','OUTLINE','NONE'>
Sets the shadowing or outline type for this text node (drawn from the decorationType enum).

/SPIN/{sceneID}/{nodeID} setBackground <'NO_BACKGROUND','FILLED','WIREFRAME','ALL'>
Sets a background type for the text box (drawn from the backgroundType enum).

/SPIN/{sceneID}/{nodeID} setSingleSided <(int) singleSided>
Specify whether both sides or only one side of the text is rendered. ie, whether the backface is culled or not.

/SPIN/{sceneID}/{nodeID} setLighting <(int) lighting>
Specify whether both sides or only one side of the text is rendered. ie, whether the backface is culled or not.


UserNode:
/SPIN/{sceneID}/{nodeID} setTarget <(const char *) id>
Sets a target whose properties can be used to limit movement of this node, depending on the type on constraint selected. (this should be a model node or shape node, or a group node ideally not too complex, because large amounts of triangles will lead to excessive calculations)

/SPIN/{sceneID}/{nodeID} setConstraintMode <'BASIC','DROP','COLLIDE','BOUNCE','STICK','COLLIDE_THRU'>
Sets the node's constraint mode, based on the types in constrainMode enum (see enum for details)

/SPIN/{sceneID}/{nodeID} setCubeSize <(float) xScale> <(float) yScale> <(float) zScale>
Sets the size of the imaginary cube beyond which the constrained node cannot pass, when constraint type BASIC is set.

/SPIN/{sceneID}/{nodeID} setCubeOffset <(float) x> <(float) y> <(float) z>
Sets the center of the BASIC constraint cube with respect to the local coordinate system (either the parent object or the world grid).

/SPIN/{sceneID}/{nodeID} applyConstrainedTranslation
A pseudo-recursive function that checks if a translation results in one or more intersections with the target node. If no intersection, this method defaults to just a setTranslation call. Otherwise, it will do a setTranslation for the collision point, and call itself again until there are no collisions left.

/SPIN/{sceneID}/{nodeID} setDescription <(const char *) s>
Sets a user-entered description for the node.

/SPIN/{sceneID}/{nodeID} setHome <(float) x> <(float) y> <(float) z> <(float) pitch> <(float) roll> <(float) yaw>
The home position is the pose that the user returns to when sent home

/SPIN/{sceneID}/{nodeID} goHome
Send the user to his (or her) home position

/SPIN/{sceneID}/{nodeID} setCameraOffset <(float) x> <(float) y> <(float) z>
Set the camera offset (from the UserNode's local origin). The default is (0,0,0), meaning that the camera position is exactly aligned with the UserNode.

/SPIN/{sceneID}/{nodeID} setCameraOrientation <(float) pitch> <(float) roll> <(float) yaw>
Set's the (local) orientation of the camera. The default is looking along the +Y axis with +Z up and +X to the right.

/SPIN/{sceneID}/{nodeID} setCameraOrientationQuat <(float) x> <(float) y> <(float) z> <(float) w>
Provides a mechanism to set the orientation with a quaternion

/SPIN/{sceneID}/{nodeID} ping
Pings the server.


VideoTexture:
/SPIN/{sceneID}/{nodeID} printShaderSource
<no description available>

/SPIN/{sceneID}/{nodeID} clearUniforms
Remove all uniforms from this stateset

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type>
Create a uniform with the provided name and type. The value will be set to some default value

/SPIN/{sceneID}/{nodeID} registerUniform <(const char *) name> <(const char *) type> <(const char *) defaultValue>
Create a uniform with the provided name and type, and set the initial value for the uniform.Note that defaults are provided as strings in all cases. So in the case of several values, the defaultValue would be a space-separated list of values.It is also possible to specify an array of vectors. For example, if the type is vec2, you can specify a defaultValue of 0.0 0.1 1.0 1.0 and this will generate two vec2 uniforms with indexes automatically added to the name: uniform name[0] = vec2(0.0,0.1); uniform name[1] = vec2(1.0,1.0); To send OSC messages to control these uniforms, you need to use the full name including square brackets. For example: /SPIN/default/shader setUniform_vec2 name[0] 0.0 0.0

/SPIN/{sceneID}/{nodeID} loadGLSLShader <(std::string) path>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_bool <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_int <(const char *) name> <(int) b>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_float <(const char *) name> <(float) f>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec2 <(const char *) name> <(float) x> <(float) y>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec3 <(const char *) name> <(float) x> <(float) y> <(float) z>
<no description available>

/SPIN/{sceneID}/{nodeID} setUniform_vec4 <(const char *) name> <(float) x> <(float) y> <(float) z> <(float) w>
<no description available>

/SPIN/{sceneID}/{nodeID} setShader <(const char *) path>
Creates a texture from a path on disk.

/SPIN/{sceneID}/{nodeID} setPath <(const char *) newPath>
Creates a video from a path on disk. This can either be a single movie file (ie, a format that OSG knows how to read), or a folder name that contains a sequence of images to stitch into a video.

/SPIN/{sceneID}/{nodeID} setLoop <(int) i>
Enable (1) or disable (0) looping of the video

/SPIN/{sceneID}/{nodeID} setIndex <(float) f>
Normalized seek to a part of the video. ie, index in range [0,1]

/SPIN/{sceneID}/{nodeID} setFrameRate <(float) f>
Only for image sequences; tells OSG how fast to play the sequence

/SPIN/{sceneID}/{nodeID} setPlay <(int) i>
Play (1) or Pause (0) the video

/SPIN/{sceneID}/{nodeID} rewind
Seek to beginning of video (equivalent to setIndex(0);

/SPIN/{sceneID}/{nodeID} flipHorizontal
Flips the video horizontally.

/SPIN/{sceneID}/{nodeID} flipVertical
Flips the video vertically.


CollisionShape:
/SPIN/{sceneID}/{nodeID} setShape <'NONE','SPHERE','BOX','CYLINDER','CAPSULE','CONE','PLANE'>
Sets the shape this ShapeNode should have, identified by its number.

/SPIN/{sceneID}/{nodeID} setBillboard <'RELATIVE','POINT_EYE','STAY_UP'>
<no description available>

/SPIN/{sceneID}/{nodeID} setColor <(float) red> <(float) green> <(float) blue> <(float) alpha>
param red Red channel. Number in the range [0, 1] green Green channel. Number in the range [0, 1] blue Blue channel. Number in the range [0, 1] alpha Opacity channel. Number in the range [0, 1]

/SPIN/{sceneID}/{nodeID} setRenderBin <(int) i>
<no description available>

/SPIN/{sceneID}/{nodeID} setLighting <(int) i>
<no description available>

/SPIN/{sceneID}/{nodeID} setSingleSided <(int) singleSided>
Specify whether both sides or only one side of the shape is rendered. ie, whether the backface is culled or not.

/SPIN/{sceneID}/{nodeID} setMass <(float) mass>
Set the mass of the object. A value of 0 makes the object static (unmovable) by the dynamics engine. Only direct transformation through GroupNode functions will have any effect.

/SPIN/{sceneID}/{nodeID} setDynamic <(int) isDynamic>
Enable external dynamic forces (eg, gravity). Note: object must have non-zero mass for this to work.