ai

package
v0.0.0-...-20810c9 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: MIT Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type State

type State[Data any, Input any] func(input *Input) StateBlend[Data]

func StateConstant

func StateConstant[Data any](data *Data, blend float32) State[Data, any]

func StateSub

func StateSub[Subject any, Data any, Input any](machine StateMachine[Subject, Data, Input]) State[Data, Input]

type StateBlend

type StateBlend[Data any] struct {
	Data   *Data
	Amount float32
}

type StateInstance

type StateInstance[Data any, Input any] struct {
	StateBlend StateBlend[Data]
	State      *StateMachineState[Data, Input]
}

type StateMachine

type StateMachine[Subject any, Data any, Input any] struct {
	Logic       StateMachineLogic[Subject, Data, Input]
	States      map[int]StateMachineState[Data, Input]
	Transitions []*StateTransitions[Input]
}

func NewStateMachine

func NewStateMachine[Subject any, Data any, Input any](logic StateMachineLogic[Subject, Data, Input]) *StateMachine[Subject, Data, Input]

func (*StateMachine[Subject, Data, Input]) AddState

func (sm *StateMachine[Subject, Data, Input]) AddState(id int, state State[Data, Input])

func (*StateMachine[Subject, Data, Input]) AddTransition

func (sm *StateMachine[Subject, Data, Input]) AddTransition(transition StateTransitions[Input])

func (*StateMachine[Subject, Data, Input]) For

func (sm *StateMachine[Subject, Data, Input]) For(subject *Subject, input *Input, initialStates []int) *StateMachineInstance[Subject, Data, Input]

type StateMachineInstance

type StateMachineInstance[Subject any, Data any, Input any] struct {
	Machine *StateMachine[Subject, Data, Input]
	Subject *Subject
	Input   *Input
	States  map[int]StateInstance[Data, Input]
}

func (StateMachineInstance[Subject, Data, Input]) Apply

func (inst StateMachineInstance[Subject, Data, Input]) Apply()

func (StateMachineInstance[Subject, Data, Input]) GetActive

func (inst StateMachineInstance[Subject, Data, Input]) GetActive() []StateBlend[Data]

func (StateMachineInstance[Subject, Data, Input]) Update

func (inst StateMachineInstance[Subject, Data, Input]) Update()

type StateMachineLogic

type StateMachineLogic[Subject any, Data any, Input any] struct {
	IsDone func(subject *Subject, state StateBlend[Data]) bool
	Start  func(subject *Subject, state StateBlend[Data])
	Apply  func(subject *Subject, blends []StateBlend[Data]) bool
}

type StateMachineState

type StateMachineState[Data any, Input any] struct {
	ID          int
	State       State[Data, Input]
	Transitions []*StateTransitions[Input]
}

type StateTransitions

type StateTransitions[Input any] struct {
	Start     int
	End       int
	Condition func(input *Input) bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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