载入中...
搜索中...
未找到
ECS.h 文件参考
#include "common/Export.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
 Build metadata (engine git commit, build time, third-party version).
 

类型定义

using eve::CppEntityViewFn = std::function< void(ssq::Array &out)>
 C++ 实体 → 脚本 eve.view() 桥接。 用 registerCppEntityView(cls, fn) 登记脚本类的收集函数; 脚本 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::prepareEcsScriptInjection ()
 Resets per-VM script injection bookkeeping before a new VM is exposed.
 
void eve::exposeECSToVM (ssq::VM &vm)
 在 ModuleManager::expose 之后调用;保证 eve.Component 等不被其它模块覆盖。
 
void eve::registerCppEntityView (const ssq::Class &cls, CppEntityViewFn fn)
 Registers cpp entity view.
 
void eve::registerPostEcsHook (PostEcsHook fn)
 Registers post ecs hook.
 
void eve::flushPostEcsHooks (ssq::Table &table)
 Run post-ECS hooks that were registered after exposeECS already ran.