Documentation
¶
Overview ¶
Package ec EC组件框架,用于组织代码架构。
Index ¶
- func GetComposite[T any](entity Entity) T
- func UnsafeComponent(comp Component) _UnsafeComponent
- func UnsafeEntity(entity Entity) _UnsafeEntity
- type Component
- type ComponentBehavior
- func (comp *ComponentBehavior) DestroySelf()
- func (comp *ComponentBehavior) GetEntity() Entity
- func (comp *ComponentBehavior) GetId() uid.Id
- func (comp *ComponentBehavior) GetName() string
- func (comp *ComponentBehavior) GetState() ComponentState
- func (comp *ComponentBehavior) ResolveContext() util.IfaceCache
- func (comp *ComponentBehavior) String() string
- type ComponentState
- type Entity
- type EntityBehavior
- func (entity *EntityBehavior) AddComponent(name string, component Component) error
- func (entity *EntityBehavior) AddComponents(name string, components []Component) error
- func (entity *EntityBehavior) CountComponents() int
- func (entity *EntityBehavior) DestroySelf()
- func (entity *EntityBehavior) EventCompMgrAddComponents() localevent.IEvent
- func (entity *EntityBehavior) EventCompMgrRemoveComponent() localevent.IEvent
- func (entity *EntityBehavior) GetComponent(name string) Component
- func (entity *EntityBehavior) GetComponentById(id uid.Id) Component
- func (entity *EntityBehavior) GetComponents(name string) []Component
- func (entity *EntityBehavior) GetId() uid.Id
- func (entity *EntityBehavior) GetParent() (Entity, bool)
- func (entity *EntityBehavior) GetState() EntityState
- func (entity *EntityBehavior) RangeComponents(fun func(component Component) bool)
- func (entity *EntityBehavior) RemoveComponent(name string)
- func (entity *EntityBehavior) RemoveComponentById(id uid.Id)
- func (entity *EntityBehavior) ResolveContext() util.IfaceCache
- func (entity *EntityBehavior) ReverseRangeComponents(fun func(component Component) bool)
- func (entity *EntityBehavior) String() string
- type EntityOption
- type EntityOptions
- type EntityState
- type EventCompMgrAddComponents
- type EventCompMgrRemoveComponent
- type EventComponentDestroySelf
- type EventEntityDestroySelf
- type WithOption
- func (WithOption) CompositeFace(face util.Face[Entity]) EntityOption
- func (WithOption) Default() EntityOption
- func (WithOption) FaceAnyAllocator(allocator container.Allocator[util.FaceAny]) EntityOption
- func (WithOption) GCCollector(collector container.GCCollector) EntityOption
- func (WithOption) HookAllocator(allocator container.Allocator[localevent.Hook]) EntityOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetComposite ¶ added in v0.1.12
GetComposite 获取实体的扩展者
func UnsafeComponent ¶
func UnsafeComponent(comp Component) _UnsafeComponent
func UnsafeEntity ¶
func UnsafeEntity(entity Entity) _UnsafeEntity
Types ¶
type Component ¶
type Component interface {
internal.ContextResolver
fmt.Stringer
// GetId 获取组件Id
GetId() uid.Id
// GetName 获取组件名称
GetName() string
// GetEntity 获取组件依附的实体
GetEntity() Entity
// GetState 获取组件状态
GetState() ComponentState
// DestroySelf 销毁自身
DestroySelf()
// contains filtered or unexported methods
}
Component 组件接口
type ComponentBehavior ¶
type ComponentBehavior struct {
// contains filtered or unexported fields
}
ComponentBehavior 组件行为,需要在开发新组件时,匿名嵌入至组件结构体中
func (*ComponentBehavior) DestroySelf ¶
func (comp *ComponentBehavior) DestroySelf()
DestroySelf 销毁自身
func (*ComponentBehavior) GetEntity ¶
func (comp *ComponentBehavior) GetEntity() Entity
GetEntity 获取组件依附的实体
func (*ComponentBehavior) GetId ¶ added in v0.1.18
func (comp *ComponentBehavior) GetId() uid.Id
GetId 获取组件Id
func (*ComponentBehavior) GetState ¶
func (comp *ComponentBehavior) GetState() ComponentState
GetState 获取组件状态
func (*ComponentBehavior) ResolveContext ¶ added in v0.1.13
func (comp *ComponentBehavior) ResolveContext() util.IfaceCache
ResolveContext 解析上下文
type ComponentState ¶
type ComponentState int8
ComponentState 组件状态
const ( ComponentState_Birth ComponentState = iota // 出生 ComponentState_Attach // 附着 ComponentState_Awake // 唤醒 ComponentState_Start // 开始 ComponentState_Living // 活跃 ComponentState_Detach // 脱离 ComponentState_Shut // 结束 ComponentState_Death // 死亡 )
func (ComponentState) String ¶
func (i ComponentState) String() string
type Entity ¶
type Entity interface {
internal.ContextResolver
fmt.Stringer
// GetId 获取实体Id
GetId() uid.Id
// GetParent 获取在运行时上下文的主EC树上的父实体
GetParent() (Entity, bool)
// GetState 获取实体状态
GetState() EntityState
// DestroySelf 销毁自身
DestroySelf()
// contains filtered or unexported methods
}
Entity 实体接口
func UnsafeNewEntity ¶
func UnsafeNewEntity(options EntityOptions) Entity
type EntityBehavior ¶
type EntityBehavior struct {
// contains filtered or unexported fields
}
EntityBehavior 实体行为,在需要扩展实体能力时,匿名嵌入至实体结构体中
func (*EntityBehavior) AddComponent ¶
func (entity *EntityBehavior) AddComponent(name string, component Component) error
AddComponent 添加单个组件,因为同个名称可以指向多个组件,所以名称指向的组件已存在时,不会返回错误
func (*EntityBehavior) AddComponents ¶
func (entity *EntityBehavior) AddComponents(name string, components []Component) error
AddComponents 使用同个名称添加多个组件,一般情况下名称指组件接口名称,也可以自定义名称
func (*EntityBehavior) CountComponents ¶ added in v0.1.21
func (entity *EntityBehavior) CountComponents() int
CountComponents 统计所有组件数量
func (*EntityBehavior) EventCompMgrAddComponents ¶
func (entity *EntityBehavior) EventCompMgrAddComponents() localevent.IEvent
EventCompMgrAddComponents 事件:实体的组件管理器加入一些组件
func (*EntityBehavior) EventCompMgrRemoveComponent ¶
func (entity *EntityBehavior) EventCompMgrRemoveComponent() localevent.IEvent
EventCompMgrRemoveComponent 事件:实体的组件管理器删除组件
func (*EntityBehavior) GetComponent ¶
func (entity *EntityBehavior) GetComponent(name string) Component
GetComponent 使用名称查询组件,一般情况下名称指组件接口名称,也可以自定义名称,同个名称指向多个组件时,返回首个组件
func (*EntityBehavior) GetComponentById ¶ added in v0.1.18
func (entity *EntityBehavior) GetComponentById(id uid.Id) Component
GetComponentById 使用组件Id查询组件
func (*EntityBehavior) GetComponents ¶
func (entity *EntityBehavior) GetComponents(name string) []Component
GetComponents 使用名称查询所有指向的组件
func (*EntityBehavior) GetId ¶ added in v0.1.18
func (entity *EntityBehavior) GetId() uid.Id
GetId 获取实体Id
func (*EntityBehavior) GetParent ¶
func (entity *EntityBehavior) GetParent() (Entity, bool)
GetParent 获取在运行时上下文的主EC树上的父实体
func (*EntityBehavior) GetState ¶
func (entity *EntityBehavior) GetState() EntityState
GetState 获取实体状态
func (*EntityBehavior) RangeComponents ¶
func (entity *EntityBehavior) RangeComponents(fun func(component Component) bool)
RangeComponents 遍历所有组件
func (*EntityBehavior) RemoveComponent ¶
func (entity *EntityBehavior) RemoveComponent(name string)
RemoveComponent 删除名称指向的组件,会删除同个名称指向的多个组件
func (*EntityBehavior) RemoveComponentById ¶ added in v0.1.18
func (entity *EntityBehavior) RemoveComponentById(id uid.Id)
RemoveComponentById 使用组件Id删除组件
func (*EntityBehavior) ResolveContext ¶ added in v0.1.13
func (entity *EntityBehavior) ResolveContext() util.IfaceCache
ResolveContext 解析上下文
func (*EntityBehavior) ReverseRangeComponents ¶ added in v0.1.21
func (entity *EntityBehavior) ReverseRangeComponents(fun func(component Component) bool)
ReverseRangeComponents 反向遍历所有组件
type EntityOptions ¶
type EntityOptions struct {
CompositeFace util.Face[Entity] // 扩展者,在扩展实体自身能力时使用
FaceAnyAllocator container.Allocator[util.FaceAny] // 自定义FaceAny内存分配器,用于提高性能,通常传入运行时上下文中的FaceAnyAllocator
HookAllocator container.Allocator[localevent.Hook] // 自定义Hook内存分配器,用于提高性能,通常传入运行时上下文中的HookAllocator
GCCollector container.GCCollector // 自定义GC收集器,通常不传或者传入运行时上下文
}
EntityOptions 创建实体的所有选项
type EntityState ¶
type EntityState int8
EntityState 实体状态
const ( EntityState_Birth EntityState = iota // 出生 EntityState_Entry // 进入 EntityState_Init // 初始化 EntityState_Inited // 开始 EntityState_Living // 活跃 EntityState_Leave // 离开 EntityState_Shut // 结束 EntityState_Death // 死亡 )
func (EntityState) String ¶
func (i EntityState) String() string
type EventCompMgrAddComponents ¶
type EventCompMgrAddComponents interface {
OnCompMgrAddComponents(entity Entity, components []Component)
}
EventCompMgrAddComponents [EmitUnExport] 事件:实体的组件管理器加入一些组件
type EventCompMgrRemoveComponent ¶
type EventCompMgrRemoveComponent interface {
OnCompMgrRemoveComponent(entity Entity, component Component)
}
EventCompMgrRemoveComponent [EmitUnExport] 事件:实体的组件管理器删除组件
type EventComponentDestroySelf ¶
type EventComponentDestroySelf interface {
OnComponentDestroySelf(comp Component)
}
EventComponentDestroySelf [EmitUnExport] 事件:组件销毁自身
type EventEntityDestroySelf ¶
type EventEntityDestroySelf interface {
OnEntityDestroySelf(entity Entity)
}
EventEntityDestroySelf [EmitUnExport] 事件:实体销毁自身
type WithOption ¶ added in v0.1.18
type WithOption struct{}
WithOption 所有选项设置器
func (WithOption) CompositeFace ¶ added in v0.1.18
func (WithOption) CompositeFace(face util.Face[Entity]) EntityOption
CompositeFace 扩展者,在扩展实体自身能力时使用
func (WithOption) FaceAnyAllocator ¶ added in v0.1.18
func (WithOption) FaceAnyAllocator(allocator container.Allocator[util.FaceAny]) EntityOption
FaceAnyAllocator 自定义FaceAny内存分配器,用于提高性能,通常传入运行时上下文中的FaceAnyAllocator
func (WithOption) GCCollector ¶ added in v0.1.18
func (WithOption) GCCollector(collector container.GCCollector) EntityOption
GCCollector 自定义GC收集器,通常不传或者传入运行时上下文
func (WithOption) HookAllocator ¶ added in v0.1.18
func (WithOption) HookAllocator(allocator container.Allocator[localevent.Hook]) EntityOption
HookAllocator 自定义Hook内存分配器,用于提高性能,通常传入运行时上下文中的HookAllocator
Source Files
¶
- component.go
- component_event.go
- component_event_emit_code.go
- component_state.go
- componentstate_string.go
- doc.go
- entity.go
- entity_componentmgr.go
- entity_componentmgr_event.go
- entity_componentmgr_event_emit_code.go
- entity_conversions.go
- entity_event.go
- entity_event_emit_code.go
- entity_options.go
- entity_state.go
- entitystate_string.go
- unsafe_component.go
- unsafe_entity.go