예제 #1
0
        private int SortCachedPoints(ref TSVector realRelPos1, FP pen)
        {
            int num = -1;
            FP  y   = pen;

            for (int i = 0; i < 4; i++)
            {
                bool flag = this.contactList[i].penetration > y;
                if (flag)
                {
                    num = i;
                    y   = this.contactList[i].penetration;
                }
            }
            FP   x     = 0;
            FP   y2    = 0;
            FP   z     = 0;
            FP   w     = 0;
            bool flag2 = num != 0;

            if (flag2)
            {
                TSVector tSVector;
                TSVector.Subtract(ref realRelPos1, ref this.contactList[1].relativePos1, out tSVector);
                TSVector tSVector2;
                TSVector.Subtract(ref this.contactList[3].relativePos1, ref this.contactList[2].relativePos1, out tSVector2);
                TSVector tSVector3;
                TSVector.Cross(ref tSVector, ref tSVector2, out tSVector3);
                x = tSVector3.sqrMagnitude;
            }
            bool flag3 = num != 1;

            if (flag3)
            {
                TSVector tSVector4;
                TSVector.Subtract(ref realRelPos1, ref this.contactList[0].relativePos1, out tSVector4);
                TSVector tSVector5;
                TSVector.Subtract(ref this.contactList[3].relativePos1, ref this.contactList[2].relativePos1, out tSVector5);
                TSVector tSVector6;
                TSVector.Cross(ref tSVector4, ref tSVector5, out tSVector6);
                y2 = tSVector6.sqrMagnitude;
            }
            bool flag4 = num != 2;

            if (flag4)
            {
                TSVector tSVector7;
                TSVector.Subtract(ref realRelPos1, ref this.contactList[0].relativePos1, out tSVector7);
                TSVector tSVector8;
                TSVector.Subtract(ref this.contactList[3].relativePos1, ref this.contactList[1].relativePos1, out tSVector8);
                TSVector tSVector9;
                TSVector.Cross(ref tSVector7, ref tSVector8, out tSVector9);
                z = tSVector9.sqrMagnitude;
            }
            bool flag5 = num != 3;

            if (flag5)
            {
                TSVector tSVector10;
                TSVector.Subtract(ref realRelPos1, ref this.contactList[0].relativePos1, out tSVector10);
                TSVector tSVector11;
                TSVector.Subtract(ref this.contactList[2].relativePos1, ref this.contactList[1].relativePos1, out tSVector11);
                TSVector tSVector12;
                TSVector.Cross(ref tSVector10, ref tSVector11, out tSVector12);
                w = tSVector12.sqrMagnitude;
            }
            return(Arbiter.MaxAxis(x, y2, z, w));
        }