ec

package
v0.4.27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 12, 2026 License: LGPL-2.1 Imports: 17 Imported by: 17

Documentation

Overview

Package ec 定义实体—组件模型及其生命周期状态。

Package ec 提供框架核心的数据模型:Entity、Component、实体树节点状态、组件启停 事件、作用域与原型描述接口。

常见用法是:

  • 为实体嵌入 EntityBehavior;
  • 为组件嵌入 ComponentBehavior;
  • 通过生命周期接口在 core.Runtime 驱动下接收 Awake/Start/Update/Shut/Dispose;
  • 通过 Entity 的组件管理与树节点接口组合复杂对象结构。

ec 包负责实体与组件本身的状态机与事件表,不负责原型库的声明与注册。原型系统 位于 ec/pt 包,运行时调度与生命周期推进则由根包 core 和 runtime 包完成。

除 ConcurrentEntity 与 ConcurrentComponent 明确暴露的能力外,实体、组件及实体树 操作都应在所属 Runtime 的运行 goroutine 中执行。两个并发视图均提供 Lifetime AsyncScope;Entity 销毁或 Component 移除时会关闭对应 Scope,取消其中的协作式 后台任务并禁止新任务。

Index

Constants

This section is empty.

Variables

View Source
var (
	EventComponentEnableChangedId = event.DeclareEventIdT[componentEventTab](0)
	EventComponentDestroyId       = event.DeclareEventIdT[componentEventTab](1)
)
View Source
var (
	EventComponentManagerAddComponentsId          = event.DeclareEventIdT[entityComponentManagerEventTab](0)
	EventComponentManagerRemoveComponentId        = event.DeclareEventIdT[entityComponentManagerEventTab](1)
	EventComponentManagerComponentEnableChangedId = event.DeclareEventIdT[entityComponentManagerEventTab](2)
	EventComponentManagerFirstTouchComponentId    = event.DeclareEventIdT[entityComponentManagerEventTab](3)
)
View Source
var (
	EventTreeNodeAddChildId     = event.DeclareEventIdT[entityTreeNodeEventTab](0)
	EventTreeNodeRemoveChildId  = event.DeclareEventIdT[entityTreeNodeEventTab](1)
	EventTreeNodeAttachParentId = event.DeclareEventIdT[entityTreeNodeEventTab](2)
	EventTreeNodeDetachParentId = event.DeclareEventIdT[entityTreeNodeEventTab](3)
	EventTreeNodeMoveToId       = event.DeclareEventIdT[entityTreeNodeEventTab](4)
)
View Source
var (
	ErrEC = fmt.Errorf("%w: ec", exception.ErrCore) // ErrEC 是实体—组件模块错误的共同根错误。
)
View Source
var (
	EventEntityDestroyId = event.DeclareEventIdT[entityEventTab](0)
)
View Source
var With _EntityOption

With 提供实体选项构造器。

Functions

func BindEventComponentDestroy added in v0.4.25

func BindEventComponentDestroy(auto iAutoEventComponentDestroy, subscriber EventComponentDestroy, priority ...int32) event.Handle

func BindEventComponentEnableChanged added in v0.3.80

func BindEventComponentEnableChanged(auto iAutoEventComponentEnableChanged, subscriber EventComponentEnableChanged, priority ...int32) event.Handle

func BindEventComponentManagerAddComponents added in v0.3.66

func BindEventComponentManagerAddComponents(auto iAutoEventComponentManagerAddComponents, subscriber EventComponentManagerAddComponents, priority ...int32) event.Handle

func BindEventComponentManagerComponentEnableChanged added in v0.4.25

func BindEventComponentManagerComponentEnableChanged(auto iAutoEventComponentManagerComponentEnableChanged, subscriber EventComponentManagerComponentEnableChanged, priority ...int32) event.Handle

func BindEventComponentManagerFirstTouchComponent added in v0.3.66

func BindEventComponentManagerFirstTouchComponent(auto iAutoEventComponentManagerFirstTouchComponent, subscriber EventComponentManagerFirstTouchComponent, priority ...int32) event.Handle

func BindEventComponentManagerRemoveComponent added in v0.3.66

func BindEventComponentManagerRemoveComponent(auto iAutoEventComponentManagerRemoveComponent, subscriber EventComponentManagerRemoveComponent, priority ...int32) event.Handle

func BindEventEntityDestroy added in v0.4.25

func BindEventEntityDestroy(auto iAutoEventEntityDestroy, subscriber EventEntityDestroy, priority ...int32) event.Handle

func BindEventTreeNodeAddChild added in v0.2.58

func BindEventTreeNodeAddChild(auto iAutoEventTreeNodeAddChild, subscriber EventTreeNodeAddChild, priority ...int32) event.Handle

func BindEventTreeNodeAttachParent added in v0.4.25

func BindEventTreeNodeAttachParent(auto iAutoEventTreeNodeAttachParent, subscriber EventTreeNodeAttachParent, priority ...int32) event.Handle

func BindEventTreeNodeDetachParent added in v0.4.25

func BindEventTreeNodeDetachParent(auto iAutoEventTreeNodeDetachParent, subscriber EventTreeNodeDetachParent, priority ...int32) event.Handle

func BindEventTreeNodeMoveTo added in v0.4.25

func BindEventTreeNodeMoveTo(auto iAutoEventTreeNodeMoveTo, subscriber EventTreeNodeMoveTo, priority ...int32) event.Handle

func BindEventTreeNodeRemoveChild added in v0.2.58

func BindEventTreeNodeRemoveChild(auto iAutoEventTreeNodeRemoveChild, subscriber EventTreeNodeRemoveChild, priority ...int32) event.Handle

func UnsafeComponent deprecated

func UnsafeComponent(comp Component) _UnsafeComponent

UnsafeComponent 暴露组件状态机与运行时句柄等框架内部能力。

Deprecated: 仅供框架内部使用。

func UnsafeConcurrentComponent deprecated added in v0.4.27

func UnsafeConcurrentComponent(component ConcurrentComponent) _UnsafeConcurrentComponent

UnsafeConcurrentComponent 暴露 ConcurrentComponent 的框架内部能力。

Deprecated: 仅供框架内部使用。

func UnsafeConcurrentEntity deprecated added in v0.3.21

func UnsafeConcurrentEntity(entity ConcurrentEntity) _UnsafeConcurrentEntity

UnsafeConcurrentEntity 暴露 ConcurrentEntity 的框架内部能力。

Deprecated: 仅供框架内部使用。

func UnsafeEntity deprecated

func UnsafeEntity(entity Entity) _UnsafeEntity

UnsafeEntity 暴露实体状态机、组件表与运行时句柄等框架内部能力。

Deprecated: 仅供框架内部使用。

Types

type BuiltinComponent added in v0.3.60

type BuiltinComponent struct {
	PT        ComponentPT // PT 是组件原型。
	Offset    int         // Offset 是组件在实体原型中的位置。
	Name      string      // Name 是组件加入实体时使用的名称。
	Removable bool        // Removable 指示组件是否允许动态删除。
	Meta      meta.Meta   // Meta 是该内建组件的原型元数据。
}

BuiltinComponent 描述实体原型中的一个内建组件。

func (BuiltinComponent) MarshalJSON added in v0.4.25

func (bc BuiltinComponent) MarshalJSON() ([]byte, error)

MarshalJSON 将内建组件描述编码为 JSON。

func (BuiltinComponent) String added in v0.4.25

func (bc BuiltinComponent) String() string

String 返回内建组件描述的 JSON 文本;编码失败时 panic。

type Component

type Component interface {
	ConcurrentComponent
	corectx.CurrentContextProvider

	// Id 返回组件 ID;未启用组件唯一 ID 时通常与 Entity ID 相同。
	Id() uid.Id
	// Builtin 返回组件在实体原型中的内建描述;动态组件返回空描述。
	Builtin() BuiltinComponent
	// Name 返回组件在 Entity 中的名称。
	Name() string
	// Entity 返回组件所依附的实体。
	Entity() Entity
	// State 返回当前生命周期状态。
	State() ComponentState
	// Reflected 返回实际组件实例的反射值。
	Reflected() reflect.Value
	// Removable 报告组件是否允许动态删除。
	Removable() bool
	// Enabled 报告组件是否已被标记为启用。
	Enabled() bool
	// SetEnabled 请求切换启用状态;重复设置或组件已离开活动阶段时无效。
	SetEnabled(b bool)
	// Managed 返回随组件销毁自动解绑的事件句柄集合。
	Managed() *event.ManagedHandles
	// Destroy 请求从实体删除组件;不可删除的组件会忽略该请求。
	Destroy()

	IComponentEventTab
	// contains filtered or unexported methods
}

Component 表示依附于实体、由实体所属 Runtime 驱动生命周期的组件。

除 ConcurrentComponent 暴露的能力外,Component 的方法应在所属 Runtime 的 运行 goroutine 中调用。

type ComponentBehavior

type ComponentBehavior struct {
	// contains filtered or unexported fields
}

ComponentBehavior 提供 Component 的默认实现,扩展组件时应将其匿名嵌入自定义结构体。

func (*ComponentBehavior) AsyncScope added in v0.4.27

func (comp *ComponentBehavior) AsyncScope() *async.Scope

AsyncScope 返回绑定组件 Lifetime 的后台任务作用域。 Scope 在组件从 Entity 移除或随 Entity 销毁时关闭;SetEnabled(false) 不会关闭它。 组件尚未完成 Runtime 初始化时返回 nil。

func (*ComponentBehavior) Builtin added in v0.4.25

func (comp *ComponentBehavior) Builtin() BuiltinComponent

Builtin 返回组件在实体原型中的内建描述;动态组件返回空描述。

func (*ComponentBehavior) ConcurrentContextCache added in v0.4.27

func (comp *ComponentBehavior) ConcurrentContextCache() iface.Cache

ConcurrentContextCache 返回所属 Entity 的并发 Runtime 上下文接口缓存。

func (*ComponentBehavior) CurrentContextCache added in v0.4.27

func (comp *ComponentBehavior) CurrentContextCache() iface.Cache

CurrentContextCache 返回所属实体的当前上下文接口缓存。

func (*ComponentBehavior) Destroy added in v0.4.25

func (comp *ComponentBehavior) Destroy()

Destroy 请求从实体删除组件;不可删除或已离开活动阶段时无效。

func (*ComponentBehavior) Enabled added in v0.4.25

func (comp *ComponentBehavior) Enabled() bool

Enabled 报告组件是否已被标记为启用。

func (*ComponentBehavior) Entity added in v0.4.25

func (comp *ComponentBehavior) Entity() Entity

Entity 返回组件所依附的实体。

func (*ComponentBehavior) EventComponentDestroy added in v0.4.25

func (comp *ComponentBehavior) EventComponentDestroy() event.IEvent

EventComponentDestroy 返回组件销毁事件。

func (*ComponentBehavior) EventComponentEnableChanged added in v0.3.80

func (comp *ComponentBehavior) EventComponentEnableChanged() event.IEvent

EventComponentEnableChanged 返回组件启用状态变更事件。

func (*ComponentBehavior) Id added in v0.4.25

func (comp *ComponentBehavior) Id() uid.Id

Id 返回组件 ID。

func (*ComponentBehavior) Managed added in v0.4.25

func (comp *ComponentBehavior) Managed() *event.ManagedHandles

Managed 返回随组件销毁自动解绑的事件句柄集合。

func (*ComponentBehavior) Name added in v0.4.25

func (comp *ComponentBehavior) Name() string

Name 返回组件在实体中的名称。

func (*ComponentBehavior) Reflected added in v0.4.25

func (comp *ComponentBehavior) Reflected() reflect.Value

Reflected 返回实际组件实例的反射值,并缓存首次解析结果。

func (*ComponentBehavior) Removable added in v0.4.25

func (comp *ComponentBehavior) Removable() bool

Removable 报告组件是否允许动态删除。

func (*ComponentBehavior) SetEnabled added in v0.4.25

func (comp *ComponentBehavior) SetEnabled(b bool)

SetEnabled 请求切换启用状态,并同步派发组件及实体组件管理器事件。

func (*ComponentBehavior) State added in v0.4.25

func (comp *ComponentBehavior) State() ComponentState

State 返回当前生命周期状态。

func (*ComponentBehavior) String

func (comp *ComponentBehavior) String() string

String 返回包含组件、实体及原型标识的 JSON 文本;组件尚未完成 Runtime 初始化时返回空字符串。

type ComponentPT added in v0.3.55

type ComponentPT interface {
	fmt.Stringer

	// Prototype 返回组件原型名。
	Prototype() string
	// InstanceRT 返回实际组件实例的指针类型。
	InstanceRT() reflect.Type
	// Construct 根据原型创建处于 Born 状态的组件。
	Construct() Component
}

ComponentPT 描述可构造组件的原型。

type ComponentState

type ComponentState int8

ComponentState 表示组件生命周期所处的阶段;状态通常由所属实体的 Runtime 推进。

const (
	ComponentState_Born      ComponentState = iota // ComponentState_Born 表示组件已构造、尚未依附实体。
	ComponentState_Attached                        // ComponentState_Attached 表示组件已加入实体。
	ComponentState_Awakened                        // ComponentState_Awakened 表示组件已完成唤醒。
	ComponentState_Enabling                        // ComponentState_Enabling 表示组件正在执行启用阶段。
	ComponentState_Idle                            // ComponentState_Idle 表示组件已唤醒但当前未启用。
	ComponentState_Starting                        // ComponentState_Starting 表示组件正在执行启动阶段。
	ComponentState_Alive                           // ComponentState_Alive 表示组件已启动并处于活动状态。
	ComponentState_Detaching                       // ComponentState_Detaching 表示组件正在脱离实体。
	ComponentState_Shutting                        // ComponentState_Shutting 表示组件正在执行关闭阶段。
	ComponentState_Disabling                       // ComponentState_Disabling 表示组件正在执行禁用阶段。
	ComponentState_Dead                            // ComponentState_Dead 表示组件已死亡,事件表已停用。
	ComponentState_Destroyed                       // ComponentState_Destroyed 表示组件已完成销毁并释放托管句柄。
)

func (ComponentState) String

func (i ComponentState) String() string

type ConcurrentComponent added in v0.4.27

type ConcurrentComponent interface {
	corectx.ConcurrentContextProvider
	corectx.AsyncScopeProvider
	fmt.Stringer

	// Id 返回组件 ID;未启用组件唯一 ID 时通常与 Entity ID 相同。
	Id() uid.Id
	// Name 返回组件在 Entity 中的名称。
	Name() string
	// contains filtered or unexported methods
}

ConcurrentComponent 暴露可跨 goroutine 使用的组件身份、字符串表示、并发上下文和生命周期 Scope。

组件随 Entity 进入 Runtime,或动态加入运行中 Entity 并完成 Runtime 初始化后,才能 跨 goroutine 使用此接口;提前调用除 AsyncScope 和 String 外的方法属于未定义行为。

该视图不暴露 State、Enabled、Entity、Destroy 等 Runtime 局部能力。需要读取或修改 这些状态时,应通过 Submit、Post 或 ContinueOn 回到组件所属 Runtime。

type ConcurrentEntity

type ConcurrentEntity interface {
	corectx.ConcurrentContextProvider
	corectx.AsyncScopeProvider
	fmt.Stringer

	// Id 返回实体 ID。
	Id() uid.Id
	// PT 返回实体原型。
	PT() EntityPT
	// contains filtered or unexported methods
}

ConcurrentEntity 暴露可跨协程安全读取的实体信息与上下文。

实体进入 Runtime(EntityState_Entered)后,才能跨 goroutine 使用此接口;提前调用 除 AsyncScope 和 String 外的方法属于未定义行为。

组件管理、实体树和 Destroy 等操作仍须通过所属 Runtime 的运行协程执行。

type Entity

type Entity interface {
	ConcurrentEntity
	corectx.CurrentContextProvider
	reinterpret.InstanceProvider

	// Id 返回实体 ID。
	Id() uid.Id
	// PT 返回实体原型;尚未绑定原型时返回空原型对象。
	PT() EntityPT
	// Scope 返回实体的可查询范围。
	Scope() Scope
	// State 返回当前生命周期状态。
	State() EntityState
	// Reflected 返回实际实体实例的反射值。
	Reflected() reflect.Value
	// Meta 返回实体元数据。
	Meta() meta.Meta
	// Managed 返回随实体销毁自动解绑的事件句柄集合。
	Managed() *event.ManagedHandles
	// Destroy 请求所属 Runtime 销毁实体;重复请求会被忽略。
	Destroy()

	IEntityEventTab
	// contains filtered or unexported methods
}

Entity 表示由 Runtime 驱动生命周期的实体。

除 ConcurrentEntity 暴露的只读能力外,其方法应在所属 Runtime 的运行协程中调用。

func NewEntity

func NewEntity(settings ...option.Setting[EntityOptions]) Entity

NewEntity 创建处于 Born 状态的实体。

func UnsafeNewEntity deprecated

func UnsafeNewEntity(options EntityOptions) Entity

UnsafeNewEntity 使用已解析的选项创建实体,供框架内部使用。

Deprecated: 请使用 NewEntity。

type EntityBehavior

type EntityBehavior struct {
	context.Context
	// contains filtered or unexported fields
}

EntityBehavior 提供 Entity 的默认实现,扩展实体时应将其匿名嵌入自定义结构体。

func (*EntityBehavior) AddComponent

func (entity *EntityBehavior) AddComponent(name string, components ...Component) error

AddComponent 将 Born 状态的组件加入实体;允许同名组件。

components 为空、包含 nil 或组件不处于 Born 状态时返回错误。实体已启动时, Runtime 会通过添加事件同步推进新组件的生命周期。

func (*EntityBehavior) AfterFutureWait added in v0.4.27

func (entity *EntityBehavior) AfterFutureWait(futureID uint64)

AfterFutureWait 清理所属 Runtime 的等待诊断状态。

func (*EntityBehavior) AsyncScope added in v0.4.27

func (entity *EntityBehavior) AsyncScope() *async.Scope

AsyncScope 返回绑定实体生命周期的后台任务作用域;实体尚未进入 Runtime 时返回 nil。

func (*EntityBehavior) BeforeFutureWait added in v0.4.27

func (entity *EntityBehavior) BeforeFutureWait(futureID uint64, completionExecutorID async.ExecutorID) error

BeforeFutureWait 把 Entity 作为等待 Context 时的检查转交给所属 Runtime。

func (*EntityBehavior) ConcurrentContextCache added in v0.4.27

func (entity *EntityBehavior) ConcurrentContextCache() iface.Cache

ConcurrentContextCache 返回实体所属 Runtime 的并发上下文接口缓存。

func (*EntityBehavior) CountComponents

func (entity *EntityBehavior) CountComponents() int

CountComponents 返回当前依附于实体的组件数。

func (*EntityBehavior) CurrentContextCache added in v0.4.27

func (entity *EntityBehavior) CurrentContextCache() iface.Cache

CurrentContextCache 返回实体所属 Runtime 的当前上下文接口缓存。

func (*EntityBehavior) Destroy added in v0.4.25

func (entity *EntityBehavior) Destroy()

Destroy 请求所属 Runtime 销毁实体;实体离开活动阶段后调用无效。

func (*EntityBehavior) EachComponents added in v0.4.25

func (entity *EntityBehavior) EachComponents(fun generic.Action1[Component])

EachComponents 按加入顺序遍历全部组件。

func (*EntityBehavior) EventComponentManagerAddComponents added in v0.3.66

func (entity *EntityBehavior) EventComponentManagerAddComponents() event.IEvent

EventComponentManagerAddComponents 返回组件批量添加事件。

func (*EntityBehavior) EventComponentManagerComponentEnableChanged added in v0.4.25

func (entity *EntityBehavior) EventComponentManagerComponentEnableChanged() event.IEvent

EventComponentManagerComponentEnableChanged 返回组件启用状态变更事件。

func (*EntityBehavior) EventComponentManagerFirstTouchComponent added in v0.3.66

func (entity *EntityBehavior) EventComponentManagerFirstTouchComponent() event.IEvent

EventComponentManagerFirstTouchComponent 返回组件首次访问事件。

func (*EntityBehavior) EventComponentManagerRemoveComponent added in v0.3.66

func (entity *EntityBehavior) EventComponentManagerRemoveComponent() event.IEvent

EventComponentManagerRemoveComponent 返回组件移除事件。

func (*EntityBehavior) EventEntityDestroy added in v0.4.25

func (entity *EntityBehavior) EventEntityDestroy() event.IEvent

EventEntityDestroy 返回实体销毁请求事件。

func (*EntityBehavior) EventTreeNodeAddChild added in v0.2.58

func (entity *EntityBehavior) EventTreeNodeAddChild() event.IEvent

EventTreeNodeAddChild 返回直接子实体添加事件。

func (*EntityBehavior) EventTreeNodeAttachParent added in v0.4.25

func (entity *EntityBehavior) EventTreeNodeAttachParent() event.IEvent

EventTreeNodeAttachParent 返回接入父节点事件。

func (*EntityBehavior) EventTreeNodeDetachParent added in v0.4.25

func (entity *EntityBehavior) EventTreeNodeDetachParent() event.IEvent

EventTreeNodeDetachParent 返回脱离父节点事件。

func (*EntityBehavior) EventTreeNodeMoveTo added in v0.4.25

func (entity *EntityBehavior) EventTreeNodeMoveTo() event.IEvent

EventTreeNodeMoveTo 返回父节点变更事件。

func (*EntityBehavior) EventTreeNodeRemoveChild added in v0.2.58

func (entity *EntityBehavior) EventTreeNodeRemoveChild() event.IEvent

EventTreeNodeRemoveChild 返回直接子实体移除事件。

func (*EntityBehavior) FilterComponents added in v0.2.58

func (entity *EntityBehavior) FilterComponents(fun generic.Func1[Component, bool]) []Component

FilterComponents 返回满足条件的组件快照,并对返回项执行首次访问处理。

func (*EntityBehavior) GetComponent

func (entity *EntityBehavior) GetComponent(name string) Component

GetComponent 返回首个同名组件;不存在时返回 nil。

func (*EntityBehavior) GetComponentById

func (entity *EntityBehavior) GetComponentById(id uid.Id) Component

GetComponentById 按 ID 查询组件;未启用组件唯一 ID 或不存在时返回 nil。

func (*EntityBehavior) GetComponentByPT added in v0.3.65

func (entity *EntityBehavior) GetComponentByPT(prototype string) Component

GetComponentByPT 返回首个使用指定原型的组件;不存在时返回 nil。

func (*EntityBehavior) GetComponents

func (entity *EntityBehavior) GetComponents(name string) []Component

GetComponents 返回全部同名组件的快照。

func (*EntityBehavior) GetComponentsByPT added in v0.4.25

func (entity *EntityBehavior) GetComponentsByPT(prototype string) []Component

GetComponentsByPT 返回全部使用指定原型的组件快照。

func (*EntityBehavior) Id added in v0.4.25

func (entity *EntityBehavior) Id() uid.Id

Id 返回实体 ID。

func (*EntityBehavior) InstanceFaceCache added in v0.4.25

func (entity *EntityBehavior) InstanceFaceCache() iface.Cache

InstanceFaceCache 返回实际实体实例的接口缓存,供类型重解释使用。

func (*EntityBehavior) ListComponents added in v0.4.25

func (entity *EntityBehavior) ListComponents() []Component

ListComponents 返回全部组件的快照,并对返回项执行首次访问处理。

func (*EntityBehavior) Managed added in v0.4.25

func (entity *EntityBehavior) Managed() *event.ManagedHandles

Managed 返回随实体销毁自动解绑的事件句柄集合。

func (*EntityBehavior) Meta added in v0.4.25

func (entity *EntityBehavior) Meta() meta.Meta

Meta 返回实体元数据。

func (*EntityBehavior) PT added in v0.4.25

func (entity *EntityBehavior) PT() EntityPT

PT 返回实体原型;尚未绑定原型时返回空原型对象。

func (*EntityBehavior) RangeComponents

func (entity *EntityBehavior) RangeComponents(fun generic.Func1[Component, bool])

RangeComponents 按加入顺序遍历组件;回调返回 false 时停止。

func (*EntityBehavior) Reflected added in v0.4.25

func (entity *EntityBehavior) Reflected() reflect.Value

Reflected 返回实际实体实例的反射值,并缓存首次解析结果。

func (*EntityBehavior) RemoveComponent

func (entity *EntityBehavior) RemoveComponent(name string)

RemoveComponent 按名称请求删除全部可删除的同名组件。

func (*EntityBehavior) RemoveComponentById

func (entity *EntityBehavior) RemoveComponentById(id uid.Id)

RemoveComponentById 按 ID 请求删除组件;未启用组件唯一 ID 时无效。

func (*EntityBehavior) RemoveComponentByPT added in v0.4.25

func (entity *EntityBehavior) RemoveComponentByPT(prototype string)

RemoveComponentByPT 按原型名请求删除全部可删除的匹配组件。

func (*EntityBehavior) ReversedEachComponents added in v0.4.25

func (entity *EntityBehavior) ReversedEachComponents(fun generic.Action1[Component])

ReversedEachComponents 按加入顺序的逆序遍历全部组件。

func (*EntityBehavior) ReversedRangeComponents added in v0.2.58

func (entity *EntityBehavior) ReversedRangeComponents(fun generic.Func1[Component, bool])

ReversedRangeComponents 按加入顺序的逆序遍历组件;回调返回 false 时停止。

func (*EntityBehavior) Scope added in v0.4.25

func (entity *EntityBehavior) Scope() Scope

Scope 返回实体的可查询范围。

func (*EntityBehavior) State added in v0.4.25

func (entity *EntityBehavior) State() EntityState

State 返回当前生命周期状态。

func (*EntityBehavior) String

func (entity *EntityBehavior) String() string

String 返回包含实体 ID 与原型名的 JSON 文本;实体尚未进入 Runtime 时返回空字符串。

func (*EntityBehavior) Terminated added in v0.3.33

func (entity *EntityBehavior) Terminated() async.Signal

Terminated 返回实体进入 Destroyed 状态时兑现的 Signal。

func (*EntityBehavior) TreeNodeState added in v0.4.25

func (entity *EntityBehavior) TreeNodeState() TreeNodeState

TreeNodeState 返回实体在 Runtime 实体树中的状态。

type EntityOptions

type EntityOptions struct {
	InstanceFace               iface.Face[Entity] // InstanceFace 是用于扩展实体行为的实际实例。
	Scope                      Scope              // Scope 是实体的可查询范围。
	PersistId                  uid.Id             // PersistId 是实体的持久化 ID;Nil 表示由框架分配。
	ComponentAwakeOnFirstTouch bool               // ComponentAwakeOnFirstTouch 指示组件首次被访问时是否推进至 Awakened。
	ComponentUniqueID          bool               // ComponentUniqueID 指示是否为每个组件分配唯一 ID。
	Meta                       meta.Meta          // Meta 是随实体携带的元数据。
}

EntityOptions 定义实体的构造选项。

type EntityPT added in v0.3.55

type EntityPT interface {
	fmt.Stringer

	// Prototype 返回实体原型名。
	Prototype() string
	// InstanceRT 返回实际实体实例的指针类型;使用默认实体实现时返回 nil。
	InstanceRT() reflect.Type
	// Scope 返回原型的默认实体作用域。
	Scope() Scope
	// ComponentAwakeOnFirstTouch 报告组件是否在首次访问时推进至 Awakened。
	ComponentAwakeOnFirstTouch() bool
	// ComponentUniqueID 报告是否为组件分配唯一 ID。
	ComponentUniqueID() bool
	// Meta 返回原型元数据。
	Meta() meta.Meta
	// CountComponents 返回内建组件数。
	CountComponents() int
	// GetComponent 返回指定位置的内建组件描述;索引越界时 panic。
	GetComponent(idx int) BuiltinComponent
	// ListComponents 返回全部内建组件描述的副本。
	ListComponents() []BuiltinComponent
	// Construct 根据原型创建处于 Born 状态的实体,并应用额外选项。
	Construct(settings ...option.Setting[EntityOptions]) Entity
}

EntityPT 描述可构造实体及其内建组件的原型。

type EntityState

type EntityState int8

EntityState 表示实体生命周期所处的阶段;状态通常由 Runtime 单向推进。

const (
	EntityState_Born      EntityState = iota // EntityState_Born 表示实体已构造、尚未进入 Runtime。
	EntityState_Entered                      // EntityState_Entered 表示实体已加入 Runtime 的实体管理器。
	EntityState_Awakened                     // EntityState_Awakened 表示实体已完成唤醒。
	EntityState_Starting                     // EntityState_Starting 表示实体正在执行启动阶段。
	EntityState_Alive                        // EntityState_Alive 表示实体已启动并参与运行时更新。
	EntityState_Leaving                      // EntityState_Leaving 表示实体正在离开 Runtime。
	EntityState_Shutting                     // EntityState_Shutting 表示实体正在执行关闭阶段。
	EntityState_Dead                         // EntityState_Dead 表示实体已死亡,其上下文已取消。
	EntityState_Destroyed                    // EntityState_Destroyed 表示实体已完成销毁并释放托管句柄。
)

func (EntityState) String

func (i EntityState) String() string

type EventComponentDestroy added in v0.4.25

type EventComponentDestroy interface {
	OnComponentDestroy(comp Component)
}

EventComponentDestroy 描述组件销毁流程末尾尝试派发的通知。 若组件事件表已随 Dead 状态禁用,则该通知不会到达订阅者。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentDestroyHandler added in v0.4.25

type EventComponentDestroyHandler func(comp Component)

func HandleEventComponentDestroy added in v0.4.25

func HandleEventComponentDestroy(fun func(comp Component)) EventComponentDestroyHandler

func (EventComponentDestroyHandler) OnComponentDestroy added in v0.4.25

func (h EventComponentDestroyHandler) OnComponentDestroy(comp Component)

type EventComponentEnableChanged added in v0.3.80

type EventComponentEnableChanged interface {
	OnComponentEnableChanged(comp Component, enable bool)
}

EventComponentEnableChanged 在组件的启用标记发生变化时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentEnableChangedHandler added in v0.3.80

type EventComponentEnableChangedHandler func(comp Component, enable bool)

func HandleEventComponentEnableChanged added in v0.3.80

func HandleEventComponentEnableChanged(fun func(comp Component, enable bool)) EventComponentEnableChangedHandler

func (EventComponentEnableChangedHandler) OnComponentEnableChanged added in v0.3.80

func (h EventComponentEnableChangedHandler) OnComponentEnableChanged(comp Component, enable bool)

type EventComponentManagerAddComponents added in v0.3.66

type EventComponentManagerAddComponents interface {
	OnComponentManagerAddComponents(entity Entity, components []Component)
}

EventComponentManagerAddComponents 在一批组件加入实体后同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentManagerAddComponentsHandler added in v0.3.66

type EventComponentManagerAddComponentsHandler func(entity Entity, components []Component)

func HandleEventComponentManagerAddComponents added in v0.3.66

func HandleEventComponentManagerAddComponents(fun func(entity Entity, components []Component)) EventComponentManagerAddComponentsHandler

func (EventComponentManagerAddComponentsHandler) OnComponentManagerAddComponents added in v0.3.66

func (h EventComponentManagerAddComponentsHandler) OnComponentManagerAddComponents(entity Entity, components []Component)

type EventComponentManagerComponentEnableChanged added in v0.4.25

type EventComponentManagerComponentEnableChanged interface {
	OnComponentManagerComponentEnableChanged(entity Entity, component Component, enable bool)
}

EventComponentManagerComponentEnableChanged 在所属组件的启用标记发生变化时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentManagerComponentEnableChangedHandler added in v0.4.25

type EventComponentManagerComponentEnableChangedHandler func(entity Entity, component Component, enable bool)

func HandleEventComponentManagerComponentEnableChanged added in v0.4.25

func HandleEventComponentManagerComponentEnableChanged(fun func(entity Entity, component Component, enable bool)) EventComponentManagerComponentEnableChangedHandler

func (EventComponentManagerComponentEnableChangedHandler) OnComponentManagerComponentEnableChanged added in v0.4.25

func (h EventComponentManagerComponentEnableChangedHandler) OnComponentManagerComponentEnableChanged(entity Entity, component Component, enable bool)

type EventComponentManagerFirstTouchComponent added in v0.3.66

type EventComponentManagerFirstTouchComponent interface {
	OnComponentManagerFirstTouchComponent(entity Entity, component Component)
}

EventComponentManagerFirstTouchComponent 在启用首次访问唤醒且 Attached 状态组件被访问时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentManagerFirstTouchComponentHandler added in v0.3.66

type EventComponentManagerFirstTouchComponentHandler func(entity Entity, component Component)

func HandleEventComponentManagerFirstTouchComponent added in v0.3.66

func HandleEventComponentManagerFirstTouchComponent(fun func(entity Entity, component Component)) EventComponentManagerFirstTouchComponentHandler

func (EventComponentManagerFirstTouchComponentHandler) OnComponentManagerFirstTouchComponent added in v0.3.66

func (h EventComponentManagerFirstTouchComponentHandler) OnComponentManagerFirstTouchComponent(entity Entity, component Component)

type EventComponentManagerRemoveComponent added in v0.3.66

type EventComponentManagerRemoveComponent interface {
	OnComponentManagerRemoveComponent(entity Entity, component Component)
}

EventComponentManagerRemoveComponent 在组件脱离实体时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventComponentManagerRemoveComponentHandler added in v0.3.66

type EventComponentManagerRemoveComponentHandler func(entity Entity, component Component)

func HandleEventComponentManagerRemoveComponent added in v0.3.66

func HandleEventComponentManagerRemoveComponent(fun func(entity Entity, component Component)) EventComponentManagerRemoveComponentHandler

func (EventComponentManagerRemoveComponentHandler) OnComponentManagerRemoveComponent added in v0.3.66

func (h EventComponentManagerRemoveComponentHandler) OnComponentManagerRemoveComponent(entity Entity, component Component)

type EventEntityDestroy added in v0.4.25

type EventEntityDestroy interface {
	OnEntityDestroy(entity Entity)
}

EventEntityDestroy 在实体收到销毁请求时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityDestroyHandler added in v0.4.25

type EventEntityDestroyHandler func(entity Entity)

func HandleEventEntityDestroy added in v0.4.25

func HandleEventEntityDestroy(fun func(entity Entity)) EventEntityDestroyHandler

func (EventEntityDestroyHandler) OnEntityDestroy added in v0.4.25

func (h EventEntityDestroyHandler) OnEntityDestroy(entity Entity)

type EventTreeNodeAddChild added in v0.2.58

type EventTreeNodeAddChild interface {
	OnTreeNodeAddChild(entity Entity, childId uid.Id)
}

EventTreeNodeAddChild 在实体节点加入直接子实体时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventTreeNodeAddChildHandler added in v0.2.58

type EventTreeNodeAddChildHandler func(entity Entity, childId uid.Id)

func HandleEventTreeNodeAddChild added in v0.2.58

func HandleEventTreeNodeAddChild(fun func(entity Entity, childId uid.Id)) EventTreeNodeAddChildHandler

func (EventTreeNodeAddChildHandler) OnTreeNodeAddChild added in v0.2.58

func (h EventTreeNodeAddChildHandler) OnTreeNodeAddChild(entity Entity, childId uid.Id)

type EventTreeNodeAttachParent added in v0.4.25

type EventTreeNodeAttachParent interface {
	OnTreeNodeAttachParent(entity Entity, parentId uid.Id)
}

EventTreeNodeAttachParent 在实体接入父节点时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventTreeNodeAttachParentHandler added in v0.4.25

type EventTreeNodeAttachParentHandler func(entity Entity, parentId uid.Id)

func HandleEventTreeNodeAttachParent added in v0.4.25

func HandleEventTreeNodeAttachParent(fun func(entity Entity, parentId uid.Id)) EventTreeNodeAttachParentHandler

func (EventTreeNodeAttachParentHandler) OnTreeNodeAttachParent added in v0.4.25

func (h EventTreeNodeAttachParentHandler) OnTreeNodeAttachParent(entity Entity, parentId uid.Id)

type EventTreeNodeDetachParent added in v0.4.25

type EventTreeNodeDetachParent interface {
	OnTreeNodeDetachParent(entity Entity, parentId uid.Id)
}

EventTreeNodeDetachParent 在实体脱离父节点时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventTreeNodeDetachParentHandler added in v0.4.25

type EventTreeNodeDetachParentHandler func(entity Entity, parentId uid.Id)

func HandleEventTreeNodeDetachParent added in v0.4.25

func HandleEventTreeNodeDetachParent(fun func(entity Entity, parentId uid.Id)) EventTreeNodeDetachParentHandler

func (EventTreeNodeDetachParentHandler) OnTreeNodeDetachParent added in v0.4.25

func (h EventTreeNodeDetachParentHandler) OnTreeNodeDetachParent(entity Entity, parentId uid.Id)

type EventTreeNodeMoveTo added in v0.4.25

type EventTreeNodeMoveTo interface {
	OnTreeNodeMoveTo(entity Entity, fromParentId, toParentId uid.Id)
}

EventTreeNodeMoveTo 在实体从一个父节点移动到另一个父节点时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventTreeNodeMoveToHandler added in v0.4.25

type EventTreeNodeMoveToHandler func(entity Entity, fromParentId, toParentId uid.Id)

func HandleEventTreeNodeMoveTo added in v0.4.25

func HandleEventTreeNodeMoveTo(fun func(entity Entity, fromParentId, toParentId uid.Id)) EventTreeNodeMoveToHandler

func (EventTreeNodeMoveToHandler) OnTreeNodeMoveTo added in v0.4.25

func (h EventTreeNodeMoveToHandler) OnTreeNodeMoveTo(entity Entity, fromParentId, toParentId uid.Id)

type EventTreeNodeRemoveChild added in v0.2.58

type EventTreeNodeRemoveChild interface {
	OnTreeNodeRemoveChild(entity Entity, childId uid.Id)
}

EventTreeNodeRemoveChild 在直接子实体离开实体节点时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventTreeNodeRemoveChildHandler added in v0.2.58

type EventTreeNodeRemoveChildHandler func(entity Entity, childId uid.Id)

func HandleEventTreeNodeRemoveChild added in v0.2.58

func HandleEventTreeNodeRemoveChild(fun func(entity Entity, childId uid.Id)) EventTreeNodeRemoveChildHandler

func (EventTreeNodeRemoveChildHandler) OnTreeNodeRemoveChild added in v0.2.58

func (h EventTreeNodeRemoveChildHandler) OnTreeNodeRemoveChild(entity Entity, childId uid.Id)

type IComponentEventTab added in v0.3.48

type IComponentEventTab interface {
	EventComponentEnableChanged() event.IEvent
	EventComponentDestroy() event.IEvent
}

type IEntityComponentManagerEventTab added in v0.3.66

type IEntityComponentManagerEventTab interface {
	EventComponentManagerAddComponents() event.IEvent
	EventComponentManagerRemoveComponent() event.IEvent
	EventComponentManagerComponentEnableChanged() event.IEvent
	EventComponentManagerFirstTouchComponent() event.IEvent
}

type IEntityEventTab added in v0.3.48

type IEntityEventTab interface {
	EventEntityDestroy() event.IEvent
}

type IEntityTreeNodeEventTab added in v0.3.48

type IEntityTreeNodeEventTab interface {
	EventTreeNodeAddChild() event.IEvent
	EventTreeNodeRemoveChild() event.IEvent
	EventTreeNodeAttachParent() event.IEvent
	EventTreeNodeDetachParent() event.IEvent
	EventTreeNodeMoveTo() event.IEvent
}

type Scope

type Scope int32

Scope 表示实体可被查询的作用域。

const (
	Scope_Local  Scope = iota // Scope_Local 仅允许从所属 Runtime 内查询实体。
	Scope_Global              // Scope_Global 还会将实体注册到 Service 的全局实体索引。
)

func (Scope) String

func (i Scope) String() string

type TreeNodeState added in v0.2.58

type TreeNodeState int8

TreeNodeState 表示实体在 Runtime 实体树中的过渡状态。

const (
	TreeNodeState_Free      TreeNodeState = iota // TreeNodeState_Free 表示实体不在实体树中。
	TreeNodeState_Attaching                      // TreeNodeState_Attaching 表示实体正在加入实体树。
	TreeNodeState_Attached                       // TreeNodeState_Attached 表示实体已在实体树中。
	TreeNodeState_Detaching                      // TreeNodeState_Detaching 表示实体正在脱离实体树。
	TreeNodeState_Moving                         // TreeNodeState_Moving 表示实体正在切换父节点。
)

func (TreeNodeState) String added in v0.2.58

func (i TreeNodeState) String() string

Directories

Path Synopsis
Package pt 提供实体与组件原型库。
Package pt 提供实体与组件原型库。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL