coeng

view src/co_collider.cc @ 8:8cce82794f90

seems to work nicely
author John Tsiombikas <nuclear@member.fsf.org>
date Sun, 15 Feb 2015 05:14:20 +0200
parents
children
line source
1 #include "co_collider.h"
2 #include "co_xform.h"
3 #include "gobj.h"
5 static CoCollider reg_co_col;
7 static Component *cons_collider() { return new CoCollider; }
9 CoCollider::CoCollider()
10 {
11 name = "collider";
12 shape = 0;
14 register_component(name, cons_collider);
15 }
17 CoCollider::~CoCollider()
18 {
19 delete shape;
20 }
22 const char **CoCollider::update_before() const
23 {
24 static const char *before[] = { "rigid", 0 };
25 return before;
26 }
28 void CoCollider::update(float dt)
29 {
30 // set the shape transform according to the last value of the CoXForm
31 if(!shape) return;
33 CoXForm *co_xform = COCAST(CoXForm, gobj->get_component("xform"));
34 if(co_xform) {
35 shape->set_transform(co_xform->xform);
36 }
37 }
39 bool CoCollider::collide(const CoCollider *col2, HitPoint *hit) const
40 {
41 if(!shape || !col2->shape) {
42 return false;
43 }
44 return shape->collide(col2->shape, hit);
45 }
47 CoCollider *gobj_co_collider(const GObject *obj, bool nofail)
48 {
49 CoCollider *co = COCAST(CoCollider, obj->get_component("collider"));
50 if(co) return co;
52 return nofail ? &reg_co_col : 0;
53 }