Beispiel #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
    }
Beispiel #2
0
 public override CollResult RedirectedCheckAgainst(zCollisionPrimitive other, EntityManager.Transform myRoot, EntityManager.Transform hisRoot)
 {
     CollResult ret = new CollResult();
     ret.collided = false;
     ret.normal = Vector2.Zero;
     return ret;
 }
Beispiel #3
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
    }
Beispiel #4
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);
    }
 /// <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>
 public abstract CollResult RedirectedCheckAgainst(zCollisionPrimitive other, EntityManager.Transform myRoot, EntityManager.Transform hisRoot);
 /// <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);
Beispiel #7
0
 public void AddPrimitive(zCollisionPrimitive prim)
 {
     prims.Add(prim);
 }
Beispiel #8
0
 public void AddPrimitive(zCollisionPrimitive prim)
 {
     prims.Add(prim);
 }