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 }
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; }
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 }
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);
public void AddPrimitive(zCollisionPrimitive prim) { prims.Add(prim); }
public void AddPrimitive(zCollisionPrimitive prim) { prims.Add(prim); }