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; } } }
/// <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); }