载入中...
搜索中...
未找到
Scene.cpp
浏览该文件的文档.
280 return getNodeRefByPathAt(currentHostName(), path)
}
eve.Scene["attachEntity"] <- function(nodeId, cls) {
281 return attachEntityAt(currentHostName(), nodeId, cls)
}
eve.Scene["attachEntityAt"] <- function(hostName, nodeId, cls) {
299 return detachEntityAt(currentHostName(), nodeId, inst)
}
eve.Scene["detachEntityAt"] <- function(hostName, nodeId, inst) {
308 return unrootEntityAt(hostName, nodeId, idx)
}
eve.Scene["getEntity"] <- function(nodeId, cls) {
309 return getEntityAt(currentHostName(), nodeId, cls)
}
eve.Scene["getEntityAt"] <- function(hostName, nodeId, cls) {
326 return entitiesOfAt(currentHostName(), nodeId)
}
eve.Scene["entitiesOfAt"] <- function(hostName, nodeId) {
339 return linkPhysics2DAt(currentHostName(), nodeId, body, mode)
}
eve.Scene["linkPhysics3D"] <- function(nodeId, body, mode = "node") {
340 return linkPhysics3DAt(currentHostName(), nodeId, body, mode)
}
eve.Scene["linkCamera3D"] <- function(nodeId, cam) {
341 return linkCamera3DAt(currentHostName(), nodeId, cam)
}
eve.Scene["linkAudio3D"] <- function(nodeId, source) {
342 return linkAudio3DAt(currentHostName(), nodeId, source)
}
eve.Scene["unlinkNodeKind"] <- function(nodeId, kind) {
343 return unlinkNodeKindAt(currentHostName(), nodeId, kind)
}
eve.Scene["linkCount"] <- function(nodeId) {
402 return getNodePositionAt(currentHostName(), nodeId)
}
eve.Scene["getNodeRotation"] <- function(nodeId) {
404 return getNodeRotationAt(currentHostName(), nodeId)
}
eve.Scene["getNodeScale"] <- function(nodeId) {
406 return getNodeScaleAt(currentHostName(), nodeId)
}
eve.Scene["getNodeVisible"] <- function(nodeId) {
408 return getNodeVisibleAt(currentHostName(), nodeId)
}
eve.Scene["getNodeWorldPosition"] <- function(nodeId) {
410 return getNodeWorldPositionAt(currentHostName(), nodeId)
}
eve.Scene["getNodeWorldRotation"] <- function(nodeId) {
412 return getNodeWorldRotationAt(currentHostName(), nodeId)
}
eve.Scene["getNodeWorldScale"] <- function(nodeId) {
414 return getNodeWorldScaleAt(currentHostName(), nodeId)
}
eve.Scene["localToWorld"] <- function(nodeId, x, y, z) {
416 return localToWorldAt(currentHostName(), nodeId, x, y, z)
}
eve.Scene["worldToLocal"] <- function(nodeId, x, y, z) {
418 return worldToLocalAt(currentHostName(), nodeId, x, y, z)
}
eve.Scene["setNodeParent"] <- function(nodeId, parentId) { return setNodeParentAt(currentHostName(), nodeId, parentId) }
420eve.Scene["addNodeChild"] <- function(parentId, childId) { return addChildAt(currentHostName(), parentId, childId) }
421eve.Scene["removeNodeChild"] <- function(parentId, childId) { return removeChildAt(currentHostName(), parentId, childId) }
422eve.Scene["setNodeQuaternion"] <- function(nodeId, qx, qy, qz, qw) { return setNodeQuaternionAt(currentHostName(), nodeId, qx, qy, qz, qw) }
425 return getNodeQuaternionAt(currentHostName(), nodeId)
}
eve.Scene["setNodeLookAt"] <- function(nodeId, tx, ty, tz) { return setNodeLookAtAt(currentHostName(), nodeId, tx, ty, tz) }
426eve.Scene["addNodeTag"] <- function(nodeId, tag) { return addNodeTagAt(currentHostName(), nodeId, tag) }
427eve.Scene["removeNodeTag"] <- function(nodeId, tag) { return removeNodeTagAt(currentHostName(), nodeId, tag) }
428eve.Scene["hasNodeTag"] <- function(nodeId, tag) { return hasNodeTagAt(currentHostName(), nodeId, tag) }
431 return getNodeTagsAt(currentHostName(), nodeId)
}
eve.Scene["collectIdsByTag"] <- function(tag) { return collectIdsByTagAt(currentHostName(), tag) }
432eve.Scene["setNodeLayer"] <- function(nodeId, layer) { return setNodeLayerAt(currentHostName(), nodeId, layer) }
435 return getNodeLayerAt(currentHostName(), nodeId)
}
eve.Scene["setNodeEventHandler"] <- function(cb) {
452eve.SceneNodeRef["setParent"] <- function(parentId) { return getScene().setNodeParentAt(getHostName(), getNodeId(), parentId) }
453eve.SceneNodeRef["removeNode"] <- function() { return getScene().removeNodeAt(getHostName(), getNodeId()) }
454eve.SceneNodeRef["setQuaternion"] <- function(qx, qy, qz, qw) { return getScene().setNodeQuaternionAt(getHostName(), getNodeId(), qx, qy, qz, qw) }
459eve.SceneNodeRef["lookAt"] <- function(tx, ty, tz) { return getScene().setNodeLookAtAt(getHostName(), getNodeId(), tx, ty, tz) }
460eve.SceneNodeRef["addTag"] <- function(tag) { return getScene().addNodeTagAt(getHostName(), getNodeId(), tag) }
461eve.SceneNodeRef["removeTag"] <- function(tag) { return getScene().removeNodeTagAt(getHostName(), getNodeId(), tag) }
462eve.SceneNodeRef["hasTag"] <- function(tag) { return getScene().hasNodeTagAt(getHostName(), getNodeId(), tag) }
467eve.SceneNodeRef["setLayer"] <- function(layer) { return getScene().setNodeLayerAt(getHostName(), getNodeId(), layer) }
476 return setNodeBoundsAt(currentHostName(), nodeId, minX, minY, minZ, maxX, maxY, maxZ)
}
eve.Scene["hasNodeBounds"] <- function(nodeId) {
477 return hasNodeBoundsAt(currentHostName(), nodeId)
}
eve.Scene["getNodeBounds"] <- function(nodeId) {
481 return deserializeHostAt(currentHostName(), json)
}
eve.Scene["pickRay"] <- function(ox, oy, oz, dx, dy, dz) {
482 return pickRayAt(currentHostName(), ox, oy, oz, dx, dy, dz)
}
eve.Scene["pickScreen"] <- function(cam, screenX, screenY, viewW, viewH) {
483 return pickScreenAt(currentHostName(), cam, screenX, screenY, viewW, viewH)
}
eve.Scene["collectFrustumIds"] <- function(cam, viewW, viewH) {
484 return collectFrustumIdsAt(currentHostName(), cam, viewW, viewH)
}
eve.Scene["syncSpatialIndex"] <- function(octree) {
485 return syncSpatialIndexAt(currentHostName(), octree)
}
eve.Scene["nodeIdFromSpatialId"] <- function(index) {
490 return getScene().setNodeBoundsAt(getHostName(), getNodeId(), minX, minY, minZ, maxX, maxY, maxZ)
624 (void)hostName;
636 openStack_.clear();
768 HSQOBJECT raw = instance.getRaw();
854}
virtual std::string getName() const =0
ECS mount point for one scene graph (full scene or nested subtree root). Isomorphic to eve::ui::UIHos...
Definition SceneHost.h:80
static SceneHost * createHost(const std::string &name="")
Definition SceneHost.cpp:122
Script handle to a scene node (hostName + nodeId). Deliberately holds strings rather than arena point...
Definition SceneNodeRef.h:16
float getWorldPositionZ() const
Definition SceneNodeRef.cpp:159
std::vector< float > getForward() const
Normalized local axes in world space (forward = +Z).
Definition SceneNodeRef.cpp:180
float getWorldPositionX() const
Definition SceneNodeRef.cpp:149
float getWorldPositionY() const
Definition SceneNodeRef.cpp:154
float getRotationPitch() const
Definition SceneNodeRef.cpp:87
Scene * getScene() const
The eve.Scene module instance (for entity binding forwarding).
Definition SceneNodeRef.cpp:37
std::string getChildIdAt(int ordinal) const
Definition SceneNodeRef.cpp:213
std::vector< float > getPosition() const
Definition SceneNodeRef.cpp:65
std::vector< float > getWorldPosition() const
Definition SceneNodeRef.cpp:164
std::vector< float > getRotation() const
Definition SceneNodeRef.cpp:97
bool setPosition(float x, float y, float z)
Definition SceneNodeRef.cpp:39
bool setScale(float sx, float sy, float sz)
Definition SceneNodeRef.cpp:103
float getRotationRoll() const
Definition SceneNodeRef.cpp:92
std::vector< float > getScale() const
Definition SceneNodeRef.cpp:129
bool setRotation(float yaw, float pitch, float roll)
Definition SceneNodeRef.cpp:71
std::vector< float > getRight() const
Definition SceneNodeRef.cpp:187
std::vector< float > getWorldMatrix() const
Column-major 4x4 world matrix, 16 floats.
Definition SceneNodeRef.cpp:170
Per-node ECS identity (created lazily when a node needs script bindings or engine components)....
Definition SceneObject.h:21
static SceneObject * createObject(const std::string &hostName, const std::string &nodeId)
Definition SceneObject.cpp:5
void beginNode(const std::string &id, const std::string &name="")
Definition Scene.cpp:721
SceneNodeRef * getNodeRefByPathAt(const std::string &hostName, const std::string &path) const
Definition Scene.cpp:929
bool linkPhysics3DAt(const std::string &hostName, const std::string &nodeId, physics::Body3D *b, const std::string &mode)
Definition SceneNodes.cpp:114
SceneHost * resolveHost(const std::string &hostName) const
Host-qualified resolution: empty hostName → currently selected host.
Definition Scene.cpp:807
void setBuildSpace(const std::string &space)
Definition Scene.cpp:768
std::vector< std::string > collectIdsFrom(const std::string &id)
Definition SceneNodes.cpp:573
void updateTransforms()
Propagate transforms (+ link sync) for all hosts (or current if selected).
Definition Scene.cpp:660
bool setNodeParentAt(const std::string &hostName, const std::string &childId, const std::string &parentId)
Reparent by id; empty parentId detaches. Cycle-safe.
Definition SceneNodes.cpp:245
bool linkCamera3DAt(const std::string &hostName, const std::string &nodeId, graphics::Camera3D *c)
Definition SceneNodes.cpp:123
std::string serializeHostAt(const std::string &hostName) const
Definition Scene.cpp:696
std::vector< std::string > collectIdsByTagAt(const std::string &hostName, const std::string &tag) const
Definition SceneNodes.cpp:356
std::vector< float > getNodeRotationAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:174
std::string findIdByPath(const std::string &path)
Definition SceneNodes.cpp:546
bool rootEntity(const std::string &hostName, const std::string &nodeId, ssq::Object instance)
Root one script instance on a node (creates SceneObject lazily).
Definition Scene.cpp:834
std::string pickScreenAt(const std::string &hostName, graphics::Camera3D *cam, float screenX, float screenY, float viewW, float viewH) const
Screen-space picking through a Camera3D (camera.screenToRay).
Definition ScenePicking.cpp:24
bool setNodeQuaternionAt(const std::string &hostName, const std::string &nodeId, float qx, float qy, float qz, float qw)
Definition SceneNodes.cpp:280
bool getNodeVisibleAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:190
std::vector< float > worldToLocalAt(const std::string &hostName, const std::string &nodeId, float x, float y, float z) const
Definition SceneNodes.cpp:235
SceneHost * remountAs(const std::string &name, NodeDesc root)
Creates/replaces a named host (does not select it).
Definition Scene.cpp:632
void setBuildRotation(float yaw, float pitch=0.f, float roll=0.f)
Definition Scene.cpp:754
void updateScripts(float dt)
updateTransformsAll() + call update(dt) on every rooted instance.
Definition Scene.cpp:898
std::vector< float > getNodePositionAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:166
SceneHost * findHost(const std::string &name) const
Finds a host by name, or nullptr.
Definition Scene.cpp:643
std::vector< float > getNodeWorldPositionAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:197
int getNodeLayerAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:376
bool linkPhysics2DAt(const std::string &hostName, const std::string &nodeId, physics::Body *b, const std::string &mode)
Definition SceneNodes.cpp:105
bool removeNodeAt(const std::string &hostName, const std::string &nodeId)
Detach node from its parent (arena node stays; rebuild to delete).
Definition SceneNodes.cpp:254
SceneHost * mountAs(const std::string &name, NodeDesc root)
Creates/replaces a named host from a NodeDesc tree and selects it.
Definition Scene.cpp:604
SceneNodeRef * getNodeRefAt(const std::string &hostName, const std::string &nodeId) const
Definition Scene.cpp:921
std::vector< std::string > collectChildIds(const std::string &parentId)
Definition SceneNodes.cpp:589
void setHostVisible(bool visible)
Shows/hides every host (or the selected one when a host is selected).
Definition Scene.cpp:652
bool unlinkNodeAt(const std::string &hostName, const std::string &nodeId)
Remove every link on the node.
Definition SceneNodes.cpp:141
bool setNodePosition(const std::string &id, float x, float y, float z)
Script-friendly TRS setters on the current host; each marks the transform dirty.
Definition SceneNodes.cpp:25
std::vector< std::string > collectIdsVisible(bool visible)
Definition SceneNodes.cpp:584
bool linkAudio3DAt(const std::string &hostName, const std::string &nodeId, audio::Source *s)
Definition SceneNodes.cpp:132
bool setNodeLookAtAt(const std::string &hostName, const std::string &nodeId, float tx, float ty, float tz)
Orient node so its local +Z axis points at (tx,ty,tz).
Definition SceneNodes.cpp:303
std::vector< float > getNodeWorldRotationAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:205
void bindOwner(uint32_t ownerId)
Binds the selected host to a UI/scene owner id.
Definition Scene.cpp:647
std::string getNodePath(const std::string &id)
Definition SceneNodes.cpp:553
std::string findIdByName(const std::string &name)
Definition SceneNodes.cpp:539
int getChildCount(const std::string &id)
Definition SceneNodes.cpp:527
bool removeNodeTagAt(const std::string &hostName, const std::string &nodeId, const std::string &tag)
Definition SceneNodes.cpp:334
bool linkRenderable3DAt(const std::string &hostName, const std::string &nodeId, graphics::Renderable3D *r)
Definition SceneNodes.cpp:96
void setBuildPosition(float x, float y, float z=0.f)
Definition Scene.cpp:747
bool isAncestor(const std::string &ancestorId, const std::string &nodeId)
Definition SceneNodes.cpp:558
SceneHost * remountReconcile(NodeDesc root)
Remount with key reconcile (props-only when structure matches).
Definition Scene.cpp:624
bool setNodeScale(const std::string &id, float sx, float sy, float sz)
Sets the local scale of a node.
Definition SceneNodes.cpp:49
std::string getParentId(const std::string &id)
Definition SceneNodes.cpp:520
std::vector< std::string > collectIdsByName(const std::string &name)
Definition SceneNodes.cpp:579
void setHostLayer(int layer)
Sets the render layer of every host (or the selected one).
Definition Scene.cpp:656
bool unlinkNodeKindAt(const std::string &hostName, const std::string &nodeId, const std::string &kind)
Remove links of one kind ("renderable2d"|"renderable3d"|"physics2d"|...).
Definition SceneNodes.cpp:146
SceneHost * mount(NodeDesc root)
Mounts the tree as an auto-named host and selects it.
Definition Scene.cpp:614
std::vector< float > getNodeScaleAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:182
std::string nodeIdFromSpatialIdAt(const std::string &hostName, int index) const
Map a spatial-index id (arena index) back to a node id.
Definition SceneNodes.cpp:497
std::vector< std::string > getNodeTagsAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:348
void updateTransformsAll()
Propagate transforms for every host regardless of selection.
Definition Scene.cpp:665
int linkCountAt(const std::string &hostName, const std::string &nodeId)
Definition SceneNodes.cpp:157
bool hasNodeBoundsAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:446
bool deserializeHostAt(const std::string &hostName, const std::string &json)
Definition Scene.cpp:701
std::vector< std::string > walkBreadthFirstIds()
Definition SceneNodes.cpp:596
bool unrootEntityAt(const std::string &hostName, const std::string &nodeId, int index)
Remove a rooted script instance by its index in the binding list.
Definition Scene.cpp:854
bool remountBuildAs(const std::string &name)
Definition Scene.cpp:790
bool linkRenderable3D(const std::string &nodeId, graphics::Renderable3D *r)
Links a 3D renderable to a node in the current host.
Definition SceneNodes.cpp:75
bool setNodeLayerAt(const std::string &hostName, const std::string &nodeId, int layer)
Definition SceneNodes.cpp:367
bool setNodeRotation(const std::string &id, float yaw, float pitch, float roll)
Sets the local rotation (yaw/pitch/roll in degrees) of a node.
Definition SceneNodes.cpp:37
bool unlinkNode(const std::string &nodeId)
Removes every link on a node in the current host.
Definition SceneNodes.cpp:79
bool syncSpatialIndexAt(const std::string &hostName, spatial::Octree *ot) const
Insert every bounded node's world AABB into an octree (id = arena index).
Definition SceneNodes.cpp:484
std::vector< float > getNodeQuaternionAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:294
void addNode(const std::string &id, const std::string &name="")
Definition Scene.cpp:743
bool removeChildAt(const std::string &hostName, const std::string &parentId, const std::string &childId)
Definition SceneNodes.cpp:271
bool setNodeBoundsAt(const std::string &hostName, const std::string &nodeId, float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
Definition SceneNodes.cpp:430
bool setNodeVisible(const std::string &id, bool visible)
Shows/hides a node.
Definition SceneNodes.cpp:61
bool addChildAt(const std::string &hostName, const std::string &parentId, const std::string &childId)
Definition SceneNodes.cpp:262
std::string getChildIdAt(const std::string &parentId, int childOrdinal)
Definition SceneNodes.cpp:532
bool linkRenderable2DAt(const std::string &hostName, const std::string &nodeId, graphics::Renderable2D *r)
Definition SceneNodes.cpp:87
std::vector< float > localToWorldAt(const std::string &hostName, const std::string &nodeId, float x, float y, float z) const
Definition SceneNodes.cpp:225
std::vector< float > getNodeWorldScaleAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:215
bool select(const std::string &name)
Selects a named host; false when it does not exist.
Definition Scene.cpp:636
bool isDescendant(const std::string &nodeId, const std::string &ancestorId)
Definition SceneNodes.cpp:563
bool hasNodeTagAt(const std::string &hostName, const std::string &nodeId, const std::string &tag) const
Definition SceneNodes.cpp:341
std::vector< std::string > walkDepthFirstIds()
DFS order of ids under root (same as collectIds). Kept for script naming clarity.
Definition SceneNodes.cpp:594
std::vector< std::string > collectFrustumIdsAt(const std::string &hostName, graphics::Camera3D *cam, float viewW, float viewH) const
Ids of nodes whose world AABB intersects the camera frustum.
Definition ScenePicking.cpp:34
void setBuildScale(float sx, float sy, float sz=1.f)
Definition Scene.cpp:761
std::vector< float > getNodeBoundsAt(const std::string &hostName, const std::string &nodeId) const
Definition SceneNodes.cpp:452
std::string pickRayAt(const std::string &hostName, float ox, float oy, float oz, float dx, float dy, float dz) const
Nearest node id hit by a world ray (nodes with bounds), or "".
Definition SceneNodes.cpp:461
bool addNodeTagAt(const std::string &hostName, const std::string &nodeId, const std::string &tag)
Definition SceneNodes.cpp:327
SceneHost * findHostByOwner(uint32_t ownerId) const
Finds the host bound to an owner id, or nullptr.
Definition Scene.cpp:645
bool linkRenderable2D(const std::string &nodeId, graphics::Renderable2D *r)
Links a 2D renderable to a node in the current host.
Definition SceneNodes.cpp:71
int forEachEntity(const std::string &hostName, const std::string &nodeId, ssq::Object cb)
Call cb(instance, index) for every rooted instance; returns count.
Definition Scene.cpp:875
static void updateHost(SceneHost *host)
Definition TransformSystem.cpp:115
Definition ScenePicking.cpp:22
void registerSceneCapabilities()
Definition SceneCapabilities.cpp:147
NodeDesc node(std::string id, std::vector< NodeDesc > children, std::string name)
Definition NodeDesc.cpp:214
Declarative scene-node description (build once / on dirty → flatten into SceneHost::Tree)....
Definition NodeDesc.h:15
Retained scene node (arena). Conceptual GameObject; isomorphic to eve::ui::UINode.
Definition SceneHost.h:39