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 }
func NewPhysics(static bool, space *chipmunk.Space) *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(), Space: space, Body: body, Box: box.GetAsBox(), Shape: box} body.AddShape(box) 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 NewPhysicsShape(static bool, space *chipmunk.Space, shape *chipmunk.Shape) *Physics { var body *chipmunk.Body if static { body = chipmunk.NewBodyStatic() //s := chipmunk.NewBox(vect.Vect{-100, -10}, 200, 5) //body.AddShape(s) //p := &Physics{BaseComponent: NewComponent(), Space: space, Body: body, Box: s.GetAsBox(), Shape: s} //return p } else { body = chipmunk.NewBody(1, shape.ShapeClass.Moment(1)) } body.AddShape(shape) p := &Physics{BaseComponent: NewComponent(), Space: space, Body: body, Box: shape.GetAsBox(), Shape: shape} 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 }