Documentation ¶
Overview ¶
Package core implements some basic types used by other packages.
Index ¶
- type Callback
- type Dispatcher
- func (ed *Dispatcher) CancelDispatch()
- func (ed *Dispatcher) ClearSubscriptions()
- func (ed *Dispatcher) Dispatch(evname string, ev interface{}) bool
- func (ed *Dispatcher) Initialize()
- func (ed *Dispatcher) Subscribe(evname string, cb Callback)
- func (ed *Dispatcher) SubscribeID(evname string, id interface{}, cb Callback)
- func (ed *Dispatcher) UnsubscribeID(evname string, id interface{}) int
- type IDispatcher
- type INode
- type Intersect
- type Intersects
- type Node
- func (n *Node) Add(ichild INode) *Node
- func (n *Node) AddRotationX(x float32)
- func (n *Node) AddRotationY(y float32)
- func (n *Node) AddRotationZ(z float32)
- func (n *Node) Children() []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) 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) Render(gs *gls.GLS)
- func (n *Node) Rotation() math32.Vector3
- func (n *Node) Scale() math32.Vector3
- func (n *Node) SetDirection(x, y, z float32)
- func (n *Node) SetDirectionv(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) SetRotation(x, y, z float32)
- 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) UpdateMatrix()
- 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 Dispatcher ¶
type Dispatcher struct {
// contains filtered or unexported fields
}
func NewDispatcher ¶
func NewDispatcher() *Dispatcher
NewEventDispatcher creates and returns a pointer to an Event Dispatcher
func (*Dispatcher) CancelDispatch ¶
func (ed *Dispatcher) CancelDispatch()
CancelDispatch cancels the propagation of the current event. No more subscribers will be called for this event dispatch.
func (*Dispatcher) ClearSubscriptions ¶
func (ed *Dispatcher) ClearSubscriptions()
ClearSubscriptions clear all subscriptions from this dispatcher
func (*Dispatcher) Dispatch ¶
func (ed *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 (ed *Dispatcher) Initialize()
Initialize initializes this event dispatcher. It is normally used by other types which embed an event dispatcher
func (*Dispatcher) Subscribe ¶
func (ed *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 (ed *Dispatcher) SubscribeID(evname string, id interface{}, cb Callback)
Subscribe subscribes to receive events with the given name. The function accepts a unique id to be use to unsubscribe this event
func (*Dispatcher) UnsubscribeID ¶
func (ed *Dispatcher) UnsubscribeID(evname string, id interface{}) int
Unsubscribe unsubscribes from the specified event and subscription id Returns the number of subscriptions found.
type IDispatcher ¶
type INode ¶
type INode interface { GetNode() *Node UpdateMatrixWorld() Raycast(*Raycaster, *[]Intersect) Render(gs *gls.GLS) Dispose() }
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 Intersects ¶
type Intersects []Intersect
For sorting Intersects by distance
func (Intersects) Len ¶
func (is Intersects) Len() int
func (Intersects) Less ¶
func (is Intersects) Less(i, j int) bool
func (Intersects) Swap ¶
func (is Intersects) Swap(i, j int)
type Node ¶
type Node struct { Dispatcher // Embedded event dispatcher // contains filtered or unexported fields }
func (*Node) AddRotationX ¶
AddRotationX adds to the current rotation x coordinate in radians The node quaternion is updated
func (*Node) AddRotationY ¶
AddRotationY adds to the current rotation y coordinate in radians The node quaternion is updated
func (*Node) AddRotationZ ¶
AddRotationZ adds to the current rotation z coordinate in radians The node quaternion is updated
func (*Node) DisposeChildren ¶
DisposeChildren removes and disposes all children of this node and if 'recurs' is true for each of its children recursively.
func (*Node) FindLoaderID ¶
FindLoaderID looks in the specified node and all its children for a node with the specifid loaderID and if found returns it. Returns nil if not found
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 this Node It is normally use 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 this node matrix world
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 quaternion by the specified quaternion
func (*Node) Remove ¶
Remove removes the specified INode from this node list of children Returns true if found or false otherwise
func (*Node) SetDirection ¶
SetDirection sets this node initial direction vector
func (*Node) SetDirectionv ¶
SetDirection sets this node initial direction vector
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 set an option name for the node. This name can be used for debugging or other purposes.
func (*Node) SetPosition ¶
SetPosition sets this node world position
func (*Node) SetPositionVec ¶
SetPositionVec sets this node position from the specified vector pointer
func (*Node) SetPositionX ¶
SetPositionX sets the x coordinate of this node position
func (*Node) SetPositionY ¶
SetPositionY sets the y coordinate of this node position
func (*Node) SetPositionZ ¶
SetPositionZ sets the z coordinate of this node position
func (*Node) SetQuaternion ¶
SetQuaternion sets this node quaternion with the specified fields
func (*Node) SetQuaternionQuat ¶
func (n *Node) SetQuaternionQuat(q *math32.Quaternion)
SetQuaternionQuat sets this node quaternion from the specified quaternion pointer
func (*Node) SetRotation ¶
SetRotation sets the three fields of the node rotation in radians The node quaternion is updated
func (*Node) SetRotationX ¶
SetRotationX sets the x rotation angle in radians The node quaternion is updated
func (*Node) SetRotationY ¶
SetRotationY sets the y rotation angle in radians The node quaternion is updated
func (*Node) SetRotationZ ¶
SetRotationZ sets the z rotation angle in radians The node quaternion is updated
func (*Node) SetScaleVec ¶
SetScaleVec sets this node scale from a pointer to a Vector3
func (*Node) SetUserData ¶
func (n *Node) SetUserData(data interface{})
SetUserData sets this node associated generic user data
func (*Node) SetVisible ¶
SetVisible sets the node visibility state
func (*Node) UpdateMatrix ¶
func (n *Node) UpdateMatrix()
UpdateMatrix updates this node local matrix transform from its current 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 this node associated generic user data
func (*Node) WorldDirection ¶
WorldDirection updates this object world matrix and sets the current world direction.
func (*Node) WorldPosition ¶
WorldPosition updates this node world matrix and gets the current world position vector.
func (*Node) WorldQuaternion ¶
func (n *Node) WorldQuaternion(result *math32.Quaternion)
WorldQuaternion sets the specified result quaternion with this node current world quaternion
func (*Node) WorldRotation ¶
WorldRotation sets the specified result vector with current world rotation of this node in Euler angles.
func (*Node) WorldScale ¶
WorldScale sets the specified result vector with 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 }
func NewRaycaster ¶
New 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 TimerManager ¶
type TimerManager struct {
// contains filtered or unexported fields
}
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