Ejemplo n.º 1
0
        void Collide( CollisionEntityType toType, CollisionEntityType[] fromTypes )
        {
            foreach(var a in typed_entries[(int)toType]) {
                var a_center = a.center();
                var a_rad = a.radius();

                for(int i=0; i<fromTypes.Length; i++) {
                    foreach(var b in typed_entries[(int)fromTypes[i]]) {
                        if( a.owner==b.owner ) {
                            continue;
                        }
                        float r = a_rad + b.radius();

                        Vector2 offset = b.center() - a_center;
                        float lensqr = offset.LengthSquared();

                        if (lensqr < r * r)
                        {
                            a.owner.CollideTo(b.owner, b.collider);
                            b.owner.CollideFrom(a.owner, a.collider);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void Add(CollisionEntityType type, GameEntity owner, GetCenterDelegate center, GetRadiusDelegate radius)
 {
     CollisionEntry entry = new CollisionEntry () { type = type, owner = owner, center = center, radius = radius };
     List<CollisionEntry> entries = typed_entries [(int)type];
     entries.Add (entry);
 }
Ejemplo n.º 3
0
 public void Add(CollisionEntityType type, GameEntity owner, Node collider, GetCenterDelegate center, GetRadiusDelegate radius)
 {
     CollisionEntry entry = new CollisionEntry() { type = type, owner = owner, collider = collider, center = center, radius = radius };
     Add (entry);
 }