Documentation
¶
Overview ¶
Package core implements some basic types used by other packages.
Index ¶
- Constants
- type Callback
- type CharEvent
- type Cursor
- type CursorEvent
- type Dispatcher
- func (d *Dispatcher) Dispatch(evname string, ev any) int
- func (d *Dispatcher) Initialize()
- func (d *Dispatcher) Subscribe(evname string, cb Callback)
- func (d *Dispatcher) SubscribeID(evname string, id any, cb Callback)
- func (d *Dispatcher) UnsubscribeAllID(id any) int
- func (d *Dispatcher) UnsubscribeID(evname string, id any) int
- type FocusEvent
- type IDispatcher
- type INode
- type Key
- type KeyEvent
- type ModifierKey
- type MouseButton
- type MouseEvent
- type Node
- func (n *Node) Add(ichild INode) *Node
- func (n *Node) AddAt(idx int, ichild INode) *Node
- 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) GetINode() INode
- func (n *Node) GetNode() *Node
- func (n *Node) Init(inode INode)
- func (n *Node) IsAncestorOf(desc INode) bool
- func (n *Node) LoaderID() string
- func (n *Node) LookAt(target, up *math32.Vector3)
- func (n *Node) LowestCommonAncestor(other INode) INode
- 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) Remove(ichild INode) bool
- func (n *Node) RemoveAll(recurs bool)
- func (n *Node) RemoveAt(idx int) INode
- func (n *Node) Render(*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) 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 any)
- 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() any
- 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 PosEvent
- type RenderInfo
- type ScrollEvent
- type SizeEvent
- type TimerCallback
- type TimerManager
Constants ¶
const ( KeyUnknown = Key(glfw.KeyUnknown) KeySpace = Key(glfw.KeySpace) KeyApostrophe = Key(glfw.KeyApostrophe) KeyComma = Key(glfw.KeyComma) KeyMinus = Key(glfw.KeyMinus) KeyPeriod = Key(glfw.KeyPeriod) KeySlash = Key(glfw.KeySlash) Key0 = Key(glfw.Key0) Key1 = Key(glfw.Key1) Key2 = Key(glfw.Key2) Key3 = Key(glfw.Key3) Key4 = Key(glfw.Key4) Key5 = Key(glfw.Key5) Key6 = Key(glfw.Key6) Key7 = Key(glfw.Key7) Key8 = Key(glfw.Key8) Key9 = Key(glfw.Key9) KeySemicolon = Key(glfw.KeySemicolon) KeyEqual = Key(glfw.KeyEqual) KeyA = Key(glfw.KeyA) KeyB = Key(glfw.KeyB) KeyC = Key(glfw.KeyC) KeyD = Key(glfw.KeyD) KeyE = Key(glfw.KeyE) KeyF = Key(glfw.KeyF) KeyG = Key(glfw.KeyG) KeyH = Key(glfw.KeyH) KeyI = Key(glfw.KeyI) KeyJ = Key(glfw.KeyJ) KeyK = Key(glfw.KeyK) KeyL = Key(glfw.KeyL) KeyM = Key(glfw.KeyM) KeyN = Key(glfw.KeyN) KeyO = Key(glfw.KeyO) KeyP = Key(glfw.KeyP) KeyQ = Key(glfw.KeyQ) KeyR = Key(glfw.KeyR) KeyS = Key(glfw.KeyS) KeyT = Key(glfw.KeyT) KeyU = Key(glfw.KeyU) KeyV = Key(glfw.KeyV) KeyW = Key(glfw.KeyW) KeyX = Key(glfw.KeyX) KeyY = Key(glfw.KeyY) KeyZ = Key(glfw.KeyZ) KeyLeftBracket = Key(glfw.KeyLeftBracket) KeyBackslash = Key(glfw.KeyBackslash) KeyRightBracket = Key(glfw.KeyRightBracket) KeyGraveAccent = Key(glfw.KeyGraveAccent) KeyWorld1 = Key(glfw.KeyWorld1) KeyWorld2 = Key(glfw.KeyWorld2) KeyEscape = Key(glfw.KeyEscape) KeyEnter = Key(glfw.KeyEnter) KeyTab = Key(glfw.KeyTab) KeyBackspace = Key(glfw.KeyBackspace) KeyInsert = Key(glfw.KeyInsert) KeyDelete = Key(glfw.KeyDelete) KeyRight = Key(glfw.KeyRight) KeyLeft = Key(glfw.KeyLeft) KeyDown = Key(glfw.KeyDown) KeyUp = Key(glfw.KeyUp) KeyPageUp = Key(glfw.KeyPageUp) KeyPageDown = Key(glfw.KeyPageDown) KeyHome = Key(glfw.KeyHome) KeyEnd = Key(glfw.KeyEnd) KeyCapsLock = Key(glfw.KeyCapsLock) KeyScrollLock = Key(glfw.KeyScrollLock) KeyNumLock = Key(glfw.KeyNumLock) KeyPrintScreen = Key(glfw.KeyPrintScreen) KeyPause = Key(glfw.KeyPause) KeyF1 = Key(glfw.KeyF1) KeyF2 = Key(glfw.KeyF2) KeyF3 = Key(glfw.KeyF3) KeyF4 = Key(glfw.KeyF4) KeyF5 = Key(glfw.KeyF5) KeyF6 = Key(glfw.KeyF6) KeyF7 = Key(glfw.KeyF7) KeyF8 = Key(glfw.KeyF8) KeyF9 = Key(glfw.KeyF9) KeyF10 = Key(glfw.KeyF10) KeyF11 = Key(glfw.KeyF11) KeyF12 = Key(glfw.KeyF12) KeyF13 = Key(glfw.KeyF13) KeyF14 = Key(glfw.KeyF14) KeyF15 = Key(glfw.KeyF15) KeyF16 = Key(glfw.KeyF16) KeyF17 = Key(glfw.KeyF17) KeyF18 = Key(glfw.KeyF18) KeyF19 = Key(glfw.KeyF19) KeyF20 = Key(glfw.KeyF20) KeyF21 = Key(glfw.KeyF21) KeyF22 = Key(glfw.KeyF22) KeyF23 = Key(glfw.KeyF23) KeyF24 = Key(glfw.KeyF24) KeyF25 = Key(glfw.KeyF25) KeyKP0 = Key(glfw.KeyKP0) KeyKP1 = Key(glfw.KeyKP1) KeyKP2 = Key(glfw.KeyKP2) KeyKP3 = Key(glfw.KeyKP3) KeyKP4 = Key(glfw.KeyKP4) KeyKP5 = Key(glfw.KeyKP5) KeyKP6 = Key(glfw.KeyKP6) KeyKP7 = Key(glfw.KeyKP7) KeyKP8 = Key(glfw.KeyKP8) KeyKP9 = Key(glfw.KeyKP9) KeyKPDecimal = Key(glfw.KeyKPDecimal) KeyKPDivide = Key(glfw.KeyKPDivide) KeyKPMultiply = Key(glfw.KeyKPMultiply) KeyKPSubtract = Key(glfw.KeyKPSubtract) KeyKPAdd = Key(glfw.KeyKPAdd) KeyKPEnter = Key(glfw.KeyKPEnter) KeyKPEqual = Key(glfw.KeyKPEqual) KeyLeftShift = Key(glfw.KeyLeftShift) KeyLeftControl = Key(glfw.KeyLeftControl) KeyLeftAlt = Key(glfw.KeyLeftAlt) KeyLeftSuper = Key(glfw.KeyLeftSuper) KeyRightShift = Key(glfw.KeyRightShift) KeyRightControl = Key(glfw.KeyRightControl) KeyRightAlt = Key(glfw.KeyRightAlt) KeyRightSuper = Key(glfw.KeyRightSuper) KeyMenu = Key(glfw.KeyMenu) KeyLast = Key(glfw.KeyLast) )
const ( ModShift = ModifierKey(glfw.ModShift) ModControl = ModifierKey(glfw.ModControl) ModAlt = ModifierKey(glfw.ModAlt) ModSuper = ModifierKey(glfw.ModSuper) )
const ( MouseButton1 = MouseButton(glfw.MouseButton1) MouseButton2 = MouseButton(glfw.MouseButton2) MouseButton3 = MouseButton(glfw.MouseButton3) MouseButton4 = MouseButton(glfw.MouseButton4) MouseButton5 = MouseButton(glfw.MouseButton5) MouseButton6 = MouseButton(glfw.MouseButton6) MouseButton7 = MouseButton(glfw.MouseButton7) MouseButton8 = MouseButton(glfw.MouseButton8) MouseButtonLast = MouseButton(glfw.MouseButtonLast) MouseButtonLeft = MouseButton(glfw.MouseButtonLeft) MouseButtonRight = MouseButton(glfw.MouseButtonRight) MouseButtonMiddle = MouseButton(glfw.MouseButtonMiddle) )
const ( ArrowCursor = Cursor(iota) IBeamCursor CrosshairCursor HandCursor HResizeCursor VResizeCursor DiagResizeTrblCursor DiagResizeTlbrCursor CursorLast = DiagResizeTlbrCursor )
const ( OnWindowFocus = "w.OnWindowFocus" OnWindowPos = "w.OnWindowPos" OnWindowSize = "w.OnWindowSize" OnKeyUp = "w.OnKeyUp" OnKeyDown = "w.OnKeyDown" OnKeyRepeat = "w.OnKeyRepeat" OnChar = "w.OnChar" OnCursor = "w.OnCursor" OnMouseUp = "w.OnMouseUp" OnMouseDown = "w.OnMouseDown" OnScroll = "w.OnScroll" )
window event names
const (
OnDescendant = "core.OnDescendant" // Dispatched when a descendent is added or removed
)
Node events.
const OnExit = "app.OnExit"
OnExit is the event generated by Application when the user tries to close the window (desktop) or the Exit() method is called.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CharEvent ¶ added in v0.2.18
type CharEvent struct {
Char rune
}
CharEvent describes a window char event
type Cursor ¶ added in v0.2.18
type Cursor int
Cursor is an enum of mouse cursors supported by G3N. Mouse cursor is the image where the mouse is.
type CursorEvent ¶ added in v0.2.18
type CursorEvent struct { Xpos float32 Ypos float32 Mods ModifierKey }
CursorEvent describes a cursor position changed event
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 any) 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 any, 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 any) 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 any) int
UnsubscribeID removes all subscribed callbacks with the specified unique id from the specified event. Returns the number of subscriptions removed.
type FocusEvent ¶ added in v0.2.18
type FocusEvent struct {
Focused bool
}
FocusEvent describes a focus event
type IDispatcher ¶
type IDispatcher interface { Subscribe(evname string, cb Callback) SubscribeID(evname string, id any, cb Callback) UnsubscribeID(evname string, id any) int UnsubscribeAllID(id any) int Dispatch(evname string, ev any) 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 KeyEvent ¶ added in v0.2.18
type KeyEvent struct { Key Key Mods ModifierKey }
KeyEvent describes a window key event
type ModifierKey ¶ added in v0.2.18
type ModifierKey int
ModifierKey is an enum of GLFW modifier keyboard key codes.
type MouseButton ¶ added in v0.2.18
type MouseButton int
MouseButton is an enum of GLFW mouse button codes.
type MouseEvent ¶ added in v0.2.18
type MouseEvent struct { Xpos float32 Ypos float32 Button MouseButton Mods ModifierKey }
MouseEvent describes a mouse event over the window
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. Computes union of own bounding box with those of all descendents.
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 by recursively searching the children. A path is a sequence of names of nested child nodes, separated by a forward slash.
func (*Node) GetNode ¶
GetNode satisfies the INode interface and returns a pointer to the embedded Node.
func (*Node) IsAncestorOf ¶
IsAncestorOf returns whether this node is an ancestor of the specified node. Returns true if they are the same.
func (*Node) LoaderID ¶
LoaderID returns an optional ID set when this node was created by an external loader such as Collada.
func (*Node) LookAt ¶
LookAt rotates the node to look at the specified target position, using the specified up vector.
func (*Node) LowestCommonAncestor ¶
LowestCommonAncestor returns the common ancestor of this node and the specified node if any.
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 ¶
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) 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 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 ScrollEvent ¶ added in v0.2.18
type ScrollEvent struct { Xoffset float32 Yoffset float32 Mods ModifierKey }
ScrollEvent describes a scroll event
type TimerCallback ¶
type TimerCallback func(any)
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 any, 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 any, 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