core

package
v0.0.0-...-d21f05d Latest Latest
Warning

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

Go to latest
Published: May 14, 2023 License: BSD-2-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package core implements some basic types used by other packages.

Index

Constants

View Source
const (
	OnDescendant = "core.OnDescendant" // Dispatched when a descendent is added or removed
)

Node events.

Variables

This section is empty.

Functions

This section is empty.

Types

type Callback

type Callback func(string, interface{})

Callback is the type for Dispatcher callback functions.

type Dispatcher

type Dispatcher struct {
	// contains filtered or unexported fields
}

Dispatcher implements an event dispatcher.

func NewDispatcher

func NewDispatcher() *Dispatcher

NewDispatcher creates and returns a new event dispatcher.

func (*Dispatcher) Dispatch

func (d *Dispatcher) Dispatch(evname string, ev interface{}) int

Dispatch dispatches the specified event to all registered subscribers. The function returns the number of subscribers to which the event was dispatched.

func (*Dispatcher) Initialize

func (d *Dispatcher) Initialize()

Initialize initializes the event dispatcher. It is normally used by other types which embed a dispatcher.

func (*Dispatcher) Subscribe

func (d *Dispatcher) Subscribe(evname string, cb Callback)

Subscribe subscribes a callback to events with the given name. If it is necessary to unsubscribe later, SubscribeID should be used instead.

func (*Dispatcher) SubscribeID

func (d *Dispatcher) SubscribeID(evname string, id interface{}, cb Callback)

SubscribeID subscribes a callback to events with the given name. The user-provided unique id can be used to unsubscribe via UnsubscribeID.

func (*Dispatcher) UnsubscribeAllID

func (d *Dispatcher) UnsubscribeAllID(id interface{}) int

UnsubscribeAllID removes all subscribed callbacks with the specified unique id from all events. Returns the number of subscriptions removed.

func (*Dispatcher) UnsubscribeID

func (d *Dispatcher) UnsubscribeID(evname string, id interface{}) int

UnsubscribeID removes all subscribed callbacks with the specified unique id from the specified event. Returns the number of subscriptions removed.

type IDispatcher

type IDispatcher interface {
	Subscribe(evname string, cb Callback)
	SubscribeID(evname string, id interface{}, cb Callback)
	UnsubscribeID(evname string, id interface{}) int
	UnsubscribeAllID(id interface{}) int
	Dispatch(evname string, ev interface{}) int
}

IDispatcher is the interface for event dispatchers.

type INode

type INode interface {
	IDispatcher
	GetNode() *Node
	GetINode() INode
	Visible() bool
	SetVisible(state bool)
	Name() string
	SetName(string)
	Parent() INode
	Children() []INode
	IsAncestorOf(INode) bool
	LowestCommonAncestor(INode) INode
	UpdateMatrixWorld()
	BoundingBox() math32.Box3
	Render(gs *gls.GLS)
	Clone() INode
	Dispose()
	Position() math32.Vector3
	Rotation() math32.Vector3
	Scale() math32.Vector3
}

INode is the interface for all node types.

type Node

type Node struct {
	Dispatcher // Embedded event dispatcher
	// contains filtered or unexported fields
}

Node represents an object in 3D space existing within a hierarchy.

func NewNode

func NewNode() *Node

NewNode returns a pointer to a new Node.

func (*Node) Add

func (n *Node) Add(ichild INode) *Node

Add adds the specified node to the list of children and sets its parent pointer. If the specified node had a parent, the specified node is removed from the original parent's list of children.

func (*Node) AddAt

func (n *Node) AddAt(idx int, ichild INode) *Node

AddAt adds the specified node to the list of children at the specified index and sets its parent pointer. If the specified node had a parent, the specified node is removed from the original parent's list of children.

func (*Node) BoundingBox

func (n *Node) BoundingBox() math32.Box3

BoundingBox satisfies the INode interface. Computes union of own bounding box with those of all descendents.

func (*Node) Changed

func (n *Node) Changed() bool

Changed returns the matNeedsUpdate flag of the node.

func (*Node) ChildAt

func (n *Node) ChildAt(idx int) INode

ChildAt returns the child at the specified index.

func (*Node) ChildIndex

func (n *Node) ChildIndex(ichild INode) int

ChildIndex returns the index of the specified child (-1 if not found).

func (*Node) Children

func (n *Node) Children() []INode

Children returns the list of children.

func (*Node) Clone

func (n *Node) Clone() INode

Clone clones the Node and satisfies the INode interface.

func (*Node) Direction

func (n *Node) Direction() math32.Vector3

Direction returns the direction.

func (*Node) Dispose

func (n *Node) Dispose()

Dispose satisfies the INode interface.

func (*Node) DisposeChildren

func (n *Node) DisposeChildren(recurs bool)

DisposeChildren removes and disposes of all children. If 'recurs' is true, call DisposeChildren on each child recursively.

func (*Node) FindLoaderID

func (n *Node) FindLoaderID(id string) INode

FindLoaderID looks in the specified node and in all its children for a node with the specified loaderID and if found returns it. Returns nil if not found.

func (*Node) FindPath

func (n *Node) FindPath(path string) INode

FindPath finds a node with the specified path by recursively searching the children. A path is a sequence of names of nested child nodes, separated by a forward slash.

func (*Node) GetINode

func (n *Node) GetINode() INode

GetINode returns the INode associated with this Node.

func (*Node) GetNode

func (n *Node) GetNode() *Node

GetNode satisfies the INode interface and returns a pointer to the embedded Node.

func (*Node) Init

func (n *Node) Init(inode INode)

Init initializes the node. Normally called by other types which embed a Node.

func (*Node) IsAncestorOf

func (n *Node) IsAncestorOf(desc INode) bool

IsAncestorOf returns whether this node is an ancestor of the specified node. Returns true if they are the same.

func (*Node) LoaderID

func (n *Node) LoaderID() string

LoaderID returns an optional ID set when this node was created by an external loader such as Collada.

func (*Node) LookAt

func (n *Node) LookAt(target, up *math32.Vector3)

LookAt rotates the node to look at the specified target position, using the specified up vector.

func (*Node) LowestCommonAncestor

func (n *Node) LowestCommonAncestor(other INode) INode

LowestCommonAncestor returns the common ancestor of this node and the specified node if any.

func (*Node) Matrix

func (n *Node) Matrix() math32.Matrix4

Matrix returns a copy of the local transformation matrix.

func (*Node) MatrixWorld

func (n *Node) MatrixWorld() math32.Matrix4

MatrixWorld returns a copy of the matrix world of this node.

func (*Node) Name

func (n *Node) Name() string

Name returns the (optional) name.

func (*Node) Parent

func (n *Node) Parent() INode

Parent returns the parent.

func (*Node) Position

func (n *Node) Position() math32.Vector3

Position returns the position as a vector.

func (*Node) Quaternion

func (n *Node) Quaternion() math32.Quaternion

Quaternion returns the current quaternion.

func (*Node) QuaternionMult

func (n *Node) QuaternionMult(q *math32.Quaternion)

QuaternionMult multiplies the current quaternion by the specified quaternion.

func (*Node) Remove

func (n *Node) Remove(ichild INode) bool

Remove removes the specified INode from the list of children. Returns true if found or false otherwise.

func (*Node) RemoveAll

func (n *Node) RemoveAll(recurs bool)

RemoveAll removes all children.

func (*Node) RemoveAt

func (n *Node) RemoveAt(idx int) INode

RemoveAt removes the child at the specified index.

func (*Node) Render

func (n *Node) Render(gs *gls.GLS)

Render satisfies the INode interface.

func (*Node) RotateOnAxis

func (n *Node) RotateOnAxis(axis *math32.Vector3, angle float32)

RotateOnAxis rotates around the specified local axis the specified angle in radians.

func (*Node) RotateX

func (n *Node) RotateX(x float32)

RotateX rotates around the local X axis the specified angle in radians.

func (*Node) RotateY

func (n *Node) RotateY(y float32)

RotateY rotates around the local Y axis the specified angle in radians.

func (*Node) RotateZ

func (n *Node) RotateZ(z float32)

RotateZ rotates around the local Z axis the specified angle in radians.

func (*Node) Rotation

func (n *Node) Rotation() math32.Vector3

Rotation returns the current global rotation in Euler angles (radians).

func (*Node) Scale

func (n *Node) Scale() math32.Vector3

Scale returns the current scale.

func (*Node) SetChanged

func (n *Node) SetChanged(changed bool)

SetChanged sets the matNeedsUpdate flag of the node.

func (*Node) SetDirection

func (n *Node) SetDirection(x, y, z float32)

SetDirection sets the direction.

func (*Node) SetDirectionVec

func (n *Node) SetDirectionVec(vdir *math32.Vector3)

SetDirectionVec sets the direction based on a vector pointer.

func (*Node) SetLoaderID

func (n *Node) SetLoaderID(id string)

SetLoaderID is normally used by external loaders, such as Collada, to assign an ID to the node with the ID value in the node description. Can be used to find other loaded nodes.

func (*Node) SetMatrix

func (n *Node) SetMatrix(m *math32.Matrix4)

SetMatrix sets the local transformation matrix.

func (*Node) SetName

func (n *Node) SetName(name string)

SetName sets the (optional) name. The name can be used for debugging or other purposes.

func (*Node) SetPosition

func (n *Node) SetPosition(x, y, z float32)

SetPosition sets the position.

func (*Node) SetPositionVec

func (n *Node) SetPositionVec(vpos *math32.Vector3)

SetPositionVec sets the position based on the specified vector pointer.

func (*Node) SetPositionX

func (n *Node) SetPositionX(x float32)

SetPositionX sets the X coordinate of the position.

func (*Node) SetPositionY

func (n *Node) SetPositionY(y float32)

SetPositionY sets the Y coordinate of the position.

func (*Node) SetPositionZ

func (n *Node) SetPositionZ(z float32)

SetPositionZ sets the Z coordinate of the position.

func (*Node) SetQuaternion

func (n *Node) SetQuaternion(x, y, z, w float32)

SetQuaternion sets the quaternion based on the specified quaternion unit multiples.

func (*Node) SetQuaternionQuat

func (n *Node) SetQuaternionQuat(q *math32.Quaternion)

SetQuaternionQuat sets the quaternion based on the specified quaternion pointer.

func (*Node) SetQuaternionVec

func (n *Node) SetQuaternionVec(q *math32.Vector4)

SetQuaternionVec sets the quaternion based on the specified quaternion unit multiples vector.

func (*Node) SetRotation

func (n *Node) SetRotation(x, y, z float32)

SetRotation sets the global rotation in Euler angles (radians).

func (*Node) SetRotationQuat

func (n *Node) SetRotationQuat(quat *math32.Quaternion)

SetRotationQuat sets the global rotation based on the specified quaternion pointer.

func (*Node) SetRotationVec

func (n *Node) SetRotationVec(vrot *math32.Vector3)

SetRotationVec sets the global rotation in Euler angles (radians) based on the specified vector pointer.

func (*Node) SetRotationX

func (n *Node) SetRotationX(x float32)

SetRotationX sets the global X rotation to the specified angle in radians.

func (*Node) SetRotationY

func (n *Node) SetRotationY(y float32)

SetRotationY sets the global Y rotation to the specified angle in radians.

func (*Node) SetRotationZ

func (n *Node) SetRotationZ(z float32)

SetRotationZ sets the global Z rotation to the specified angle in radians.

func (*Node) SetScale

func (n *Node) SetScale(x, y, z float32)

SetScale sets the scale.

func (*Node) SetScaleVec

func (n *Node) SetScaleVec(scale *math32.Vector3)

SetScaleVec sets the scale based on the specified vector pointer.

func (*Node) SetScaleX

func (n *Node) SetScaleX(sx float32)

SetScaleX sets the X scale.

func (*Node) SetScaleY

func (n *Node) SetScaleY(sy float32)

SetScaleY sets the Y scale.

func (*Node) SetScaleZ

func (n *Node) SetScaleZ(sz float32)

SetScaleZ sets the Z scale.

func (*Node) SetUserData

func (n *Node) SetUserData(data interface{})

SetUserData sets the generic user data associated to the node.

func (*Node) SetVisible

func (n *Node) SetVisible(state bool)

SetVisible sets the visibility of the node.

func (*Node) TranslateOnAxis

func (n *Node) TranslateOnAxis(axis *math32.Vector3, dist float32)

TranslateOnAxis translates the specified distance on the specified local axis.

func (*Node) TranslateX

func (n *Node) TranslateX(dist float32)

TranslateX translates the specified distance on the local X axis.

func (*Node) TranslateY

func (n *Node) TranslateY(dist float32)

TranslateY translates the specified distance on the local Y axis.

func (*Node) TranslateZ

func (n *Node) TranslateZ(dist float32)

TranslateZ translates the specified distance on the local Z axis.

func (*Node) UpdateMatrix

func (n *Node) UpdateMatrix() bool

UpdateMatrix updates (if necessary) the local transform matrix of this node based on its position, quaternion, and scale.

func (*Node) UpdateMatrixWorld

func (n *Node) UpdateMatrixWorld()

UpdateMatrixWorld updates this node world transform matrix and of all its children

func (*Node) UserData

func (n *Node) UserData() interface{}

UserData returns the generic user data associated to the node.

func (*Node) Visible

func (n *Node) Visible() bool

Visible returns the visibility of the node.

func (*Node) WorldDirection

func (n *Node) WorldDirection(result *math32.Vector3)

WorldDirection updates the world matrix and sets the specified vector to the current world direction of this node.

func (*Node) WorldPosition

func (n *Node) WorldPosition(result *math32.Vector3)

WorldPosition updates the world matrix and sets the specified vector to the current world position of this node.

func (*Node) WorldQuaternion

func (n *Node) WorldQuaternion(result *math32.Quaternion)

WorldQuaternion updates the world matrix and sets the specified quaternion to the current world quaternion of this node.

func (*Node) WorldRotation

func (n *Node) WorldRotation(result *math32.Vector3)

WorldRotation updates the world matrix and sets the specified vector to the current world rotation of this node in Euler angles.

func (*Node) WorldScale

func (n *Node) WorldScale(result *math32.Vector3)

WorldScale updates the world matrix and sets the specified vector to the current world scale of this node.

type RenderInfo

type RenderInfo struct {
	ViewMatrix math32.Matrix4 // Current camera view matrix
	ProjMatrix math32.Matrix4 // Current camera projection matrix
}

RenderInfo is passed into Render/RenderSetup calls

type TimerCallback

type TimerCallback func(interface{})

TimerCallback is the type for timer callback functions

type TimerManager

type TimerManager struct {
	// contains filtered or unexported fields
}

TimerManager manages multiple timers

func NewTimerManager

func NewTimerManager() *TimerManager

NewTimerManager creates and returns a new timer manager

func (*TimerManager) ClearTimeout

func (tm *TimerManager) ClearTimeout(id int) bool

ClearTimeout clears the timeout specified by the id. Returns true if the timeout is found.

func (*TimerManager) Initialize

func (tm *TimerManager) Initialize()

Initialize initializes the timer manager. It is normally used when the TimerManager is embedded in another type.

func (*TimerManager) ProcessTimers

func (tm *TimerManager) ProcessTimers()

ProcessTimers should be called periodically to process the timers

func (*TimerManager) SetInterval

func (tm *TimerManager) SetInterval(td time.Duration, arg interface{}, cb TimerCallback) int

SetInterval sets a periodic timeout with the specified duration and callback The function returns the timeout id which can be used to cancel the timeout

func (*TimerManager) SetTimeout

func (tm *TimerManager) SetTimeout(td time.Duration, arg interface{}, cb TimerCallback) int

SetTimeout sets a timeout with the specified duration and callback The function returns the timeout id which can be used to cancel the timeout

Jump to

Keyboard shortcuts

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