func LoadScene(scene Scene) { if insideGameloop { nextScene = scene return } ResourceManager.Release() bt.Clear() cr.Clear() if Space != nil { for _, g := range mainScene.SceneBase().gameObjects { if g != nil { g.Destroy() } } iter(&mainScene.SceneBase().gameObjects, destoyGameObject) mainScene.SceneBase().gameObjects = nil Space.Destory() runtime.GC() Space = chipmunk.NewSpace() } else { Space = chipmunk.NewSpace() } input.ClearInput() sn := scene.New() mainScene = sn sn.Load() internalFPSGObject := NewGameObject("InternalFPS") internalFPSObject = NewFPS() internalFPSGObject.AddComponent(internalFPSObject) }
func (self *Game) Init() { self.Space = chipmunk.NewSpace() self.Space.Gravity = vect.Vect{0, -900} self.Player = NewPlayer(self.BallRadius, self.BallMass, self) self.Enemies = []*Enemy{} self.initialized = true }
// createBodies sets up the chipmunk space and static bodies func createBodies() { space = chipmunk.NewSpace() space.Gravity = vect.Vect{0, -900} staticBody := chipmunk.NewBodyStatic() staticLines = []*chipmunk.Shape{ chipmunk.NewSegment(vect.Vect{111.0, 280.0}, vect.Vect{407.0, 246.0}, 0), chipmunk.NewSegment(vect.Vect{407.0, 246.0}, vect.Vect{407.0, 343.0}, 0), } for _, segment := range staticLines { segment.SetElasticity(0.6) staticBody.AddShape(segment) } space.AddBody(staticBody) }
func newWorld(width, height int) *world { world := &world{ width: width, height: height, projMatrix: mathgl.Ortho2D(0, float32(width), 0, float32(height)), viewMatrix: mathgl.Ident4f(), space: chipmunk.NewSpace(), } world.space.Gravity = vect.Vect{0, Gravity} // Initialize the audio player var err error world.explosionPlayer, err = mandala.NewAudioPlayer() if err != nil { mandala.Fatalf("%s\n", err.Error()) } // Read the PCM audio samples responseCh := make(chan mandala.LoadResourceResponse) mandala.ReadResource("raw/explosion.pcm", responseCh) response := <-responseCh if response.Error != nil { mandala.Fatalf(response.Error.Error()) } world.explosionBuffer = response.Buffer responseCh = make(chan mandala.LoadResourceResponse) mandala.ReadResource("raw/impact.pcm", responseCh) response = <-responseCh if response.Error != nil { mandala.Fatalf(response.Error.Error()) } world.impactBuffer = response.Buffer return world }
func NewChipmonkSpace() *ChipmonkSpace { return &ChipmonkSpace{ Space: chipmunk.NewSpace(), } }
// createBodies sets up the chipmunk space and static bodies func createBodies() { space = chipmunk.NewSpace() }
// initPhysics sets up the chipmunk space and other physics properties func initPhysics() { space = chipmunk.NewSpace() space.Gravity = vect.Vect{0, -900} }
func NewWorld(width, height int) *World { world := &World{ width: width, height: height, projMatrix: mathgl.Ortho2D(0, float32(width), 0, float32(height)), viewMatrix: mathgl.Ident4f(), space: chipmunk.NewSpace(), } world.space.Gravity = vect.Vect{0, Gravity} // Initialize the audio players var err error world.explosionPlayer, err = mandala.NewAudioPlayer() if err != nil { mandala.Fatalf("%s\n", err.Error()) } world.impactPlayer, err = mandala.NewAudioPlayer() if err != nil { mandala.Fatalf("%s\n", err.Error()) } // Read the PCM audio samples responseCh := make(chan mandala.LoadResourceResponse) mandala.ReadResource("raw/explosion.pcm", responseCh) response := <-responseCh if response.Error != nil { mandala.Fatalf(response.Error.Error()) } world.explosionBuffer = response.Buffer responseCh = make(chan mandala.LoadResourceResponse) mandala.ReadResource("raw/impact.pcm", responseCh) response = <-responseCh if response.Error != nil { mandala.Fatalf(response.Error.Error()) } world.impactBuffer = response.Buffer // Compile the shaders world.boxProgramShader = shaders.NewProgram(shapes.DefaultBoxFS, shapes.DefaultBoxVS) world.segmentProgramShader = shaders.NewProgram(shapes.DefaultSegmentFS, shapes.DefaultSegmentVS) // Load the font responseCh = make(chan mandala.LoadResourceResponse) mandala.ReadResource("raw/freesans.ttf", responseCh) response = <-responseCh fontBuffer := response.Buffer err = response.Error if err != nil { panic(err) } world.font, err = gltext.LoadTruetype(bytes.NewBuffer(fontBuffer), world, 12, 32, 127, gltext.LeftToRight) if err != nil { panic(err) } return world }