Module ark_module::behavior
source · [−]Expand description
Behavior module
Behavior instances are identified through a densely packed identifier called BehaviorInstanceId.
BehaviorInstanceId uniquely identifies a triple of:
- An external behavior module handle
- A behavior type in this behavior module
- A behavior instance of this behavior type in this module
Different users of this identifier need different parts:
BehaviorModuleHandle, while internal to Ark, consists of the high 16 bits of this id, and can be used to index into an array of behavior modulesBehaviorTypeIdconsists of the module handle as well as the local type id, that is, the high 32-bits. It is used to create new behavior instances, through explicit creation or deserialization.ForeignBehaviorInstanceIdconsists of the parts that are local to a behavior module. Ark will complete it together with aBehaviorModuleHandleinto aBehaviorInstanceId.
/––––– ForeignBehaviorInstanceId ————
/
LocalBehaviorInstanceId LocalBehaviorTypeId BehaviorModuleHandle
0…………………….31 32………………….47 48…………………….63
\ /
-––––––– BehaviorTypeId ——————/
\ /
-––––––––––––– BehaviorInstanceId ––––––––––––––/
Macros
By passing a type that implements the BehaviorEntry trait, this macro will hook up
and route the behavior module’s raw entry points to the trait methods.
Structs
A unique identifier of a couple comprising a local behavior type id within a behavior module as well as a local instance id.
An incoming message from a controller module
An incoming message sent from the controller module
A behavior instance index. May not be unique overall, but must form unique pairs with the
corresponding LocalBehaviorTypeId of the instance’s type, resulting in a ForeignBehaviorInstanceId.
Describes a behavior local to a behavior module
An index of the behavior type, local to a behavior module.
Contains all registration info for an external behavior module
Enums
Error return codes for API functions.
Target address of an incoming message.
Traits
Ergonomic wrapper around a behavior module’s entry points.