Class BaseDISEntityManager
java.lang.Object
org.web3d.vrml.renderer.common.nodes.AbstractNode
org.web3d.vrml.renderer.common.nodes.dis.BaseDISEntityManager
- All Implemented Interfaces:
VRMLNode
,FrameStateListener
,VRMLChildNodeType
,VRMLDISManagerNodeType
,VRMLDISNodeType
,VRMLNetworkInterfaceNodeType
,VRMLNodeType
,VRMLWorldRootChildNodeType
- Direct Known Subclasses:
NRDISEntityManager
,OGLDISEntityManager
public abstract class BaseDISEntityManager
extends AbstractNode
implements VRMLNetworkInterfaceNodeType, VRMLDISManagerNodeType
Common implementation of a EntityManager node functionality.
Notifies content when an entity arrives or leaves. Nodes which are locally controlled by the simulation are ignored(ie any node which matches the entityID,siteID,appID and has a networkWriter mode). AddedEntities events are issued when an EntityStatePdu is first detected. Entities arrivals will only be notified once a simulation, unless a removedEntity event is issued. RemovedEntities events issued when an EntityStatePdu has not arrived within the DIS allowed heartbeat period.
- Version:
- $Revision: 1.4 $
- Author:
- Alan Hudson
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
protected static final int
Field Indexprotected static final int
The last field index used by this classprotected VRMLNodeFactory
Factory for creating EspduTransform nodesprotected static final int
Number of fields constantprotected static final String
Protocol implementedprotected List
<VRMLNodeType> addedEntities MFNode []protected String
address SFString "localhost"protected int
applicationID SFInt32 0protected List
<VRMLNodeType> mapping MFNode []protected int
port SFInt32 0protected List
<VRMLNodeType> removedEntities MFNode []protected int
siteID SFInt32 0Fields inherited from class org.web3d.vrml.renderer.common.nodes.AbstractNode
errorReporter, FIELD_METADATA, fieldLocalData, hasChanged, inSetup, isDEF, isStatic, LAST_NODE_INDEX, layerIds, nodeName, pMetadata, refCounts, removedLayerIds, stateManager, STATIC_SCENE_GRAPH, vfMetadata, vrmlMajorVersion, vrmlMinorVersion
Fields inherited from interface org.web3d.vrml.nodes.VRMLNetworkInterfaceNodeType
ROLE_INACTIVE, ROLE_MANAGER, ROLE_READER, ROLE_WRITER
-
Constructor Summary
ConstructorsConstructorDescriptionConstruct a default instance of this node.Construct a new instance of this node based on the details from the given node. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Add a NetworkRoleListener.void
Notification that the rendering of the event model is complete and that rendering is about to begin.Get the network address to listen to.int
getAppID()
Get the applicationID specified for this node.String[]
Get the chat room auth server's.int
Get the entityID specified for this node.getFieldDeclaration
(int index) Get the declaration of the field at the given index.int
getFieldIndex
(String fieldName) Get the index of the given field name.getFieldValue
(int index) Get the value of a field.Get the chat room mucRoom.Get the chat room mucServer.int[]
Get the list of indices that correspond to fields that contain nodes i.e. MFNode and SFNode).int
Get the number of fields defined for this node.Get the chat room password.int
getPort()
Get the network port to listen to.int
Get the primary type of this node.Get the protocol this node supports.int
getRole()
Get the role of this node.int
Get the siteID specified for this node.edu.nps.moves.dis7.pdus.Pdu
getState()
Get the nodes current state.Get the chat room username.void
packetArrived
(edu.nps.moves.dis7.pdus.Pdu pdu) Tell the DIS node that a packet arrived.void
Remove a NetworkRoleListener.void
sendRoute
(double time, int srcIndex, VRMLNodeType destNode, int destIndex) Send a routed value from this node to the given destination node.void
setIsActive
(boolean active) Set the isActive state for a DIS node.void
Notification that the construction phase of this node has finished.void
setValue
(int index, int value) Set the value of the field at the given index as an integer.void
Set the value of the field at the given index as a string.void
setValue
(int index, VRMLNodeType child) Set the value of the field at the given index as a node.void
setValue
(int index, VRMLNodeType[] children, int numValid) Set the value of the field at the given index as an array of nodes.boolean
Does the this node have new information to write.Methods inherited from class org.web3d.vrml.renderer.common.nodes.AbstractNode
addNodeListener, checkNodeType, checkSecondaryType, checkSecondaryType, clearRemovedLayerIds, fireFieldChanged, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, getSecondaryType, getUserData, getVRMLNodeName, hasFieldChanged, isDEF, isSetupFinished, notifyExternProtoLoaded, removeNodeListener, setDEF, setErrorReporter, setFrameStateManager, setMetadataObject, setUserData, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setVersion, throwInitOnlyWriteException, throwInputOnlyWriteException, throwInvalidNodeException, throwInvalidProtoException, throwOutputOnlyWriteException, updateRefCount, updateRefs
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.web3d.vrml.nodes.VRMLDISManagerNodeType
entityArrived, entityRemoved
Methods inherited from interface org.web3d.vrml.lang.VRMLNode
getSecondaryType, getUserData, getVRMLNodeName, isDEF, setErrorReporter, setUserData, setVersion
Methods inherited from interface org.web3d.vrml.nodes.VRMLNodeType
addNodeListener, clearRemovedLayerIds, getLayerIds, getMetadataObject, getRefCount, getRemovedLayerIds, hasFieldChanged, isSetupFinished, notifyExternProtoLoaded, removeNodeListener, setDEF, setFrameStateManager, setMetadataObject, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, setValue, updateRefCount
-
Field Details
-
PROTOCOL
-
FIELD_SITE_ID
protected static final int FIELD_SITE_IDField Index- See Also:
-
FIELD_APPLICATION_ID
protected static final int FIELD_APPLICATION_ID- See Also:
-
FIELD_ADDRESS
protected static final int FIELD_ADDRESS- See Also:
-
FIELD_PORT
protected static final int FIELD_PORT- See Also:
-
FIELD_ADDED_ENTITIES
protected static final int FIELD_ADDED_ENTITIES- See Also:
-
FIELD_REMOVED_ENTITIES
protected static final int FIELD_REMOVED_ENTITIES- See Also:
-
FIELD_MAPPING
protected static final int FIELD_MAPPING- See Also:
-
LAST_ENTITY_MANAGER_INDEX
protected static final int LAST_ENTITY_MANAGER_INDEXThe last field index used by this class- See Also:
-
NUM_FIELDS
protected static final int NUM_FIELDSNumber of fields constant- See Also:
-
vfSiteID
protected int vfSiteIDsiteID SFInt32 0 -
vfApplicationID
protected int vfApplicationIDapplicationID SFInt32 0 -
vfAddress
address SFString "localhost" -
vfPort
protected int vfPortport SFInt32 0 -
vfMapping
mapping MFNode [] -
vfAddedEntities
addedEntities MFNode [] -
vfRemovedEntities
removedEntities MFNode [] -
nodeFactory
Factory for creating EspduTransform nodes
-
-
Constructor Details
-
BaseDISEntityManager
public BaseDISEntityManager()Construct a default instance of this node. The defaults are set by the VRML specification. -
BaseDISEntityManager
Construct a new instance of this node based on the details from the given node. If the node is not a group node, an exception will be thrown. It does not copy the children nodes, just this node.- Parameters:
node
- The node to copy- Throws:
IllegalArgumentException
- The node is not a Group node
-
-
Method Details
-
allEventsComplete
public void allEventsComplete()Description copied from interface:FrameStateListener
Notification that the rendering of the event model is complete and that rendering is about to begin. If the node needs to update itself for this frame, it should do so now before the render pass takes place.- Specified by:
allEventsComplete
in interfaceFrameStateListener
- Overrides:
allEventsComplete
in classAbstractNode
-
getPrimaryType
public int getPrimaryType()Description copied from interface:VRMLNode
Get the primary type of this node. Replaces the instanceof mechanism for use in switch statements.- Specified by:
getPrimaryType
in interfaceVRMLNode
- Returns:
- The primary type
-
setupFinished
public void setupFinished()Description copied from interface:VRMLNodeType
Notification that the construction phase of this node has finished. If the node would like to do any internal processing, such as setting up geometry, then go for it now. It is then responsible for calling its children's setupFinished.- Specified by:
setupFinished
in interfaceVRMLNodeType
- Overrides:
setupFinished
in classAbstractNode
-
getProtocol
Description copied from interface:VRMLNetworkInterfaceNodeType
Get the protocol this node supports.- Specified by:
getProtocol
in interfaceVRMLNetworkInterfaceNodeType
- Returns:
- The protocol.
-
getRole
public int getRole()Description copied from interface:VRMLNetworkInterfaceNodeType
Get the role of this node.- Specified by:
getRole
in interfaceVRMLNetworkInterfaceNodeType
- Returns:
- One of the role constants, ROLE_*.
-
addNetworkRoleListener
Description copied from interface:VRMLNetworkInterfaceNodeType
Add a NetworkRoleListener.- Specified by:
addNetworkRoleListener
in interfaceVRMLNetworkInterfaceNodeType
- Parameters:
l
- The listener. Duplicates and nulls are ignored.
-
removeNetworkRoleListener
Description copied from interface:VRMLNetworkInterfaceNodeType
Remove a NetworkRoleListener.- Specified by:
removeNetworkRoleListener
in interfaceVRMLNetworkInterfaceNodeType
- Parameters:
l
- The listener
-
getFieldIndex
Description copied from interface:VRMLNode
Get the index of the given field name. If the name does not exist for this node then return a value of -1.- Specified by:
getFieldIndex
in interfaceVRMLNode
- Parameters:
fieldName
- The name of the field we want the index from- Returns:
- The index of the field name or -1
-
getNodeFieldIndices
public int[] getNodeFieldIndices()Description copied from interface:VRMLNode
Get the list of indices that correspond to fields that contain nodes i.e. MFNode and SFNode). Used for blind scene graph traversal without needing to spend time querying for all fields etc. If a node does not have any fields that contain nodes, this shall return null. The field list covers all field types, regardless of whether they are readable or not at the VRML-level.- Specified by:
getNodeFieldIndices
in interfaceVRMLNode
- Returns:
- The list of field indices that correspond to SF/MFnode fields or null if none
-
getFieldDeclaration
Description copied from interface:VRMLNode
Get the declaration of the field at the given index. This allows for reverse lookup if needed. If the field does not exist, this will give a value of null.- Specified by:
getFieldDeclaration
in interfaceVRMLNode
- Parameters:
index
- The index of the field to get information- Returns:
- A representation of this field's information
-
getNumFields
public int getNumFields()Description copied from interface:VRMLNode
Get the number of fields defined for this node.- Specified by:
getNumFields
in interfaceVRMLNode
- Returns:
- The number of fields.
-
getFieldValue
Description copied from interface:VRMLNodeType
Get the value of a field. If the field is a primitive type, it will return a class representing the value. For arrays or nodes it will return the instance directly.- Specified by:
getFieldValue
in interfaceVRMLNodeType
- Overrides:
getFieldValue
in classAbstractNode
- Parameters:
index
- The index of the field to change.- Returns:
- The class representing the field value
- Throws:
InvalidFieldException
- The field index is not known
-
sendRoute
Description copied from interface:VRMLNodeType
Send a routed value from this node to the given destination node. The route should use the appropriate setValue() method of the destination node. It should not attempt to cast the node up to a higher level. Routing should also follow the standard rules for the loop breaking and other appropriate rules for the specification.- Specified by:
sendRoute
in interfaceVRMLNodeType
- Overrides:
sendRoute
in classAbstractNode
- Parameters:
time
- The time that this route occurred (not necessarily epoch time. Should be treated as a relative value only)srcIndex
- The index of the field in this node that the value should be sent fromdestNode
- The node reference that we will be sending the value todestIndex
- The index of the field in the destination node that the value should be sent to.
-
setValue
public void setValue(int index, VRMLNodeType[] children, int numValid) throws InvalidFieldException, InvalidFieldValueException Description copied from interface:VRMLNodeType
Set the value of the field at the given index as an array of nodes. This would be used to set MFNode field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setchildren
- The new value to use for the nodenumValid
- The number of valid values to copy from the array- Throws:
InvalidFieldException
- The field index is not knownInvalidFieldValueException
- The value provided does not fit this type of node
-
setValue
public void setValue(int index, VRMLNodeType child) throws InvalidFieldException, InvalidFieldValueException Description copied from interface:VRMLNodeType
Set the value of the field at the given index as a node. This would be used to set SFNode field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setchild
- The new value to use for the node- Throws:
InvalidFieldException
- The field index is not knownInvalidFieldValueException
- The value provided does not fit this type of node
-
setValue
Description copied from interface:VRMLNodeType
Set the value of the field at the given index as an integer. This would be used to set SFInt32 field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setvalue
- The new value to use for the node- Throws:
InvalidFieldException
- The field index is not knownInvalidFieldValueException
- The value provided is not in range or not appropriate for this field
-
setValue
public void setValue(int index, String value) throws InvalidFieldException, InvalidFieldValueException Description copied from interface:VRMLNodeType
Set the value of the field at the given index as a string. This would be used to set SFString field types.- Specified by:
setValue
in interfaceVRMLNodeType
- Overrides:
setValue
in classAbstractNode
- Parameters:
index
- The index of destination field to setvalue
- The new value to use for the node- Throws:
InvalidFieldException
- The field index is not knownInvalidFieldValueException
- The value provided is not in range or not appropriate for this field
-
getSiteID
public int getSiteID()Description copied from interface:VRMLDISNodeType
Get the siteID specified for this node.- Specified by:
getSiteID
in interfaceVRMLDISNodeType
- Returns:
- the siteID.
-
getAppID
public int getAppID()Description copied from interface:VRMLDISNodeType
Get the applicationID specified for this node.- Specified by:
getAppID
in interfaceVRMLDISNodeType
- Returns:
- the applicationID.
-
getEntityID
public int getEntityID()Description copied from interface:VRMLDISNodeType
Get the entityID specified for this node.- Specified by:
getEntityID
in interfaceVRMLDISNodeType
- Returns:
- the entityID.
-
getAddress
Description copied from interface:VRMLDISNodeType
Get the network address to listen to.- Specified by:
getAddress
in interfaceVRMLDISNodeType
- Returns:
- The address.
-
getPort
public int getPort()Description copied from interface:VRMLDISNodeType
Get the network port to listen to.- Specified by:
getPort
in interfaceVRMLDISNodeType
- Returns:
- The port.
-
getUsername
Description copied from interface:VRMLDISNodeType
Get the chat room username.- Specified by:
getUsername
in interfaceVRMLDISNodeType
- Returns:
- The username. null if none provided
-
getPassword
Description copied from interface:VRMLDISNodeType
Get the chat room password.- Specified by:
getPassword
in interfaceVRMLDISNodeType
- Returns:
- The password. null if none provided
-
getAuthServer
Description copied from interface:VRMLDISNodeType
Get the chat room auth server's.- Specified by:
getAuthServer
in interfaceVRMLDISNodeType
- Returns:
- The auth servers. null if none provided
-
getMucServer
Description copied from interface:VRMLDISNodeType
Get the chat room mucServer.- Specified by:
getMucServer
in interfaceVRMLDISNodeType
- Returns:
- The mucServer. null if none provided
-
getMucRoom
Description copied from interface:VRMLDISNodeType
Get the chat room mucRoom.- Specified by:
getMucRoom
in interfaceVRMLDISNodeType
- Returns:
- The mucRoom. null if none provided
-
setIsActive
public void setIsActive(boolean active) Description copied from interface:VRMLDISNodeType
Set the isActive state for a DIS node.- Specified by:
setIsActive
in interfaceVRMLDISNodeType
- Parameters:
active
- Whether the node is active(traffic within 5 seconds).
-
valuesToWrite
public boolean valuesToWrite()Description copied from interface:VRMLDISNodeType
Does the this node have new information to write. This only accounts for local values, not required DIS heartbeat rules.- Specified by:
valuesToWrite
in interfaceVRMLDISNodeType
- Returns:
- TRUE if values have changed.
-
getState
public edu.nps.moves.dis7.pdus.Pdu getState()Description copied from interface:VRMLDISNodeType
Get the nodes current state. Assume that a single local scratch var can be reused each time.- Specified by:
getState
in interfaceVRMLDISNodeType
- Returns:
- The DIS state.
-
packetArrived
public void packetArrived(edu.nps.moves.dis7.pdus.Pdu pdu) Description copied from interface:VRMLDISNodeType
Tell the DIS node that a packet arrived. Used to update timestamp information and update local fields.- Specified by:
packetArrived
in interfaceVRMLDISNodeType
- Parameters:
pdu
-
-