Atavism Version 2018.1AGIS API

atavism.server.plugins
Class WorldManagerPlugin

java.lang.Object
  extended by atavism.server.engine.EnginePlugin
      extended by atavism.server.plugins.WorldManagerPlugin
All Implemented Interfaces:
MessageCallback, PerceiverCallback<WMWorldNode>, StatusMapCallback, PerceptionUpdateTrigger
Direct Known Subclasses:
AgisWorldManagerPlugin

public abstract class WorldManagerPlugin
extends EnginePlugin
implements MessageCallback, PerceiverCallback<WMWorldNode>, PerceptionUpdateTrigger

The world manager is in charge of telling perceivers what they "see" around them, such as mobs, structures, and terrain. In addition to the existence of objects, the server also tells perceivers about how these things look, such as their model and animations. As part of determining what the perceivers see, the world server also handles movement and interpolation.


Nested Class Summary
static class WorldManagerPlugin.HostInstanceFilter
           
static class WorldManagerPlugin.LocationNamespaceFilter
          a special namespace filter that also considers location
static class WorldManagerPlugin.PathObjectCache
           
static class WorldManagerPlugin.WorldManagerFilter
           
static class WorldManagerPlugin.WorldManagerInstance
           
static class WorldManagerPlugin.WorldManagerTransferFilter
           
 
Nested classes/interfaces inherited from class atavism.server.engine.EnginePlugin
EnginePlugin.DeleteHook, EnginePlugin.DeleteSubObjHook, EnginePlugin.GenerateSubObjectHook, EnginePlugin.GetPropertyMessage, EnginePlugin.GetPropertyNamesMessage, EnginePlugin.LoadHook, EnginePlugin.LoadSubObjHook, EnginePlugin.PluginActivateHook, EnginePlugin.PluginStateMessage, EnginePlugin.SaveHook, EnginePlugin.SaveSubObjHook, EnginePlugin.SetPropertyMessage, EnginePlugin.SubObjData, EnginePlugin.TransferFilter, EnginePlugin.TransferObjectMessage, EnginePlugin.UnloadHook, EnginePlugin.UnloadSubObjHook
 
Field Summary
protected  boolean askedForPathInfo
           
protected  int defaultWorldManagerHysteresis
           
protected static Logger log
           
protected  PerceptionFilter mobFilter
           
protected  PerceptionFilter mobRPCFilter
           
protected  long mobRPCSubId
           
protected  long mobSubId
           
protected  WorldManagerPlugin.WorldManagerFilter newRegionFilter
           
protected  long newRegionSub
           
protected  PathInfo pathInfo
           
protected static WorldManagerPlugin.PathObjectCache pathObjectCache
           
protected  java.util.Set<java.lang.String> propertyExclusions
           
protected  java.util.Map<OID,QuadTree<WMWorldNode>> quadtrees
           
static java.lang.String REGION_MEMBERSHIP
           
protected  java.util.Map<java.lang.String,RegionTrigger> regionTriggers
           
protected  PerceptionFilter structFilter
           
protected  PerceptionFilter structRPCFilter
           
protected  long structRPCSubId
           
protected  long structSubId
           
protected  SubObjectFilter subObjectFilter
           
protected  atavism.server.plugins.WorldManagerPlugin.Updater updater
           
 
Fields inherited from class atavism.server.engine.EnginePlugin
deleteSubObjectSubscription, dumpAllThreadSubscription, dumpAllThreadSubscriptionLock, loadSubObjectSubscription, lock, MSG_TYPE_DUMP_ALL_THREAD_STACKS, MSG_TYPE_GET_PROPERTY, MSG_TYPE_GET_PROPERTY_NAMES, MSG_TYPE_PLUGIN_STATE, MSG_TYPE_SET_PROPERTY, MSG_TYPE_SET_PROPERTY_NONBLOCK, MSG_TYPE_TRANSFER_OBJECT, pluginStateSubscription, propertySubscription, saveSubObjectSubscription, selectionFilter, selectionSubscription, setSubObjectPersistenceSubscription, subObjectSubscription, unloadSubObjectSubscription
 
Fields inherited from interface atavism.msgsys.MessageCallback
NO_FLAGS, RESPONSE_EXPECTED
 
Constructor Summary
WorldManagerPlugin()
           
 
Method Summary
protected  void despawnObject(AOObject obj)
           
 void freeObjectForFixedPerceiver(Perceiver<WMWorldNode> p, WMWorldNode freeWnode)
           
protected  AOObject generateWorldManagerSubObject(Template template, OID masterOid)
          Override this method to change what kind of object is created for the sub object hook.
protected abstract  DisplayContext getDisplayContext(OID objOid)
          returns the current display context for the given objOid
 java.lang.String getInstanceInfoString(OID instanceOid)
           
 PathInfo getPathInfo()
           
protected  OID getPerceiverOid(MobilePerceiver<WMWorldNode> mobileP)
           
 java.util.Set<java.lang.String> getPropertyExclusions()
          Object properties excluded from property messages.
 java.util.Map<java.lang.String,java.lang.String> getStatusMap()
          Override to provide plugin status.
 Entity getWorldManagerEntity(OID oid)
           
 Entity getWorldManagerEntityOrError(OID oid)
           
protected  WorldManagerClient.FreeRemoteObjectMessage makeFreeObjectForFixedPerceiverMessage(FixedPerceiver<WMWorldNode> fixedP, WMWorldNode freeWnode)
           
protected  WorldManagerClient.NewRemoteObjectMessage makeNewObjectForFixedPerceiverMessage(FixedPerceiver<WMWorldNode> fixedP, WMWorldNode newWnode)
           
protected  WorldManagerClient.ObjectInfo makeObjectInfo(OID oid)
           
protected  WorldManagerClient.PerceptionInfo makePerceptionInfo(OID oid, AOObject object)
           
 void newObjectForFixedPerceiver(Perceiver<WMWorldNode> p, WMWorldNode newWnode)
          We know about a new object via some fixed perceiver. this fixed perceiver is for some remote world manager.
 void onActivate()
          for developers extending the EnginePlugin object, it may be easier to use the onActivate() method which gets called when the plugin is being activated by the Engine.
 void postUpdate(PerceptionFilter filter, FilterUpdate.Instruction instruction, AgentHandle sender, SubscriptionHandle sub)
           
 void preUpdate(PerceptionFilter filter, FilterUpdate.Instruction instruction, AgentHandle sender, SubscriptionHandle sub)
           
 java.lang.Integer processNewsAndFrees(Perceiver<WMWorldNode> p, PerceiverNewsAndFrees<WMWorldNode> newsAndFrees, OID perceiverOid)
          This method creates the NewsAndFreesMessage, and sends it to to subscribers.
protected  void registerHooks()
           
 void registerRegionTrigger(java.lang.String name, RegionTrigger trigger)
          Register a custom region trigger.
 void registerWorldManagerEntity(Entity entity)
           
 boolean removeWorldManagerEntity(OID oid)
           
protected  void sendDCMessage(AOObject obj)
          Send full display context message usually called in response to receiving an update message from the proxy.
protected  void sendObjectSoundMessage(OID notifyOid, AOObject updateObj, java.util.List<SoundData> soundData)
           
protected  void sendPropertyMessage(OID notifyOid, AOObject updateObj)
          Sends over all properties of the update object over to the notifyOid.
 void sendRegionUpdate(AOObject obj)
           
protected  void sendTargetedPropertyMessage(OID targetOid, AOObject updateObj)
           
protected  void sendWMMessage(Message msg)
           
protected  void sendWNodeMessage(OID oid, AOObject updateObj)
          Sends over an update of the world node
 void setPathInfo(PathInfo pathInfo)
           
protected  java.lang.Integer spawnObject(AOObject obj, QuadTree<WMWorldNode> quadtree)
          Helper method - spawns the object.
protected  void startUpdater()
           
protected  void subscribeForMob(OID oid)
           
protected  void subscribeForObject(OID masterOid)
           
protected  void unsubscribeForMob(OID oid)
           
protected  void unsubscribeForObject(OID oid)
           
 
Methods inherited from class atavism.server.engine.EnginePlugin
activate, createMBeanInstance, createSubscription, getHookManager, getMessageHandler, getName, getObjectLockManager, getObjectProperties, getObjectProperties, getObjectProperty, getObjectPropertyNames, getPercentCPULoad, getPluginAvailable, getPluginInfo, getPluginNamespaces, getPluginState, getPluginStatus, getPluginType, getPropertyImpl, getPropertyNamesImpl, handleMessage, handleMessageImpl, logDepsOutstanding, processKeysAndValues, registerActivateHook, registerDeleteHook, registerLoadHook, registerPluginNamespace, registerPluginNamespaces, registerPluginNamespaces, registerPluginNamespaces, registerSaveHook, registerTransferHook, registerUnloadHook, sendSubObjectResponse, sendSubObjectResponse, sendSubObjectResponse, setMessageHandler, setName, setObjectProperties, setObjectProperties, setObjectProperties, setObjectPropertiesNoResponse, setObjectPropertiesNoResponse, setObjectPropertiesNoResponse, setObjectProperty, setObjectPropertyNoResponse, setPercentCPULoad, setPluginAvailable, setPluginInfo, setPluginType, setPropertyImpl, transferObject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface atavism.msgsys.MessageCallback
handleMessage
 

Field Detail

subObjectFilter

protected SubObjectFilter subObjectFilter

newRegionFilter

protected WorldManagerPlugin.WorldManagerFilter newRegionFilter

newRegionSub

protected long newRegionSub

mobFilter

protected PerceptionFilter mobFilter

mobSubId

protected long mobSubId

mobRPCFilter

protected PerceptionFilter mobRPCFilter

mobRPCSubId

protected long mobRPCSubId

structFilter

protected PerceptionFilter structFilter

structSubId

protected long structSubId

structRPCFilter

protected PerceptionFilter structRPCFilter

structRPCSubId

protected long structRPCSubId

defaultWorldManagerHysteresis

protected int defaultWorldManagerHysteresis

quadtrees

protected java.util.Map<OID,QuadTree<WMWorldNode>> quadtrees

regionTriggers

protected java.util.Map<java.lang.String,RegionTrigger> regionTriggers

propertyExclusions

protected java.util.Set<java.lang.String> propertyExclusions

log

protected static final Logger log

pathInfo

protected PathInfo pathInfo

askedForPathInfo

protected boolean askedForPathInfo

updater

protected atavism.server.plugins.WorldManagerPlugin.Updater updater

pathObjectCache

protected static WorldManagerPlugin.PathObjectCache pathObjectCache

REGION_MEMBERSHIP

public static final java.lang.String REGION_MEMBERSHIP
Constructor Detail

WorldManagerPlugin

public WorldManagerPlugin()
Method Detail

onActivate

public void onActivate()
Description copied from class: EnginePlugin
for developers extending the EnginePlugin object, it may be easier to use the onActivate() method which gets called when the plugin is being activated by the Engine. this is an alternative to calling registerActivateHook()

Overrides:
onActivate in class EnginePlugin

getStatusMap

public java.util.Map<java.lang.String,java.lang.String> getStatusMap()
Description copied from class: EnginePlugin
Override to provide plugin status.

Specified by:
getStatusMap in interface StatusMapCallback
Overrides:
getStatusMap in class EnginePlugin

getWorldManagerEntity

public Entity getWorldManagerEntity(OID oid)

getWorldManagerEntityOrError

public Entity getWorldManagerEntityOrError(OID oid)

registerWorldManagerEntity

public void registerWorldManagerEntity(Entity entity)

removeWorldManagerEntity

public boolean removeWorldManagerEntity(OID oid)

startUpdater

protected void startUpdater()

sendRegionUpdate

public void sendRegionUpdate(AOObject obj)

registerHooks

protected void registerHooks()

makePerceptionInfo

protected WorldManagerClient.PerceptionInfo makePerceptionInfo(OID oid,
                                                               AOObject object)

sendWMMessage

protected void sendWMMessage(Message msg)

getPerceiverOid

protected OID getPerceiverOid(MobilePerceiver<WMWorldNode> mobileP)

newObjectForFixedPerceiver

public void newObjectForFixedPerceiver(Perceiver<WMWorldNode> p,
                                       WMWorldNode newWnode)
We know about a new object via some fixed perceiver. this fixed perceiver is for some remote world manager. We take the new node, and make a newShadowObject message and send it to the remote world manager.


makeNewObjectForFixedPerceiverMessage

protected WorldManagerClient.NewRemoteObjectMessage makeNewObjectForFixedPerceiverMessage(FixedPerceiver<WMWorldNode> fixedP,
                                                                                          WMWorldNode newWnode)

freeObjectForFixedPerceiver

public void freeObjectForFixedPerceiver(Perceiver<WMWorldNode> p,
                                        WMWorldNode freeWnode)

makeFreeObjectForFixedPerceiverMessage

protected WorldManagerClient.FreeRemoteObjectMessage makeFreeObjectForFixedPerceiverMessage(FixedPerceiver<WMWorldNode> fixedP,
                                                                                            WMWorldNode freeWnode)

processNewsAndFrees

public java.lang.Integer processNewsAndFrees(Perceiver<WMWorldNode> p,
                                             PerceiverNewsAndFrees<WMWorldNode> newsAndFrees,
                                             OID perceiverOid)
This method creates the NewsAndFreesMessage, and sends it to to subscribers. The return value is the count of news plus count of frees sent to the perceiver p if its oid is notifyOid, or null if not.

Specified by:
processNewsAndFrees in interface PerceiverCallback<WMWorldNode>

preUpdate

public void preUpdate(PerceptionFilter filter,
                      FilterUpdate.Instruction instruction,
                      AgentHandle sender,
                      SubscriptionHandle sub)
Specified by:
preUpdate in interface PerceptionUpdateTrigger

postUpdate

public void postUpdate(PerceptionFilter filter,
                       FilterUpdate.Instruction instruction,
                       AgentHandle sender,
                       SubscriptionHandle sub)
Specified by:
postUpdate in interface PerceptionUpdateTrigger

getPathInfo

public PathInfo getPathInfo()

setPathInfo

public void setPathInfo(PathInfo pathInfo)

makeObjectInfo

protected WorldManagerClient.ObjectInfo makeObjectInfo(OID oid)

getInstanceInfoString

public java.lang.String getInstanceInfoString(OID instanceOid)

generateWorldManagerSubObject

protected AOObject generateWorldManagerSubObject(Template template,
                                                 OID masterOid)
Override this method to change what kind of object is created for the sub object hook.

Returns:
AOObject representing the generated sub-object.

subscribeForMob

protected void subscribeForMob(OID oid)

subscribeForObject

protected void subscribeForObject(OID masterOid)

unsubscribeForMob

protected void unsubscribeForMob(OID oid)

unsubscribeForObject

protected void unsubscribeForObject(OID oid)

spawnObject

protected java.lang.Integer spawnObject(AOObject obj,
                                        QuadTree<WMWorldNode> quadtree)
Helper method - spawns the object. obj is the sub object. The return value is the count of news plus count of frees perceived by this object as it's spawned, if the object is mobile perceiver.


despawnObject

protected void despawnObject(AOObject obj)

sendDCMessage

protected void sendDCMessage(AOObject obj)
Send full display context message usually called in response to receiving an update message from the proxy. Not implemented in base class because we don't know what clothing is being handled. See AgisWorldManagerPlugin for how it does it. Default implementation in @see AgisWorldManagerPlugin.sendDCMessage(OID notifyOid, AOObject obj)


getDisplayContext

protected abstract DisplayContext getDisplayContext(OID objOid)
returns the current display context for the given objOid


sendPropertyMessage

protected void sendPropertyMessage(OID notifyOid,
                                   AOObject updateObj)
Sends over all properties of the update object over to the notifyOid. Usually includes stats like health, alive/dead,etc


sendTargetedPropertyMessage

protected void sendTargetedPropertyMessage(OID targetOid,
                                           AOObject updateObj)

sendWNodeMessage

protected void sendWNodeMessage(OID oid,
                                AOObject updateObj)
Sends over an update of the world node


sendObjectSoundMessage

protected void sendObjectSoundMessage(OID notifyOid,
                                      AOObject updateObj,
                                      java.util.List<SoundData> soundData)

registerRegionTrigger

public void registerRegionTrigger(java.lang.String name,
                                  RegionTrigger trigger)
Register a custom region trigger.


getPropertyExclusions

public java.util.Set<java.lang.String> getPropertyExclusions()
Object properties excluded from property messages.



Copyright © 2018 Dragonsan Studios Sp. z o.o.