pt

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: 13 Imported by: 3

Documentation

Overview

Package pt 实体与组件原型,用于创建实体。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrPt = fmt.Errorf("%w: pt", exception.ErrCore) // 原型错误
)

Functions

func For

func For(provider EntityPTProvider, prototype string) ec.EntityPT

For 查询实体原型

Types

type ComponentDescriptor added in v0.4.25

type ComponentDescriptor struct {
	Instance  any       // 组件实例(必填)
	Name      string    // 组件名称
	Removable bool      // 是否可以删除
	Meta      meta.Meta // 原型Meta信息
}

ComponentDescriptor 组件原型描述

func NewComponentDescriptor added in v0.4.25

func NewComponentDescriptor(instance any) *ComponentDescriptor

NewComponentDescriptor 创建组件原型描述,用于注册实体原型的组件

func (*ComponentDescriptor) AssignMeta added in v0.4.25

func (descr *ComponentDescriptor) AssignMeta(m meta.Meta) *ComponentDescriptor

func (*ComponentDescriptor) MergeMeta added in v0.4.25

func (descr *ComponentDescriptor) MergeMeta(dict map[string]any) *ComponentDescriptor

func (*ComponentDescriptor) MergeMetaIfAbsent added in v0.4.25

func (descr *ComponentDescriptor) MergeMetaIfAbsent(dict map[string]any) *ComponentDescriptor

func (*ComponentDescriptor) SetMeta added in v0.4.25

func (descr *ComponentDescriptor) SetMeta(dict map[string]any) *ComponentDescriptor

func (*ComponentDescriptor) SetName added in v0.4.25

func (descr *ComponentDescriptor) SetName(name string) *ComponentDescriptor

func (*ComponentDescriptor) SetRemovable added in v0.4.25

func (descr *ComponentDescriptor) SetRemovable(b bool) *ComponentDescriptor

type ComponentLib

type ComponentLib interface {
	// Declare 声明组件原型
	Declare(comp any) ec.ComponentPT
	// Get 查询组件原型
	Get(prototype string) (ec.ComponentPT, bool)
	// List 获取所有组件原型
	List() []ec.ComponentPT
	// Watch 监听组件声明
	Watch(ctx context.Context) <-chan ec.ComponentPT
}

ComponentLib 组件原型库

func DefaultComponentLib

func DefaultComponentLib() ComponentLib

DefaultComponentLib 默认组件库

func NewComponentLib

func NewComponentLib() ComponentLib

NewComponentLib 创建组件原型库

type EntityDescriptor added in v0.4.25

type EntityDescriptor struct {
	Prototype                  string    // 实体原型名称(必填)
	Instance                   any       // 实体实例
	Scope                      ec.Scope  // 可访问作用域
	ComponentAwakeOnFirstTouch bool      // 当实体组件首次被访问时,生命周期是否进入唤醒(Awake)
	ComponentUniqueID          bool      // 是否为实体组件分配唯一Id
	Meta                       meta.Meta // 原型Meta信息
}

EntityDescriptor 实体原型描述

func NewEntityDescriptor added in v0.4.25

func NewEntityDescriptor(prototype string) *EntityDescriptor

NewEntityDescriptor 创建实体原型描述,用于注册实体原型

func (*EntityDescriptor) AssignMeta added in v0.4.25

func (descr *EntityDescriptor) AssignMeta(m meta.Meta) *EntityDescriptor

func (*EntityDescriptor) MergeIfAbsent added in v0.4.25

func (descr *EntityDescriptor) MergeIfAbsent(dict map[string]any) *EntityDescriptor

func (*EntityDescriptor) MergeMeta added in v0.4.25

func (descr *EntityDescriptor) MergeMeta(dict map[string]any) *EntityDescriptor

func (*EntityDescriptor) SetComponentAwakeOnFirstTouch added in v0.4.25

func (descr *EntityDescriptor) SetComponentAwakeOnFirstTouch(b bool) *EntityDescriptor

func (*EntityDescriptor) SetComponentUniqueID added in v0.4.25

func (descr *EntityDescriptor) SetComponentUniqueID(b bool) *EntityDescriptor

func (*EntityDescriptor) SetInstance added in v0.4.25

func (descr *EntityDescriptor) SetInstance(instance any) *EntityDescriptor

func (*EntityDescriptor) SetMeta added in v0.4.25

func (descr *EntityDescriptor) SetMeta(dict map[string]any) *EntityDescriptor

func (*EntityDescriptor) SetScope added in v0.4.25

func (descr *EntityDescriptor) SetScope(scope ec.Scope) *EntityDescriptor

type EntityLib

type EntityLib interface {
	EntityPTProvider

	// ComponentLib 获取组件原型库
	ComponentLib() ComponentLib
	// Declare 声明实体原型
	Declare(prototype any, comps ...any) ec.EntityPT
	// Get 获取实体原型
	Get(prototype string) (ec.EntityPT, bool)
	// List 获取所有实体原型
	List() []ec.EntityPT
	// Watch 监听实体声明
	Watch(ctx context.Context) <-chan ec.EntityPT
}

EntityLib 实体原型库

func NewEntityLib

func NewEntityLib(compLib ComponentLib) EntityLib

NewEntityLib 创建实体原型库

type EntityPTProvider

type EntityPTProvider interface {
	// EntityLib 获取实体原型库
	EntityLib() EntityLib
}

EntityPTProvider 实体原型提供者

Jump to

Keyboard shortcuts

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