minieng

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2021 License: Apache-2.0 Imports: 15 Imported by: 0

README

Documentation

Index

Constants

View Source
const (
	// AxisMax is the maximum value a joystick or keypress axis will reach
	AxisMax float32 = 1
	// AxisNeutral is the value an axis returns if there has been to state change.
	AxisNeutral float32 = 0
	// AxisMin is the minimum value a joystick or keypress axis will reach
	AxisMin float32 = -1
)
View Source
const (
	// KeyStateUp is a state for when the key is not currently being pressed
	KeyStateUp = iota
	// KeyStateDown is a state for when the key is currently being pressed
	KeyStateDown
	// KeyStateJustDown is a state for when a key was just pressed
	KeyStateJustDown
	// KeyStateJustUp is a state for when a key was just released
	KeyStateJustUp
)

Variables

View Source
var (
	// Input handles all input: mouse, keyboard and touch
	Input *InputManager

	// Mailbox is used by all Systems to communicate
	Mailbox *MessageManager

	// Time ...
	Time *Clock
)
View Source
var (
	// Move is an action representing mouse movement
	Move = Action(0)
	// Press is an action representing a mouse press/click
	Press = Action(1)
	// Release is an action representing a mouse a release
	Release = Action(2)
	// Neutral represents a neutral action
	Neutral = Action(99)
	// Shift represents the shift modifier.
	// It is triggered when the shift key is pressed simultaneously with another key
	Shift = Modifier(0x0001)
	// Control represents the control modifier
	// It is triggered when the ctrl key is pressed simultaneously with another key
	Control = Modifier(0x0002)
	// Alt represents the alt modifier
	// It is triggered when the alt key is pressed simultaneously with another key
	Alt = Modifier(0x0004)
	// Super represents the super modifier
	// (Windows key on Microsoft Windows, Command key on Apple OSX, and varies on Linux)
	// It is triggered when the super key is pressed simultaneously with another key
	Super = Modifier(0x0008)
)
View Source
var (
	// Backend ...
	Backend = "GLFW"

	// ResizeXOffset ...
	ResizeXOffset = float32(0)

	// ResizeYOffset ...
	ResizeYOffset = float32(0)
)
View Source
var Files = &Formats{formats: make(map[string]FileLoader)}

Files manages global resource handling of registered file formats for game assets.

Functions

func CanvasHeight

func CanvasHeight() float32

CanvasHeight ...

func CanvasScale

func CanvasScale() float32

CanvasScale ...

func CanvasWidth

func CanvasWidth() float32

CanvasWidth ...

func CloseEvent

func CloseEvent()

CloseEvent ...

func CreateWindow

func CreateWindow(title string, width, height int)

CreateWindow ...

func DestroyWindow

func DestroyWindow()

DestroyWindow ...

func Exit

func Exit()

Exit is the safest way to close your game, as `engo` will correctly attempt to close all windows, handlers and contexts

func RegisterScene

func RegisterScene(s Scene)

RegisterScene registers the `Scene`, so it can later be used by `SetSceneByName`

func Run

func Run(o RunOptions, defaultScene Scene)

Run is called to create a window, initialize everything, and start the main loop. Once this function returns, the game window has been closed already. You can supply a lot of options within `RunOptions`, and your starting `Scene` should be defined in `defaultScene`.

func RunIteration

func RunIteration()

RunIteration runs one iteration per frame

func RunPreparation

func RunPreparation(defaultScene Scene)

RunPreparation is called automatically when calling Open. It should only be called once.

func SetScene

func SetScene(s Scene, forceNewWorld bool)

SetScene sets the currentScene to the given Scene, and optionally forcing to create a new World that goes with it.

func SetSceneByName

func SetSceneByName(name string, forceNewWorld bool) error

SetSceneByName does a lookup for the `Scene` where its `Type()` equals `name`, and then sets it as current `Scene`

func WindowHeight

func WindowHeight() float32

WindowHeight ...

func WindowWidth

func WindowWidth() float32

WindowWidth ...

Types

type Action

type Action int

Action corresponds to a control action such as move, press, release

type Axis

type Axis struct {
	// Name represents the name of the axis (Horizontal, Vertical)
	Name string
	// Pairs represents the axis pairs of this acis
	Pairs []AxisPair
}

An Axis is an input which is a spectrum of values. An example of this is the horizontal movement in a game, or how far a joystick is pressed.

func (Axis) Value

func (a Axis) Value() float32

Value returns the value of an Axis.

type AxisKeyPair

type AxisKeyPair struct {
	Min Key
	Max Key
}

An AxisKeyPair is a set of Min/Max values used for detecting whether or not a key has been pressed.

func (AxisKeyPair) Value

func (keys AxisKeyPair) Value() float32

Value returns the value of a keypress.

type AxisMouse

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

AxisMouse is an axis for a single x or y component of the Mouse. The value returned from it is the delta movement, since the previous call and it is not constrained by the AxisMin and AxisMax values.

func NewAxisMouse

func NewAxisMouse(d AxisMouseDirection) *AxisMouse

NewAxisMouse creates a new Mouse Axis in either direction AxisMouseVert or AxisMouseHori.

func (*AxisMouse) Value

func (am *AxisMouse) Value() float32

Value returns the delta of a mouse movement.

type AxisMouseDirection

type AxisMouseDirection uint

AxisMouseDirection is the direction (X or Y) which the mouse is being tracked for.

const (
	// AxisMouseVert is vertical mouse axis
	AxisMouseVert AxisMouseDirection = 0
	// AxisMouseHori is vertical mouse axis
	AxisMouseHori AxisMouseDirection = 1
)

type AxisPair

type AxisPair interface {
	Value() float32
}

An AxisPair is a set of Min/Max values which could possible be used by an Axis.

type BasicEntity

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

A BasicEntity is simply a set of components with a unique ID attached to it, nothing more. It belongs to any amount of Systems, and has a number of Components

func NewBasic

func NewBasic() BasicEntity

NewBasic creates a new Entity with a new unique identifier. It is safe for concurrent use.

func NewBasics

func NewBasics(amount int) []BasicEntity

NewBasics creates an amount of new entities with a new unique identifiers. It is safe for concurrent use, and performs better than NewBasic for large numbers of entities.

func (*BasicEntity) GetBasicEntity

func (e *BasicEntity) GetBasicEntity() *BasicEntity

GetBasicEntity returns a Pointer to the BasicEntity itself By having this method, All Entities containing a BasicEntity now automatically have a GetBasicEntity Method This allows system.Add functions to recieve a single interface EG: s.AddByInterface(a interface{GetBasicEntity()*BasicEntity, GetSpaceComponent()*SpaceComponent){ s.Add(a.GetBasicEntity(),a.GetSpaceComponent()) }

func (BasicEntity) ID

func (e BasicEntity) ID() uint64

ID returns the unique identifier of the entity.

type Button

type Button struct {
	Triggers []Key
	Name     string
}

A Button is an input which can be either JustPressed, JustReleased or Down. Common uses would be for, a jump key or an action key.

func (Button) Down

func (b Button) Down() bool

Down checks whether the current input is being held down.

func (Button) JustPressed

func (b Button) JustPressed() bool

JustPressed checks whether an input was pressed in the previous frame.

func (Button) JustReleased

func (b Button) JustReleased() bool

JustReleased checks whether an input was released in the previous frame.

type Clock

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

A Clock is a measurement built in `engo` to measure the actual frames per seconds (framerate).

func NewClock

func NewClock() *Clock

NewClock creates a new timer which allows you to measure ticks per seconds. Be sure to call `Tick()` whenever you want a tick to occur - it does not automatically tick each frame.

func (*Clock) Delta

func (c *Clock) Delta() float32

Delta is the amount of seconds between the last tick and the one before that

func (*Clock) FPS

func (c *Clock) FPS() float32

FPS is the amount of frames per second, computed every time a tick occurs at least a second after the previous update

func (*Clock) Tick

func (c *Clock) Tick()

Tick indicates a new tick/frame has occurred.

func (*Clock) Time

func (c *Clock) Time() float32

Time is the number of seconds the clock has been running

type Cursor

type Cursor uint8

Cursor is a reference to standard cursors, to be used in conjunction with `SetCursor`. What they look like, is different for each platform.

const (
	// CursorNone can be used to reset the cursor.
	CursorNone Cursor = iota
	// CursorArrow represents an arrow cursor
	CursorArrow
	// CursorCrosshair represents a crosshair cursor
	CursorCrosshair
	// CursorHand represents a hand cursor
	CursorHand
	// CursorIBeam represents an IBeam cursor
	CursorIBeam
	// CursorHResize represents a HResize cursor
	CursorHResize
	// CursorVResize represents a VResize cursor
	CursorVResize
)

type Exiter

type Exiter interface {
	// Exit is called when the user or the system requests to close the game
	// This should be used to cleanup or prompt user if they're sure they want to close
	// To prevent the default action (close/exit) make sure to set OverrideCloseAction in
	// your RunOpts to `true`. You should then handle the exiting of the program by calling
	//    engo.Exit()
	Exit()
}

Exiter is an optional interface a Scene can implement, indicating it'll have custom behavior whenever the game get closed.

type FileLoader

type FileLoader interface {
	// Load loads the given resource into memory.
	Load(url string, data io.Reader) error

	// Unload releases the given resource from memory.
	Unload(url string) error

	// Resource returns the given resource, and an error if it didn't succeed.
	Resource(url string) (Resource, error)
}

FileLoader implements support for loading and releasing file resources.

type Formats

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

Formats manages resource handling of registered file formats.

func (*Formats) Load

func (formats *Formats) Load(urls ...string) error

Load loads the given resource(s) into memory, stopping at the first error.

func (*Formats) Register

func (formats *Formats) Register(ext string, loader FileLoader)

Register registers a resource loader for the given file format.

func (*Formats) Resource

func (formats *Formats) Resource(url string) (Resource, error)

Resource returns the given resource, and an error if it didn't succeed.

func (*Formats) SetRoot

func (formats *Formats) SetRoot(root string)

SetRoot can be used to change the default directory from `assets` to whatever you want.

Whenever `root` does not start with the directory `assets`, you will not be able to support mobile (Android/iOS) since they require you to put all resources within the `assets` directory. More information about that is available here: https://godoc.org/golang.org/x/mobile/asset

You can, however, use subfolders within the `assets` folder, and set those as `root`.

func (*Formats) Unload

func (formats *Formats) Unload(url string) error

Unload releases the given resource from memory.

type GLFW

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

GLFW implements a platform based on github.com/go-gl/glfw (v3.2).

func (*GLFW) ClipboardText

func (p *GLFW) ClipboardText() (string, error)

ClipboardText returns the current clipboard text, if available.

func (*GLFW) DisplaySize

func (p *GLFW) DisplaySize() [2]float32

DisplaySize returns the dimension of the display.

func (*GLFW) FramebufferSize

func (p *GLFW) FramebufferSize() [2]float32

FramebufferSize returns the dimension of the framebuffer.

func (*GLFW) NewFrame

func (p *GLFW) NewFrame()

NewFrame marks the begin of a render pass. It forwards all current state to imgui IO.

func (*GLFW) SetClipboardText

func (p *GLFW) SetClipboardText(text string)

SetClipboardText sets the text as the current clipboard text.

type Hider

type Hider interface {
	// Hide is called when an other Scene becomes active
	Hide()
}

Hider is an optional interface a Scene can implement, indicating it'll have custom behavior whenever the Scene get hidden to make room fr other Scenes.

type Identifier

type Identifier interface {
	ID() uint64
}

Identifier is an interface for anything that implements the basic ID() uint64, as the BasicEntity does. It is useful as more specific interface for an entity registry than just the interface{} interface

type IdentifierSlice

type IdentifierSlice []Identifier

IdentifierSlice implements the sort.Interface, so you can use the store entites in slices, and use the P=n*log n lookup for them

func (IdentifierSlice) Len

func (is IdentifierSlice) Len() int

Len returns the length of the underlying slice part of the sort.Interface

func (IdentifierSlice) Less

func (is IdentifierSlice) Less(i, j int) bool

Less will return true if the ID of element at i is less than j; part of the sort.Interface

func (IdentifierSlice) Swap

func (is IdentifierSlice) Swap(i, j int)

Swap the elements at positions i and j part of the sort.Interface

type Initializer

type Initializer interface {
	// New initializes the given System, and may be used to initialize some
	// values beforehand, like storing a reference to the World.
	New(*World)
}

Initializer provides initialization of systems.

type InputManager

type InputManager struct {
	// Mouse is InputManager's reference to the mouse. It is recommended to use the
	// Axis and Button system if at all possible.
	Mouse Mouse
	// contains filtered or unexported fields
}

InputManager contains information about all forms of input.

func NewInputManager

func NewInputManager() *InputManager

NewInputManager holds onto anything input related for engo

func (*InputManager) Axis

func (im *InputManager) Axis(name string) Axis

Axis retrieves an Axis with a specified name.

func (*InputManager) Button

func (im *InputManager) Button(name string) Button

Button retrieves a Button with a specified name.

func (*InputManager) RegisterAxis

func (im *InputManager) RegisterAxis(name string, pairs ...AxisPair)

RegisterAxis registers a new axis which can be used to retrieve inputs which are spectrums.

func (*InputManager) RegisterButton

func (im *InputManager) RegisterButton(name string, keys ...Key)

RegisterButton registers a new button input.

type Key

type Key int

Key correspends to a keyboard key

var (
	// Grave represents the '`' keyboard key
	Grave Key = 192
	// Dash represents the '-' keyboard key
	Dash Key = 189
	// Apostrophe represents the `'` keyboard key
	Apostrophe Key = 222
	// Semicolon represents the ';' keyboard key
	Semicolon Key = 186
	// Equals reprsents the '=' keyboard key
	Equals Key = 187
	// Comma represents the ',' keyboard key
	Comma Key = 188
	// Period represents the '.' keyboard key
	Period Key = 190
	// Slash represents the '/' keyboard key
	Slash Key = 191
	// Backslash represents the '\' keyboard key
	Backslash Key = 220
	//Backspace represents the backspace keyboard key
	Backspace Key = 8
	// Tab represents the tab keyboard key
	Tab Key = 9
	// CapsLock represents the caps lock keyboard key
	CapsLock Key = 20
	// Space represents the space keyboard key
	Space Key = 32
	// Enter represents the enter keyboard key
	Enter Key = 13
	// Escape represents the escape keyboard key
	Escape Key = 27
	// Insert represents the insert keyboard key
	Insert Key = 45
	// PrintScreen represents the print screen keyboard key often
	// represented by 'Prt Scrn', 'Prt Scn', or 'Print Screen'
	PrintScreen Key = 42
	// Delete represents the delete keyboard key
	Delete Key = 46
	// PageUp represents the page up keyboard key
	PageUp Key = 33
	// PageDown represents the page down keyboard key
	PageDown Key = 34
	// Home represents the home keyboard key
	Home Key = 36
	// End represents the end keyboard key
	End Key = 35
	// Pause represents the pause keyboard key
	Pause Key = 19
	// ScrollLock represents the scroll lock keyboard key
	ScrollLock Key = 145
	// AllowLeft represents the arrow left keyboard key
	ArrowLeft Key = 37
	// ArrowRight represents the arrow right keyboard key
	ArrowRight Key = 39
	// ArrowDown represents the down arrow keyboard key
	ArrowDown Key = 40
	// ArrowUp represents the up arrow keyboard key
	ArrowUp Key = 38
	// LeftBracket represents the '[' keyboard key
	LeftBracket Key = 219
	// LeftShift represents the left shift keyboard key
	LeftShift Key = 16
	// LeftControl represents the left control keyboard key
	LeftControl Key = 17
	// LeftSuper represents the left super keyboard key
	// (Windows key on Microsoft Windows, Command key on Apple OSX, and varies on Linux)
	LeftSuper Key = 73
	// LeftAlt represents the left alt keyboard key
	LeftAlt Key = 18
	// RightBracket represents the ']' keyboard key
	RightBracket Key = 221
	// RightShift represents the right shift keyboard key
	RightShift Key = 16
	// RightControl represents the right control keyboard key
	RightControl Key = 17
	// RightSuper represents the right super keyboard key
	// (Windows key on Microsoft Windows, Command key on Apple OSX, and varies on Linux)
	RightSuper Key = 73
	// RightAlt represents the left alt keyboard key
	RightAlt Key = 18
	// Zero represents the '0' keyboard key
	Zero Key = 48
	// One represents the '1' keyboard key
	One Key = 49
	// Two represents the '2' keyboard key
	Two Key = 50
	// Three represents the '3' keyboard key
	Three Key = 51
	// Four represents the '4' keyboard key
	Four Key = 52
	// Five represents the '5' keyboard key
	Five Key = 53
	// Six represents the '6' keyboard key
	Six Key = 54
	// Seven represents the '7' keyboard key
	Seven Key = 55
	// Eight represents the '8' keyboard key
	Eight Key = 56
	// Nine represents the  '9' keyboard key
	Nine Key = 57
	// F1 represents the 'F1' keyboard key
	F1 Key = 112
	// F2 represents the 'F2' keyboard key
	F2 Key = 113
	// F3 represents the 'F3' keyboard key
	F3 Key = 114
	// F4 represents the 'F4' keyboard key
	F4 Key = 115
	// F5 represents the 'F5' keyboard key
	F5 Key = 116
	// F6 represents the 'F6' keyboard key
	F6 Key = 117
	// F7 represents the 'F7' keyboard key
	F7 Key = 118
	// F8 represents the 'F8' keyboard key
	F8 Key = 119
	// F9 represents the 'F9' keyboard key
	F9 Key = 120
	// F10 represents the 'F10' keyboard key
	F10 Key = 121
	// F11 represents the 'F11' keyboard key
	F11 Key = 122
	// F12 represents the 'F12' keyboard key
	F12 Key = 123
	// A represents the 'A' keyboard key
	A Key = 65
	// B represents the 'B' keyboard key
	B Key = 66
	// C represents the 'C' keyboard key
	C Key = 67
	// D represents the 'D' keyboard key '
	D Key = 68
	// E represents the 'E' keyboard key
	E Key = 69
	// F represents the 'F' keyboard key
	F Key = 70
	// G represents the 'G' keyboard key
	G Key = 71
	// H represents the 'H' keyboard key
	H Key = 72
	// I represents the 'I' keyboard key
	I Key = 73
	// J represents the 'J' keyboard key
	J Key = 74
	// K represents the 'K' keyboard key
	K Key = 75
	// L represents the 'L' keyboard key
	L Key = 76
	// M represents the 'M' keyboard key
	M Key = 77
	// N represents the 'N' keyboard key
	N Key = 78
	// O represents the 'O' keyboard key
	O Key = 79
	// P represents the 'P' keyboard key
	P Key = 80
	// Q represents the 'Q' keyboard key
	Q Key = 81
	// R represents the 'R' keyboard key
	R Key = 82
	// S represents the 'S' keyboard key
	S Key = 83
	// T represents the 'T' keyboard key
	T Key = 84
	// U represents the 'U' keyboard key
	U Key = 85
	// V represents the 'V' keyboard key
	V Key = 86
	// W represents the 'W' keyboard key
	W Key = 87
	// X represents the 'X' keyboard key
	X Key = 88
	// Y represents the 'Y' keyboard key
	Y Key = 89
	// Z represents the 'Z' keyboard key
	Z Key = 90
	// NumLock represents the NumLock keyboard key on the numpad
	NumLock Key = 144
	// NumMultiply represents the NumMultiply keyboard key on the numpad
	NumMultiply Key = 106
	// NumDivide represents the NumDivide keyboard key on the numpad
	NumDivide Key = 111
	// NumAdd represents the NumAdd keyboard key on the numpad
	NumAdd Key = 107
	// NumSubtract represents the NumSubtract keyboard key on the numpad
	NumSubtract Key = 109
	// NumZero represents the NumZero keyboard key on the numpad
	NumZero Key = 96
	// NumOne represents the NumOne keyboard key on the numpad
	NumOne Key = 97
	// NumTwo represents the NumTwo keyboard key on the numpad
	NumTwo Key = 98
	// NumThree represents the NumThree keyboard key on the numpad
	NumThree Key = 99
	// NumFour represents the NumFour keyboard key on the numpad
	NumFour Key = 100
	// NumFive represents the NumFive keyboard key on the numpad
	NumFive Key = 101
	// NumSiz represents the NumSix keyboard key on the numpad
	NumSix Key = 102
	// NumSeven represents the NumSeven keyboard key on the numpad
	NumSeven Key = 103
	// NumEight represents the NumEight keyboard key on the numpad
	NumEight Key = 104
	// NumNine represents the NumNine keyboard key on the numpad
	NumNine Key = 105
	// NumDecimal represents the NumDecimal keyboard key on the numpad
	NumDecimal Key = 110
	// NumEnter represents the NumEnter keyboard key on the numpad
	NumEnter Key = 13
)

those are default values for engo_js defined here because some of them are shared with engo_glfw. engo_glfw redefines the variables it needs to other values during init() so

type KeyManager

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

KeyManager tracks which keys are pressed and released at the current point of time.

func NewKeyManager

func NewKeyManager() *KeyManager

NewKeyManager creates a new KeyManager.

func (*KeyManager) Get

func (km *KeyManager) Get(k Key) KeyState

Get retrieves a keys state.

func (*KeyManager) Set

func (km *KeyManager) Set(k Key, state bool)

Set is used for updating whether or not a key is held down, or not held down.

type KeyState

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

KeyState is used for detecting the state of a key press.

func (KeyState) Down

func (key KeyState) Down() bool

Down returns wether a key is being pressed

func (KeyState) JustPressed

func (key KeyState) JustPressed() bool

JustPressed returns whether a key was just pressed

func (KeyState) JustReleased

func (key KeyState) JustReleased() bool

JustReleased returns whether a key was just released

func (*KeyState) State

func (key *KeyState) State() int

State returns the raw state of a key.

func (KeyState) Up

func (key KeyState) Up() bool

Up returns wheter a key is not being pressed

type Message

type Message interface {
	Type() string
}

A Message is used to send messages within the MessageManager

type MessageHandler

type MessageHandler func(msg Message)

A MessageHandler is used to dispatch a message to the subscribed handler.

type MessageManager

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

MessageManager manages messages and subscribed handlers

func (*MessageManager) Dispatch

func (mm *MessageManager) Dispatch(message Message)

Dispatch sends a message to all subscribed handlers of the message's type

func (*MessageManager) Listen

func (mm *MessageManager) Listen(messageType string, handler MessageHandler)

Listen subscribes to the specified message type and calls the specified handler when fired

type Modifier

type Modifier int

Modifier represents a special key pressed along with another key

type Mouse

type Mouse struct {
	X, Y             float32
	ScrollX, ScrollY float32
	Action           Action
	Button           MouseButton
	Modifer          Modifier
}

Mouse ...

type MouseButton

type MouseButton int

MouseButton corresponds to a mouse button.

const (
	// MouseButtonLeft represents the left mouse button
	MouseButtonLeft MouseButton = 0
	// MouseButtonRight represents the right mouse button
	MouseButtonRight MouseButton = 1
	// MouseButtonMiddle represent the middle mosue button
	MouseButtonMiddle MouseButton = 2
	// MouseButton4 represents the 4th mouse button
	MouseButton4 MouseButton = 3
	// MouseButton5 represents the 5th mouse button
	MouseButton5 MouseButton = 4
	// MouseButton6 represents the 6th mouse button
	MouseButton6 MouseButton = 5
	// MouseButton7 represents the 7th mouse button
	MouseButton7 MouseButton = 6
	// MouseButton4 represents the last mouse button
	MouseButtonLast MouseButton = 7
)

Mouse buttons

type MouseState

type MouseState struct {
	// X and Y are the coordinates of the Mouse, relative to the `Canvas`.
	X, Y float32
	// ScrollX and ScrollY are the amount of scrolling the user has done with his mouse wheel in the respective directions.
	ScrollX, ScrollY float32
	// Action indicates what the gamer currently has done with his mouse.
	Action Action
	// Button indicates which button is being pressed by the gamer (if any).
	Button MouseButton
	// Modifier indicates which modifier (shift, alt, etc.) has been pressed during the Action.
	Modifier Modifier
}

MouseState represents the current state of the Mouse (or latest Touch-events).

type Prioritizer

type Prioritizer interface {
	// Priority indicates the order in which Systems should be executed per
	// iteration, higher meaning sooner. The default priority is 0.
	Priority() int
}

Prioritizer specifies the priority of systems.

type Resource

type Resource interface {
	// URL returns the uniform resource locator of the given resource.
	URL() string
}

Resource represents a game resource, such as an image or a sound.

type RunOptions

type RunOptions struct {
	// Title is the Window title
	Title string

	// Width ...
	Width, Height int
}

RunOptions ...

type Scene

type Scene interface {
	// Preload is called before loading resources
	Preload()

	// Setup is called before the main loop
	Setup(*World)

	// Type returns a unique string representation of the Scene, used to identify it
	Type() string
}

Scene represents a screen ingame. i.e.: main menu, settings, but also the game itself

func CurrentScene

func CurrentScene() Scene

CurrentScene returns the SceneWorld that is currently active

type Shower

type Shower interface {
	// Show is called whenever the other Scene becomes inactive, and this one becomes the active one
	Show()
}

Shower is an optional interface a Scene can implement, indicating it'll have custom behavior whenever the Scene gets shown again after being hidden (due to switching to other Scenes)

type System

type System interface {
	// Update updates the system. It is invoked by the engine once every frame,
	// with dt being the duration since the previous update.
	Update(dt float32)

	// Remove removes the given entity from the system.
	Remove(e BasicEntity)
}

A System implements logic for processing entities possessing components of the same aspects as the system. A System should iterate over its Entities on `Update`, in any way suitable for the current implementation.

By convention, systems provide an Add method for adding entities and their associated components to the system; e.g.

Add(basic *ecs.BasicEntity, collision *CollisionComponent, space *SpaceComponent)

type WindowResizeMessage

type WindowResizeMessage struct {
	OldWidth, OldHeight int
	NewWidth, NewHeight int
}

WindowResizeMessage is a message that's being dispatched whenever the game window is being resized by the gamer

func (WindowResizeMessage) Type

func (WindowResizeMessage) Type() string

Type returns the type of the current object "WindowResizeMessage"

type World

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

World contains a bunch of Entities, and a bunch of Systems. It is the recommended way to run ecs.

func (*World) AddSystem

func (w *World) AddSystem(system System)

AddSystem adds the given System to the World, sorted by priority.

func (*World) RemoveEntity

func (w *World) RemoveEntity(e BasicEntity)

RemoveEntity removes the entity across all systems.

func (*World) Systems

func (w *World) Systems() []System

Systems returns the list of Systems managed by the World.

func (*World) Update

func (w *World) Update(dt float32)

Update updates each System managed by the World. It is invoked by the engine once every frame, with dt being the duration since the previous update.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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