示例#1
0
        public Model(bool flag, bool flag1, Model model)
        {
            aBoolean1659 = false;
            VertexCount = model.VertexCount;
            TriangleCount = model.TriangleCount;
            anInt1642 = model.anInt1642;
            if (flag)
            {
                vertices_y = new int[VertexCount];
                Array.Copy(model.vertices_y, 0, vertices_y, 0, VertexCount);

            }
            else
            {
                vertices_y = model.vertices_y;
            }
            if (flag1)
            {
                anIntArray1634 = new int[TriangleCount];
                anIntArray1635 = new int[TriangleCount];
                anIntArray1636 = new int[TriangleCount];
                for (int k = 0; k < TriangleCount; k++)
                {
                    anIntArray1634[k] = model.anIntArray1634[k];
                    anIntArray1635[k] = model.anIntArray1635[k];
                    anIntArray1636[k] = model.anIntArray1636[k];
                }

                anIntArray1637 = new int[TriangleCount];
                if (model.anIntArray1637 == null)
                {
                    for (int l = 0; l < TriangleCount; l++)
                        anIntArray1637[l] = 0;

                }
                else
                {
                    Array.Copy(model.anIntArray1637, 0, anIntArray1637, 0, TriangleCount);

                }
                base.aVertexNormalArray1425 = new VertexNormal[VertexCount];
                for (int j1 = 0; j1 < VertexCount; j1++)
                {
                    VertexNormal class33 = base.aVertexNormalArray1425[j1] = new VertexNormal();
                    VertexNormal class33_1 = model.aVertexNormalArray1425[j1];
                    class33.anInt602 = class33_1.anInt602;
                    class33.anInt603 = class33_1.anInt603;
                    class33.anInt604 = class33_1.anInt604;
                    class33.anInt605 = class33_1.anInt605;
                }

                aVertexNormalArray1660 = model.aVertexNormalArray1660;
            }
            else
            {
                anIntArray1634 = model.anIntArray1634;
                anIntArray1635 = model.anIntArray1635;
                anIntArray1636 = model.anIntArray1636;
                anIntArray1637 = model.anIntArray1637;
            }
            vertices_x = model.vertices_x;
            vertices_z = model.vertices_z;
            anIntArray1640 = model.anIntArray1640;
            anIntArray1639 = model.anIntArray1639;
            anIntArray1638 = model.anIntArray1638;
            anInt1641 = model.anInt1641;
            anIntArray1631 = model.anIntArray1631;
            anIntArray1632 = model.anIntArray1632;
            anIntArray1633 = model.anIntArray1633;
            anIntArray1643 = model.anIntArray1643;
            anIntArray1644 = model.anIntArray1644;
            anIntArray1645 = model.anIntArray1645;
            base.modelHeight = model.modelHeight;
            anInt1651 = model.anInt1651;
            anInt1650 = model.anInt1650;
            anInt1653 = model.anInt1653;
            anInt1652 = model.anInt1652;
            anInt1646 = model.anInt1646;
            anInt1648 = model.anInt1648;
            anInt1649 = model.anInt1649;
            anInt1647 = model.anInt1647;
        }
示例#2
0
        public void method464(Model model, bool flag)
        {
            VertexCount = model.VertexCount;
            TriangleCount = model.TriangleCount;
            anInt1642 = model.anInt1642;
            if (anIntArray1622.Length < VertexCount)
            {
                anIntArray1622 = new int[VertexCount + 100];
                anIntArray1623 = new int[VertexCount + 100];
                anIntArray1624 = new int[VertexCount + 100];
            }
            vertices_x = anIntArray1622;
            vertices_y = anIntArray1623;
            vertices_z = anIntArray1624;
            for (int k = 0; k < VertexCount; k++)
            {
                vertices_x[k] = model.vertices_x[k];
                vertices_y[k] = model.vertices_y[k];
                vertices_z[k] = model.vertices_z[k];
            }

            if (flag)
            {
                anIntArray1639 = model.anIntArray1639;
            }
            else
            {
                if (anIntArray1625.Length < TriangleCount)
                    anIntArray1625 = new int[TriangleCount + 100];
                anIntArray1639 = anIntArray1625;
                if (model.anIntArray1639 == null)
                {
                    for (int l = 0; l < TriangleCount; l++)
                        anIntArray1639[l] = 0;

                }
                else
                {
                    Array.Copy(model.anIntArray1639, 0, anIntArray1639, 0, TriangleCount);

                }
            }
            anIntArray1637 = model.anIntArray1637;
            anIntArray1640 = model.anIntArray1640;
            anIntArray1638 = model.anIntArray1638;
            anInt1641 = model.anInt1641;
            anIntArrayArray1658 = model.anIntArrayArray1658;
            anIntArrayArray1657 = model.anIntArrayArray1657;
            anIntArray1631 = model.anIntArray1631;
            anIntArray1632 = model.anIntArray1632;
            anIntArray1633 = model.anIntArray1633;
            anIntArray1634 = model.anIntArray1634;
            anIntArray1635 = model.anIntArray1635;
            anIntArray1636 = model.anIntArray1636;
            anIntArray1643 = model.anIntArray1643;
            anIntArray1644 = model.anIntArray1644;
            anIntArray1645 = model.anIntArray1645;
        }
示例#3
0
        public Model(Model[] aclass30_sub2_sub4_sub6s)
        {
            int i = 2;//was parameter
            aBoolean1659 = false;
            bool flag1 = false;
            bool flag2 = false;
            bool flag3 = false;
            bool flag4 = false;
            VertexCount = 0;
            TriangleCount = 0;
            anInt1642 = 0;
            anInt1641 = -1;
            for (int k = 0; k < i; k++)
            {
                Model model = aclass30_sub2_sub4_sub6s[k];
                if (model != null)
                {
                    VertexCount += model.VertexCount;
                    TriangleCount += model.TriangleCount;
                    anInt1642 += model.anInt1642;
                    flag1 |= model.anIntArray1637 != null;
                    if (model.anIntArray1638 != null)
                    {
                        flag2 = true;
                    }
                    else
                    {
                        if (anInt1641 == -1)
                            anInt1641 = model.anInt1641;
                        if (anInt1641 != model.anInt1641)
                            flag2 = true;
                    }
                    flag3 |= model.anIntArray1639 != null;
                    flag4 |= model.anIntArray1640 != null;
                }
            }

            vertices_x = new int[VertexCount];
            vertices_y = new int[VertexCount];
            vertices_z = new int[VertexCount];
            anIntArray1631 = new int[TriangleCount];
            anIntArray1632 = new int[TriangleCount];
            anIntArray1633 = new int[TriangleCount];
            anIntArray1634 = new int[TriangleCount];
            anIntArray1635 = new int[TriangleCount];
            anIntArray1636 = new int[TriangleCount];
            anIntArray1643 = new int[anInt1642];
            anIntArray1644 = new int[anInt1642];
            anIntArray1645 = new int[anInt1642];
            if (flag1)
                anIntArray1637 = new int[TriangleCount];
            if (flag2)
                anIntArray1638 = new int[TriangleCount];
            if (flag3)
                anIntArray1639 = new int[TriangleCount];
            if (flag4)
                anIntArray1640 = new int[TriangleCount];
            VertexCount = 0;
            TriangleCount = 0;
            anInt1642 = 0;
            int i1 = 0;
            for (int j1 = 0; j1 < i; j1++)
            {
                Model model_1 = aclass30_sub2_sub4_sub6s[j1];
                if (model_1 != null)
                {
                    int k1 = VertexCount;
                    for (int l1 = 0; l1 < model_1.VertexCount; l1++)
                    {
                        vertices_x[VertexCount] = model_1.vertices_x[l1];
                        vertices_y[VertexCount] = model_1.vertices_y[l1];
                        vertices_z[VertexCount] = model_1.vertices_z[l1];
                        VertexCount++;
                    }

                    for (int i2 = 0; i2 < model_1.TriangleCount; i2++)
                    {
                        anIntArray1631[TriangleCount] = model_1.anIntArray1631[i2] + k1;
                        anIntArray1632[TriangleCount] = model_1.anIntArray1632[i2] + k1;
                        anIntArray1633[TriangleCount] = model_1.anIntArray1633[i2] + k1;
                        anIntArray1634[TriangleCount] = model_1.anIntArray1634[i2];
                        anIntArray1635[TriangleCount] = model_1.anIntArray1635[i2];
                        anIntArray1636[TriangleCount] = model_1.anIntArray1636[i2];
                        if (flag1)
                            if (model_1.anIntArray1637 == null)
                            {
                                anIntArray1637[TriangleCount] = 0;
                            }
                            else
                            {
                                int j2 = model_1.anIntArray1637[i2];
                                if ((j2 & 2) == 2)
                                    j2 += i1 << 2;
                                anIntArray1637[TriangleCount] = j2;
                            }
                        if (flag2)
                            if (model_1.anIntArray1638 == null)
                                anIntArray1638[TriangleCount] = model_1.anInt1641;
                            else
                                anIntArray1638[TriangleCount] = model_1.anIntArray1638[i2];
                        if (flag3)
                            if (model_1.anIntArray1639 == null)
                                anIntArray1639[TriangleCount] = 0;
                            else
                                anIntArray1639[TriangleCount] = model_1.anIntArray1639[i2];
                        if (flag4 && model_1.anIntArray1640 != null)
                            anIntArray1640[TriangleCount] = model_1.anIntArray1640[i2];
                        TriangleCount++;
                    }

                    for (int k2 = 0; k2 < model_1.anInt1642; k2++)
                    {
                        anIntArray1643[anInt1642] = model_1.anIntArray1643[k2] + k1;
                        anIntArray1644[anInt1642] = model_1.anIntArray1644[k2] + k1;
                        anIntArray1645[anInt1642] = model_1.anIntArray1645[k2] + k1;
                        anInt1642++;
                    }

                    i1 += model_1.anInt1642;
                }
            }

            method466();
        }
示例#4
0
        public Model(bool flag, bool flag1, bool flag2, Model model)
        {
            aBoolean1659 = false;
            VertexCount = model.VertexCount;
            TriangleCount = model.TriangleCount;
            anInt1642 = model.anInt1642;
            if (flag2)
            {
                vertices_x = model.vertices_x;
                vertices_y = model.vertices_y;
                vertices_z = model.vertices_z;
            }
            else
            {
                vertices_x = new int[VertexCount];
                vertices_y = new int[VertexCount];
                vertices_z = new int[VertexCount];
                for (int j = 0; j < VertexCount; j++)
                {
                    vertices_x[j] = model.vertices_x[j];
                    vertices_y[j] = model.vertices_y[j];
                    vertices_z[j] = model.vertices_z[j];
                }

            }
            if (flag)
            {
                anIntArray1640 = model.anIntArray1640;
            }
            else
            {
                anIntArray1640 = new int[TriangleCount];
                Array.Copy(model.anIntArray1640, 0, anIntArray1640, 0, TriangleCount);

            }
            if (flag1)
            {
                anIntArray1639 = model.anIntArray1639;
            }
            else
            {
                anIntArray1639 = new int[TriangleCount];
                if (model.anIntArray1639 == null)
                {
                    for (int l = 0; l < TriangleCount; l++)
                        anIntArray1639[l] = 0;

                }
                else
                {
                    Array.Copy(model.anIntArray1639, 0, anIntArray1639, 0, TriangleCount);

                }
            }
            anIntArray1655 = model.anIntArray1655;
            anIntArray1656 = model.anIntArray1656;
            anIntArray1637 = model.anIntArray1637;
            anIntArray1631 = model.anIntArray1631;
            anIntArray1632 = model.anIntArray1632;
            anIntArray1633 = model.anIntArray1633;
            anIntArray1638 = model.anIntArray1638;
            anInt1641 = model.anInt1641;
            anIntArray1643 = model.anIntArray1643;
            anIntArray1644 = model.anIntArray1644;
            anIntArray1645 = model.anIntArray1645;
        }
示例#5
0
        public Model(int i, Model[] aclass30_sub2_sub4_sub6s)
        {
            aBoolean1659 = false;
            bool flag = false;
            bool flag1 = false;
            bool flag2 = false;
            bool flag3 = false;
            VertexCount = 0;
            TriangleCount = 0;
            anInt1642 = 0;
            anInt1641 = -1;
            for (int k = 0; k < i; k++)
            {
                Model model = aclass30_sub2_sub4_sub6s[k];
                if (model != null)
                {
                    VertexCount += model.VertexCount;
                    TriangleCount += model.TriangleCount;
                    anInt1642 += model.anInt1642;
                    flag |= model.anIntArray1637 != null;
                    if (model.anIntArray1638 != null)
                    {
                        flag1 = true;
                    }
                    else
                    {
                        if (anInt1641 == -1)
                            anInt1641 = model.anInt1641;
                        if (anInt1641 != model.anInt1641)
                            flag1 = true;
                    }
                    flag2 |= model.anIntArray1639 != null;
                    flag3 |= model.anIntArray1656 != null;
                }
            }

            vertices_x = new int[VertexCount];
            vertices_y = new int[VertexCount];
            vertices_z = new int[VertexCount];
            anIntArray1655 = new int[VertexCount];
            anIntArray1631 = new int[TriangleCount];
            anIntArray1632 = new int[TriangleCount];
            anIntArray1633 = new int[TriangleCount];
            anIntArray1643 = new int[anInt1642];
            anIntArray1644 = new int[anInt1642];
            anIntArray1645 = new int[anInt1642];
            if (flag)
                anIntArray1637 = new int[TriangleCount];
            if (flag1)
                anIntArray1638 = new int[TriangleCount];
            if (flag2)
                anIntArray1639 = new int[TriangleCount];
            if (flag3)
                anIntArray1656 = new int[TriangleCount];
            anIntArray1640 = new int[TriangleCount];
            VertexCount = 0;
            TriangleCount = 0;
            anInt1642 = 0;
            int l = 0;
            for (int i1 = 0; i1 < i; i1++)
            {
                Model model_1 = aclass30_sub2_sub4_sub6s[i1];
                if (model_1 != null)
                {
                    for (int j1 = 0; j1 < model_1.TriangleCount; j1++)
                    {
                        if (flag)
                            if (model_1.anIntArray1637 == null)
                            {
                                anIntArray1637[TriangleCount] = 0;
                            }
                            else
                            {
                                int k1 = model_1.anIntArray1637[j1];
                                if ((k1 & 2) == 2)
                                    k1 += l << 2;
                                anIntArray1637[TriangleCount] = k1;
                            }
                        if (flag1)
                            if (model_1.anIntArray1638 == null)
                                anIntArray1638[TriangleCount] = model_1.anInt1641;
                            else
                                anIntArray1638[TriangleCount] = model_1.anIntArray1638[j1];
                        if (flag2)
                            if (model_1.anIntArray1639 == null)
                                anIntArray1639[TriangleCount] = 0;
                            else
                                anIntArray1639[TriangleCount] = model_1.anIntArray1639[j1];
                        if (flag3 && model_1.anIntArray1656 != null)
                            anIntArray1656[TriangleCount] = model_1.anIntArray1656[j1];
                        anIntArray1640[TriangleCount] = model_1.anIntArray1640[j1];
                        anIntArray1631[TriangleCount] = method465(model_1, model_1.anIntArray1631[j1]);
                        anIntArray1632[TriangleCount] = method465(model_1, model_1.anIntArray1632[j1]);
                        anIntArray1633[TriangleCount] = method465(model_1, model_1.anIntArray1633[j1]);
                        TriangleCount++;
                    }

                    for (int l1 = 0; l1 < model_1.anInt1642; l1++)
                    {
                        anIntArray1643[anInt1642] = method465(model_1, model_1.anIntArray1643[l1]);
                        anIntArray1644[anInt1642] = method465(model_1, model_1.anIntArray1644[l1]);
                        anIntArray1645[anInt1642] = method465(model_1, model_1.anIntArray1645[l1]);
                        anInt1642++;
                    }

                    l += model_1.anInt1642;
                }
            }
        }
示例#6
0
        private int method465(Model model, int i)
        {
            int j = -1;
            int k = model.vertices_x[i];
            int l = model.vertices_y[i];
            int i1 = model.vertices_z[i];
            for (int j1 = 0; j1 < VertexCount; j1++)
            {
                if (k != vertices_x[j1] || l != vertices_y[j1] || i1 != vertices_z[j1])
                    continue;
                j = j1;
                break;
            }

            if (j == -1)
            {
                vertices_x[VertexCount] = k;
                vertices_y[VertexCount] = l;
                vertices_z[VertexCount] = i1;
                if (model.anIntArray1655 != null)
                    anIntArray1655[VertexCount] = model.anIntArray1655[i];
                j = VertexCount++;
            }
            return j;
        }
示例#7
0
        private void method308(Model model, Model model_1, int i, int j, int k, bool flag)
        {
            anInt488++;
            int l = 0;
            int[] ai = model_1.vertices_x;
            int i1 = model_1.VertexCount;
            for (int j1 = 0; j1 < model.VertexCount; j1++)
            {
                VertexNormal class33 = model.aVertexNormalArray1425[j1];
                VertexNormal class33_1 = model.aVertexNormalArray1660[j1];
                if (class33_1.anInt605 != 0)
                {
                    int i2 = model.vertices_y[j1] - j;
                    if (i2 <= model_1.anInt1651)
                    {
                        int j2 = model.vertices_x[j1] - i;
                        if (j2 >= model_1.anInt1646 && j2 <= model_1.anInt1647)
                        {
                            int k2 = model.vertices_z[j1] - k;
                            if (k2 >= model_1.anInt1649 && k2 <= model_1.anInt1648)
                            {
                                for (int l2 = 0; l2 < i1; l2++)
                                {
                                    VertexNormal class33_2 = model_1.aVertexNormalArray1425[l2];
                                    VertexNormal class33_3 = model_1.aVertexNormalArray1660[l2];
                                    if (j2 == ai[l2] && k2 == model_1.vertices_z[l2] && i2 == model_1.vertices_y[l2] && class33_3.anInt605 != 0)
                                    {
                                        class33.anInt602 += class33_3.anInt602;
                                        class33.anInt603 += class33_3.anInt603;
                                        class33.anInt604 += class33_3.anInt604;
                                        class33.anInt605 += class33_3.anInt605;
                                        class33_2.anInt602 += class33_1.anInt602;
                                        class33_2.anInt603 += class33_1.anInt603;
                                        class33_2.anInt604 += class33_1.anInt604;
                                        class33_2.anInt605 += class33_1.anInt605;
                                        l++;
                                        anIntArray486[j1] = anInt488;
                                        anIntArray487[l2] = anInt488;
                                    }
                                }

                            }
                        }
                    }
                }
            }

            if (l < 3 || !flag)
                return;
            for (int k1 = 0; k1 < model.TriangleCount; k1++)
                if (anIntArray486[model.anIntArray1631[k1]] == anInt488 && anIntArray486[model.anIntArray1632[k1]] == anInt488 && anIntArray486[model.anIntArray1633[k1]] == anInt488)
                    model.anIntArray1637[k1] = -1;

            for (int l1 = 0; l1 < model_1.TriangleCount; l1++)
                if (anIntArray487[model_1.anIntArray1631[l1]] == anInt488 && anIntArray487[model_1.anIntArray1632[l1]] == anInt488 && anIntArray487[model_1.anIntArray1633[l1]] == anInt488)
                    model_1.anIntArray1637[l1] = -1;
        }
示例#8
0
        private void method307(int i, int j, int k, int l, int i1, Model model)
        {
            bool flag = true;
            int j1 = l;
            int k1 = l + j;
            int l1 = i1 - 1;
            int i2 = i1 + k;
            for (int j2 = i; j2 <= i + 1; j2++)
                if (j2 != anInt437)
                {
                    for (int k2 = j1; k2 <= k1; k2++)
                        if (k2 >= 0 && k2 < anInt438)
                        {
                            for (int l2 = l1; l2 <= i2; l2++)
                                if (l2 >= 0 && l2 < anInt439 && (!flag || k2 >= k1 || l2 >= i2 || l2 < i1 && k2 != l))
                                {
                                    Ground class30_sub3 = groundArray[j2][k2][l2];
                                    if (class30_sub3 != null)
                                    {
                                        int i3 = (anIntArrayArrayArray440[j2][k2][l2] + anIntArrayArrayArray440[j2][k2 + 1][l2] + anIntArrayArrayArray440[j2][k2][l2 + 1] + anIntArrayArrayArray440[j2][k2 + 1][l2 + 1]) / 4 - (anIntArrayArrayArray440[i][l][i1] + anIntArrayArrayArray440[i][l + 1][i1] + anIntArrayArrayArray440[i][l][i1 + 1] + anIntArrayArrayArray440[i][l + 1][i1 + 1]) / 4;
                                        Object1 class10 = class30_sub3.obj1;
                                        if (class10 != null && class10.aClass30_Sub2_Sub4_278 != null && class10.aClass30_Sub2_Sub4_278.aVertexNormalArray1425 != null)
                                            method308(model, (Model)class10.aClass30_Sub2_Sub4_278, (k2 - l) * 128 + (1 - j) * 64, i3, (l2 - i1) * 128 + (1 - k) * 64, flag);
                                        if (class10 != null && class10.aClass30_Sub2_Sub4_279 != null && class10.aClass30_Sub2_Sub4_279.aVertexNormalArray1425 != null)
                                            method308(model, (Model)class10.aClass30_Sub2_Sub4_279, (k2 - l) * 128 + (1 - j) * 64, i3, (l2 - i1) * 128 + (1 - k) * 64, flag);
                                        for (int j3 = 0; j3 < class30_sub3.anInt1317; j3++)
                                        {
                                            Object5 class28 = class30_sub3.obj5Array[j3];
                                            if (class28 != null && class28.aClass30_Sub2_Sub4_521 != null && class28.aClass30_Sub2_Sub4_521.aVertexNormalArray1425 != null)
                                            {
                                                int k3 = (class28.anInt524 - class28.anInt523) + 1;
                                                int l3 = (class28.anInt526 - class28.anInt525) + 1;
                                                method308(model, (Model)class28.aClass30_Sub2_Sub4_521, (class28.anInt523 - l) * 128 + (k3 - j) * 64, i3, (class28.anInt525 - i1) * 128 + (l3 - k) * 64, flag);
                                            }
                                        }

                                    }
                                }

                        }

                    j1--;
                    flag = false;
                }
        }
示例#9
0
 private void method306(int i, int j, Model model, int k)
 {
     if (i < anInt438)
     {
         Ground class30_sub3 = groundArray[j][i + 1][k];
         if (class30_sub3 != null && class30_sub3.obj3 != null && class30_sub3.obj3.aClass30_Sub2_Sub4_814.aVertexNormalArray1425 != null)
             method308(model, (Model)class30_sub3.obj3.aClass30_Sub2_Sub4_814, 128, 0, 0, true);
     }
     if (k < anInt438)
     {
         Ground class30_sub3_1 = groundArray[j][i][k + 1];
         if (class30_sub3_1 != null && class30_sub3_1.obj3 != null && class30_sub3_1.obj3.aClass30_Sub2_Sub4_814.aVertexNormalArray1425 != null)
             method308(model, (Model)class30_sub3_1.obj3.aClass30_Sub2_Sub4_814, 0, 0, 128, true);
     }
     if (i < anInt438 && k < anInt439)
     {
         Ground class30_sub3_2 = groundArray[j][i + 1][k + 1];
         if (class30_sub3_2 != null && class30_sub3_2.obj3 != null && class30_sub3_2.obj3.aClass30_Sub2_Sub4_814.aVertexNormalArray1425 != null)
             method308(model, (Model)class30_sub3_2.obj3.aClass30_Sub2_Sub4_814, 128, 0, 128, true);
     }
     if (i < anInt438 && k > 0)
     {
         Ground class30_sub3_3 = groundArray[j][i + 1][k - 1];
         if (class30_sub3_3 != null && class30_sub3_3.obj3 != null && class30_sub3_3.obj3.aClass30_Sub2_Sub4_814.aVertexNormalArray1425 != null)
             method308(model, (Model)class30_sub3_3.obj3.aClass30_Sub2_Sub4_814, 128, 0, -128, true);
     }
 }