ec

package
v0.4.26 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2026 License: LGPL-2.1 Imports: 17 Imported by: 17

Documentation

Overview

Package ec 提供了一个EC(Entity-Component)组件框架,用于帮助开发者组织代码架构。

在框架中,有以下几个核心概念:

  • Entity(实体):代表应用程序中的一个实际对象。以游戏为例,可以是场景、玩家、NPC或物品等。一般情况下,实体只提供生命周期和组件管理两项核心能力,行为和属性将由不同的组件提供。
  • Component(组件):为实体提供行为和属性,不同的组件可以为实体提供不同的行为和状态。以游戏为例,我们为实体添加兔子外观组件、飞行组件和挖洞组件,那么将会得到一个既能飞行又能挖洞并且拥有兔子外观的实体。
  • Context(上下文):实体的运行环境,通常用于提供全局属性和方法。因为 Golaxy 分布式服务开发框架主要用于服务器逻辑开发,需要支持多线程并发环境,所以提供了运行时上下文(Runtime Context)和服务上下文(Service Context)两个上下文,分别对应本地单线程环境和并发多线程环境。

EC 组件框架基于组合模式,在大多数情况下优于继承模式,开发者可以更好地组织代码,实现高内聚和低耦合的代码架构。

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) // EC错误
)
View Source
var (
	EventEntityDestroyId = event.DeclareEventIdT[entityEventTab](0)
)
View Source
var With _EntityOption

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

Deprecated: UnsafeComponent 访问组件内部函数

func UnsafeConcurrentEntity deprecated added in v0.3.21

func UnsafeConcurrentEntity(entity ConcurrentEntity) _UnsafeConcurrentEntity

Deprecated: UnsafeConcurrentEntity 访问多线程安全的实体接口内部函数

func UnsafeEntity deprecated

func UnsafeEntity(entity Entity) _UnsafeEntity

Deprecated: UnsafeEntity 访问实体内部函数

Types

type BuiltinComponent added in v0.3.60

type BuiltinComponent struct {
	PT        ComponentPT // 组件原型
	Offset    int         // 组件位置
	Name      string      // 组件名称
	Removable bool        // 可以删除
	Meta      meta.Meta   // 原型Meta信息
}

BuiltinComponent 实体原型中的组件信息

func (BuiltinComponent) MarshalJSON added in v0.4.25

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

MarshalJSON implements json.Marshaler

func (BuiltinComponent) String added in v0.4.25

func (bc BuiltinComponent) String() string

String implements fmt.Stringer

type Component

type Component interface {
	corectx.CurrentContextProvider
	fmt.Stringer

	// Id 获取组件Id
	Id() uid.Id
	// Builtin 获取实体原型中的组件信息
	Builtin() BuiltinComponent
	// Name 获取组件名称
	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 组件接口

type ComponentBehavior

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

ComponentBehavior 组件行为,在开发新组件时,匿名嵌入至组件结构体中

func (*ComponentBehavior) Builtin added in v0.4.25

func (comp *ComponentBehavior) Builtin() BuiltinComponent

Builtin 获取实体原型中的组件信息

func (*ComponentBehavior) ConcurrentContext added in v0.4.25

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

ConcurrentContext 获取多线程安全的上下文

func (*ComponentBehavior) CurrentContext added in v0.4.25

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

CurrentContext 获取当前上下文

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 implements fmt.Stringer

type ComponentPT added in v0.3.55

type ComponentPT interface {
	fmt.Stringer

	// Prototype 组件原型名称
	Prototype() string
	// InstanceRT 组件实例反射类型
	InstanceRT() reflect.Type
	// Construct 创建组件
	Construct() Component
}

ComponentPT 组件原型接口

type ComponentState

type ComponentState int8

ComponentState 组件状态

const (
	ComponentState_Birth     ComponentState = iota // 出生
	ComponentState_Attach                          // 附着
	ComponentState_Awake                           // 唤醒
	ComponentState_Enable                          // 启用
	ComponentState_Idle                            // 空闲
	ComponentState_Start                           // 开始
	ComponentState_Alive                           // 活跃
	ComponentState_Detach                          // 脱离
	ComponentState_Shut                            // 结束
	ComponentState_Disable                         // 禁用
	ComponentState_Death                           // 死亡
	ComponentState_Destroyed                       // 已销毁
)

func (ComponentState) String

func (i ComponentState) String() string

type ConcurrentEntity

type ConcurrentEntity interface {
	corectx.ConcurrentContextProvider
	fmt.Stringer

	// Id 获取实体Id
	Id() uid.Id
	// PT 获取实体原型信息
	PT() EntityPT
	// contains filtered or unexported methods
}

ConcurrentEntity 多线程安全的实体接口

type Entity

type Entity interface {
	corectx.CurrentContextProvider
	reinterpret.InstanceProvider
	fmt.Stringer

	// Id 获取实体Id
	Id() uid.Id
	// PT 获取实体原型信息
	PT() EntityPT
	// Scope 获取可访问作用域
	Scope() Scope
	// State 获取实体状态
	State() EntityState
	// Reflected 获取反射值
	Reflected() reflect.Value
	// Meta 获取Meta信息
	Meta() meta.Meta
	// Managed 托管事件句柄
	Managed() *event.ManagedHandles
	// Destroy 销毁
	Destroy()

	IEntityEventTab
	// contains filtered or unexported methods
}

Entity 实体接口

func NewEntity

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

NewEntity 创建实体

func UnsafeNewEntity deprecated

func UnsafeNewEntity(options EntityOptions) Entity

Deprecated: UnsafeNewEntity 内部创建实体

type EntityBehavior

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

EntityBehavior 实体行为,在扩展实体能力时,匿名嵌入至实体结构体中

func (*EntityBehavior) AddComponent

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

AddComponent 添加组件,允许组件同名

func (*EntityBehavior) ConcurrentContext added in v0.4.25

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

ConcurrentContext 解析线程安全的上下文

func (*EntityBehavior) CountComponents

func (entity *EntityBehavior) CountComponents() int

CountComponents 统计所有组件数量

func (*EntityBehavior) CurrentContext added in v0.4.25

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

CurrentContext 获取当前上下文

func (*EntityBehavior) Destroy added in v0.4.25

func (entity *EntityBehavior) Destroy()

Destroy 销毁

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查询组件,不存在时返回nil(需要开启为实体组件分配唯一Id特性)

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 获取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 遍历所有组件

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 反向遍历所有组件

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 implements fmt.Stringer

func (*EntityBehavior) Terminated added in v0.3.33

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

Terminated 已停止

func (*EntityBehavior) TreeNodeState added in v0.4.25

func (entity *EntityBehavior) TreeNodeState() TreeNodeState

TreeNodeState 获取实体树节点状态

type EntityOptions

type EntityOptions struct {
	InstanceFace               iface.Face[Entity] // 实例,用于扩展实体能力
	Scope                      Scope              // 可访问作用域
	PersistId                  uid.Id             // 实体持久化Id
	ComponentAwakeOnFirstTouch bool               // 当实体组件首次被访问时,生命周期是否进入唤醒(Awake)
	ComponentUniqueID          bool               // 是否为实体组件分配唯一Id
	Meta                       meta.Meta          // Meta信息
}

EntityOptions 创建实体的所有选项

type EntityPT added in v0.3.55

type EntityPT interface {
	fmt.Stringer

	// Prototype 实体原型名称
	Prototype() string
	// InstanceRT 实体实例反射类型
	InstanceRT() reflect.Type
	// Scope 可访问作用域
	Scope() Scope
	// ComponentAwakeOnFirstTouch 当实体组件首次被访问时,生命周期是否进入唤醒(Awake)
	ComponentAwakeOnFirstTouch() bool
	// ComponentUniqueID 是否为实体组件分配唯一Id
	ComponentUniqueID() bool
	// Meta 原型Meta信息
	Meta() meta.Meta
	// CountComponents 组件数量
	CountComponents() int
	// GetComponent 获取组件
	GetComponent(idx int) BuiltinComponent
	// ListComponents 获取所有组件
	ListComponents() []BuiltinComponent
	// Construct 创建实体
	Construct(settings ...option.Setting[EntityOptions]) Entity
}

EntityPT 实体原型接口

type EntityState

type EntityState int8

EntityState 实体状态

const (
	EntityState_Birth     EntityState = iota // 出生
	EntityState_Enter                        // 进入容器
	EntityState_Awake                        // 唤醒
	EntityState_Start                        // 开始
	EntityState_Alive                        // 活跃
	EntityState_Leave                        // 离开容器
	EntityState_Shut                         // 结束
	EntityState_Death                        // 死亡
	EntityState_Destroyed                    // 已销毁
)

func (EntityState) String

func (i EntityState) String() string

type EventComponentDestroy added in v0.4.25

type EventComponentDestroy interface {
	OnComponentDestroy(comp Component)
}

EventComponentDestroy 事件:组件销毁 +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 事件:实体的组件管理器首次访问组件 +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_Global              // 全局可以访问
)

func (Scope) String

func (i Scope) String() string

type TreeNodeState added in v0.2.58

type TreeNodeState int8

TreeNodeState 实体树节点状态

const (
	TreeNodeState_Freedom   TreeNodeState = iota // 自由实体
	TreeNodeState_Attaching                      // 正在加入实体树
	TreeNodeState_Attached                       // 在实体树中
	TreeNodeState_Detaching                      // 正在脱离实体树
	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