From e88c16372587ddb958753bf70fde9de4babf65df Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Fri, 19 Aug 2016 00:15:27 +0200 Subject: [PATCH] More code restructuring and system access functions. --- CHANGELOG.md | 5 ++++ README.md | 4 +-- demo/input/input.go | 14 ++--------- demo/keyframe/keyframe.go | 7 +----- demo/model/model.go | 7 +----- demo/sprite/sprite.go | 14 ++--------- demo/text/text.go | 7 +----- system_util.go | 51 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 65 insertions(+), 44 deletions(-) create mode 100644 system_util.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 713205a..97564f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.2_beta + +* code restructuring +* added system access functions (like GetSpriteRenderer()) + ## 0.1_beta * beta release diff --git a/README.md b/README.md index be5a71d..d91873f 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ Game engine written in Go using OpenGL and GLFW. Mostly for 2D rendering, but al go-game requires OpenGL and GLFW. The following three steps install everything you need: ``` -go get github.com/go-gl/gl/v3.1-core/gl -go get github.com/go-gl/glfw/v3.1/glfw +go get github.com/go-gl/gl/v3.2-core/gl +go get github.com/go-gl/glfw/v3.2/glfw go get github.com/DeKugelschieber/go-game ``` diff --git a/demo/input/input.go b/demo/input/input.go index f6a4f16..3c96870 100644 --- a/demo/input/input.go +++ b/demo/input/input.go @@ -33,20 +33,10 @@ func (g *Game) Setup() { sprite.Size.X = sprite.Size.X / 4 sprite.Size.Y = sprite.Size.Y / 4 g.sprite = sprite - renderer, ok := goga.GetSystemByName("spriteRenderer").(*goga.SpriteRenderer) - - if !ok { - panic("Could not find renderer") - } - + renderer := goga.GetSpriteRenderer() renderer.Add(sprite.Actor, sprite.Pos2D, sprite.Tex) - culling, ok := goga.GetSystemByName("culling2d").(*goga.Culling2D) - - if !ok { - panic("Could not find culling") - } - + culling := goga.GetCulling2DSystem() culling.Add(sprite.Actor, sprite.Pos2D) // register input listeners diff --git a/demo/keyframe/keyframe.go b/demo/keyframe/keyframe.go index eaba82a..ad27888 100644 --- a/demo/keyframe/keyframe.go +++ b/demo/keyframe/keyframe.go @@ -39,12 +39,7 @@ func (g *Game) Setup() { sprite.KeyframeAnimation = goga.NewKeyframeAnimation(0, 7, true, 20) // add to renderer - renderer, ok := goga.GetSystemByName("keyframeRenderer").(*goga.KeyframeRenderer) - - if !ok { - panic("Could not find renderer") - } - + renderer := goga.GetKeyframeRenderer() renderer.Add(sprite.Actor, sprite.Pos2D, sprite.Tex, sprite.KeyframeSet, sprite.KeyframeAnimation) } diff --git a/demo/model/model.go b/demo/model/model.go index 4a03584..dd46670 100644 --- a/demo/model/model.go +++ b/demo/model/model.go @@ -36,12 +36,7 @@ func (g *Game) Setup() { mesh := goga.NewMesh(ply.IndexBuffer, ply.VertexBuffer, ply.TexCoordBuffer) model := goga.NewModel(mesh, tex) - renderer, ok := goga.GetSystemByName("modelRenderer").(*goga.ModelRenderer) - - if !ok { - panic("Could not find renderer") - } - + renderer := goga.GetModelRenderer() renderer.Prepare(model) renderer.Add(model.Actor, model.Pos3D, model.Tex, model.Mesh) g.model = model diff --git a/demo/sprite/sprite.go b/demo/sprite/sprite.go index 6924f5e..438b9bf 100644 --- a/demo/sprite/sprite.go +++ b/demo/sprite/sprite.go @@ -26,20 +26,10 @@ func (g *Game) Setup() { } sprite := goga.NewSprite(tex) - renderer, ok := goga.GetSystemByName("spriteRenderer").(*goga.SpriteRenderer) - - if !ok { - panic("Could not find renderer") - } - + renderer := goga.GetSpriteRenderer() renderer.Add(sprite.Actor, sprite.Pos2D, sprite.Tex) - culling, ok := goga.GetSystemByName("culling2d").(*goga.Culling2D) - - if !ok { - panic("Could not find culling") - } - + culling := goga.GetCulling2DSystem() culling.Add(sprite.Actor, sprite.Pos2D) } diff --git a/demo/text/text.go b/demo/text/text.go index 7ce3cb1..a3b7c10 100644 --- a/demo/text/text.go +++ b/demo/text/text.go @@ -45,12 +45,7 @@ func (g *Game) Setup() { } // setup renderer - renderer, ok := goga.GetSystemByName("textRenderer").(*goga.TextRenderer) - - if !ok { - panic("Could not find renderer") - } - + renderer := goga.GetTextRenderer() renderer.Font = font // create and add text diff --git a/system_util.go b/system_util.go new file mode 100644 index 0000000..e06f35e --- /dev/null +++ b/system_util.go @@ -0,0 +1,51 @@ +package goga + +func GetSpriteRenderer() *SpriteRenderer { + renderer, ok := GetSystemByName(sprite_renderer_name).(*SpriteRenderer) + + if !ok { + panic("Could not obtain sprite renderer") + } + + return renderer +} + +func GetModelRenderer() *ModelRenderer { + renderer, ok := GetSystemByName(model_renderer_name).(*ModelRenderer) + + if !ok { + panic("Could not obtain model renderer") + } + + return renderer +} + +func GetCulling2DSystem() *Culling2D { + system, ok := GetSystemByName(culling_2d_name).(*Culling2D) + + if !ok { + panic("Could not obtain culling system") + } + + return system +} + +func GetKeyframeRenderer() *KeyframeRenderer { + renderer, ok := GetSystemByName(keyframe_sprite_renderer_name).(*KeyframeRenderer) + + if !ok { + panic("Could not obtain keyframe renderer") + } + + return renderer +} + +func GetTextRenderer() *TextRenderer { + renderer, ok := GetSystemByName(text_renderer_name).(*TextRenderer) + + if !ok { + panic("Could not obtain text renderer") + } + + return renderer +}