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 intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intField Indexprotected static final intThe last field index used by this classprotected VRMLNodeFactoryFactory for creating EspduTransform nodesprotected static final intNumber of fields constantprotected static final StringProtocol implementedprotected List<VRMLNodeType> addedEntities MFNode []protected Stringaddress SFString "localhost"protected intapplicationID SFInt32 0protected List<VRMLNodeType> mapping MFNode []protected intport SFInt32 0protected List<VRMLNodeType> removedEntities MFNode []protected intsiteID 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, vrmlMinorVersionFields 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 TypeMethodDescriptionvoidAdd a NetworkRoleListener.voidNotification that the rendering of the event model is complete and that rendering is about to begin.Get the network address to listen to.intgetAppID()Get the applicationID specified for this node.String[]Get the chat room auth server's.intGet the entityID specified for this node.getFieldDeclaration(int index) Get the declaration of the field at the given index.intgetFieldIndex(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).intGet the number of fields defined for this node.Get the chat room password.intgetPort()Get the network port to listen to.intGet the primary type of this node.Get the protocol this node supports.intgetRole()Get the role of this node.intGet the siteID specified for this node.edu.nps.moves.dis7.pdus.PdugetState()Get the nodes current state.Get the chat room username.voidpacketArrived(edu.nps.moves.dis7.pdus.Pdu pdu) Tell the DIS node that a packet arrived.voidRemove a NetworkRoleListener.voidsendRoute(double time, int srcIndex, VRMLNodeType destNode, int destIndex) Send a routed value from this node to the given destination node.voidsetIsActive(boolean active) Set the isActive state for a DIS node.voidNotification that the construction phase of this node has finished.voidsetValue(int index, int value) Set the value of the field at the given index as an integer.voidSet the value of the field at the given index as a string.voidsetValue(int index, VRMLNodeType child) Set the value of the field at the given index as a node.voidsetValue(int index, VRMLNodeType[] children, int numValid) Set the value of the field at the given index as an array of nodes.booleanDoes 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, updateRefsMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.web3d.vrml.nodes.VRMLDISManagerNodeType
entityArrived, entityRemovedMethods inherited from interface org.web3d.vrml.lang.VRMLNode
getSecondaryType, getUserData, getVRMLNodeName, isDEF, setErrorReporter, setUserData, setVersionMethods 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:FrameStateListenerNotification 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:
allEventsCompletein interfaceFrameStateListener- Overrides:
allEventsCompletein classAbstractNode
-
getPrimaryType
public int getPrimaryType()Description copied from interface:VRMLNodeGet the primary type of this node. Replaces the instanceof mechanism for use in switch statements.- Specified by:
getPrimaryTypein interfaceVRMLNode- Returns:
- The primary type
-
setupFinished
public void setupFinished()Description copied from interface:VRMLNodeTypeNotification 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:
setupFinishedin interfaceVRMLNodeType- Overrides:
setupFinishedin classAbstractNode
-
getProtocol
Description copied from interface:VRMLNetworkInterfaceNodeTypeGet the protocol this node supports.- Specified by:
getProtocolin interfaceVRMLNetworkInterfaceNodeType- Returns:
- The protocol.
-
getRole
public int getRole()Description copied from interface:VRMLNetworkInterfaceNodeTypeGet the role of this node.- Specified by:
getRolein interfaceVRMLNetworkInterfaceNodeType- Returns:
- One of the role constants, ROLE_*.
-
addNetworkRoleListener
Description copied from interface:VRMLNetworkInterfaceNodeTypeAdd a NetworkRoleListener.- Specified by:
addNetworkRoleListenerin interfaceVRMLNetworkInterfaceNodeType- Parameters:
l- The listener. Duplicates and nulls are ignored.
-
removeNetworkRoleListener
Description copied from interface:VRMLNetworkInterfaceNodeTypeRemove a NetworkRoleListener.- Specified by:
removeNetworkRoleListenerin interfaceVRMLNetworkInterfaceNodeType- Parameters:
l- The listener
-
getFieldIndex
Description copied from interface:VRMLNodeGet the index of the given field name. If the name does not exist for this node then return a value of -1.- Specified by:
getFieldIndexin 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:VRMLNodeGet 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:
getNodeFieldIndicesin interfaceVRMLNode- Returns:
- The list of field indices that correspond to SF/MFnode fields or null if none
-
getFieldDeclaration
Description copied from interface:VRMLNodeGet 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:
getFieldDeclarationin 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:VRMLNodeGet the number of fields defined for this node.- Specified by:
getNumFieldsin interfaceVRMLNode- Returns:
- The number of fields.
-
getFieldValue
Description copied from interface:VRMLNodeTypeGet 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:
getFieldValuein interfaceVRMLNodeType- Overrides:
getFieldValuein 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:VRMLNodeTypeSend 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:
sendRoutein interfaceVRMLNodeType- Overrides:
sendRoutein 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:VRMLNodeTypeSet 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:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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:VRMLNodeTypeSet the value of the field at the given index as a node. This would be used to set SFNode field types.- Specified by:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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:VRMLNodeTypeSet the value of the field at the given index as an integer. This would be used to set SFInt32 field types.- Specified by:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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:VRMLNodeTypeSet the value of the field at the given index as a string. This would be used to set SFString field types.- Specified by:
setValuein interfaceVRMLNodeType- Overrides:
setValuein 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:VRMLDISNodeTypeGet the siteID specified for this node.- Specified by:
getSiteIDin interfaceVRMLDISNodeType- Returns:
- the siteID.
-
getAppID
public int getAppID()Description copied from interface:VRMLDISNodeTypeGet the applicationID specified for this node.- Specified by:
getAppIDin interfaceVRMLDISNodeType- Returns:
- the applicationID.
-
getEntityID
public int getEntityID()Description copied from interface:VRMLDISNodeTypeGet the entityID specified for this node.- Specified by:
getEntityIDin interfaceVRMLDISNodeType- Returns:
- the entityID.
-
getAddress
Description copied from interface:VRMLDISNodeTypeGet the network address to listen to.- Specified by:
getAddressin interfaceVRMLDISNodeType- Returns:
- The address.
-
getPort
public int getPort()Description copied from interface:VRMLDISNodeTypeGet the network port to listen to.- Specified by:
getPortin interfaceVRMLDISNodeType- Returns:
- The port.
-
getUsername
Description copied from interface:VRMLDISNodeTypeGet the chat room username.- Specified by:
getUsernamein interfaceVRMLDISNodeType- Returns:
- The username. null if none provided
-
getPassword
Description copied from interface:VRMLDISNodeTypeGet the chat room password.- Specified by:
getPasswordin interfaceVRMLDISNodeType- Returns:
- The password. null if none provided
-
getAuthServer
Description copied from interface:VRMLDISNodeTypeGet the chat room auth server's.- Specified by:
getAuthServerin interfaceVRMLDISNodeType- Returns:
- The auth servers. null if none provided
-
getMucServer
Description copied from interface:VRMLDISNodeTypeGet the chat room mucServer.- Specified by:
getMucServerin interfaceVRMLDISNodeType- Returns:
- The mucServer. null if none provided
-
getMucRoom
Description copied from interface:VRMLDISNodeTypeGet the chat room mucRoom.- Specified by:
getMucRoomin interfaceVRMLDISNodeType- Returns:
- The mucRoom. null if none provided
-
setIsActive
public void setIsActive(boolean active) Description copied from interface:VRMLDISNodeTypeSet the isActive state for a DIS node.- Specified by:
setIsActivein interfaceVRMLDISNodeType- Parameters:
active- Whether the node is active(traffic within 5 seconds).
-
valuesToWrite
public boolean valuesToWrite()Description copied from interface:VRMLDISNodeTypeDoes the this node have new information to write. This only accounts for local values, not required DIS heartbeat rules.- Specified by:
valuesToWritein interfaceVRMLDISNodeType- Returns:
- TRUE if values have changed.
-
getState
public edu.nps.moves.dis7.pdus.Pdu getState()Description copied from interface:VRMLDISNodeTypeGet the nodes current state. Assume that a single local scratch var can be reused each time.- Specified by:
getStatein interfaceVRMLDISNodeType- Returns:
- The DIS state.
-
packetArrived
public void packetArrived(edu.nps.moves.dis7.pdus.Pdu pdu) Description copied from interface:VRMLDISNodeTypeTell the DIS node that a packet arrived. Used to update timestamp information and update local fields.- Specified by:
packetArrivedin interfaceVRMLDISNodeType- Parameters:
pdu-
-