Documentation ¶
Overview ¶
Package core implements some basic types used by other packages.
Index ¶
- type Callback
- type Dispatcher
- func (d *Dispatcher) CancelDispatch()
- func (d *Dispatcher) ClearSubscriptions()
- func (d *Dispatcher) Dispatch(evname string, ev interface{}) bool
- func (d *Dispatcher) Initialize()
- func (d *Dispatcher) Subscribe(evname string, cb Callback)
- func (d *Dispatcher) SubscribeID(evname string, id interface{}, cb Callback)
- func (d *Dispatcher) UnsubscribeAllID(id interface{}) int
- func (d *Dispatcher) UnsubscribeID(evname string, id interface{}) int
- type IDispatcher
- type INode
- type Intersect
- type Node
- func (n *Node) Add(ichild INode) *Node
- func (n *Node) AddAt(idx int, ichild INode)
- func (n *Node) BoundingBox() math32.Box3
- func (n *Node) Changed() bool
- func (n *Node) ChildAt(idx int) INode
- func (n *Node) ChildIndex(ichild INode) int
- func (n *Node) Children() []INode
- func (n *Node) Clone() INode
- func (n *Node) Direction() math32.Vector3
- func (n *Node) Dispose()
- func (n *Node) DisposeChildren(recurs bool)
- func (n *Node) FindLoaderID(id string) INode
- func (n *Node) FindPath(path string) INode
- func (n *Node) GetNode() *Node
- func (n *Node) Init()
- func (n *Node) LoaderID() string
- func (n *Node) Matrix() math32.Matrix4
- func (n *Node) MatrixWorld() math32.Matrix4
- func (n *Node) Name() string
- func (n *Node) Parent() INode
- func (n *Node) Position() math32.Vector3
- func (n *Node) Quaternion() math32.Quaternion
- func (n *Node) QuaternionMult(q *math32.Quaternion)
- func (n *Node) Raycast(rc *Raycaster, intersects *[]Intersect)
- func (n *Node) Remove(ichild INode) bool
- func (n *Node) RemoveAll(recurs bool)
- func (n *Node) RemoveAt(idx int) INode
- func (n *Node) Render(gs *gls.GLS)
- func (n *Node) RotateOnAxis(axis *math32.Vector3, angle float32)
- func (n *Node) RotateX(x float32)
- func (n *Node) RotateY(y float32)
- func (n *Node) RotateZ(z float32)
- func (n *Node) Rotation() math32.Vector3
- func (n *Node) Scale() math32.Vector3
- func (n *Node) SetChanged(changed bool)
- func (n *Node) SetDirection(x, y, z float32)
- func (n *Node) SetDirectionVec(vdir *math32.Vector3)
- func (n *Node) SetLoaderID(id string)
- func (n *Node) SetMatrix(m *math32.Matrix4)
- func (n *Node) SetName(name string)
- func (n *Node) SetParent(iparent INode)
- func (n *Node) SetPosition(x, y, z float32)
- func (n *Node) SetPositionVec(vpos *math32.Vector3)
- func (n *Node) SetPositionX(x float32)
- func (n *Node) SetPositionY(y float32)
- func (n *Node) SetPositionZ(z float32)
- func (n *Node) SetQuaternion(x, y, z, w float32)
- func (n *Node) SetQuaternionQuat(q *math32.Quaternion)
- func (n *Node) SetQuaternionVec(q *math32.Vector4)
- func (n *Node) SetRotation(x, y, z float32)
- func (n *Node) SetRotationQuat(quat *math32.Quaternion)
- func (n *Node) SetRotationVec(vrot *math32.Vector3)
- func (n *Node) SetRotationX(x float32)
- func (n *Node) SetRotationY(y float32)
- func (n *Node) SetRotationZ(z float32)
- func (n *Node) SetScale(x, y, z float32)
- func (n *Node) SetScaleVec(scale *math32.Vector3)
- func (n *Node) SetScaleX(sx float32)
- func (n *Node) SetScaleY(sy float32)
- func (n *Node) SetScaleZ(sz float32)
- func (n *Node) SetUserData(data interface{})
- func (n *Node) SetVisible(state bool)
- func (n *Node) TranslateOnAxis(axis *math32.Vector3, dist float32)
- func (n *Node) TranslateX(dist float32)
- func (n *Node) TranslateY(dist float32)
- func (n *Node) TranslateZ(dist float32)
- func (n *Node) UpdateMatrix() bool
- func (n *Node) UpdateMatrixWorld()
- func (n *Node) UserData() interface{}
- func (n *Node) Visible() bool
- func (n *Node) WorldDirection(result *math32.Vector3)
- func (n *Node) WorldPosition(result *math32.Vector3)
- func (n *Node) WorldQuaternion(result *math32.Quaternion)
- func (n *Node) WorldRotation(result *math32.Vector3)
- func (n *Node) WorldScale(result *math32.Vector3)
- type Raycaster
- type RenderInfo
- type TimerCallback
- type TimerManager
- func (tm *TimerManager) ClearTimeout(id int) bool
- func (tm *TimerManager) Initialize()
- func (tm *TimerManager) ProcessTimers()
- func (tm *TimerManager) SetInterval(td time.Duration, arg interface{}, cb TimerCallback) int
- func (tm *TimerManager) SetTimeout(td time.Duration, arg interface{}, cb TimerCallback) int
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Callback ¶
type Callback func(string, interface{})
Callback is the type for the Dispatcher callbacks 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) CancelDispatch ¶
func (d *Dispatcher) CancelDispatch()
CancelDispatch cancels the propagation of the current event. No more subscribers will be called for this event dispatch.
func (*Dispatcher) ClearSubscriptions ¶
func (d *Dispatcher) ClearSubscriptions()
ClearSubscriptions clear all subscriptions from this dispatcher
func (*Dispatcher) Dispatch ¶
func (d *Dispatcher) Dispatch(evname string, ev interface{}) bool
Dispatch dispatch the specified event and data to all registered subscribers. The function returns true if the propagation was cancelled by a subscriber.
func (*Dispatcher) Initialize ¶
func (d *Dispatcher) Initialize()
Initialize initializes this event dispatcher. It is normally used by other types which embed an event dispatcher
func (*Dispatcher) Subscribe ¶
func (d *Dispatcher) Subscribe(evname string, cb Callback)
Subscribe subscribes to receive events with the given name. If it is necessary to unsubscribe the event, the function SubscribeID should be used.
func (*Dispatcher) SubscribeID ¶
func (d *Dispatcher) SubscribeID(evname string, id interface{}, cb Callback)
SubscribeID subscribes to receive events with the given name. The function accepts a unique id to be use to unsubscribe this event
func (*Dispatcher) UnsubscribeAllID ¶
func (d *Dispatcher) UnsubscribeAllID(id interface{}) int
UnsubscribeAllID unsubscribes from all events with the specified subscription id. Returns the number of subscriptions found.
func (*Dispatcher) UnsubscribeID ¶
func (d *Dispatcher) UnsubscribeID(evname string, id interface{}) int
UnsubscribeID unsubscribes from the specified event and subscription id Returns the number of subscriptions found.
type IDispatcher ¶
type IDispatcher interface { Subscribe(evname string, cb Callback) SubscribeID(evname string, id interface{}, cb Callback) UnsubscribeID(evname string, id interface{}) int Dispatch(evname string, ev interface{}) bool ClearSubscriptions() CancelDispatch() }
IDispatcher is the interface for dispatchers
type INode ¶
type INode interface { IDispatcher GetNode() *Node UpdateMatrixWorld() Raycast(*Raycaster, *[]Intersect) BoundingBox() math32.Box3 Render(gs *gls.GLS) Clone() INode Dispose() }
INode is the interface for all node types.
type Intersect ¶
type Intersect struct { // Distance between the origin of the ray and the intersect Distance float32 // Point of intersection in world coordinates Point math32.Vector3 // Intersected node Object INode // If the geometry has indices, this field is the // index in the Indices buffer of the vertex intersected // or the first vertex of the intersected face. // If the geometry doesn't have indices, this field is the // index in the positions buffer of the vertex intersected // or the first vertex of the insersected face. Index uint32 }
Intersect describes the intersection between a ray and an object
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 (*Node) Add ¶
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 ¶
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 ¶
BoundingBox satisfies the INode interface.
func (*Node) ChildIndex ¶
ChildIndex returns the index of the specified child (-1 if not found).
func (*Node) DisposeChildren ¶
DisposeChildren removes and disposes of all children. If 'recurs' is true, call DisposeChildren on each child recursively.
func (*Node) FindLoaderID ¶
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 ¶
FindPath finds a node with the specified path starting with this node and searching in all its children recursively. A path is the sequence of the names from the first node to the desired node separated by the forward slash.
func (*Node) GetNode ¶
GetNode satisfies the INode interface and returns a pointer to the embedded Node.
func (*Node) Init ¶
func (n *Node) Init()
Init initializes the node. Normally called by other types which embed a Node.
func (*Node) LoaderID ¶
LoaderID returns an optional ID set when this node was created by an external loader such as Collada.
func (*Node) MatrixWorld ¶
MatrixWorld returns a copy of the matrix world of this node.
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 ¶
Remove removes the specified INode from the list of children. Returns true if found or false otherwise.
func (*Node) RotateOnAxis ¶
RotateOnAxis rotates around the specified local axis the specified angle in radians.
func (*Node) SetChanged ¶
SetChanged sets the matNeedsUpdate flag of the node.
func (*Node) SetDirection ¶
SetDirection sets the direction.
func (*Node) SetDirectionVec ¶
SetDirectionVec sets the direction based on a vector pointer.
func (*Node) SetLoaderID ¶
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) SetName ¶
SetName sets the (optional) name. The name can be used for debugging or other purposes.
func (*Node) SetPosition ¶
SetPosition sets the position.
func (*Node) SetPositionVec ¶
SetPositionVec sets the position based on the specified vector pointer.
func (*Node) SetPositionX ¶
SetPositionX sets the X coordinate of the position.
func (*Node) SetPositionY ¶
SetPositionY sets the Y coordinate of the position.
func (*Node) SetPositionZ ¶
SetPositionZ sets the Z coordinate of the position.
func (*Node) SetQuaternion ¶
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 ¶
SetQuaternionVec sets the quaternion based on the specified quaternion unit multiples vector.
func (*Node) SetRotation ¶
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 ¶
SetRotationVec sets the global rotation in Euler angles (radians) based on the specified vector pointer.
func (*Node) SetRotationX ¶
SetRotationX sets the global X rotation to the specified angle in radians.
func (*Node) SetRotationY ¶
SetRotationY sets the global Y rotation to the specified angle in radians.
func (*Node) SetRotationZ ¶
SetRotationZ sets the global Z rotation to the specified angle in radians.
func (*Node) SetScaleVec ¶
SetScaleVec sets the scale based on the specified vector pointer.
func (*Node) SetUserData ¶
func (n *Node) SetUserData(data interface{})
SetUserData sets the generic user data associated to the node.
func (*Node) SetVisible ¶
SetVisible sets the visibility of the node.
func (*Node) TranslateOnAxis ¶
TranslateOnAxis translates the specified distance on the specified local axis.
func (*Node) TranslateX ¶
TranslateX translates the specified distance on the local X axis.
func (*Node) TranslateY ¶
TranslateY translates the specified distance on the local Y axis.
func (*Node) TranslateZ ¶
TranslateZ translates the specified distance on the local Z axis.
func (*Node) UpdateMatrix ¶
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) WorldDirection ¶
WorldDirection updates the world matrix and sets the specified vector to the current world direction of this node.
func (*Node) WorldPosition ¶
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 ¶
WorldRotation updates the world matrix and sets the specified vector to the current world rotation of this node in Euler angles.
func (*Node) WorldScale ¶
WorldScale updates the world matrix and sets the specified vector to the current world scale of this node.
type Raycaster ¶
type Raycaster struct { // The distance from the ray origin to the intersected points // must be greater than the value of this field to be considered. // The defaul value is 0.0 Near float32 // The distance from the ray origin to the intersected points // must be less than the value of this field to be considered. // The defaul value is +Infinity. Far float32 // Minimum distance in world coordinates between the ray and // a line segment when checking intersects with lines. // The default value is 0.1 LinePrecision float32 // Minimum distance in world coordinates between the ray and // a point when checking intersects with points. // The default value is 0.1 PointPrecision float32 // This field must be set with the camera view matrix used // when checking for sprite intersections. // It is set automatically when using camera.SetRaycaster ViewMatrix math32.Matrix4 // Embedded ray math32.Ray }
Raycaster represents an empty object that can cast rays and check for ray intersections.
func NewRaycaster ¶
NewRaycaster creates and returns a pointer to a new raycaster object with the specified origin and direction.
func (*Raycaster) IntersectObject ¶
IntersectObject checks intersections between this raycaster and and the specified node. If recursive is true, it also checks the intersection with the node's children. Intersections are returned sorted by distance, closest first.
func (*Raycaster) IntersectObjects ¶
IntersectObjects checks intersections between this raycaster and the specified array of scene nodes. If recursive is true, it also checks the intersection with each nodes' children. Intersections are returned sorted by distance, closest first.
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