示例#1
0
        public async Task Ended()
        {
            Collision endCollision;

            do
            {
                endCollision = await ColliderA.CollisionEnded();
            }while (!endCollision.Equals(this));
        }
示例#2
0
 public override int GetHashCode()
 {
     unchecked
     {
         var result = ColliderA?.GetHashCode() ?? 0;
         result = (result * 397) ^ (ColliderB?.GetHashCode() ?? 0);
         return(result);
     }
 }
示例#3
0
 public override int GetHashCode()
 {
     unchecked
     {
         var result = ColliderA.GetHashCode();
         result = (result * 397) ^ ColliderB.GetHashCode();
         return(result);
     }
 }
示例#4
0
 public void Write(TProtocol oprot)
 {
     oprot.IncrementRecursionDepth();
     try
     {
         TStruct struc = new TStruct("CausesCollision_args");
         oprot.WriteStructBegin(struc);
         TField field = new TField();
         if (ColliderA != null && __isset.colliderA)
         {
             field.Name = "colliderA";
             field.Type = TType.Struct;
             field.ID   = 1;
             oprot.WriteFieldBegin(field);
             ColliderA.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (TransformA != null && __isset.transformA)
         {
             field.Name = "transformA";
             field.Type = TType.Struct;
             field.ID   = 2;
             oprot.WriteFieldBegin(field);
             TransformA.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (ColliderB != null && __isset.colliderB)
         {
             field.Name = "colliderB";
             field.Type = TType.Struct;
             field.ID   = 3;
             oprot.WriteFieldBegin(field);
             ColliderB.Write(oprot);
             oprot.WriteFieldEnd();
         }
         if (TransformB != null && __isset.transformB)
         {
             field.Name = "transformB";
             field.Type = TType.Struct;
             field.ID   = 4;
             oprot.WriteFieldBegin(field);
             TransformB.Write(oprot);
             oprot.WriteFieldEnd();
         }
         oprot.WriteFieldStop();
         oprot.WriteStructEnd();
     }
     finally
     {
         oprot.DecrementRecursionDepth();
     }
 }
示例#5
0
        public async Task Ended()
        {
            if (destroyed)
            {
                throw new InvalidOperationException("The collision object has been destroyed.");
            }

            Collision endCollision;

            do
            {
                endCollision = await ColliderA.CollisionEnded();
            }while (!endCollision.Equals(this));
        }
示例#6
0
            public override string ToString()
            {
                StringBuilder __sb    = new StringBuilder("CausesCollision_args(");
                bool          __first = true;

                if (ColliderA != null && __isset.colliderA)
                {
                    if (!__first)
                    {
                        __sb.Append(", ");
                    }
                    __first = false;
                    __sb.Append("ColliderA: ");
                    __sb.Append(ColliderA == null ? "<null>" : ColliderA.ToString());
                }
                if (TransformA != null && __isset.transformA)
                {
                    if (!__first)
                    {
                        __sb.Append(", ");
                    }
                    __first = false;
                    __sb.Append("TransformA: ");
                    __sb.Append(TransformA == null ? "<null>" : TransformA.ToString());
                }
                if (ColliderB != null && __isset.colliderB)
                {
                    if (!__first)
                    {
                        __sb.Append(", ");
                    }
                    __first = false;
                    __sb.Append("ColliderB: ");
                    __sb.Append(ColliderB == null ? "<null>" : ColliderB.ToString());
                }
                if (TransformB != null && __isset.transformB)
                {
                    if (!__first)
                    {
                        __sb.Append(", ");
                    }
                    __first = false;
                    __sb.Append("TransformB: ");
                    __sb.Append(TransformB == null ? "<null>" : TransformB.ToString());
                }
                __sb.Append(")");
                return(__sb.ToString());
            }
示例#7
0
        /// <summary>
        /// Solve the contact info for this given collision pair.
        /// </summary>
        public void Solve()
        {
            var typeA = ColliderA.GetType();
            var typeB = ColliderB.GetType();

            if (typeA == typeof(ABBoxCollider) && typeB == typeof(ABBoxCollider))
            {
                AABB_AABB((ABBoxCollider)ColliderA, (ABBoxCollider)ColliderB);
            }
            else if (typeA == typeof(ABCircleCollider) && typeB == typeof(ABCircleCollider))
            {
                Circle_Circle((ABCircleCollider)ColliderA, (ABCircleCollider)ColliderB);
            }
            else if (typeA == typeof(ABCircleCollider) && typeB == typeof(ABBoxCollider))
            {
                Circle_AABB((ABCircleCollider)ColliderA, (ABBoxCollider)ColliderB);
            }
            else if (typeA == typeof(ABBoxCollider) && typeB == typeof(ABCircleCollider))
            {
                AABB_Circle((ABBoxCollider)ColliderA, (ABCircleCollider)ColliderB);
            }
        }