Mercurial > games > semicongine
annotate src/semicongine/engine.nim @ 769:bb4c36d68444
add: some API improvments for vector, entity, and some other stuff
| author | Sam <sam@basx.dev> |
|---|---|
| date | Sat, 08 Jul 2023 18:52:34 +0700 |
| parents | 0b5566fc214d |
| children | 4921ec86dcb4 |
| rev | line source |
|---|---|
|
603
f494e291ff4a
add: correct mesh buffer data updates to GPU
Sam <sam@basx.dev>
parents:
601
diff
changeset
|
1 import std/sequtils |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
2 import std/options |
|
653
ac7dfbd56cc6
add: textures now support in shader via scene data, also: improved config handling a bit, more to come
Sam <sam@basx.dev>
parents:
650
diff
changeset
|
3 import std/logging |
|
649
c774b064def5
add: image/texture creation, refactoring of some unclean parts
Sam <sam@basx.dev>
parents:
647
diff
changeset
|
4 import std/os |
|
c774b064def5
add: image/texture creation, refactoring of some unclean parts
Sam <sam@basx.dev>
parents:
647
diff
changeset
|
5 |
| 588 | 6 import ./platform/window |
| 7 | |
|
667
d3500ae5d235
did: small refactoring of module structure
Sam <sam@basx.dev>
parents:
658
diff
changeset
|
8 import ./core |
| 588 | 9 import ./vulkan/instance |
| 10 import ./vulkan/device | |
| 11 import ./vulkan/physicaldevice | |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
12 import ./vulkan/renderpass |
| 588 | 13 |
| 708 | 14 import ./scene |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
15 import ./renderer |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
16 import ./events |
|
632
42ad7e6208e9
add: audio subsystem, windows backend still missing
Sam <sam@basx.dev>
parents:
628
diff
changeset
|
17 import ./audio |
| 588 | 18 |
| 19 type | |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
20 EngineState* = enum |
|
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
21 Starting |
|
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
22 Running |
|
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
23 Shutdown |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
24 Input = object |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
25 keyIsDown: set[Key] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
26 keyWasPressed: set[Key] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
27 keyWasReleased: set[Key] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
28 mouseIsDown: set[MouseButton] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
29 mouseWasPressed: set[MouseButton] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
30 mouseWasReleased: set[MouseButton] |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
31 mousePosition: Vec2f |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
32 mouseMove: Vec2f |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
33 eventsProcessed: uint64 |
| 605 | 34 windowWasResized: bool |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
35 mouseWheel: float32 |
| 588 | 36 Engine* = object |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
37 state*: EngineState |
| 588 | 38 device: Device |
| 39 debugger: Debugger | |
| 40 instance: Instance | |
| 41 window: NativeWindow | |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
42 renderer: Option[Renderer] |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
43 input: Input |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
44 exitHandler: proc(engine: var Engine) |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
45 resizeHandler: proc(engine: var Engine) |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
46 eventHandler: proc(engine: var Engine, event: Event) |
| 588 | 47 |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
48 |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
49 proc destroy*(engine: var Engine) = |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
50 checkVkResult engine.device.vk.vkDeviceWaitIdle() |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
51 if engine.renderer.isSome: |
|
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
52 engine.renderer.get.destroy() |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
53 engine.device.destroy() |
|
595
7f7e797335ed
add: remove a few warning, improve a few things
Sam <sam@basx.dev>
parents:
594
diff
changeset
|
54 if engine.debugger.messenger.valid: |
|
7f7e797335ed
add: remove a few warning, improve a few things
Sam <sam@basx.dev>
parents:
594
diff
changeset
|
55 engine.debugger.destroy() |
|
7f7e797335ed
add: remove a few warning, improve a few things
Sam <sam@basx.dev>
parents:
594
diff
changeset
|
56 engine.window.destroy() |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
57 engine.instance.destroy() |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
58 |
| 588 | 59 |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
60 proc initEngine*( |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
61 applicationName: string, |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
62 debug=DEBUG, |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
63 exitHandler: proc(engine: var Engine) = nil, |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
64 resizeHandler: proc(engine: var Engine) = nil, |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
65 eventHandler: proc(engine: var Engine, event: Event) = nil |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
66 ): Engine = |
|
653
ac7dfbd56cc6
add: textures now support in shader via scene data, also: improved config handling a bit, more to come
Sam <sam@basx.dev>
parents:
650
diff
changeset
|
67 echo "Set log level to ", ENGINE_LOGLEVEL |
|
ac7dfbd56cc6
add: textures now support in shader via scene data, also: improved config handling a bit, more to come
Sam <sam@basx.dev>
parents:
650
diff
changeset
|
68 setLogFilter(ENGINE_LOGLEVEL) |
|
ac7dfbd56cc6
add: textures now support in shader via scene data, also: improved config handling a bit, more to come
Sam <sam@basx.dev>
parents:
650
diff
changeset
|
69 |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
70 result.state = Starting |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
71 result.exitHandler = exitHandler |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
72 result.resizeHandler = resizeHandler |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
73 result.eventHandler = eventHandler |
| 588 | 74 result.window = createWindow(applicationName) |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
75 |
| 588 | 76 var |
| 77 instanceExtensions: seq[string] | |
| 78 enabledLayers: seq[string] | |
| 79 | |
| 80 if debug: | |
| 81 instanceExtensions.add "VK_EXT_debug_utils" | |
| 613 | 82 enabledLayers.add "VK_LAYER_KHRONOS_validation" |
|
649
c774b064def5
add: image/texture creation, refactoring of some unclean parts
Sam <sam@basx.dev>
parents:
647
diff
changeset
|
83 putEnv("VK_LAYER_ENABLES", "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT") |
|
c774b064def5
add: image/texture creation, refactoring of some unclean parts
Sam <sam@basx.dev>
parents:
647
diff
changeset
|
84 |
|
769
bb4c36d68444
add: some API improvments for vector, entity, and some other stuff
Sam <sam@basx.dev>
parents:
749
diff
changeset
|
85 if defined(linux) and DEBUG: |
| 672 | 86 enabledLayers.add "VK_LAYER_MESA_overlay" |
| 588 | 87 result.instance = result.window.createInstance( |
| 88 vulkanVersion=VK_MAKE_API_VERSION(0, 1, 3, 0), | |
| 89 instanceExtensions=instanceExtensions, | |
| 90 layers=enabledLayers, | |
| 91 ) | |
| 92 if debug: | |
| 93 result.debugger = result.instance.createDebugMessenger() | |
| 94 # create devices | |
| 95 let selectedPhysicalDevice = result.instance.getPhysicalDevices().filterBestGraphics() | |
| 96 result.device = result.instance.createDevice( | |
| 97 selectedPhysicalDevice, | |
| 98 enabledLayers = @[], | |
| 99 enabledExtensions = @[], | |
| 100 selectedPhysicalDevice.filterForGraphicsPresentationQueues() | |
| 101 ) | |
|
632
42ad7e6208e9
add: audio subsystem, windows backend still missing
Sam <sam@basx.dev>
parents:
628
diff
changeset
|
102 startMixerThread() |
| 588 | 103 |
|
592
cda5874a8454
add: recreation of swapchain (at least on linux, windows will likely fail, needs testing
Sam <sam@basx.dev>
parents:
590
diff
changeset
|
104 proc setRenderer*(engine: var Engine, renderPass: RenderPass) = |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
105 if engine.renderer.isSome: |
|
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
106 engine.renderer.get.destroy() |
|
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
107 engine.renderer = some(engine.device.initRenderer(renderPass)) |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
108 |
|
731
c12b11a5f112
did: overhaul some of the mesh-data uploading and transformation handling, added: text/font rendering
Sam <sam@basx.dev>
parents:
712
diff
changeset
|
109 proc addScene*(engine: var Engine, scene: Scene, vertexInput: seq[ShaderAttribute], samplers: seq[ShaderAttribute], transformAttribute="transform") = |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
110 assert transformAttribute == "" or transformAttribute in map(vertexInput, proc(a: ShaderAttribute): string = a.name) |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
111 assert engine.renderer.isSome |
|
712
7a7fb1a42811
fix: add descriptor pool per scene, use zippy instead of zip
sam <sam@basx.dev>
parents:
708
diff
changeset
|
112 engine.renderer.get.setupDrawableBuffers(scene, vertexInput, samplers, transformAttribute=transformAttribute) |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
113 |
|
650
be6e0f89645a
add: initial code for texture support, not finished, had to completely refactor how to handle material-data (ie scene-wide data, sorry if you ever read this
Sam <sam@basx.dev>
parents:
649
diff
changeset
|
114 proc renderScene*(engine: var Engine, scene: var Scene) = |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
115 assert engine.state == Running |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
116 assert engine.renderer.isSome |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
117 engine.renderer.get.updateMeshData(scene) |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
118 engine.renderer.get.updateUniformData(scene) |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
119 engine.renderer.get.render(scene) |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
120 |
|
749
0b5566fc214d
add: what seems like a working animation system, atm integrated with entities, will add more for meshes
Sam <sam@basx.dev>
parents:
731
diff
changeset
|
121 proc updateAnimations*(engine: var Engine, scene: var Scene, dt: float32) = |
|
0b5566fc214d
add: what seems like a working animation system, atm integrated with entities, will add more for meshes
Sam <sam@basx.dev>
parents:
731
diff
changeset
|
122 assert engine.state == Running |
|
0b5566fc214d
add: what seems like a working animation system, atm integrated with entities, will add more for meshes
Sam <sam@basx.dev>
parents:
731
diff
changeset
|
123 assert engine.renderer.isSome |
|
0b5566fc214d
add: what seems like a working animation system, atm integrated with entities, will add more for meshes
Sam <sam@basx.dev>
parents:
731
diff
changeset
|
124 engine.renderer.get.updateAnimations(scene, dt) |
|
0b5566fc214d
add: what seems like a working animation system, atm integrated with entities, will add more for meshes
Sam <sam@basx.dev>
parents:
731
diff
changeset
|
125 |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
126 proc updateInputs*(engine: var Engine): EngineState = |
|
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
127 assert engine.state in [Starting, Running] |
|
594
512d33d314c4
add: correct swapchain destruction, update 1st example to be working
Sam <sam@basx.dev>
parents:
592
diff
changeset
|
128 |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
129 engine.input.keyWasPressed = {} |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
130 engine.input.keyWasReleased = {} |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
131 engine.input.mouseWasPressed = {} |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
132 engine.input.mouseWasReleased = {} |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
133 engine.input.mouseWheel = 0 |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
134 engine.input.mouseMove = newVec2f() |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
135 if engine.state == Starting: |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
136 engine.input.windowWasResized = true |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
137 var mpos = engine.window.getMousePosition() |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
138 if mpos.isSome: |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
139 engine.input.mousePosition = mpos.get |
| 605 | 140 |
| 141 var killed = false | |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
142 for event in engine.window.pendingEvents(): |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
143 inc engine.input.eventsProcessed |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
144 if engine.eventHandler != nil: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
145 engine.eventHandler(engine, event) |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
146 case event.eventType: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
147 of Quit: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
148 killed = true |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
149 of ResizedWindow: |
| 605 | 150 engine.input.windowWasResized = true |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
151 of KeyPressed: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
152 engine.input.keyWasPressed.incl event.key |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
153 engine.input.keyIsDown.incl event.key |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
154 of KeyReleased: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
155 engine.input.keyWasReleased.incl event.key |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
156 engine.input.keyIsDown.excl event.key |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
157 of MousePressed: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
158 engine.input.mouseWasPressed.incl event.button |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
159 engine.input.mouseIsDown.incl event.button |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
160 of MouseReleased: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
161 engine.input.mouseWasReleased.incl event.button |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
162 engine.input.mouseIsDown.excl event.button |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
163 of MouseMoved: |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
164 let newPos = newVec2(float32(event.x), float32(event.y)) |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
165 engine.input.mouseMove = newPos - engine.input.mousePosition |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
166 engine.input.mousePosition = newPos |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
167 of MouseWheel: |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
168 engine.input.mouseWheel = event.amount |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
169 if engine.state == Starting: |
|
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
170 engine.state = Running |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
171 if killed: |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
172 engine.state = Shutdown |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
173 if engine.exitHandler != nil: |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
174 engine.exitHandler(engine) |
| 605 | 175 if engine.input.windowWasResized and engine.resizeHandler != nil: |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
176 engine.resizeHandler(engine) |
|
606
f41c1b78cf5b
add: upgrade all simple examples to new engine version
Sam <sam@basx.dev>
parents:
605
diff
changeset
|
177 return engine.state |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
178 |
| 626 | 179 # wrappers for internal things |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
180 func keyIsDown*(engine: Engine, key: Key): auto = key in engine.input.keyIsDown |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
181 func keyWasPressed*(engine: Engine, key: Key): auto = key in engine.input.keyWasPressed |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
182 func keyWasReleased*(engine: Engine, key: Key): auto = key in engine.input.keyWasReleased |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
183 func mouseIsDown*(engine: Engine, button: MouseButton): auto = button in engine.input.mouseIsDown |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
184 func mouseWasPressed*(engine: Engine, button: MouseButton): auto = button in engine.input.mouseWasPressed |
|
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
185 func mouseWasReleased*(engine: Engine, button: MouseButton): auto = button in engine.input.mouseWasReleased |
|
603
f494e291ff4a
add: correct mesh buffer data updates to GPU
Sam <sam@basx.dev>
parents:
601
diff
changeset
|
186 func mousePosition*(engine: Engine): auto = engine.input.mousePosition |
|
699
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
187 func mouseMove*(engine: Engine): auto = engine.input.mouseMove |
|
c29f3ad1604f
did: make material working halfway, add some more mouse functionality
Sam <sam@basx.dev>
parents:
689
diff
changeset
|
188 func mouseWheel*(engine: Engine): auto = engine.input.mouseWheel |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
189 func eventsProcessed*(engine: Engine): auto = engine.input.eventsProcessed |
|
658
8549373571aa
did: improve stability for configuration without uniforms and settings the engine renderer
Sam <sam@basx.dev>
parents:
653
diff
changeset
|
190 func framesRendered*(engine: Engine): uint64 = (if engine.renderer.isSome: engine.renderer.get.framesRendered else: 0) |
|
590
1edf3e16144e
add: input handling, small refactoring for renderer
Sam <sam@basx.dev>
parents:
588
diff
changeset
|
191 func gpuDevice*(engine: Engine): Device = engine.device |
| 601 | 192 func getWindow*(engine: Engine): auto = engine.window |
| 605 | 193 func windowWasResized*(engine: Engine): auto = engine.input.windowWasResized |
| 626 | 194 func showSystemCursor*(engine: Engine) = engine.window.showSystemCursor() |
| 195 func hideSystemCursor*(engine: Engine) = engine.window.hideSystemCursor() | |
|
647
6735f6a2de7a
add: working fullscreen for windows (tested)
Sam <sam@basx.dev>
parents:
632
diff
changeset
|
196 proc fullscreen*(engine: var Engine, enable: bool) = engine.window.fullscreen(enable) |
