![]() |
CRM64Pro GDK v0.20.0
A free cross-platform game development kit built on top of SDL 3.0
|
Object layer containing game objects with spatial partitioning.
Each SceneLayerObject manages SceneObject instances through an internal spatial grid, deferred lifecycle requests, trigger queries and object render ordering. Built-in C64Light, C64Occluder and C64Portal objects participate in Scene lighting; each C64Particle object owns an independent runtime emitter. Objects with c64scn_blocks_particles contribute their geometry to the shared Physics collision set selected by particle emitters.
Classes | |
| struct | CRM64Pro::SceneShapeData |
| Shape geometry data for a SceneObject. More... | |
| struct | CRM64Pro::SceneObjectTrigger |
| Object trigger zone definition. More... | |
| struct | CRM64Pro::SceneTriggerEvent |
| Trigger event payload. More... | |
| struct | CRM64Pro::SceneParticleCollisionEvent |
| Batched Scene particle collision event payload. More... | |
| class | CRM64Pro::ISceneObjectFactory |
| Factory interface for creating game objects from Tiled type strings. More... | |
| class | CRM64Pro::SceneObject |
| Base class for all Scene game objects. More... | |
| class | CRM64Pro::SceneLayerObject |
| Object layer containing game objects with spatial partitioning. More... | |
Functions | |
| CRM64PRO_API void | CRM64Pro::SceneShapeData::calculateAABB (float fObjX, float fObjY, float fObjWidth, float fObjHeight) |
| Recalculate AABB from object position and dimensions. | |
| CRM64PRO_API void | CRM64Pro::SceneObjectTrigger::addIncludeType (const string &sType) |
| Add one type identifier to the include filter. | |
| CRM64PRO_API void | CRM64Pro::SceneObjectTrigger::addExcludeType (const string &sType) |
| Add one type identifier to the exclude filter. | |
| CRM64Pro::SceneObject::SceneObject () | |
| Default constructor. | |
| virtual | CRM64Pro::SceneObject::~SceneObject () |
| Virtual destructor for proper cleanup of derived classes. | |
| virtual void | CRM64Pro::SceneObject::initialize () |
| Called after Scene configuration populates all fields. | |
| virtual void | CRM64Pro::SceneObject::update (Scene *pScene, SceneLayerContext &rContext) |
| Called each frame when layer has UPDATE enabled. | |
| virtual void | CRM64Pro::SceneObject::render (Scene *pScene, SceneLayerContext &rContext) |
| Called each frame when layer has RENDER enabled and object is visible. | |
| void | CRM64Pro::SceneObject::setPosition (float fNewX, float fNewY, bool bTeleport=false) |
| Set object position and update spatial grid. | |
| bool | CRM64Pro::SceneObject::setSize (float fNewWidth, float fNewHeight) |
| Set object size and update cached bounds. | |
| bool | CRM64Pro::SceneObject::setRotationDeg (float fNewRotationDeg) |
| Set object rotation and update cached bounds. | |
| bool | CRM64Pro::SceneObject::setShape (const SceneShapeData &rNewShape) |
| Set object shape and update the spatial grid and particle-collision geometry. | |
| bool | CRM64Pro::SceneObject::setType (const string &sNewType) |
| Set the object type identifier. | |
| bool | CRM64Pro::SceneObject::setName (const string &sNewName) |
| Set the object name. | |
| bool | CRM64Pro::SceneObject::setProperty (const string &sKey, const string &sValue) |
| Set a custom property. | |
| bool | CRM64Pro::SceneObject::removeProperty (const string &sKey) |
| Remove a custom property. | |
| void | CRM64Pro::SceneObject::setVisible (bool bNewVisible) |
| Set object visibility. | |
| bool | CRM64Pro::SceneObject::setPortalClosed (bool bClosed) |
| Set whether a portal is closed. | |
| float | CRM64Pro::SceneObject::getX () const |
| Get the object X position. | |
| float | CRM64Pro::SceneObject::getY () const |
| Get the object Y position. | |
| float | CRM64Pro::SceneObject::getWidth () const |
| Get the object width. | |
| float | CRM64Pro::SceneObject::getHeight () const |
| Get the object height. | |
| float | CRM64Pro::SceneObject::getRotationDeg () const |
| Get the object rotation. | |
| bool | CRM64Pro::SceneObject::isVisible () const |
| Check if the object is visible. | |
| bool | CRM64Pro::SceneObject::isPortalClosed () const |
| Check whether this portal is closed. | |
| Sint32 | CRM64Pro::SceneObject::getID () const |
| Get the object ID. | |
| const string & | CRM64Pro::SceneObject::getType () const |
| Get the type identifier. | |
| const string & | CRM64Pro::SceneObject::getName () const |
| Get the object name. | |
| ParticleEmitter * | CRM64Pro::SceneObject::getParticleEmitter () |
| Get this scene object's particle emitter. | |
| const SceneShapeData & | CRM64Pro::SceneObject::getShape () const |
| Get the object shape data. | |
| bool | CRM64Pro::SceneObject::isPendingDestruction () const |
| Check if the object is pending destruction. | |
| bool | CRM64Pro::SceneObject::addTrigger (const SceneObjectTrigger &rTrigger) |
| Add a trigger zone to this object. | |
| bool | CRM64Pro::SceneObject::updateTrigger (const SceneObjectTrigger &rTrigger) |
| Update an existing trigger by name. | |
| bool | CRM64Pro::SceneObject::removeTrigger (const string &sName) |
| Remove a trigger by name. | |
| void | CRM64Pro::SceneObject::clearTriggers () |
| Remove all triggers. | |
| bool | CRM64Pro::SceneObject::setTriggerEnabled (const string &sName, bool bEnabled) |
| Enable or disable a trigger. | |
| bool | CRM64Pro::SceneObject::getTrigger (const string &sName, SceneObjectTrigger *pOut) const |
| Get a trigger definition by name. | |
| Sint32 | CRM64Pro::SceneObject::getTriggerCount () const |
| Get number of triggers assigned to this object. | |
| void | CRM64Pro::SceneObject::setOnTriggerEvent (TriggerEventCallback fnCallback) |
| Set trigger event callback. | |
| bool | CRM64Pro::SceneObject::hasProperty (const string &sKey) const |
| Check if a custom property exists. | |
| string | CRM64Pro::SceneObject::getPropertyString (const string &sKey, const string &sDefault="") const |
| Get a string custom property. | |
| Sint32 | CRM64Pro::SceneObject::getPropertyInt (const string &sKey, Sint32 iDefault=0) const |
| Get an integer custom property. | |
| bool | CRM64Pro::SceneObject::getPropertyBool (const string &sKey, bool bDefault=false) const |
| Get a boolean custom property. | |
| float | CRM64Pro::SceneObject::getPropertyFloat (const string &sKey, float fDefault=0.0f) const |
| Get a floating-point custom property. | |
| void | CRM64Pro::SceneObject::recalculateBounds () |
| Recalculate the cached AABB from the current object geometry. | |
| bool | CRM64Pro::SceneObject::containsPoint (float fX, float fY) const |
| Test if a point is inside this object's shape. | |
| bool | CRM64Pro::SceneObject::overlapsObject (const SceneObject *pOther, SDL_FRect *pOverlap=nullptr) const |
| Test if this object's AABB overlaps another object's AABB. | |
| eSceneLayerType | CRM64Pro::SceneLayerObject::getType () const override |
| Get the layer type. | |
| Sint32 | CRM64Pro::SceneLayerObject::update (Scene *pEngine, SceneLayerContext &rContext) override |
| Update object layer logic. | |
| Sint32 | CRM64Pro::SceneLayerObject::render (Scene *pEngine, SceneLayerContext &rContext) override |
| Render object layer content. | |
| Sint32 | CRM64Pro::SceneLayerObject::addObject (SceneObject *pObj) |
| Add an object to this layer. | |
| bool | CRM64Pro::SceneLayerObject::closeObject (Sint32 id) |
| Destroy an object by its ID. | |
| bool | CRM64Pro::SceneLayerObject::setSpatialGridCellSize (Sint32 iSize) |
| Set the spatial grid cell size. | |
| bool | CRM64Pro::SceneLayerObject::setSize (float fWidth, float fHeight) |
| Set the logical size of the layer (in pixels). | |
| void | CRM64Pro::SceneLayerObject::setRenderOrderMode (eSceneObjectRenderOrder eMode) |
| Set object rendering order policy. | |
| eSceneObjectRenderOrder | CRM64Pro::SceneLayerObject::getRenderOrderMode () const |
| Get object rendering order policy. | |
| void | CRM64Pro::SceneLayerObject::queryRegion (float fX, float fY, float fW, float fH, vector< SceneObject * > &vResults) |
| Query objects whose AABB overlaps a region. | |
| SceneObject * | CRM64Pro::SceneLayerObject::getObjectByID (Sint32 idObject) |
| Get object by Tiled ID. | |
| Sint32 | CRM64Pro::SceneLayerObject::getObjectCount () |
| Get number of objects in this layer. | |
| void | CRM64Pro::SceneLayerObject::getObjects (vector< SceneObject * > &vResults) |
| Get all objects in this layer. | |
| SceneObject * | CRM64Pro::SceneLayerObject::findFirstByType (const string &sType) |
| Find first object matching an exact type string. | |
| SceneObject * | CRM64Pro::SceneLayerObject::findFirstByName (const string &sName) |
| Find first object matching an exact name string. | |
| void | CRM64Pro::SceneLayerObject::findAllByType (const string &sType, vector< SceneObject * > &vResults) |
| Find all objects matching an exact type string. | |
| void | CRM64Pro::SceneLayerObject::findAllByName (const string &sName, vector< SceneObject * > &vResults) |
| Find all objects matching an exact name string. | |
| void | CRM64Pro::SceneLayerObject::setOnTriggerEvent (SceneObject::TriggerEventCallback fnCallback) |
| Set a layer-wide trigger event callback. | |
| float | CRM64Pro::SceneLayerObject::getTotalWidth () const override |
| Get layer total width in pixels. | |
| float | CRM64Pro::SceneLayerObject::getTotalHeight () const override |
| Get layer total height in pixels. | |
| void | CRM64Pro::Scene::setObjectFactory (ISceneObjectFactory *pFactory) |
| Set the object factory for creating game objects from Tiled types. | |
| ISceneObjectFactory * | CRM64Pro::Scene::getObjectFactory () const |
| Get the current object factory. | |
| bool | CRM64Pro::Scene::isObjectLayer (Sint32 iLayer) const |
| Check if a layer is an object layer. | |
| void CRM64Pro::SceneShapeData::calculateAABB | ( | float | fObjX, |
| float | fObjY, | ||
| float | fObjWidth, | ||
| float | fObjHeight ) |
Recalculate AABB from object position and dimensions.
For polygons/polylines, calculates bounds from vertices. For other shapes, uses position and width/height.
| fObjX | Object X position in world space. |
| fObjY | Object Y position in world space. |
| fObjWidth | Object width (ignored for polygon/polyline). |
| fObjHeight | Object height (ignored for polygon/polyline). |
| void CRM64Pro::SceneObjectTrigger::addIncludeType | ( | const string & | sType | ) |
Add one type identifier to the include filter.
Type is hashed internally exactly as provided. Empty strings are ignored.
| sType | The type string to include. |
| void CRM64Pro::SceneObjectTrigger::addExcludeType | ( | const string & | sType | ) |
Add one type identifier to the exclude filter.
Type is hashed internally exactly as provided. Empty strings are ignored.
| sType | The type string to exclude. |
|
virtual |
Called after Scene configuration populates all fields.
Override to parse properties, create sprites, or initialize game state. The base implementation initializes engine-managed behavior for built-in object types, including the runtime emitter owned by a C64Particle object. The Scene calls this exactly once for TMX-loaded and runtime-added objects. Overrides must call SceneObject::initialize() so an optional eager call before SceneLayerObject::addObject() is recognized by the one-time lifecycle.
|
virtual |
Called each frame when layer has UPDATE enabled.
Override to implement game logic, movement, AI, etc. The base implementation updates engine-managed behavior for built-in object types, including C64Particle emitters. Overrides must call SceneObject::update() to preserve that behavior.
| pScene | Pointer to the Scene instance. |
| rContext | Layer context structure containing update state. |
|
virtual |
Called each frame when layer has RENDER enabled and object is visible.
Override to implement custom rendering. Base implementation renders the tile if gid is non-zero; otherwise does nothing.
| pScene | Pointer to the Scene instance. |
| rContext | Layer context structure containing render state. |
| void CRM64Pro::SceneObject::setPosition | ( | float | fNewX, |
| float | fNewY, | ||
| bool | bTeleport = false ) |
Set object position and update spatial grid.
Always use this method to move objects - direct modification of coordinates will desynchronize the object from the spatial grid.
| fNewX | New X position in world pixels. |
| fNewY | New Y position in world pixels. |
| bTeleport | If true, snap presentation history to the new position instead of interpolating from the previous logic state. |
| bool CRM64Pro::SceneObject::setSize | ( | float | fNewWidth, |
| float | fNewHeight ) |
Set object size and update cached bounds.
| fNewWidth | New width in pixels. |
| fNewHeight | New height in pixels. |
| bool CRM64Pro::SceneObject::setRotationDeg | ( | float | fNewRotationDeg | ) |
Set object rotation and update cached bounds.
This method may be used before or after adding the object to a layer. Owned objects must only be changed from the Scene main thread.
| fNewRotationDeg | New clockwise rotation angle in degrees. |
| bool CRM64Pro::SceneObject::setShape | ( | const SceneShapeData & | rNewShape | ) |
Set object shape and update the spatial grid and particle-collision geometry.
The input AABB is ignored because it is derived from the object transform and geometry. Polygon and polyline points are copied; points are ignored for other shape types. This method may be used before or after adding the object to a layer. Owned objects must only be changed from the Scene main thread.
| rNewShape | New shape type and local points. |
| bool CRM64Pro::SceneObject::setType | ( | const string & | sNewType | ) |
Set the object type identifier.
The exact-case trigger-filter hash is updated with the type. Call before passing the object to SceneLayerObject::addObject().
| sNewType | New type identifier. An empty string clears the type. |
| bool CRM64Pro::SceneObject::setName | ( | const string & | sNewName | ) |
Set the object name.
Call before passing the object to SceneLayerObject::addObject().
| sNewName | New object name. An empty string clears the name. |
| bool CRM64Pro::SceneObject::setProperty | ( | const string & | sKey, |
| const string & | sValue ) |
Set a custom property.
Properties are stored as raw strings, matching TMX property storage. Before adding the object to a layer, any non-empty key is accepted. Owned objects accept the documented common C64 properties and the properties for their C64Particle, C64Light, C64Portal, or C64Occluder type from the Scene main thread. Changes affect the live object; particle autoplay is stored for the next particle initialization.
| sKey | Property key; it must not be empty. |
| sValue | Raw property value. |
| bool CRM64Pro::SceneObject::removeProperty | ( | const string & | sKey | ) |
Remove a custom property.
Call before passing the object to SceneLayerObject::addObject().
| sKey | Property key to remove. |
| void CRM64Pro::SceneObject::setVisible | ( | bool | bNewVisible | ) |
Set object visibility.
| bNewVisible | true to render, false to hide. |
| bool CRM64Pro::SceneObject::setPortalClosed | ( | bool | bClosed | ) |
Set whether a portal is closed.
Closed portals activate their configured light-occlusion and particle-blocking roles; open portals do not. The configured movement cost is reserved for future pathfinding and is intended to apply only while the portal is closed. This method may be called before or after adding the object to a layer. Owned objects must only be changed from the Scene main thread.
| bClosed | true to close the portal, or false to open it. |
C64Portal. | float CRM64Pro::SceneObject::getX | ( | ) | const |
Get the object X position.
| float CRM64Pro::SceneObject::getY | ( | ) | const |
Get the object Y position.
| float CRM64Pro::SceneObject::getWidth | ( | ) | const |
Get the object width.
| float CRM64Pro::SceneObject::getHeight | ( | ) | const |
Get the object height.
| float CRM64Pro::SceneObject::getRotationDeg | ( | ) | const |
Get the object rotation.
| bool CRM64Pro::SceneObject::isVisible | ( | ) | const |
Check if the object is visible.
| bool CRM64Pro::SceneObject::isPortalClosed | ( | ) | const |
Check whether this portal is closed.
C64Portal, or false for an open portal or any other object type. | Sint32 CRM64Pro::SceneObject::getID | ( | ) | const |
Get the object ID.
| const string & CRM64Pro::SceneObject::getType | ( | ) | const |
Get the type identifier.
| const string & CRM64Pro::SceneObject::getName | ( | ) | const |
Get the object name.
| ParticleEmitter * CRM64Pro::SceneObject::getParticleEmitter | ( | ) |
Get this scene object's particle emitter.
| const SceneShapeData & CRM64Pro::SceneObject::getShape | ( | ) | const |
Get the object shape data.
| bool CRM64Pro::SceneObject::isPendingDestruction | ( | ) | const |
Check if the object is pending destruction.
| bool CRM64Pro::SceneObject::addTrigger | ( | const SceneObjectTrigger & | rTrigger | ) |
Add a trigger zone to this object.
| rTrigger | Trigger definition. |
| bool CRM64Pro::SceneObject::updateTrigger | ( | const SceneObjectTrigger & | rTrigger | ) |
Update an existing trigger by name.
| rTrigger | Trigger definition. sName selects the trigger to update. |
| bool CRM64Pro::SceneObject::removeTrigger | ( | const string & | sName | ) |
Remove a trigger by name.
| sName | Trigger name. |
| bool CRM64Pro::SceneObject::setTriggerEnabled | ( | const string & | sName, |
| bool | bEnabled ) |
Enable or disable a trigger.
| sName | Trigger name. |
| bEnabled | New enabled state. |
| bool CRM64Pro::SceneObject::getTrigger | ( | const string & | sName, |
| SceneObjectTrigger * | pOut ) const |
Get a trigger definition by name.
| sName | Trigger name. |
| pOut | Destination structure. |
| Sint32 CRM64Pro::SceneObject::getTriggerCount | ( | ) | const |
Get number of triggers assigned to this object.
| void CRM64Pro::SceneObject::setOnTriggerEvent | ( | TriggerEventCallback | fnCallback | ) |
Set trigger event callback.
Object-level callback for this specific SceneObject instance. Called before layer/global trigger callbacks (dispatch order: object -> layer -> global).
| fnCallback | Callback function, or an empty callback to clear. |
| bool CRM64Pro::SceneObject::hasProperty | ( | const string & | sKey | ) | const |
Check if a custom property exists.
| sKey | Property key. |
| string CRM64Pro::SceneObject::getPropertyString | ( | const string & | sKey, |
| const string & | sDefault = "" ) const |
Get a string custom property.
| sKey | Property key. |
| sDefault | Value returned when the property does not exist. |
| Sint32 CRM64Pro::SceneObject::getPropertyInt | ( | const string & | sKey, |
| Sint32 | iDefault = 0 ) const |
Get an integer custom property.
| sKey | Property key. |
| iDefault | Value returned when the property does not exist. |
| bool CRM64Pro::SceneObject::getPropertyBool | ( | const string & | sKey, |
| bool | bDefault = false ) const |
Get a boolean custom property.
| sKey | Property key. |
| bDefault | Value returned when the property does not exist. |
| float CRM64Pro::SceneObject::getPropertyFloat | ( | const string & | sKey, |
| float | fDefault = 0.0f ) const |
Get a floating-point custom property.
| sKey | Property key. |
| fDefault | Value returned when the property does not exist or is not a valid float. |
| void CRM64Pro::SceneObject::recalculateBounds | ( | ) |
Recalculate the cached AABB from the current object geometry.
setPosition(), setSize(), setRotationDeg(), and setShape() call this automatically.
| bool CRM64Pro::SceneObject::containsPoint | ( | float | fX, |
| float | fY ) const |
Test if a point is inside this object's shape.
Uses precise shape geometry (not just AABB).
| fX | Point X coordinate in world space. |
| fY | Point Y coordinate in world space. |
| bool CRM64Pro::SceneObject::overlapsObject | ( | const SceneObject * | pOther, |
| SDL_FRect * | pOverlap = nullptr ) const |
Test if this object's AABB overlaps another object's AABB.
Fast broad-phase overlap test using cached AABBs.
| pOther | Pointer to other object. |
| pOverlap | Optional pointer to a SDL_FRect filled with the intersection area if overlap occurs. |
|
overridevirtual |
|
overrideprotectedvirtual |
Update object layer logic.
| pEngine | Pointer to the Scene instance. |
| rContext | Layer context structure containing update state. |
Implements CRM64Pro::SceneLayer.
|
overrideprotectedvirtual |
Render object layer content.
| pEngine | Pointer to the Scene instance. |
| rContext | Layer context structure containing render state. |
Implements CRM64Pro::SceneLayer.
| Sint32 CRM64Pro::SceneLayerObject::addObject | ( | SceneObject * | pObj | ) |
Add an object to this layer.
The object is queued for addition at the next synchronization point (usually end of update loop) to ensure thread-safety and prevent iterator invalidation. The layer takes ownership of the object and will release its memory upon destruction or closeObject(). This method may be called from a worker thread. After a successful call, the caller must not access pObj again. Runtime objects receive their one-time initialize() callback on the Scene main thread during the next update or render synchronization point. Runtime-created objects are assigned a unique ID starting from 16384 to avoid collisions with Tiled IDs.
| pObj | Object to add (must not be nullptr). |
| bool CRM64Pro::SceneLayerObject::closeObject | ( | Sint32 | id | ) |
Destroy an object by its ID.
The object is marked for removal and its memory will be safely released at the end of the frame. This method is thread-safe and safe to call during logic updates or from worker threads.
| id | Object ID to destroy. |
| bool CRM64Pro::SceneLayerObject::setSpatialGridCellSize | ( | Sint32 | iSize | ) |
Set the spatial grid cell size.
Warning: This will clear the grid structure! Only use during initialization/loading.
| iSize | New cell size in pixels. |
| bool CRM64Pro::SceneLayerObject::setSize | ( | float | fWidth, |
| float | fHeight ) |
Set the logical size of the layer (in pixels).
| fWidth | Total width in pixels. |
| fHeight | Total height in pixels. |
| void CRM64Pro::SceneLayerObject::setRenderOrderMode | ( | eSceneObjectRenderOrder | eMode | ) |
Set object rendering order policy.
| eMode | Draw order mode. See ::eSceneObjectRenderOrder. |
| eSceneObjectRenderOrder CRM64Pro::SceneLayerObject::getRenderOrderMode | ( | ) | const |
Get object rendering order policy.
| void CRM64Pro::SceneLayerObject::queryRegion | ( | float | fX, |
| float | fY, | ||
| float | fW, | ||
| float | fH, | ||
| vector< SceneObject * > & | vResults ) |
Query objects whose AABB overlaps a region.
Efficient spatial query using internal grid.
| fX | Region X position in world pixels. |
| fY | Region Y position in world pixels. |
| fW | Region width in pixels. |
| fH | Region height in pixels. |
| vResults | Output vector filled with unique objects overlapping region. |
| SceneObject * CRM64Pro::SceneLayerObject::getObjectByID | ( | Sint32 | idObject | ) |
Get object by Tiled ID.
| idObject | Object ID to find. |
| Sint32 CRM64Pro::SceneLayerObject::getObjectCount | ( | ) |
Get number of objects in this layer.
| void CRM64Pro::SceneLayerObject::getObjects | ( | vector< SceneObject * > & | vResults | ) |
Get all objects in this layer.
Pending-destruction objects are ignored.
| vResults | Output vector receiving borrowed object pointers (cleared by this method). |
| SceneObject * CRM64Pro::SceneLayerObject::findFirstByType | ( | const string & | sType | ) |
Find first object matching an exact type string.
Exact case-sensitive match against the stored type string. Pending-destruction objects are ignored.
| sType | Exact type string to match. |
| SceneObject * CRM64Pro::SceneLayerObject::findFirstByName | ( | const string & | sName | ) |
Find first object matching an exact name string.
Exact case-sensitive match against the stored object name. Pending-destruction objects are ignored.
| sName | Exact object name to match. |
| void CRM64Pro::SceneLayerObject::findAllByType | ( | const string & | sType, |
| vector< SceneObject * > & | vResults ) |
Find all objects matching an exact type string.
Exact case-sensitive match against the stored type string. Pending-destruction objects are ignored.
| sType | Exact type string to match. |
| vResults | Output vector receiving matches (cleared by this method). |
| void CRM64Pro::SceneLayerObject::findAllByName | ( | const string & | sName, |
| vector< SceneObject * > & | vResults ) |
Find all objects matching an exact name string.
Exact case-sensitive match against the stored object name. Pending-destruction objects are ignored.
| sName | Exact object name to match. |
| vResults | Output vector receiving matches (cleared by this method). |
| void CRM64Pro::SceneLayerObject::setOnTriggerEvent | ( | SceneObject::TriggerEventCallback | fnCallback | ) |
Set a layer-wide trigger event callback.
Layer-level callback for all trigger events generated in this SceneLayerObject. Called after object callback and before Scene global callback (dispatch order: object -> layer -> global).
| fnCallback | Callback function, or an empty callback to clear. |
|
overridevirtual |
Get layer total width in pixels.
Reimplemented from CRM64Pro::SceneLayer.
|
overridevirtual |
Get layer total height in pixels.
Reimplemented from CRM64Pro::SceneLayer.
| void CRM64Pro::Scene::setObjectFactory | ( | ISceneObjectFactory * | pFactory | ) |
Set the object factory for creating game objects from Tiled types.
The factory is called during TMX import when objects with a "type" attribute are encountered. If no factory is set, or if the factory returns nullptr, a generic SceneObject is created.
| pFactory | Borrowed user-provided factory implementing ISceneObjectFactory, or nullptr to clear it. CRM64Pro does not take ownership. The pointer must remain valid until this Scene is closed or the factory is replaced or cleared. |
| ISceneObjectFactory * CRM64Pro::Scene::getObjectFactory | ( | ) | const |
Get the current object factory.
| bool CRM64Pro::Scene::isObjectLayer | ( | Sint32 | iLayer | ) | const |
Check if a layer is an object layer.
| iLayer | Layer index (1-based). |