API for manipulating game objects
Callback when iterating over the properties for a component.
pit - the property iterator
node - the scene node
Get the component type index. Used for with e.g. dmGameObject::GetWorld()/GetContext()
type - the type
type_index - The type index.
Set the new world callback. Called when a collection (i.e. a "world") is created.
type - the type
fn - callback
Set the world destroy callback. Called when a collection (i.e. a "world") is destroyed.
type - the type
fn - callback
Set the component create callback. Called when a component instance is created.
type - the type
fn - callback
Set the component destroy callback. Called when a component instance is destroyed.
type - the type
fn - callback
Set the component init callback. Called on each gameobject's components, during a gameobject's initialization.
type - the type
fn - callback
Set the component finalize callback. Called on each gameobject's components, during a gameobject's finalization.
type - the type
fn - callback
Set the component add-to-update callback. Called for each component instal, when the game object is spawned.
type - the type
fn - callback
Set the component get callback. Called when the scripts want to retrieve the individual component user data given an url.
type - the type
fn - callback
Set the component render callback. Called when it's time to render all component instances.
type - the type
fn - callback
Set the component update callback. Called when it's time to update all component instances.
type - the type
fn - callback
Set the component update callback. Called when it's time to update all component instances.
type - the type
fn - callback
Set the component post update callback. Called for each collection after the update, before the render.
type - the type
fn - callback
Set the component on-message callback. Called multiple times per frame, to flush messages.
type - the type
fn - callback
Set the component on-input callback. Called once per frame, before the Update function.
type - the type
fn - callback
Set the component on-reload callback. Called when the resource of a component instance is reloaded.
type - the type
fn - callback
Set the component set properties callback. Called when the component instance is being spwned.
type - the type
fn - callback
Set the component get property callback. Called when accessing a property via go.get()
type - the type
fn - callback
Set the component set property callback. Called when accessing a property via go.set()
type - the type
fn - callback
Set the component type global context. Usually set when registering the component type.
type - the type
context - component type global context
get the component type global context
type - the type
context - component type global context
Set the component type transform dependency flag. If this flag is set, it might trigger an dmGameObject::UpdateTransforms() (if there are dirty transforms)
type - the type
reads_transforms - transform dependency flag
Set the component type prio order. Defines the update order of the component types.
type - the type
prio - prio order
Set the component type need for a per component instance user data. Defaults to true.
type - the type
has_user_data - does each component instance need user data
set the component child iterator function. Called during inspection
type - the type
fn - child iterator function
set the component property iterator function. Called during inspection
type - the type
fn - property iterator function
Context used when registering a new component type
m_Config - The config file
m_Factory - The resource factory
m_Register - The game object registry
m_Script - The shared script context
m_Contexts - Mappings between names and contextx
Sends a script message. Wraps the message in a dmGameSystemDDF::ScriptMessage struct.
message - The ddf message to send
sender - The sender
receiver - The receiver
function_ref - The function ref. 0 wil cause the "on_message" to be called
unref_function_after_call - call dmScript::UnrefInInstance on the function_ref after the dmScript::PCall is made
success - true if successful
Value for an invalid instance index, this must be the same as defined in gamesys_ddf.proto for Create#index.
Gameobject instance handle
Script handle
Script instance handle
Collection register.
Gameobject collection handle
Gameobject prototype handle
Gameobject properties handle
Result enumeration.
dmGameObject::RESULT_OK -
dmGameObject::RESULT_OUT_OF_RESOURCES -
dmGameObject::RESULT_ALREADY_REGISTERED -
dmGameObject::RESULT_IDENTIFIER_IN_USE -
dmGameObject::RESULT_IDENTIFIER_ALREADY_SET -
dmGameObject::RESULT_COMPONENT_NOT_FOUND -
dmGameObject::RESULT_MAXIMUM_HIEARCHICAL_DEPTH -
dmGameObject::RESULT_INVALID_OPERATION -
dmGameObject::RESULT_RESOURCE_TYPE_NOT_FOUND -
dmGameObject::RESULT_BUFFER_OVERFLOW -
dmGameObject::RESULT_UNKNOWN_ERROR -
Property types.
dmGameObject::PROPERTY_TYPE_NUMBER -
dmGameObject::PROPERTY_TYPE_HASH -
dmGameObject::PROPERTY_TYPE_URL -
dmGameObject::PROPERTY_TYPE_VECTOR3 -
dmGameObject::PROPERTY_TYPE_VECTOR4 -
dmGameObject::PROPERTY_TYPE_QUAT -
dmGameObject::PROPERTY_TYPE_BOOLEAN -
dmGameObject::PROPERTY_TYPE_COUNT -
Property result.
dmGameObject::PROPERTY_RESULT_OK -
dmGameObject::PROPERTY_RESULT_NOT_FOUND -
dmGameObject::PROPERTY_RESULT_INVALID_FORMAT -
dmGameObject::PROPERTY_RESULT_UNSUPPORTED_TYPE -
dmGameObject::PROPERTY_RESULT_TYPE_MISMATCH -
dmGameObject::PROPERTY_RESULT_COMP_NOT_FOUND -
dmGameObject::PROPERTY_RESULT_INVALID_INSTANCE -
dmGameObject::PROPERTY_RESULT_BUFFER_OVERFLOW -
dmGameObject::PROPERTY_RESULT_UNSUPPORTED_VALUE -
dmGameObject::PROPERTY_RESULT_UNSUPPORTED_OPERATION -
dmGameObject::PROPERTY_RESULT_RESOURCE_NOT_FOUND -
dmGameObject::PROPERTY_RESULT_INVALID_INDEX -
dmGameObject::PROPERTY_RESULT_INVALID_KEY -
dmGameObject::PROPERTY_RESULT_READ_ONLY -
Playback type enum
Create result enum.
dmGameObject::CREATE_RESULT_OK -
dmGameObject::CREATE_RESULT_UNKNOWN_ERROR -
Update result enum.
dmGameObject::UPDATE_RESULT_OK -
dmGameObject::UPDATE_RESULT_UNKNOWN_ERROR -
Type of property value
dmGameObject::PROP_VALUE_ARRAY -
dmGameObject::PROP_VALUE_HASHTABLE -
Parameters variant that holds key or index for a propertys data structure.
m_Index - The index of the property to set, only applicable if property is array.
m_Key - The key of the property to set, only applicable if property is hashtable.
m_HasKey - A flag if structure contain m_Key value (it can't contain both)
Property variant that holds the data for a variable
m_Type - property type
m_Number - A floating point value (union)
m_Hash - A hash value (union)
m_Url - An URL value (union)
m_V4 - A vector4 value (union)
m_Bool - A boolean value (union)
Description of a property. If the property is externally mutable, m_ValuePtr points to the value and its length is m_ElementCount. m_Variant always reflects the value.
m_ElementIds - For composite properties (float arrays), these ids name each element
m_Variant - Variant holding the value
m_ValuePtr - Pointer to the value, only set for mutable values. The actual data type is described by the variant.
m_ReadOnly - Determines whether we are permitted to write to this property.
m_ValueType - Indicates type of the property (of type PropertyValueType).
m_ArrayLength - Number of array entries, if the property is an array and zero otherwise. Max supported length is 2^14 (16384 elements)
Update context
m_TimeScale - the scaling factor what was applied on the dt (i.e. the collection update time scale)
m_DT - the delta time elapsed since last frame (seconds)
m_FixedUpdateFrequency - Number of of calls per second to the FixedUpdate of each component
Container of input related information.
Input result enum
INPUT_RESULT_IGNORED - = 0
INPUT_RESULT_CONSUMED - = 1
INPUT_RESULT_UNKNOWN_ERROR - = -1000
Retrieve the message socket for the specified collection.
collection - Collection handle
socket - The message socket of the specified collection
Retrieve a collection from the specified instance
instance - Game object instance
collection - The collection the specified instance belongs to
Create a new gameobject instance
collection - Gameobject collection
prototype_name - |type: const char*] Prototype file name. May be 0.
instance - New gameobject instance. NULL if any error occured
Delete gameobject instance
collection - Gameobject collection
instance - Gameobject instance
recursive - If true, delete child hierarchy recursively in child to parent order (leaf first)
Construct a hash of an instance id based on the index provided.
index - The index to base the id off of.
id - hash of the instance id constructed.
Retrieve an instance index from the index pool for the collection.
collection - Collection from which to retrieve the instance index.
instance - index from the index pool of collection.
Assign an index to the instance, only if the instance is not null.
index - The index to assign.
instance - The instance that should be assigned the index.
Get instance identifier
instance - Gameobject instance
- Identifier. dmGameObject::UNNAMED_IDENTIFIER if not set.
Set instance identifier. Must be unique within the collection.
collection - Collection
instance - Instance
identifier - Identifier
result - RESULT_OK on success
Get component id from component index.
instance - Instance
component_index - Component index
component_id - [type: dmhash_t* Component id as out-argument
result - RESULT_OK if the component was found
Set gameobject instance position
instance - Gameobject instance
position - New Position
Get gameobject instance position
instance - Gameobject instance
- Position
Set gameobject instance rotation
instance - Gameobject instance
position - New Position
Get gameobject instance rotation
instance - Gameobject instance
- rotation
Set gameobject instance uniform scale
instance - Gameobject instance
scale - New uniform scale
Set gameobject instance non-uniform scale
instance - Gameobject instance
scale - New uniform scale
Get gameobject instance uniform scale
instance - Gameobject instance
- Uniform scale
Get gameobject instance scale
instance - Gameobject instance
- Non-uniform scale
Get gameobject instance world position
instance - Gameobject instance
- World position
Get gameobject instance world rotation
instance - Gameobject instance
- World rotation
Get game object instance world transform
instance - Gameobject instance
- World scale
Get game object instance uniform scale
instance - Gameobject instance
- World uniform scale
Get game object instance world transform as Matrix4.
instance - Gameobject instance
- World transform matrix.
Get game object instance world transform
instance - Gameobject instance
- World transform
Set whether the instance should be flagged as a bone. Instances flagged as bones can have their transforms updated in a batch through SetBoneTransforms. Used for animated skeletons.
instance - Instance
bone - true if the instance is a bone
Check whether the instance is flagged as a bone.
instance - Instance
result - True if flagged as a bone
Set the local transforms recursively of all instances flagged as bones, starting with component with id. The order of the transforms is depth-first.
instance - First Instance of the hierarchy to set
component_transform - the transform for component root
transforms - Array of transforms to set depth-first for the bone instances
transform_count - Size of the transforms array
Number - of instances found
Recursively delete all instances flagged as bones under the given parent instance. The order of deletion is depth-first, so that the children are deleted before the parents.
parent - Parent instance of the hierarchy
Opaque struct that holds info about the current node
Opaque struct that holds info about the current position when traversing the scene
Gets the top node of the whole game (the main collection)
regist - the full gameobject register
node - the node to inspect
result - True if successful
The following examples show how to iterate over currently loaded scene graph
void OutputNode(dmGameObject::SceneNode* node) {
dmGameObject::SceneNodeIterator it = dmGameObject::TraverseIterateChildren(node);
while(dmGameObject::TraverseIterateNext(&it))
{
OutputProperties(&it.m_Node); // see dmGameObject::TraverseIterateProperties()
OutputNode(&it.m_Node);
}
}
bool OutputScene(HRegister regist) {
dmGameObject::SceneNode root;
if (!dmGameObject::TraverseGetRoot(regist, &root))
return false;
OutputNode(&node);
}
Get a scene node iterator for the nodes' children
node - the parent node
iterator - the iterator
Step a scene node iterator to the next sibling
it - the iterator
result - true if successful. false if the iterator is finished
scene node property types
dmGameObject::SCENE_NODE_PROPERTY_TYPE_NUMBER -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_HASH -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_URL -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_VECTOR3 -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_VECTOR4 -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_QUAT -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_BOOLEAN -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_TEXT -
dmGameObject::SCENE_NODE_PROPERTY_TYPE_COUNT -
Struct that holds info about the current position when traversing the scene
m_NameHash - name
m_Type - type
m_Value - value
m_Number
m_Hash
m_URL
m_V4
m_Bool
m_Text
Holds the property
m_Property - property
Create a scene node traversal property iterator
node - the node to inspect
iterator - the property iterator
The following examples show how to iterate over the properties of a node
dmGameObject::SceneNodePropertyIterator pit = TraverseIterateProperties(node);
while(dmGameObject::TraverseIteratePropertiesNext(&pit))
{
const char* name = dmHashReverseSafe64(pit.m_Property.m_NameHash);
switch(pit.m_Property.m_Type)
{
case dmGameObject::SCENE_NODE_PROPERTY_TYPE_NUMBER: ...
...
}
}
Steps the scene node traversal property iterator to the next property
it - the iterator
finished - True if the iterator it valid, false if the iterator is finished.