예제 #1
0
        public override void Import()
        {
            // Copy the MeshTreeNodes and Meshes into the level, making a note of the first
            // inserted index for each - this is used to update the Model to point to the
            // correct starting positions.
            for (int i = 0; i < Definition.MeshTrees.Length; i++)
            {
                TRMeshTreeNode tree          = Definition.MeshTrees[i];
                int            insertedIndex = TR2LevelUtilities.InsertMeshTreeNode(Level, tree);
                if (i == 0)
                {
                    Definition.Model.MeshTree = 4 * (uint)insertedIndex;
                }
            }

            for (int i = 0; i < Definition.Meshes.Length; i++)
            {
                TRMesh mesh          = Definition.Meshes[i];
                int    insertedIndex = TR2LevelUtilities.InsertMesh(Level, mesh);
                if (i == 0)
                {
                    Definition.Model.StartingMesh = (ushort)insertedIndex;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Inserts a new mesh tree node and returns its index in MeshTrees.
        /// </summary>
        public static int InsertMeshTreeNode(TR2Level level, TRMeshTreeNode newNode)
        {
            List <TRMeshTreeNode> nodes = level.MeshTrees.ToList();

            nodes.Add(newNode);
            level.MeshTrees = nodes.ToArray();
            level.NumMeshTrees++;

            return(level.MeshTrees.Length - 1);
        }