runtime

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: 19 Imported by: 21

Documentation

Overview

Package runtime 定义运行时级上下文。

Package runtime 表示 Actor 风格的单运行时执行作用域。一个运行时拥有自己的任务 队列、可选帧循环、本地实体管理器、实体树、运行事件和 runtime add-in。

runtime add-in 由 runtime 包内的管理器维护,可在运行协程中安装和卸载。

所有会直接读写实体或组件状态的逻辑,通常都应回到所属 runtime 中执行。需要结果 时使用 Context.Submit,需要无 Future 投递时使用 Context.Post;后台 Future 完成后, 使用根包 core.ContinueOn 把续体调度回运行协程。Delegate 与 DelegateVoid 变体仍然 可用。

Runtime Context 会拒绝对 pending Future 的阻塞等待。同一执行器产生的 Future 返回 ErrRuntimeSelfWait,其他 pending Future 返回 ErrBlockingWaitInRuntime。应使用 ContinueOn 表达非阻塞的 Actor 续体。

用 NewContext 创建上下文后,再交给 core.NewRuntime 绑定和运行。实体实例通常在 runtime.RunningEvent_Started 阶段通过 core.BuildEntity 创建。

Index

Constants

This section is empty.

Variables

View Source
var (
	EventInstallAddInId      = event.DeclareEventIdT[addInManagerEventTab](0)
	EventUninstallAddInId    = event.DeclareEventIdT[addInManagerEventTab](1)
	EventAddInStateChangedId = event.DeclareEventIdT[addInManagerEventTab](2)
)
View Source
var (
	EventEntityManagerAddEntityId                    = event.DeclareEventIdT[entityManagerEventTab](0)
	EventEntityManagerRemoveEntityId                 = event.DeclareEventIdT[entityManagerEventTab](1)
	EventEntityManagerEntityAddComponentsId          = event.DeclareEventIdT[entityManagerEventTab](2)
	EventEntityManagerEntityRemoveComponentId        = event.DeclareEventIdT[entityManagerEventTab](3)
	EventEntityManagerEntityComponentEnableChangedId = event.DeclareEventIdT[entityManagerEventTab](4)
	EventEntityManagerEntityFirstTouchComponentId    = event.DeclareEventIdT[entityManagerEventTab](5)
)
View Source
var (
	EventEntityTreeAddNodeId    = event.DeclareEventIdT[entityTreeEventTab](0)
	EventEntityTreeRemoveNodeId = event.DeclareEventIdT[entityTreeEventTab](1)
	EventEntityTreeMoveNodeId   = event.DeclareEventIdT[entityTreeEventTab](2)
)
View Source
var (
	ErrContext               = fmt.Errorf("%w: runtime-context", exception.ErrCore)         // 运行时上下文错误。
	ErrEntityTree            = fmt.Errorf("%w: entity-tree", ErrContext)                    // 实体树错误。
	ErrEntityManager         = fmt.Errorf("%w: entity-manager", ErrContext)                 // 本地实体管理器错误。
	ErrFrame                 = fmt.Errorf("%w: frame", ErrContext)                          // 帧循环错误。
	ErrRuntimeSelfWait       = fmt.Errorf("%w: runtime waits for its own task", ErrContext) // Runtime 等待自身队列结果。
	ErrBlockingWaitInRuntime = fmt.Errorf("%w: blocking wait in runtime", ErrContext)       // Runtime 内阻塞等待 pending Future。
)
View Source
var (
	EventContextRunningEventId = event.DeclareEventIdT[contextRunningEventTab](0)
)
View Source
var (
	// ForestNodeId 是所有根实体共用的虚拟父节点 ID;它是保留哨兵,不应修改。
	ForestNodeId = uid.From("d5rh7sbr1n96c63fs3vg")
)
View Source
var With _ContextOption

With 提供 Runtime 上下文选项构造器。

Functions

func BindEventAddInStateChanged added in v0.4.27

func BindEventAddInStateChanged(auto iAutoEventAddInStateChanged, subscriber EventAddInStateChanged, priority ...int32) event.Handle

func BindEventContextRunningEvent added in v0.4.25

func BindEventContextRunningEvent(auto iAutoEventContextRunningEvent, subscriber EventContextRunningEvent, priority ...int32) event.Handle

func BindEventEntityManagerAddEntity added in v0.3.66

func BindEventEntityManagerAddEntity(auto iAutoEventEntityManagerAddEntity, subscriber EventEntityManagerAddEntity, priority ...int32) event.Handle

func BindEventEntityManagerEntityAddComponents added in v0.3.66

func BindEventEntityManagerEntityAddComponents(auto iAutoEventEntityManagerEntityAddComponents, subscriber EventEntityManagerEntityAddComponents, priority ...int32) event.Handle

func BindEventEntityManagerEntityComponentEnableChanged added in v0.4.25

func BindEventEntityManagerEntityComponentEnableChanged(auto iAutoEventEntityManagerEntityComponentEnableChanged, subscriber EventEntityManagerEntityComponentEnableChanged, priority ...int32) event.Handle

func BindEventEntityManagerEntityFirstTouchComponent added in v0.3.66

func BindEventEntityManagerEntityFirstTouchComponent(auto iAutoEventEntityManagerEntityFirstTouchComponent, subscriber EventEntityManagerEntityFirstTouchComponent, priority ...int32) event.Handle

func BindEventEntityManagerEntityRemoveComponent added in v0.3.66

func BindEventEntityManagerEntityRemoveComponent(auto iAutoEventEntityManagerEntityRemoveComponent, subscriber EventEntityManagerEntityRemoveComponent, priority ...int32) event.Handle

func BindEventEntityManagerRemoveEntity added in v0.3.66

func BindEventEntityManagerRemoveEntity(auto iAutoEventEntityManagerRemoveEntity, subscriber EventEntityManagerRemoveEntity, priority ...int32) event.Handle

func BindEventEntityTreeAddNode added in v0.2.58

func BindEventEntityTreeAddNode(auto iAutoEventEntityTreeAddNode, subscriber EventEntityTreeAddNode, priority ...int32) event.Handle

func BindEventEntityTreeMoveNode added in v0.4.25

func BindEventEntityTreeMoveNode(auto iAutoEventEntityTreeMoveNode, subscriber EventEntityTreeMoveNode, priority ...int32) event.Handle

func BindEventEntityTreeRemoveNode added in v0.2.58

func BindEventEntityTreeRemoveNode(auto iAutoEventEntityTreeRemoveNode, subscriber EventEntityTreeRemoveNode, priority ...int32) event.Handle

func BindEventInstallAddIn added in v0.4.27

func BindEventInstallAddIn(auto iAutoEventInstallAddIn, subscriber EventInstallAddIn, priority ...int32) event.Handle

func BindEventUninstallAddIn added in v0.4.27

func BindEventUninstallAddIn(auto iAutoEventUninstallAddIn, subscriber EventUninstallAddIn, priority ...int32) event.Handle

func UnsafeAddInManager deprecated added in v0.4.27

func UnsafeAddInManager(mgr AddInManager) _UnsafeAddInManager

Deprecated: UnsafeAddInManager 暴露运行时插件管理器的内部列表,仅供 core 使用。

func UnsafeAddInStatus deprecated added in v0.4.27

func UnsafeAddInStatus(status AddInStatus) _UnsafeAddInStatus

Deprecated: UnsafeAddInStatus 暴露运行时插件状态的生命周期操作,仅供 core 使用。

func UnsafeConcurrentContext deprecated added in v0.3.21

func UnsafeConcurrentContext(context ConcurrentContext) _UnsafeConcurrentContext

Deprecated: UnsafeConcurrentContext 暴露并发上下文的内部能力,仅供框架集成代码使用。

func UnsafeContext deprecated

func UnsafeContext(ctx Context) _UnsafeContext

Deprecated: UnsafeContext 暴露运行时上下文内部能力,仅供框架集成代码使用。

Types

type AddInManager added in v0.4.27

type AddInManager interface {
	extension.AddInManager

	IAddInManagerEventTab
	// contains filtered or unexported methods
}

AddInManager 管理可在运行时热插拔的插件及其生命周期事件。

管理器按安装顺序保存插件且不提供并发保护;所有操作应串行执行,通常由所属运行时 goroutine 调用。运行时启动前安装的插件保持 Loaded,启动后安装的插件会由 core 同步激活;卸载和停服时按相反顺序停用。

func NewAddInManager added in v0.4.27

func NewAddInManager() AddInManager

NewAddInManager 创建一个空的运行时插件管理器。

type AddInStatus added in v0.4.27

type AddInStatus interface {
	extension.AddInStatus
	// contains filtered or unexported methods
}

AddInStatus 描述可热插拔运行时插件的状态。

type Callee

type Callee interface {
	PushSubmit(fun generic.FuncVar1[Context, any, async.Result], args ...any) async.Future
	PushSubmitDelegate(fun generic.DelegateVar1[Context, any, async.Result], args ...any) async.Future
	PushSubmitVoid(fun generic.ActionVar1[Context, any], args ...any) async.Future
	PushSubmitDelegateVoid(fun generic.DelegateVoidVar1[Context, any], args ...any) async.Future
	PushPost(fun generic.ActionVar1[Context, any], args ...any) error
	PushPostDelegate(fun generic.DelegateVoidVar1[Context, any], args ...any) error
}

Callee 接收 Caller 的任务并写入实际 Runtime 队列。

type Caller

type Caller interface {
	Submit(fun generic.FuncVar1[Context, any, async.Result], args ...any) async.Future
	SubmitDelegate(fun generic.DelegateVar1[Context, any, async.Result], args ...any) async.Future
	SubmitVoid(fun generic.ActionVar1[Context, any], args ...any) async.Future
	SubmitDelegateVoid(fun generic.DelegateVoidVar1[Context, any], args ...any) async.Future
	Post(fun generic.ActionVar1[Context, any], args ...any) error
	PostDelegate(fun generic.DelegateVoidVar1[Context, any], args ...any) error
}

Caller 将任务投递到 Runtime Actor 邮箱。

Submit 系列返回任务执行结果;Post 系列只报告是否成功入队,不分配 Future。 所有回调都由 Runtime goroutine 串行执行,即使调用者已经位于同一 Runtime 中也 不会内联执行。

type ConcurrentContext

type ConcurrentContext interface {
	corectx.Context
	corectx.ConcurrentContextProvider
	Caller
	fmt.Stringer

	// Name 返回运行时名称。
	Name() string
	// Id 返回运行时的持久化 ID。
	Id() uid.Id
	// ExecutorID 返回进程内 Runtime 执行器 ID。
	ExecutorID() async.ExecutorID
	// BlockedFutureID 返回当前阻塞等待的 Future ID。
	BlockedFutureID() uint64
	// LastWaitRejectID 返回最近一次被 Runtime 等待规则拒绝的 Future ID。
	LastWaitRejectID() uint64
	// contains filtered or unexported methods
}

ConcurrentContext 暴露可跨 goroutine 安全调用的运行时能力。 需要读写实体或其他运行时局部状态时,应通过 Caller 调度回运行时 goroutine。

func Concurrent

Concurrent 从 provider 获取可跨 goroutine 使用的运行时上下文;provider 为 nil 时会 panic。

type ConcurrentContextProvider

type ConcurrentContextProvider = corectx.ConcurrentContextProvider

ConcurrentContextProvider 提供可跨 goroutine 使用的运行时上下文缓存。

type Context

type Context interface {
	ConcurrentContext
	corectx.CurrentContextProvider
	async.WaitGuard
	reinterpret.InstanceProvider
	extension.AddInProvider
	GCCollector

	// Name 返回运行时名称。
	Name() string
	// Id 返回运行时的持久化 ID。
	Id() uid.Id
	// Reflected 返回实际运行时上下文实例的反射值。
	Reflected() reflect.Value
	// Frame 返回帧统计接口;未启用帧循环时返回 nil。
	Frame() Frame
	// EntityManager 返回当前运行时的本地实体管理器。
	EntityManager() EntityManager
	// EntityTree 返回当前运行时的实体树。
	EntityTree() EntityTree
	// Managed 返回随运行时上下文统一解绑的事件句柄集合。
	Managed() *event.ManagedHandles

	IContextRunningEventTab
	// contains filtered or unexported methods
}

Context 表示单个 Actor 风格运行时的当前执行作用域。 实体、实体树、帧和插件的直接操作应在所属运行时 goroutine 中进行。

func Current

func Current(provider corectx.CurrentContextProvider) Context

Current 从 provider 获取当前运行时上下文;provider 为 nil 时会 panic。

func NewContext

func NewContext(svcCtx service.Context, settings ...option.Setting[ContextOptions]) Context

NewContext 创建隶属于 svcCtx 的运行时上下文。 未提供父上下文、持久化 ID 或插件管理器时会自动创建默认值。

func UnsafeNewContext deprecated

func UnsafeNewContext(svcCtx service.Context, options ContextOptions) Context

Deprecated: UnsafeNewContext 仅供框架内部使用,请改用 NewContext。

type ContextBehavior

type ContextBehavior struct {
	corectx.ContextBehavior
	// contains filtered or unexported fields
}

ContextBehavior 提供 Context 的默认实现。 扩展运行时上下文时应匿名嵌入该类型,并通过 InstanceFace 传入扩展实例。

func (*ContextBehavior) AddInManager added in v0.4.25

func (ctx *ContextBehavior) AddInManager() extension.AddInManager

AddInManager 返回运行时插件管理器的公共接口。

func (*ContextBehavior) AfterFutureWait added in v0.4.27

func (ctx *ContextBehavior) AfterFutureWait(futureID uint64)

AfterFutureWait 清除诊断中的等待 Future ID。

func (*ContextBehavior) BeforeFutureWait added in v0.4.27

func (ctx *ContextBehavior) BeforeFutureWait(futureID uint64, completionExecutorID async.ExecutorID) error

BeforeFutureWait 实现 async.WaitGuard。Runtime Context 只允许读取已经完成的 Future;对 pending Future 的等待会破坏 Actor 串行执行语义。

func (*ContextBehavior) BlockedFutureID added in v0.4.27

func (ctx *ContextBehavior) BlockedFutureID() uint64

BlockedFutureID 返回当前阻塞等待的 Future ID。

func (*ContextBehavior) CollectGC

func (ctx *ContextBehavior) CollectGC(gc GC)

CollectGC 将需要清理的对象加入本轮运行时 GC 队列。

func (*ContextBehavior) ConcurrentContextCache added in v0.4.27

func (ctx *ContextBehavior) ConcurrentContextCache() iface.Cache

ConcurrentContextCache 返回可跨 goroutine 使用的上下文接口缓存。

func (*ContextBehavior) CurrentContextCache added in v0.4.27

func (ctx *ContextBehavior) CurrentContextCache() iface.Cache

CurrentContextCache 返回仅供运行时 goroutine 使用的上下文接口缓存。

func (*ContextBehavior) EntityManager added in v0.4.25

func (ctx *ContextBehavior) EntityManager() EntityManager

EntityManager 返回当前运行时的本地实体管理器。

func (*ContextBehavior) EntityTree added in v0.4.25

func (ctx *ContextBehavior) EntityTree() EntityTree

EntityTree 返回当前运行时的实体树。

func (*ContextBehavior) EventContextRunningEvent added in v0.4.25

func (ctx *ContextBehavior) EventContextRunningEvent() event.IEvent

EventContextRunningEvent 返回运行时运行事件。

func (*ContextBehavior) ExecutorID added in v0.4.27

func (ctx *ContextBehavior) ExecutorID() async.ExecutorID

ExecutorID 返回用于 Future 完成归属和 Runtime 自等待检测的进程内执行器 ID。

func (*ContextBehavior) Frame added in v0.4.25

func (ctx *ContextBehavior) Frame() Frame

Frame 返回帧统计接口;未启用帧循环时返回 nil。

func (*ContextBehavior) Id added in v0.4.25

func (ctx *ContextBehavior) Id() uid.Id

Id 返回运行时的持久化 ID。

func (*ContextBehavior) InstanceFaceCache added in v0.4.25

func (ctx *ContextBehavior) InstanceFaceCache() iface.Cache

InstanceFaceCache 返回上下文实例的接口缓存,用于 reinterpret.Cast。

func (*ContextBehavior) LastWaitRejectID added in v0.4.27

func (ctx *ContextBehavior) LastWaitRejectID() uint64

LastWaitRejectID 返回最近一次被 Runtime 等待规则拒绝的 Future ID。

func (*ContextBehavior) Managed added in v0.4.25

func (ctx *ContextBehavior) Managed() *event.ManagedHandles

Managed 返回随运行时上下文统一解绑的事件句柄集合。

func (*ContextBehavior) Name added in v0.4.25

func (ctx *ContextBehavior) Name() string

Name 返回运行时名称。

func (*ContextBehavior) Post added in v0.4.27

func (ctx *ContextBehavior) Post(fun generic.ActionVar1[Context, any], args ...any) error

func (*ContextBehavior) PostDelegate added in v0.4.27

func (ctx *ContextBehavior) PostDelegate(fun generic.DelegateVoidVar1[Context, any], args ...any) error

func (*ContextBehavior) Reflected added in v0.4.25

func (ctx *ContextBehavior) Reflected() reflect.Value

Reflected 返回实际运行时上下文实例的反射值。

func (*ContextBehavior) String

func (ctx *ContextBehavior) String() string

String 实现 fmt.Stringer,返回包含运行时 ID 和名称的 JSON 文本。

func (*ContextBehavior) Submit added in v0.4.27

func (ctx *ContextBehavior) Submit(fun generic.FuncVar1[Context, any, async.Result], args ...any) async.Future

func (*ContextBehavior) SubmitDelegate added in v0.4.27

func (ctx *ContextBehavior) SubmitDelegate(fun generic.DelegateVar1[Context, any, async.Result], args ...any) async.Future

func (*ContextBehavior) SubmitDelegateVoid added in v0.4.27

func (ctx *ContextBehavior) SubmitDelegateVoid(fun generic.DelegateVoidVar1[Context, any], args ...any) async.Future

func (*ContextBehavior) SubmitVoid added in v0.4.27

func (ctx *ContextBehavior) SubmitVoid(fun generic.ActionVar1[Context, any], args ...any) async.Future

type ContextOptions

type ContextOptions struct {
	InstanceFace   iface.Face[Context] // 自定义上下文实例及其接口缓存。
	Context        context.Context     // 父上下文;nil 时使用所属服务上下文。
	AutoRecover    bool                // 回调发生 panic 时是否自动恢复。
	ReportError    chan error          // 自动恢复后接收 panic 错误的通道。
	Name           string              // 运行时名称。
	PersistId      uid.Id              // 运行时持久化 ID;为 Nil 时自动生成。
	AddInManager   AddInManager        // 运行时插件管理器;nil 时创建默认管理器。
	RunningEventCB RunningEventCB      // 运行时运行事件回调。
}

ContextOptions 定义创建运行时上下文时使用的选项。

type CurrentContextProvider

type CurrentContextProvider = corectx.CurrentContextProvider

CurrentContextProvider 提供仅限所属运行时 goroutine 使用的上下文缓存。

type EntityManager added in v0.3.66

type EntityManager interface {
	corectx.CurrentContextProvider

	// AddEntity 接管 Born 状态的实体;运行时已启动时会同步推进其生命周期。
	AddEntity(entity ec.Entity) error
	// RemoveEntity 按 ID 请求销毁实体;实体不存在时不执行任何操作。
	RemoveEntity(id uid.Id)
	// GetEntity 按 ID 查询本地实体。
	GetEntity(id uid.Id) (ec.Entity, bool)
	// RangeEntities 按加入顺序遍历实体,回调返回 false 时停止。
	RangeEntities(fun generic.Func1[ec.Entity, bool])
	// EachEntities 按加入顺序遍历全部实体。
	EachEntities(fun generic.Action1[ec.Entity])
	// ReversedRangeEntities 按加入顺序逆向遍历实体,回调返回 false 时停止。
	ReversedRangeEntities(fun generic.Func1[ec.Entity, bool])
	// ReversedEachEntities 按加入顺序逆向遍历全部实体。
	ReversedEachEntities(fun generic.Action1[ec.Entity])
	// FilterEntities 按加入顺序返回符合条件的实体。
	FilterEntities(fun generic.Func1[ec.Entity, bool]) []ec.Entity
	// ListEntities 按加入顺序返回实体切片副本。
	ListEntities() []ec.Entity
	// CountEntities 返回当前实体数。
	CountEntities() int

	IEntityManagerEventTab
}

EntityManager 管理当前运行时拥有的实体及其加入顺序。 该接口不提供并发保护,应在所属运行时 goroutine 中使用。

type EntityTree added in v0.2.58

type EntityTree interface {
	corectx.CurrentContextProvider

	// MakeRoot 将自由实体作为根节点加入实体树。
	MakeRoot(entityId uid.Id) error
	// AddChild 将自由实体 childId 挂到 parentId 下。
	AddChild(parentId, childId uid.Id) error
	// RemoveNode 按后序递归移除整个子树的树关系;实体本身不会被销毁。
	RemoveNode(childId uid.Id) error
	// DetachNode 将节点从当前父实体移到虚拟森林节点下,使其成为根节点。
	DetachNode(childId uid.Id) error
	// MoveNode 将节点移动到新的父节点下。
	MoveNode(childId, parentId uid.Id) error
	// IsFree 报告实体是否尚未加入实体树。
	IsFree(entityId uid.Id) (bool, error)
	// IsRoot 报告实体是否直接挂在虚拟森林节点下。
	IsRoot(entityId uid.Id) (bool, error)
	// IsLeaf 报告实体是否没有子节点。
	IsLeaf(entityId uid.Id) (bool, error)
	// GetParent 返回父实体;根节点没有实体父节点,因此返回错误。
	GetParent(childId uid.Id) (ec.Entity, error)
	// RangeChildren 按加入顺序遍历直接子节点,回调返回 false 时停止。
	RangeChildren(parentId uid.Id, fun generic.Func1[ec.Entity, bool]) error
	// EachChildren 按加入顺序遍历全部直接子节点。
	EachChildren(parentId uid.Id, fun generic.Action1[ec.Entity]) error
	// ReversedRangeChildren 按加入顺序逆向遍历直接子节点,回调返回 false 时停止。
	ReversedRangeChildren(parentId uid.Id, fun generic.Func1[ec.Entity, bool]) error
	// ReversedEachChildren 按加入顺序逆向遍历全部直接子节点。
	ReversedEachChildren(parentId uid.Id, fun generic.Action1[ec.Entity]) error
	// FilterChildren 按加入顺序返回符合条件的直接子节点。
	FilterChildren(parentId uid.Id, fun generic.Func1[ec.Entity, bool]) ([]ec.Entity, error)
	// ListChildren 按加入顺序返回直接子节点切片。
	ListChildren(parentId uid.Id) ([]ec.Entity, error)
	// CountChildren 返回直接子节点数。
	CountChildren(parentId uid.Id) (int, error)

	IEntityTreeEventTab
}

EntityTree 管理当前运行时实体之间的父子关系。 树操作不提供并发保护,应在所属运行时 goroutine 中执行。

type EventAddInStateChanged added in v0.4.27

type EventAddInStateChanged interface {
	OnAddInStateChanged(status AddInStatus, state extension.AddInState)
}

EventAddInStateChanged 在插件状态完成变更后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventAddInStateChangedHandler added in v0.4.27

type EventAddInStateChangedHandler func(status AddInStatus, state extension.AddInState)

func HandleEventAddInStateChanged added in v0.4.27

func HandleEventAddInStateChanged(fun func(status AddInStatus, state extension.AddInState)) EventAddInStateChangedHandler

func (EventAddInStateChangedHandler) OnAddInStateChanged added in v0.4.27

func (h EventAddInStateChangedHandler) OnAddInStateChanged(status AddInStatus, state extension.AddInState)

type EventContextRunningEvent added in v0.4.25

type EventContextRunningEvent interface {
	OnContextRunningEvent(ctx Context, runningEvent RunningEvent, args ...any)
}

EventContextRunningEvent 在 Runtime 上下文进入各运行阶段时同步派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventContextRunningEventHandler added in v0.4.25

type EventContextRunningEventHandler func(ctx Context, runningEvent RunningEvent, args ...any)

func HandleEventContextRunningEvent added in v0.4.25

func HandleEventContextRunningEvent(fun func(ctx Context, runningEvent RunningEvent, args ...any)) EventContextRunningEventHandler

func (EventContextRunningEventHandler) OnContextRunningEvent added in v0.4.25

func (h EventContextRunningEventHandler) OnContextRunningEvent(ctx Context, runningEvent RunningEvent, args ...any)

type EventEntityManagerAddEntity added in v0.3.66

type EventEntityManagerAddEntity interface {
	OnEntityManagerAddEntity(entityManager EntityManager, entity ec.Entity)
}

EventEntityManagerAddEntity 在实体加入本地管理器后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerAddEntityHandler added in v0.3.66

type EventEntityManagerAddEntityHandler func(entityManager EntityManager, entity ec.Entity)

func HandleEventEntityManagerAddEntity added in v0.3.66

func HandleEventEntityManagerAddEntity(fun func(entityManager EntityManager, entity ec.Entity)) EventEntityManagerAddEntityHandler

func (EventEntityManagerAddEntityHandler) OnEntityManagerAddEntity added in v0.3.66

func (h EventEntityManagerAddEntityHandler) OnEntityManagerAddEntity(entityManager EntityManager, entity ec.Entity)

type EventEntityManagerEntityAddComponents added in v0.3.66

type EventEntityManagerEntityAddComponents interface {
	OnEntityManagerEntityAddComponents(entityManager EntityManager, entity ec.Entity, components []ec.Component)
}

EventEntityManagerEntityAddComponents 在受管实体添加组件后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerEntityAddComponentsHandler added in v0.3.66

type EventEntityManagerEntityAddComponentsHandler func(entityManager EntityManager, entity ec.Entity, components []ec.Component)

func HandleEventEntityManagerEntityAddComponents added in v0.3.66

func HandleEventEntityManagerEntityAddComponents(fun func(entityManager EntityManager, entity ec.Entity, components []ec.Component)) EventEntityManagerEntityAddComponentsHandler

func (EventEntityManagerEntityAddComponentsHandler) OnEntityManagerEntityAddComponents added in v0.3.66

func (h EventEntityManagerEntityAddComponentsHandler) OnEntityManagerEntityAddComponents(entityManager EntityManager, entity ec.Entity, components []ec.Component)

type EventEntityManagerEntityComponentEnableChanged added in v0.4.25

type EventEntityManagerEntityComponentEnableChanged interface {
	OnEntityManagerEntityComponentEnableChanged(entityManager EntityManager, entity ec.Entity, component ec.Component, enable bool)
}

EventEntityManagerEntityComponentEnableChanged 在受管实体的组件启用状态改变后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerEntityComponentEnableChangedHandler added in v0.4.25

type EventEntityManagerEntityComponentEnableChangedHandler func(entityManager EntityManager, entity ec.Entity, component ec.Component, enable bool)

func HandleEventEntityManagerEntityComponentEnableChanged added in v0.4.25

func HandleEventEntityManagerEntityComponentEnableChanged(fun func(entityManager EntityManager, entity ec.Entity, component ec.Component, enable bool)) EventEntityManagerEntityComponentEnableChangedHandler

func (EventEntityManagerEntityComponentEnableChangedHandler) OnEntityManagerEntityComponentEnableChanged added in v0.4.25

func (h EventEntityManagerEntityComponentEnableChangedHandler) OnEntityManagerEntityComponentEnableChanged(entityManager EntityManager, entity ec.Entity, component ec.Component, enable bool)

type EventEntityManagerEntityFirstTouchComponent added in v0.3.66

type EventEntityManagerEntityFirstTouchComponent interface {
	OnEntityManagerEntityFirstTouchComponent(entityManager EntityManager, entity ec.Entity, component ec.Component)
}

EventEntityManagerEntityFirstTouchComponent 在受管实体首次访问延迟唤醒组件时派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerEntityFirstTouchComponentHandler added in v0.3.66

type EventEntityManagerEntityFirstTouchComponentHandler func(entityManager EntityManager, entity ec.Entity, component ec.Component)

func HandleEventEntityManagerEntityFirstTouchComponent added in v0.3.66

func HandleEventEntityManagerEntityFirstTouchComponent(fun func(entityManager EntityManager, entity ec.Entity, component ec.Component)) EventEntityManagerEntityFirstTouchComponentHandler

func (EventEntityManagerEntityFirstTouchComponentHandler) OnEntityManagerEntityFirstTouchComponent added in v0.3.66

func (h EventEntityManagerEntityFirstTouchComponentHandler) OnEntityManagerEntityFirstTouchComponent(entityManager EntityManager, entity ec.Entity, component ec.Component)

type EventEntityManagerEntityRemoveComponent added in v0.3.66

type EventEntityManagerEntityRemoveComponent interface {
	OnEntityManagerEntityRemoveComponent(entityManager EntityManager, entity ec.Entity, component ec.Component)
}

EventEntityManagerEntityRemoveComponent 在受管实体删除组件前派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerEntityRemoveComponentHandler added in v0.3.66

type EventEntityManagerEntityRemoveComponentHandler func(entityManager EntityManager, entity ec.Entity, component ec.Component)

func HandleEventEntityManagerEntityRemoveComponent added in v0.3.66

func HandleEventEntityManagerEntityRemoveComponent(fun func(entityManager EntityManager, entity ec.Entity, component ec.Component)) EventEntityManagerEntityRemoveComponentHandler

func (EventEntityManagerEntityRemoveComponentHandler) OnEntityManagerEntityRemoveComponent added in v0.3.66

func (h EventEntityManagerEntityRemoveComponentHandler) OnEntityManagerEntityRemoveComponent(entityManager EntityManager, entity ec.Entity, component ec.Component)

type EventEntityManagerRemoveEntity added in v0.3.66

type EventEntityManagerRemoveEntity interface {
	OnEntityManagerRemoveEntity(entityManager EntityManager, entity ec.Entity)
}

EventEntityManagerRemoveEntity 在实体离开本地管理器前派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityManagerRemoveEntityHandler added in v0.3.66

type EventEntityManagerRemoveEntityHandler func(entityManager EntityManager, entity ec.Entity)

func HandleEventEntityManagerRemoveEntity added in v0.3.66

func HandleEventEntityManagerRemoveEntity(fun func(entityManager EntityManager, entity ec.Entity)) EventEntityManagerRemoveEntityHandler

func (EventEntityManagerRemoveEntityHandler) OnEntityManagerRemoveEntity added in v0.3.66

func (h EventEntityManagerRemoveEntityHandler) OnEntityManagerRemoveEntity(entityManager EntityManager, entity ec.Entity)

type EventEntityTreeAddNode added in v0.2.58

type EventEntityTreeAddNode interface {
	OnEntityTreeAddNode(entityTree EntityTree, parentId, childId uid.Id)
}

EventEntityTreeAddNode 在节点成功加入实体树后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityTreeAddNodeHandler added in v0.2.58

type EventEntityTreeAddNodeHandler func(entityTree EntityTree, parentId, childId uid.Id)

func HandleEventEntityTreeAddNode added in v0.2.58

func HandleEventEntityTreeAddNode(fun func(entityTree EntityTree, parentId, childId uid.Id)) EventEntityTreeAddNodeHandler

func (EventEntityTreeAddNodeHandler) OnEntityTreeAddNode added in v0.2.58

func (h EventEntityTreeAddNodeHandler) OnEntityTreeAddNode(entityTree EntityTree, parentId, childId uid.Id)

type EventEntityTreeMoveNode added in v0.4.25

type EventEntityTreeMoveNode interface {
	OnEntityTreeMoveNode(entityTree EntityTree, childId, fromParentId, toParentId uid.Id)
}

EventEntityTreeMoveNode 在节点切换父节点后派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityTreeMoveNodeHandler added in v0.4.25

type EventEntityTreeMoveNodeHandler func(entityTree EntityTree, childId, fromParentId, toParentId uid.Id)

func HandleEventEntityTreeMoveNode added in v0.4.25

func HandleEventEntityTreeMoveNode(fun func(entityTree EntityTree, childId, fromParentId, toParentId uid.Id)) EventEntityTreeMoveNodeHandler

func (EventEntityTreeMoveNodeHandler) OnEntityTreeMoveNode added in v0.4.25

func (h EventEntityTreeMoveNodeHandler) OnEntityTreeMoveNode(entityTree EntityTree, childId, fromParentId, toParentId uid.Id)

type EventEntityTreeRemoveNode added in v0.2.58

type EventEntityTreeRemoveNode interface {
	OnEntityTreeRemoveNode(entityTree EntityTree, parentId, childId uid.Id)
}

EventEntityTreeRemoveNode 在节点的树关系移除前派发。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventEntityTreeRemoveNodeHandler added in v0.2.58

type EventEntityTreeRemoveNodeHandler func(entityTree EntityTree, parentId, childId uid.Id)

func HandleEventEntityTreeRemoveNode added in v0.2.58

func HandleEventEntityTreeRemoveNode(fun func(entityTree EntityTree, parentId, childId uid.Id)) EventEntityTreeRemoveNodeHandler

func (EventEntityTreeRemoveNodeHandler) OnEntityTreeRemoveNode added in v0.2.58

func (h EventEntityTreeRemoveNodeHandler) OnEntityTreeRemoveNode(entityTree EntityTree, parentId, childId uid.Id)

type EventInstallAddIn added in v0.4.27

type EventInstallAddIn interface {
	OnInstallAddIn(status AddInStatus)
}

EventInstallAddIn 在插件进入 Loaded 状态后派发,用于执行激活流程。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventInstallAddInHandler added in v0.4.27

type EventInstallAddInHandler func(status AddInStatus)

func HandleEventInstallAddIn added in v0.4.27

func HandleEventInstallAddIn(fun func(status AddInStatus)) EventInstallAddInHandler

func (EventInstallAddInHandler) OnInstallAddIn added in v0.4.27

func (h EventInstallAddInHandler) OnInstallAddIn(status AddInStatus)

type EventUninstallAddIn added in v0.4.27

type EventUninstallAddIn interface {
	OnUninstallAddIn(status AddInStatus)
}

EventUninstallAddIn 在 Running 插件从管理器移除前派发,用于执行停用流程。 +event-gen:export_emit=0 +event-tab-gen:recursion=allow

type EventUninstallAddInHandler added in v0.4.27

type EventUninstallAddInHandler func(status AddInStatus)

func HandleEventUninstallAddIn added in v0.4.27

func HandleEventUninstallAddIn(fun func(status AddInStatus)) EventUninstallAddInHandler

func (EventUninstallAddInHandler) OnUninstallAddIn added in v0.4.27

func (h EventUninstallAddInHandler) OnUninstallAddIn(status AddInStatus)

type Frame

type Frame interface {
	// TargetFPS 返回目标 FPS。
	TargetFPS() float64
	// CurFPS 返回最近一个统计周期内的实际 FPS。
	CurFPS() float64
	// TotalFrames 返回最大运行帧数;0 表示不限制。
	TotalFrames() int64
	// CurFrames 返回已经开始执行的帧数。
	CurFrames() int64
	// RunningBeginTime 返回帧循环的启动时间。
	RunningBeginTime() time.Time
	// RunningElapseTime 返回已累计的帧循环运行时长。
	RunningElapseTime() time.Duration
	// LoopBeginTime 返回当前帧循环的开始时间;循环包含异步调用处理。
	LoopBeginTime() time.Time
	// LastLoopElapseTime 返回上一帧完整循环的耗时,包含异步调用处理。
	LastLoopElapseTime() time.Duration
	// UpdateBeginTime 返回当前帧更新阶段的开始时间。
	UpdateBeginTime() time.Time
	// LastUpdateElapseTime 返回上一帧更新阶段的耗时。
	LastUpdateElapseTime() time.Duration
}

Frame 提供运行时帧循环的配置值和只读统计信息。

type GC added in v0.2.53

type GC interface {
	// GC 执行实际清理。
	GC()
	// NeedGC 报告对象当前是否需要清理。
	NeedGC() bool
}

GC 表示可由运行时延迟清理的对象。

type GCCollector added in v0.2.53

type GCCollector interface {
	// CollectGC 在 gc 需要清理时将其加入当前运行时的待清理队列。
	CollectGC(gc GC)
}

GCCollector 收集需要在后续运行时 GC 阶段清理的对象。

type IAddInManagerEventTab added in v0.4.27

type IAddInManagerEventTab interface {
	EventInstallAddIn() event.IEvent
	EventUninstallAddIn() event.IEvent
	EventAddInStateChanged() event.IEvent
}

type IContextRunningEventTab added in v0.4.25

type IContextRunningEventTab interface {
	EventContextRunningEvent() event.IEvent
}

type IEntityManagerEventTab added in v0.3.66

type IEntityManagerEventTab interface {
	EventEntityManagerAddEntity() event.IEvent
	EventEntityManagerRemoveEntity() event.IEvent
	EventEntityManagerEntityAddComponents() event.IEvent
	EventEntityManagerEntityRemoveComponent() event.IEvent
	EventEntityManagerEntityComponentEnableChanged() event.IEvent
	EventEntityManagerEntityFirstTouchComponent() event.IEvent
}

type IEntityTreeEventTab added in v0.3.48

type IEntityTreeEventTab interface {
	EventEntityTreeAddNode() event.IEvent
	EventEntityTreeRemoveNode() event.IEvent
	EventEntityTreeMoveNode() event.IEvent
}

type RunningEvent added in v0.4.25

type RunningEvent int32

RunningEvent 标识运行时工作循环、插件和实体生命周期事件。

const (
	RunningEvent_Birth                              RunningEvent = iota // 运行时对象创建完成。
	RunningEvent_Starting                                               // 运行时开始启动,预装插件在回调前激活。
	RunningEvent_Started                                                // 运行时启动完成。
	RunningEvent_FrameLoopBegin                                         // 一次完整帧循环开始。
	RunningEvent_FrameUpdateBegin                                       // 帧更新阶段开始。
	RunningEvent_FrameUpdateEnd                                         // 帧更新阶段结束。
	RunningEvent_FrameLoopEnd                                           // 一次完整帧循环结束。
	RunningEvent_RunCallBegin                                           // 开始执行一个普通异步调用任务。
	RunningEvent_RunCallEnd                                             // 普通异步调用任务执行结束。
	RunningEvent_RunGCBegin                                             // 运行时 GC 开始。
	RunningEvent_RunGCEnd                                               // 运行时 GC 结束。
	RunningEvent_Terminating                                            // 运行时开始停止。
	RunningEvent_Terminated                                             // 运行时等待组清空、插件停用完成,主体生命周期结束。
	RunningEvent_AddInActivating                                        // 插件开始激活。
	RunningEvent_AddInActivationAborted                                 // 插件激活被中止。
	RunningEvent_AddInActivated                                         // 插件激活完成。
	RunningEvent_AddInDeactivating                                      // 插件开始停用。
	RunningEvent_AddInDeactivated                                       // 插件停用完成。
	RunningEvent_EntityActivating                                       // 实体开始激活。
	RunningEvent_EntityActivationAborted                                // 实体激活被中止。
	RunningEvent_EntityActivated                                        // 实体激活完成。
	RunningEvent_EntityDeactivating                                     // 实体开始停用。
	RunningEvent_EntityDeactivated                                      // 实体停用完成。
	RunningEvent_EntityComponentsActivating                             // 实体开始激活一批新增组件。
	RunningEvent_EntityComponentsActivationAborted                      // 新增组件的激活流程被中止。
	RunningEvent_EntityComponentsActivated                              // 新增组件激活完成。
	RunningEvent_EntityComponentDeactivating                            // 实体开始停用即将删除的组件。
	RunningEvent_EntityComponentDeactivationAborted                     // 组件的停用回调流程被中止;组件删除仍会完成。
	RunningEvent_EntityComponentDeactivated                             // 组件停用完成,随后将从实体删除。
)

func (RunningEvent) String added in v0.4.25

func (i RunningEvent) String() string

type RunningEventCB added in v0.4.25

type RunningEventCB = generic.ActionVar2[Context, RunningEvent, any] // 运行时运行事件回调。

Jump to

Keyboard shortcuts

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