ec

package
v0.1.21 Latest Latest
Warning

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

Go to latest
Published: May 29, 2023 License: LGPL-2.1 Imports: 8 Imported by: 0

Documentation

Overview

Package ec EC组件框架,用于组织代码架构。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetComposite added in v0.1.12

func GetComposite[T any](entity Entity) T

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) GetName

func (comp *ComponentBehavior) GetName() string

GetName 获取组件名称

func (*ComponentBehavior) GetState

func (comp *ComponentBehavior) GetState() ComponentState

GetState 获取组件状态

func (*ComponentBehavior) ResolveContext added in v0.1.13

func (comp *ComponentBehavior) ResolveContext() util.IfaceCache

ResolveContext 解析上下文

func (*ComponentBehavior) String

func (comp *ComponentBehavior) String() string

String 字符串化

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 NewEntity

func NewEntity(options ...EntityOption) Entity

NewEntity 创建实体

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) DestroySelf

func (entity *EntityBehavior) DestroySelf()

DestroySelf 销毁自身

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

func (*EntityBehavior) String

func (entity *EntityBehavior) String() string

String 字符串化

type EntityOption

type EntityOption func(o *EntityOptions)

EntityOption 创建实体的选项设置器

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) Default added in v0.1.18

func (WithOption) Default() EntityOption

Default 默认值

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

Jump to

Keyboard shortcuts

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