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 }
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 void CheckCollisionsAgainst(CollisionComponent other) { int collision = 0; for (int i = 0; i < prims.Count; ++i) { for (int y = 0; y < other.prims.Count; ++y) { CollResult c = prims[i].CheckAgainst(other.prims[y], tran, other.tran); if (c.collided) { if (callback != null) { callback(this, other, c, collision); } CollResult otherC = c; otherC.normal *= -1; if (other.callback != null) { other.callback(other, this, otherC, collision++); } } //Note, currently multiple callbacks can be made, each with their own index } } }
public void PhysicsCallback(CollisionManager.CollisionComponent mine, CollisionManager.CollisionComponent other, CollResult coll, int collNumber) { if(other.CheckFlag(CollisionManager.FLAGS.GROUND)) { //Move position to above the path (bottom of collision should be above the ground. Above being relative to normal //set velocity to be speed magnitude perpendicular to normal of the primitive it's colliding against, } }
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); }
public void RayCastCallBack(CollisionManager.CollisionComponent mine, CollisionManager.CollisionComponent other, CollResult coll, int collNumber) { if (other.CheckFlag(CollisionManager.FLAGS.GROUND)) { } }
public void PhysicsCallback(CollisionManager.CollisionComponent mine, CollisionManager.CollisionComponent other, CollResult coll, int collNumber) { if (other.CheckFlag(CollisionManager.FLAGS.GROUND)) { //Move position to above the path (bottom of collision should be above the ground. Above being relative to normal //set velocity to be speed magnitude perpendicular to normal of the primitive it's colliding against, } }
public void RayCastCallBack(CollisionManager.CollisionComponent mine, CollisionManager.CollisionComponent other, CollResult coll, int collNumber) { if(other.CheckFlag(CollisionManager.FLAGS.GROUND)) { } }