das+ecs 中的Bfg

节点可以存储在 ecs singleton 中,在这种情况下,有特殊函数注释 bfg_ecs_node 用于热重载。

函数应将 NodeHandleNodeHandleVector 作为第一个参数并对其进行设置。

函数的其他参数可以是单例实体的任何其他组件,并将原样传递给 es 宏。

bfg_ecs_node 注解本身的可能参数:

  • on_appear - 在实体出现时调用函数。

  • on_event=EventName - 在事件发生时调用函数。

  • track=component_name - 更改组件时调用函数。

示例

require daBfg.bfg_ecs

[bfg_ecs_node(on_appear)]
def register_some_node(var some_node : NodeHandle&)
  some_node <- root() |> registerNode("some_node") <| @(var registry : Registry)

    // Node requests, for example:
    registry |> requestRenderPass |> color([[auto[] "some_tex"]])

    return <- @ <|

      // Render code, for example:
      query() <| $ [es] (some_shader : PostFxRenderer)
        some_shader |> render()

函数注释

bfg_ecs_node

|function_annotation-bfg_ecs-bfg_ecs_node|

Classes

BfgEcsNodeAnnotation : AstFunctionAnnotation

|class-bfg_ecs-BfgEcsNodeAnnotation|

BfgEcsNodeAnnotation.apply(self: AstFunctionAnnotation; func: FunctionPtr; group: ModuleGroup; args: AnnotationArgumentList const; errors: das_string)

apply returns bool

argument

argument type

self

ast::AstFunctionAnnotation

func

FunctionPtr

group

rtti::ModuleGroup

args

rtti::AnnotationArgumentList const

errors

builtin::das_string

|method-bfg_ecs-BfgEcsNodeAnnotation.apply|

BfgEcsNodeAnnotation.declareReloadCallback(self: BfgEcsNodeAnnotation; func: FunctionPtr; parsed: BfgEcsNodeAnnotationArgs const; args: AnnotationArgumentList const)

argument

argument type

self

bfg_ecs::BfgEcsNodeAnnotation

func

FunctionPtr

parsed

bfg_ecs::BfgEcsNodeAnnotationArgs const

args

rtti::AnnotationArgumentList const

|method-bfg_ecs-BfgEcsNodeAnnotation.declareReloadCallback|

BfgEcsNodeAnnotation.declareES(self: BfgEcsNodeAnnotation; func: FunctionPtr; parsed: BfgEcsNodeAnnotationArgs const; args: AnnotationArgumentList const)

argument

argument type

self

bfg_ecs::BfgEcsNodeAnnotation

func

FunctionPtr

parsed

bfg_ecs::BfgEcsNodeAnnotationArgs const

args

rtti::AnnotationArgumentList const

|method-bfg_ecs-BfgEcsNodeAnnotation.declareES|

BfgEcsNodeAnnotation.parseArgs(self: BfgEcsNodeAnnotation; func: FunctionPtr; args: AnnotationArgumentList const; errors: das_string)

parseArgs returns bfg_ecs::BfgEcsNodeAnnotationArgs

argument

argument type

self

bfg_ecs::BfgEcsNodeAnnotation

func

FunctionPtr

args

rtti::AnnotationArgumentList const

errors

builtin::das_string

|method-bfg_ecs-BfgEcsNodeAnnotation.parseArgs|