载入中...
搜索中...
未找到
ECS.h 文件参考
#include <algorithm>
#include <functional>
#include <vector>
#include "ECS.hpp"

浏览源代码.

命名空间

namespace  ssq
 EVEngine ECS 集成层:底层实现使用 sunxfancy/ECS.hpp https://github.com/sunxfancy/ECS.hpp
 
namespace  eve
 

类型定义

using eve::CppEntityViewFn = std::function< void(ssq::Array &out)>
 C++ 实体 → 脚本 eve.view() 桥接。 用 registerCppEntityView(typeid(T*).hash_code(), fn) 登记 T 的收集函数; 脚本 eve.view(cls) 沿类链找到登记的 C++ 类型后调用 fn 填充输出数组。
 
using eve::PostEcsHook = std::function< void(ssq::Table &table)>
 在脚本 ECS 基类(eve.Component / eve.Entity / eve.System)注入之后执行的回调。 模块用它注入"extends eve.Entity"的脚本基类(例如 eve.SceneEntity)。 在 exposeECS / exposeECSToVM 末尾运行,早于任何游戏脚本。
 

函数

void eve::exposeECS (ssq::Table &table)
 脚本侧 ECS:Entity / Component / System / ShaderSystem / view(见 ECS.cpp)。 C++ 游戏实体仍直接用 ECS.hpp 的 ENTITY / COMPONENT / View。 GPU System:eve.ShaderSystem + gpgpu::ShaderSystem / EcsGpu.h。
 
void eve::exposeECSToVM (ssq::VM &vm)
 ModuleManager::expose 之后调用;保证 eve.Component 等不被其它模块覆盖。
 
void eve::registerCppEntityView (size_t typeHash, CppEntityViewFn fn)
 
void eve::registerPostEcsHook (PostEcsHook fn)