Mercury Messaging
Documentation for the Mercury Messaging Framework
MercuryMessaging Namespace Reference

Namespaces

Classes

class  EditorList
 
class  EnumFlagsAttributeDrawer
 
interface  IMmNetworkResponder
 Implement this interface to utilize your chosen Networking framework with Mercury XM. More...
 
interface  IMmNode
 Defines methods required by an MmResponder & utility methods making invocation MmMethods with built-in MmMessages easier. More...
 
interface  IMmResponder
 The core of MercuryMessaging. This interface specifies MmInvoke - which is the message-passing utility of the framework. Awake/Start callbacks are also required to allow the framework to ensure certain components are in place (in both networked and local environments) when needed. More...
 
class  MmBaseResponder
 MmResponder that implements a switch handling the framework-provided MmMethods. More...
 
class  MmBehaviorEditor
 Custom Editor for MmResponder. More...
 
class  MmBehaviorListDrawer
 MmRoutingTable drawer. Note: Based on https://gist.github.com/YuukiTsuchida/84a8f3ebdecf830c277c More...
 
class  MmBehaviorListItemDrawer
 MmRoutingTableItem drawer. Adapted from http://catlikecoding.com/unity/tutorials/editor/custom-data/ More...
 
class  MmLevelFilterHelper
 Utility to quickly generate MmLevelFilterHelpers.
 
class  MmLogger
 Mercury's Logger is used throughout the framework to log: Framework, MmResponder, Application, and Error level messages. More...
 
class  MmMessage
 Base class for messages passed through MmInvoke Built on Unity's Message Base, allowing usage of serialize/deserialize More...
 
class  MmMessageBool
 MmMessage with bool payload More...
 
class  MmMessageByteArray
 MmMessage with byte array payload More...
 
class  MmMessageFloat
 MmMessage with float payload More...
 
class  MmMessageInt
 MmMessage with int payload More...
 
class  MmMessageSerializable
 MmMessage that sends a serialized object as payload You need to assign your implementation of the IMSerializable interface to the Serializable types somewhere in your program. Additionally, you need to invoke the AssignType function manually if you do not create the message using the constructor with an IMSerializable as a parameter or the copy constructor. More...
 
class  MmMessageString
 MmMessage with string payload More...
 
class  MmMessageTransform
 MmMessage with MmTransform payload More...
 
class  MmMessageTransformList
 MmMessage with Transform List payload More...
 
class  MmMessageVector3
 MmMessage with Vector3 payload More...
 
class  MmMessageVector4
 MmMessage with Vector4 payload More...
 
class  MmMetadataBlock
 MmMetadataBlock is a collection of settings allowing you to specify the precise invocation path of an MmMessage invoked on an MmRelayNode through its MercuryMessaging hierarchy. More...
 
class  MmMetadataBlockHelper
 Helper class to easily create common MercuryMessaging MetadataBlocks
 
class  MmNetworkManager
 A object that interacts with the UNET networking environment More...
 
class  MmNetworkResponder
 
class  MmQuickNode
 Modification of the standard MmRelayNode that allows skipping of standard checks to allow for faster propagation. More...
 
class  MmRelayNode
 Base routing node of Mercury XM. Contains a list of MmResponders and sends MmMessages to responders in list, following the specifications of control blocks to MmInvoke method. More...
 
class  MmRelaySwitchNode
 an MmRelayNode with an FSM to allow for limited MmResponder selection in the MmRelayNode's MmRoutingTable. More...
 
class  MmResponder
 Base implmentation of IMmResponder. More...
 
class  MmRoutingTable
 A form of Reorderable List ReorderableList<T> specifically for all derivations of MmResponder. More...
 
class  MmRoutingTableItem
 Wrapper objects for MmResponders for use in MmRoutingTables. More...
 
class  MmSwitchResponder
 Controller for MmRelaySwitchNode. More...
 
class  MmTagHelper
 
class  MmTestManager
 Utility to allow for easy testing of an MmRelaySwitchNode & MmSwitchResponder. More...
 
struct  MmTransform
 A struct containing the translation, rotation and scale of a transformation. More...
 
class  MmTransformResponder
 
class  MxmLevelFilterDrawer
 Drawer for handling MxmLevelFilters More...
 
class  MxmTagDrawer
 Drawer fro handling MxmTags More...
 

Enumerations

enum  EditorListOption {
  None = 0, ListSize = 1, ListLabel = 2, ElementLabels = 4,
  Buttons = 8, Default = ListSize | ListLabel | ElementLabels, NoElementLabels = ListSize | ListLabel, All = Default | Buttons
}
 
enum  MmActiveFilter { Active, All }
 Filter that allows you to send messages only to objects active in MercuryMessaging hierarchy or to all objects. More...
 
enum  MmLevelFilter { Self = 1 << 0, Child = 1 << 1, Parent = 1 << 2 }
 Filter represents relationship types of MmResponders. More...
 
enum  MmMessageType : short {
  MmVoid = 1001, MmInt, MmBool, MmFloat,
  MmVector3, MmVector4, MmString, MmByteArray,
  MmTransform, MmTransformList, MmSerializable
}
 Supported base MercuryMessage Message types. You may want to add new values here if you want to support new message types across the framework. More...
 
enum  MmMethod {
  NoOp = 0, Initialize, SetActive, Refresh,
  Switch, Complete, TaskInfo, Message,
  MessageBool, MessageByteArray, MessageFloat, MessageInt,
  MessageSerializable, MessageString, MessageTransform, MessageTransformList,
  MessageVector3, MessageVector4, Transform
}
 The list of support MmRelayNode function calls. MmMethod only defines values 0-18. In order to invoke new method types, you can use any number, without adding it to this list. We suggest you start above 1000 to safely avoid clashes with the core of the framework. More...
 
enum  MmNetworkFilter { All, Local, Network }
 Filter that allows you to specifiy whether a message should execute locally or over the network. If Network is specified, the message should not execute locally. This is useful when you do not want a message to effect the local MercuryMessaging Hierarchy. More...
 
enum  MmSelectedFilter { All, Selected }
 Filter that allows you to send messages only to selected objects. The definition of selected is left open for anyone to redefine. In MmRelayNode, selected is not defined. In MmRelaySwitchNode, selected means active in the FSM. More...
 
enum  MmTag {
  Tag0 = 1 << 0, Tag1 = 1 << 1, Tag2 = 1 << 2, Tag3 = 1 << 3,
  Tag4 = 1 << 4, Tag5 = 1 << 5, Tag6 = 1 << 6, Tag7 = 1 << 7
}
 

Functions

delegate void IMmCallback ()
 IMm callback type used by implementations of IMmResponder. More...
 

Enumeration Type Documentation

◆ MmActiveFilter

Filter that allows you to send messages only to objects active in MercuryMessaging hierarchy or to all objects.

◆ MmLevelFilter

Filter represents relationship types of MmResponders.

◆ MmMessageType

enum MercuryMessaging.MmMessageType : short
strong

Supported base MercuryMessage Message types. You may want to add new values here if you want to support new message types across the framework.

◆ MmMethod

The list of support MmRelayNode function calls. MmMethod only defines values 0-18. In order to invoke new method types, you can use any number, without adding it to this list. We suggest you start above 1000 to safely avoid clashes with the core of the framework.

◆ MmNetworkFilter

Filter that allows you to specifiy whether a message should execute locally or over the network. If Network is specified, the message should not execute locally. This is useful when you do not want a message to effect the local MercuryMessaging Hierarchy.

◆ MmSelectedFilter

Filter that allows you to send messages only to selected objects. The definition of selected is left open for anyone to redefine. In MmRelayNode, selected is not defined. In MmRelaySwitchNode, selected means active in the FSM.

Function Documentation

◆ IMmCallback()

delegate void MercuryMessaging.IMmCallback ( )

IMm callback type used by implementations of IMmResponder.