func (self *Game) ReadLevelFromFile(filename string) { self.Level = NewLevelFromFile(filename) staticBody := chipmunk.NewBodyStatic() for _, segment := range self.Level.GetChipmunkSegments() { segment.SetElasticity(0.6) staticBody.AddShape(segment) } self.Space.AddBody(staticBody) }
func NewPhysicsShape(static bool, shape *chipmunk.Shape) *Physics { var body *chipmunk.Body if static { body = chipmunk.NewBodyStatic() } else { body = chipmunk.NewBody(1, shape.ShapeClass.Moment(1)) } p := &Physics{BaseComponent: NewComponent(), Body: body, Box: shape.GetAsBox(), Shape: shape} body.AddShape(shape) return p }
func NewPhysicsCircle(static bool) *Physics { var body *chipmunk.Body shape := chipmunk.NewCircle(vect.Vector_Zero, 1) if static { body = chipmunk.NewBodyStatic() } else { body = chipmunk.NewBody(1, shape.ShapeClass.Moment(1)) } p := &Physics{BaseComponent: NewComponent(), Body: body, Box: shape.GetAsBox(), Shape: shape} body.AddShape(shape) return p }
// 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 NewPhysics(static bool) *Physics { var body *chipmunk.Body box := chipmunk.NewBox(vect.Vect{0, 0}, vect.Float(1), vect.Float(1)) if static { body = chipmunk.NewBodyStatic() } else { body = chipmunk.NewBody(1, box.Moment(1)) } p := &Physics{BaseComponent: NewComponent(), Body: body, Box: box.GetAsBox(), Shape: box} body.AddShape(box) return p }
func NewPhysicsShapes(static bool, shapes []*chipmunk.Shape) *Physics { var body *chipmunk.Body if static { body = chipmunk.NewBodyStatic() } else { moment := vect.Float(0) for _, shape := range shapes { moment += shape.Moment(1) } body = chipmunk.NewBody(1, moment) } p := &Physics{BaseComponent: NewComponent(), Body: body, Box: nil, Shape: nil} for _, shape := range shapes { body.AddShape(shape) } return p }
func newGround(x1, y1, x2, y2 float32) *ground { ground := new(ground) // Chipmunk body ground.physicsBody = chipmunk.NewBodyStatic() ground.physicsShape = chipmunk.NewSegment( vect.Vect{vect.Float(x1), vect.Float(y1)}, vect.Vect{vect.Float(x2), vect.Float(y2)}, GroundRadius, ) ground.physicsBody.AddShape(ground.physicsShape) // OpenGL shape ground.openglShape = shapes.NewSegment(x1, y1, x2, y2) ground.openglShape.Color(color.White) return ground }
func NewChipmunkBodyStatic() *ChipmunkBody { return &ChipmunkBody{ Body: chipmunk.NewBodyStatic(), } }