runtime

package
v0.1.44 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2024 License: LGPL-2.1 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrContext    = fmt.Errorf("%w: runtime-context", exception.ErrTiny) // 运行时上下文错误
	ErrEntityTree = fmt.Errorf("%w: entity-tree", ErrContext)            // 实体树错误
	ErrEntityMgr  = fmt.Errorf("%w: entity-mgr", ErrContext)             // 实体管理器错误
	ErrFrame      = fmt.Errorf("%w: frame", ErrContext)                  // 帧错误
)
View Source
var With _Option

Functions

func BindEventEntityMgrAddEntity

func BindEventEntityMgrAddEntity(auto iAutoEventEntityMgrAddEntity, subscriber EventEntityMgrAddEntity, priority ...int32) event.Hook

func BindEventEntityMgrEntityAddComponents

func BindEventEntityMgrEntityAddComponents(auto iAutoEventEntityMgrEntityAddComponents, subscriber EventEntityMgrEntityAddComponents, priority ...int32) event.Hook

func BindEventEntityMgrEntityFirstAccessComponent

func BindEventEntityMgrEntityFirstAccessComponent(auto iAutoEventEntityMgrEntityFirstAccessComponent, subscriber EventEntityMgrEntityFirstAccessComponent, priority ...int32) event.Hook

func BindEventEntityMgrEntityRemoveComponent

func BindEventEntityMgrEntityRemoveComponent(auto iAutoEventEntityMgrEntityRemoveComponent, subscriber EventEntityMgrEntityRemoveComponent, priority ...int32) event.Hook

func BindEventEntityMgrRemoveEntity

func BindEventEntityMgrRemoveEntity(auto iAutoEventEntityMgrRemoveEntity, subscriber EventEntityMgrRemoveEntity, priority ...int32) event.Hook

func BindEventEntityTreeAddNode

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

func BindEventEntityTreeRemoveNode

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

func UnsafeContext deprecated

func UnsafeContext(ctx Context) _UnsafeContext

Deprecated: UnsafeContext 访问运行时上下文内部方法

func UnsafeFrame deprecated

func UnsafeFrame(frame Frame) _UnsafeFrame

Deprecated: UnsafeFrame 访问帧内部方法

Types

type ConcurrentContext added in v0.1.29

type ConcurrentContext interface {
	gctx.ConcurrentContextProvider
	gctx.Context
	async.Caller
}

ConcurrentContext 多线程安全的运行时上下文接口

func Concurrent added in v0.1.29

Concurrent 获取多线程安全的运行时上下文

type ConcurrentContextProvider added in v0.1.29

type ConcurrentContextProvider = gctx.ConcurrentContextProvider

ConcurrentContextProvider 多线程安全的上下文提供者

type Context

type Context interface {
	gctx.CurrentContextProvider
	gctx.Context
	async.Caller
	reinterpret.CompositeProvider
	plugin.PluginProvider
	pool.ManagedPooledChunk
	GCCollector

	// GetReflected 获取反射值
	GetReflected() reflect.Value
	// GetFrame 获取帧
	GetFrame() Frame
	// GetEntityMgr 获取实体管理器
	GetEntityMgr() EntityMgr
	// GetEntityTree 获取实体树
	GetEntityTree() EntityTree
	// ActivateEvent 启用事件
	ActivateEvent(event event.IEventCtrl, recursion event.EventRecursion)
	// ManagedHooks 托管hook,在运行时停止时自动解绑定
	ManagedHooks(hooks ...event.Hook)
	// AutoUsePool 自动判断使用托管对象池
	AutoUsePool() pool.ManagedPooledChunk
	// contains filtered or unexported methods
}

Context 运行时上下文接口

func Current

func Current(provider gctx.CurrentContextProvider) Context

Current 获取当前运行时上下文

func NewContext

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

NewContext 创建运行时上下文

func UnsafeNewContext deprecated

func UnsafeNewContext(options ContextOptions) Context

Deprecated: UnsafeNewContext 内部创建运行时上下文

type ContextBehavior

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

ContextBehavior 运行时上下文行为,在需要扩展运行时上下文能力时,匿名嵌入至运行时上下文结构体中

func (*ContextBehavior) ActivateEvent

func (ctx *ContextBehavior) ActivateEvent(event event.IEventCtrl, recursion event.EventRecursion)

ActivateEvent 启用事件

func (*ContextBehavior) AutoUsePool added in v0.1.31

func (ctx *ContextBehavior) AutoUsePool() pool.ManagedPooledChunk

AutoUsePool 自动判断使用托管对象池

func (*ContextBehavior) Call

func (ctx *ContextBehavior) Call(fun generic.FuncVar0[any, async.Ret], va ...any) async.AsyncRet

Call 异步调用函数,有返回值。不会阻塞当前线程,会返回AsyncRet。

注意:
- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
- 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallDelegate

func (ctx *ContextBehavior) CallDelegate(fun generic.DelegateFuncVar0[any, async.Ret], va ...any) async.AsyncRet

CallDelegate 异步调用委托,有返回值。不会阻塞当前线程,会返回AsyncRet。

注意:
- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
- 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallVoid

func (ctx *ContextBehavior) CallVoid(fun generic.ActionVar0[any], va ...any) async.AsyncRet

CallVoid 异步调用函数,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。

注意:
- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
- 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CallVoidDelegate

func (ctx *ContextBehavior) CallVoidDelegate(fun generic.DelegateActionVar0[any], va ...any) async.AsyncRet

CallVoidDelegate 异步调用委托,无返回值。在运行时中。不会阻塞当前线程,会返回AsyncRet。

注意:
- 代码片段中的线程安全问题,如临界区访问、线程死锁等。
- 调用过程中的panic信息,均会转换为error返回。

func (*ContextBehavior) CollectGC

func (ctx *ContextBehavior) CollectGC(gc GC)

CollectGC 收集GC

func (*ContextBehavior) GetCompositeFaceCache

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

GetCompositeFaceCache 支持重新解释类型

func (*ContextBehavior) GetConcurrentContext

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

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

func (*ContextBehavior) GetCurrentContext

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

GetCurrentContext 获取当前上下文

func (*ContextBehavior) GetEntityMgr

func (ctx *ContextBehavior) GetEntityMgr() EntityMgr

GetEntityMgr 获取实体管理器

func (*ContextBehavior) GetEntityTree

func (ctx *ContextBehavior) GetEntityTree() EntityTree

GetEntityTree 获取主实体树

func (*ContextBehavior) GetFrame

func (ctx *ContextBehavior) GetFrame() Frame

GetFrame 获取帧

func (*ContextBehavior) GetPluginBundle

func (ctx *ContextBehavior) GetPluginBundle() plugin.PluginBundle

GetPluginBundle 获取插件包

func (*ContextBehavior) GetReflected

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

GetReflected 获取反射值

func (*ContextBehavior) ManagedGet added in v0.1.39

func (ctx *ContextBehavior) ManagedGet(poolId uint32) any

ManagedGet 从托管对象池中获取对象

func (*ContextBehavior) ManagedHooks

func (ctx *ContextBehavior) ManagedHooks(hooks ...event.Hook)

ManagedHooks 托管hook,在运行时停止时自动解绑定

func (*ContextBehavior) ManagedPooledChunk added in v0.1.39

func (ctx *ContextBehavior) ManagedPooledChunk(pc pool.PooledChunk)

ManagedPooledChunk 托管对象池,在运行时停止时自动解释放

type ContextOptions

type ContextOptions struct {
	CompositeFace  iface.Face[Context] // 扩展者,在扩展运行时上下文自身能力时使用
	Context        context.Context     // 父Context
	AutoRecover    bool                // 是否开启panic时自动恢复
	ReportError    chan error          // panic时错误写入的error channel
	PluginBundle   plugin.PluginBundle // 插件包
	UsePool        bool                // 使用托管对象池
	UsePoolSize    int                 // 托管对象池初始大小
	RunningHandler RunningHandler      // 运行状态变化处理器
}

ContextOptions 创建运行时上下文的所有选项

type CurrentContextProvider

type CurrentContextProvider = gctx.CurrentContextProvider

CurrentContextProvider 当前上下文提供者

type EntityMgr

type EntityMgr interface {
	gctx.CurrentContextProvider

	// AddEntity 添加实体
	AddEntity(entity ec.Entity) error
	// RemoveEntity 删除实体
	RemoveEntity(id uid.Id)
	// GetEntity 查询实体
	GetEntity(id uid.Id) (ec.Entity, bool)
	// ContainsEntity 实体是否存在
	ContainsEntity(id uid.Id) bool
	// RangeEntities 遍历所有实体
	RangeEntities(fun generic.Func1[ec.Entity, bool])
	// ReversedRangeEntities 反向遍历所有实体
	ReversedRangeEntities(fun generic.Func1[ec.Entity, bool])
	// FilterEntities 过滤并获取实体
	FilterEntities(fun generic.Func1[ec.Entity, bool]) []ec.Entity
	// GetEntities 获取所有实体
	GetEntities() []ec.Entity
	// CountEntities 获取实体数量
	CountEntities() int
	// contains filtered or unexported methods
}

EntityMgr 实体管理器接口

type EntityTree

type EntityTree interface {
	gctx.CurrentContextProvider

	// AddNode 新增实体节点,会向实体管理器添加实体
	AddNode(entity ec.Entity, parentId uid.Id) error
	// PruningNode 实体树节点剪枝
	PruningNode(entityId uid.Id)
	// RangeChildren 遍历子实体
	RangeChildren(entityId uid.Id, fun generic.Func1[ec.Entity, bool])
	// ReversedRangeChildren 反向遍历子实体
	ReversedRangeChildren(entityId uid.Id, fun generic.Func1[ec.Entity, bool])
	// FilterChildren 过滤并获取子实体
	FilterChildren(entityId uid.Id, fun generic.Func1[ec.Entity, bool]) []ec.Entity
	// GetChildren 获取所有子实体
	GetChildren(entityId uid.Id) []ec.Entity
	// CountChildren 获取子实体数量
	CountChildren(entityId uid.Id) int
	// IsTop 是否是顶层节点
	IsTop(entityId uid.Id) bool
	// ChangeParent 修改父实体
	ChangeParent(entityId, parentId uid.Id) error
	// GetParent 获取父实体
	GetParent(entityId uid.Id) (ec.Entity, bool)
	// contains filtered or unexported methods
}

EntityTree 实体树接口

type EventEntityMgrAddEntity

type EventEntityMgrAddEntity interface {
	OnEntityMgrAddEntity(entityMgr EntityMgr, entity ec.Entity)
}

EventEntityMgrAddEntity 事件:实体管理器添加实体 +event-gen:export=0

type EventEntityMgrAddEntityHandler

type EventEntityMgrAddEntityHandler func(entityMgr EntityMgr, entity ec.Entity)

func HandleEventEntityMgrAddEntity

func HandleEventEntityMgrAddEntity(fun func(entityMgr EntityMgr, entity ec.Entity)) EventEntityMgrAddEntityHandler

func (EventEntityMgrAddEntityHandler) OnEntityMgrAddEntity

func (h EventEntityMgrAddEntityHandler) OnEntityMgrAddEntity(entityMgr EntityMgr, entity ec.Entity)

type EventEntityMgrEntityAddComponents

type EventEntityMgrEntityAddComponents interface {
	OnEntityMgrEntityAddComponents(entityMgr EntityMgr, entity ec.Entity, components []ec.Component)
}

EventEntityMgrEntityAddComponents 事件:实体管理器中的实体添加组件 +event-gen:export=0

type EventEntityMgrEntityAddComponentsHandler

type EventEntityMgrEntityAddComponentsHandler func(entityMgr EntityMgr, entity ec.Entity, components []ec.Component)

func HandleEventEntityMgrEntityAddComponents

func HandleEventEntityMgrEntityAddComponents(fun func(entityMgr EntityMgr, entity ec.Entity, components []ec.Component)) EventEntityMgrEntityAddComponentsHandler

func (EventEntityMgrEntityAddComponentsHandler) OnEntityMgrEntityAddComponents

func (h EventEntityMgrEntityAddComponentsHandler) OnEntityMgrEntityAddComponents(entityMgr EntityMgr, entity ec.Entity, components []ec.Component)

type EventEntityMgrEntityFirstAccessComponent

type EventEntityMgrEntityFirstAccessComponent interface {
	OnEntityMgrEntityFirstAccessComponent(entityMgr EntityMgr, entity ec.Entity, component ec.Component)
}

EventEntityMgrEntityFirstAccessComponent 事件:实体管理器中的实体首次访问组件 +event-gen:export=0

type EventEntityMgrEntityFirstAccessComponentHandler

type EventEntityMgrEntityFirstAccessComponentHandler func(entityMgr EntityMgr, entity ec.Entity, component ec.Component)

func HandleEventEntityMgrEntityFirstAccessComponent

func HandleEventEntityMgrEntityFirstAccessComponent(fun func(entityMgr EntityMgr, entity ec.Entity, component ec.Component)) EventEntityMgrEntityFirstAccessComponentHandler

func (EventEntityMgrEntityFirstAccessComponentHandler) OnEntityMgrEntityFirstAccessComponent

func (h EventEntityMgrEntityFirstAccessComponentHandler) OnEntityMgrEntityFirstAccessComponent(entityMgr EntityMgr, entity ec.Entity, component ec.Component)

type EventEntityMgrEntityRemoveComponent

type EventEntityMgrEntityRemoveComponent interface {
	OnEntityMgrEntityRemoveComponent(entityMgr EntityMgr, entity ec.Entity, component ec.Component)
}

EventEntityMgrEntityRemoveComponent 事件:实体管理器中的实体删除组件 +event-gen:export=0

type EventEntityMgrEntityRemoveComponentHandler

type EventEntityMgrEntityRemoveComponentHandler func(entityMgr EntityMgr, entity ec.Entity, component ec.Component)

func HandleEventEntityMgrEntityRemoveComponent

func HandleEventEntityMgrEntityRemoveComponent(fun func(entityMgr EntityMgr, entity ec.Entity, component ec.Component)) EventEntityMgrEntityRemoveComponentHandler

func (EventEntityMgrEntityRemoveComponentHandler) OnEntityMgrEntityRemoveComponent

func (h EventEntityMgrEntityRemoveComponentHandler) OnEntityMgrEntityRemoveComponent(entityMgr EntityMgr, entity ec.Entity, component ec.Component)

type EventEntityMgrRemoveEntity

type EventEntityMgrRemoveEntity interface {
	OnEntityMgrRemoveEntity(entityMgr EntityMgr, entity ec.Entity)
}

EventEntityMgrRemoveEntity 事件:实体管理器删除实体 +event-gen:export=0

type EventEntityMgrRemoveEntityHandler

type EventEntityMgrRemoveEntityHandler func(entityMgr EntityMgr, entity ec.Entity)

func HandleEventEntityMgrRemoveEntity

func HandleEventEntityMgrRemoveEntity(fun func(entityMgr EntityMgr, entity ec.Entity)) EventEntityMgrRemoveEntityHandler

func (EventEntityMgrRemoveEntityHandler) OnEntityMgrRemoveEntity

func (h EventEntityMgrRemoveEntityHandler) OnEntityMgrRemoveEntity(entityMgr EntityMgr, entity ec.Entity)

type EventEntityTreeAddNode

type EventEntityTreeAddNode interface {
	OnEntityTreeAddNode(entityTree EntityTree, parent, child ec.Entity)
}

EventEntityTreeAddNode 事件:新增实体树节点 +event-gen:export=0

type EventEntityTreeAddNodeHandler

type EventEntityTreeAddNodeHandler func(entityTree EntityTree, parent, child ec.Entity)

func HandleEventEntityTreeAddNode

func HandleEventEntityTreeAddNode(fun func(entityTree EntityTree, parent, child ec.Entity)) EventEntityTreeAddNodeHandler

func (EventEntityTreeAddNodeHandler) OnEntityTreeAddNode

func (h EventEntityTreeAddNodeHandler) OnEntityTreeAddNode(entityTree EntityTree, parent, child ec.Entity)

type EventEntityTreeRemoveNode

type EventEntityTreeRemoveNode interface {
	OnEntityTreeRemoveNode(entityTree EntityTree, parent, child ec.Entity)
}

EventEntityTreeRemoveNode 事件:删除实体树节点 +event-gen:export=0

type EventEntityTreeRemoveNodeHandler

type EventEntityTreeRemoveNodeHandler func(entityTree EntityTree, parent, child ec.Entity)

func HandleEventEntityTreeRemoveNode

func HandleEventEntityTreeRemoveNode(fun func(entityTree EntityTree, parent, child ec.Entity)) EventEntityTreeRemoveNodeHandler

func (EventEntityTreeRemoveNodeHandler) OnEntityTreeRemoveNode

func (h EventEntityTreeRemoveNodeHandler) OnEntityTreeRemoveNode(entityTree EntityTree, parent, child ec.Entity)

type Frame

type Frame interface {

	// GetTargetFPS 获取目标FPS
	GetTargetFPS() float32
	// GetCurFPS 获取当前FPS
	GetCurFPS() float32
	// GetMode 获取帧模式
	GetMode() FrameMode
	// GetTotalFrames 获取运行帧数上限
	GetTotalFrames() int64
	// GetCurFrames 获取当前帧数
	GetCurFrames() int64
	// GetRunningBeginTime 获取运行开始时间
	GetRunningBeginTime() time.Time
	// GetRunningElapseTime 获取运行持续时间
	GetRunningElapseTime() time.Duration
	// GetLoopBeginTime 获取当前帧循环开始时间(包含异步调用)
	GetLoopBeginTime() time.Time
	// GetLastLoopElapseTime 获取上一帧循环耗时(包含异步调用)
	GetLastLoopElapseTime() time.Duration
	// GetUpdateBeginTime 获取当前帧更新开始时间
	GetUpdateBeginTime() time.Time
	// GetLastUpdateElapseTime 获取上一次帧更新耗时
	GetLastUpdateElapseTime() time.Duration
	// contains filtered or unexported methods
}

Frame 帧,在运行时初始化时可以设置帧,用于设置运行时帧更新方式,在逻辑运行过程中可以在运行时上下文中获取帧信息

func NewFrame

func NewFrame(settings ...option.Setting[FrameOptions]) Frame

NewFrame 创建帧,在运行时初始化时可以设置帧,用于设置运行时帧更新方式,在逻辑运行过程中可以在运行时上下文中获取帧信息。

type FrameMode

type FrameMode int32

FrameMode 帧模式

const (
	RealTime FrameMode = iota // 实时
	Simulate                  // 瞬时模拟
	Manual                    // 手动控制
)

type FrameOptions

type FrameOptions struct {
	TargetFPS   float32   // 目标FPS
	TotalFrames int64     // 运行帧数上限
	Mode        FrameMode // 帧模式
}

FrameOptions 帧的所有选项

type GC

type GC interface {
	// GC GC
	GC()
	// NeedGC 是否需要GC
	NeedGC() bool
}

GC GC接口

type GCCollector

type GCCollector interface {
	// CollectGC 收集GC
	CollectGC(gc GC)
}

GCCollector GC收集器接口

type RunningHandler

type RunningHandler = generic.DelegateAction2[Context, RunningState] // 运行状态变化处理器

type RunningState

type RunningState int32

RunningState 运行状态

const (
	RunningState_Birth            RunningState = iota // 出生
	RunningState_Starting                             // 开始启动
	RunningState_Started                              // 已启动
	RunningState_FrameLoopBegin                       // 帧循环开始
	RunningState_FrameUpdateBegin                     // 帧更新开始
	RunningState_FrameUpdateEnd                       // 帧更新结束
	RunningState_FrameLoopEnd                         // 帧循环结束
	RunningState_RunCallBegin                         // Call开始执行
	RunningState_RunCallEnd                           // Call结束执行
	RunningState_RunGCBegin                           // GC开始执行
	RunningState_RunGCEnd                             // GC结束执行
	RunningState_Terminating                          // 开始停止
	RunningState_Terminated                           // 已停止
)

func (RunningState) String

func (i RunningState) String() string

Jump to

Keyboard shortcuts

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