コード例 #1
0
ファイル: CollisionManager.cs プロジェクト: tanis2000/FEZ
 private static CollisionResult CollideWithInstance(Vector3 origin, Vector3 destination, Vector3 impulse, TrileInstance instance, QueryOptions options, float elasticity, Viewpoint viewpoint, bool invertedGravity)
 {
   CollisionResult collisionResult = new CollisionResult();
   Vector3 normal = -FezMath.Sign(impulse);
   FaceOrientation faceOrientation = FezMath.VisibleOrientation(viewpoint);
   if ((options & QueryOptions.Background) == QueryOptions.Background)
     faceOrientation = FezMath.GetOpposite(faceOrientation);
   CollisionType rotatedFace = instance.GetRotatedFace(faceOrientation);
   if (rotatedFace != CollisionType.None)
   {
     collisionResult.Destination = instance;
     collisionResult.NearestDistance = instance.Center;
     collisionResult.Response = CollisionManager.SolidCollision(normal, instance, origin, destination, impulse, elasticity);
     if (collisionResult.Response != Vector3.Zero)
       collisionResult.Collided = rotatedFace == CollisionType.AllSides || (rotatedFace == CollisionType.TopNoStraightLedge || rotatedFace == CollisionType.TopOnly) && (invertedGravity ? (double) normal.Y < 0.0 : (double) normal.Y > 0.0);
   }
   return collisionResult;
 }
コード例 #2
0
ファイル: PhysicsManager.cs プロジェクト: Zeludon/FEZ
 private bool IsHuggable(TrileInstance instance, IPhysicsEntity entity)
 {
   if (instance != null && instance.Enabled && !instance.Trile.Immaterial && ((!instance.Trile.Thin || instance.Trile.ForceHugging) && (instance != this.PlayerManager.CarriedInstance && instance != this.PlayerManager.PushedInstance)) && (!ActorTypeExtensions.IsBomb(instance.Trile.ActorSettings.Type) && (instance.PhysicsState == null || instance.PhysicsState != entity)))
     return !FezMath.In<CollisionType>(instance.GetRotatedFace(entity.Background ? FezMath.GetOpposite(this.CameraManager.VisibleOrientation) : this.CameraManager.VisibleOrientation), CollisionType.Immaterial, CollisionType.TopNoStraightLedge, CollisionType.AllSides, (IEqualityComparer<CollisionType>) CollisionTypeComparer.Default);
   else
     return false;
 }