summaryrefslogtreecommitdiff
path: root/engine/CoreObjects/SceneManager.go
diff options
context:
space:
mode:
authorphyscik <mynameisgennadiy@vk.com>2026-04-06 18:29:34 +0500
committerphyscik <mynameisgennadiy@vk.com>2026-04-06 18:29:34 +0500
commite211798077de88fe39d1e1c0add7a0f460d1da5a (patch)
treede3163568818116a2ca43d31c66947d918cea2fd /engine/CoreObjects/SceneManager.go
parente75d107899617446add49f00fb03837cb46d2543 (diff)
Experimental async update functionHEADmain
Diffstat (limited to 'engine/CoreObjects/SceneManager.go')
-rw-r--r--engine/CoreObjects/SceneManager.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/engine/CoreObjects/SceneManager.go b/engine/CoreObjects/SceneManager.go
new file mode 100644
index 0000000..dc44dd9
--- /dev/null
+++ b/engine/CoreObjects/SceneManager.go
@@ -0,0 +1,54 @@
+package coreobjects
+
+import (
+ rl "github.com/gen2brain/raylib-go/raylib"
+)
+
+type SceneManager struct {
+ OverlayScene Scene
+ SelectedScene Scene
+
+ balancer *balancer
+}
+
+func InitSceneManager() SceneManager {
+ return SceneManager{
+ OverlayScene: &OveralyScene{},
+ SelectedScene: nil,
+ balancer: makeBalancer(),
+ }
+}
+
+func (base *SceneManager) ChangeScene(newScene Scene) {
+ if base.SelectedScene != nil {
+ base.SelectedScene.Destroy()
+ }
+ base.SelectedScene = newScene
+ base.SelectedScene.Create(base)
+}
+
+func (base *SceneManager) Update() {
+ if (base.SelectedScene != nil) {
+ base.SelectedScene.Update()
+ }
+
+ if (base.OverlayScene != nil) {
+ base.OverlayScene.Update()
+ }
+
+ base.balancer.Execute(base.SelectedScene.GetUpdateFunctions())
+
+ if rl.IsKeyDown(rl.KeyF11) {
+ rl.ToggleFullscreen()
+ }
+}
+
+func (base *SceneManager) Draw() {
+ if (base.SelectedScene != nil) {
+ base.SelectedScene.Draw()
+ }
+
+ if (base.OverlayScene != nil) {
+ base.OverlayScene.Draw()
+ }
+}