Example #1
0
    public override CollResult CheckAgainst(zCollisionPrimitive other, EntityManager.Transform myRoot, EntityManager.Transform hisRoot)
    {
        //Transform both into correct space
        if (other is zCollisionAABB)
        {
            CollResult ret = new CollResult();
            ret.collided = false;
            ret.normal   = Vector2.Zero;
            Rectangle mine = m_rect;
            mine.Offset((int)myRoot.GetPos().X, (int)myRoot.GetPos().Y);

            Rectangle his = (other as zCollisionAABB).m_rect;
            his.Offset((int)hisRoot.GetPos().X, (int)hisRoot.GetPos().Y);

            if (mine.Intersects(his))
            {
                ret.collided = true;
                ret.normal   = new Vector2(his.Center.X - mine.Center.X, his.Center.Y - mine.Center.Y);
                ret.normal.Normalize();
            }
            return(ret);
        }

        //Oh no we can't handle any others.
        return(other.RedirectedCheckAgainst(this, hisRoot, myRoot)); //Note the swap of transforms
    }
Example #2
0
    override public CollResult RedirectedCheckAgainst(zCollisionPrimitive other, EntityManager.Transform myRoot, EntityManager.Transform hisRoot)
    {
        CollResult ret = new CollResult();

        ret.collided = false;
        ret.normal   = Vector2.Zero;
        return(ret);
    }
Example #3
0
    void SuperHackyLevelParsing()
    {
        foreach (GLEED2D.Layer layer in testLevel.Layers)
        {
            if (layer.Name.ToLower() == "collision")
            {
                //For now only process this layer

                //All items on this layer should be either a path, circle, or AABB
                foreach (GLEED2D.Item item in layer.Items)
                {
                    //I don't like this, it's fine for when they were serialized out but not for loading them.
                    //One size does not fit all
                    if (item.GetType() == typeof(GLEED2D.PathItem))
                    {
                        CollisionManager.CollisionComponent foo = CollisionManager.Get().GetCollComponent();

                        EntityManager.Transform footrans = EntityManager.get().GetTransform();
                        footrans.Set(item.Position, Vector2.Zero, Vector2.Zero, 0);
                        item.Position = Vector2.Zero;
                        foo.SetTransform(footrans);
                        foo.AddPrimitive(new zCollisionPath((GLEED2D.PathItem)item));
                    }
                    else if (item.GetType() == typeof(GLEED2D.RectangleItem))
                    {
                        GLEED2D.RectangleItem gleeRect = (GLEED2D.RectangleItem)item;
                        Rectangle             zeRect   = new Rectangle((int)gleeRect.Position.X, (int)gleeRect.Position.Y, (int)gleeRect.Width, (int)gleeRect.Height);

                        CollisionManager.CollisionComponent foo      = CollisionManager.Get().GetCollComponent();
                        EntityManager.Transform             footrans = EntityManager.get().GetTransform();
                        footrans.Set(item.Position, Vector2.Zero, Vector2.Zero, 0);
                        item.Position = Vector2.Zero;
                        foo.SetTransform(footrans);
                        foo.AddPrimitive(new zCollisionAABB(zeRect));
                    }
                    else if (item.GetType() == typeof(GLEED2D.CircleItem))
                    {
                        GLEED2D.CircleItem gleeCircle                = (GLEED2D.CircleItem)item;
                        CollisionManager.CollisionComponent foo      = CollisionManager.Get().GetCollComponent();
                        EntityManager.Transform             footrans = EntityManager.get().GetTransform();
                        footrans.Set(item.Position, Vector2.Zero, Vector2.Zero, 0);
                        item.Position = Vector2.Zero;
                        foo.SetTransform(footrans);
                        foo.AddPrimitive(new zCollisionCircle(gleeCircle.Position, gleeCircle.Radius));
                    }
                }
            }
        }
    }
Example #4
0
 /// <summary>
 /// Called if other could not handle the collision so passed the buck to this class.  If this does not have
 /// the logic to handle the collision it should assert.  Chances are if this happens it's Glenn's fault.
 /// </summary>
 /// <param name="other">Primitive that has already attempted to resolve collision</param>
 /// <param name="myRoot">Transform passed from CollisionComponent</param>
 /// <param name="hisRoot">Transform passed from other's CollisionComponent</param>
 /// <returns>CollResult instance describing collision</returns>
 abstract public CollResult RedirectedCheckAgainst(zCollisionPrimitive other, EntityManager.Transform myRoot, EntityManager.Transform hisRoot);
Example #5
0
 CollisionComponent(EntityManager.Transform t, CollCallBack coll)
 {
     tran = t;
     callback = coll;
 }
Example #6
0
 public void SetTransform(EntityManager.Transform to)
 {
     tran = to;
 }
Example #7
0
 public void SetTransform(EntityManager.Transform to)
 {
     tran = to;
 }
Example #8
0
 static CollisionComponent creator(EntityManager.Transform t, CollCallBack coll)
 {
     return(new CollisionComponent(t, coll));
 }
Example #9
0
 List <zCollisionPrimitive> prims = new List <zCollisionPrimitive>(); //Multiple prims per coll comp
 CollisionComponent(EntityManager.Transform t, CollCallBack coll)
 {
     tran     = t;
     callback = coll;
 }