Пример #1
0
        public void WriteToFile(BinaryWriter writer)
        {
            //BEFORE WE WRITE, WE NEED TO COMPILE AND UPDATE THE FRAME.
            UpdateFrameData();
            header.WriteToFile(writer);

            int totalBlockCount = header.NumFolderNames + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons + header.NumSkelHierachies;
            int currentIdx      = header.SceneFolders.Count;

            for (; currentIdx != header.SceneFolders.Count + header.NumGeometries; currentIdx++)
            {
                (NewFrames[currentIdx].Data as FrameGeometry).WriteToFile(writer);
            }

            for (; currentIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources; currentIdx++)
            {
                (NewFrames[currentIdx].Data as FrameMaterial).WriteToFile(writer);
            }

            for (; currentIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos; currentIdx++)
            {
                (NewFrames[currentIdx].Data as FrameBlendInfo).WriteToFile(writer);
            }

            for (; currentIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons; currentIdx++)
            {
                (NewFrames[currentIdx].Data as FrameSkeleton).WriteToFile(writer);
            }

            for (; currentIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons + header.NumSkelHierachies; currentIdx++)
            {
                (NewFrames[currentIdx].Data as FrameSkeletonHierachy).WriteToFile(writer);
            }

            int savedIdx = currentIdx;

            for (; savedIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons + header.NumSkelHierachies + header.NumObjects; savedIdx++)
            {
                FrameEntry entry = NewFrames[savedIdx].Data;

                if (entry.GetType() == typeof(FrameObjectJoint))
                {
                    writer.Write((int)ObjectType.Joint);
                }
                else if (entry.GetType() == typeof(FrameObjectSingleMesh))
                {
                    writer.Write((int)ObjectType.SingleMesh);
                }
                else if (entry.GetType() == typeof(FrameObjectFrame))
                {
                    writer.Write((int)ObjectType.Frame);
                }
                else if (entry.GetType() == typeof(FrameObjectLight))
                {
                    writer.Write((int)ObjectType.Light);
                }
                else if (entry.GetType() == typeof(FrameObjectCamera))
                {
                    writer.Write((int)ObjectType.Camera);
                }
                else if (entry.GetType() == typeof(FrameObjectComponent_U005))
                {
                    writer.Write((int)ObjectType.Component_U00000005);
                }
                else if (entry.GetType() == typeof(FrameObjectSector))
                {
                    writer.Write((int)ObjectType.Sector);
                }
                else if (entry.GetType() == typeof(FrameObjectDummy))
                {
                    writer.Write((int)ObjectType.Dummy);
                }
                else if (entry.GetType() == typeof(FrameObjectDeflector))
                {
                    writer.Write((int)ObjectType.ParticleDeflector);
                }
                else if (entry.GetType() == typeof(FrameObjectArea))
                {
                    writer.Write((int)ObjectType.Area);
                }
                else if (entry.GetType() == typeof(FrameObjectTarget))
                {
                    writer.Write((int)ObjectType.Target);
                }
                else if (entry.GetType() == typeof(FrameObjectModel))
                {
                    writer.Write((int)ObjectType.Model);
                }
                else if (entry.GetType() == typeof(FrameObjectCollision))
                {
                    writer.Write((int)ObjectType.Collision);
                }
            }

            savedIdx = currentIdx;

            for (; savedIdx != header.SceneFolders.Count + header.NumGeometries + header.NumMaterialResources + header.NumBlendInfos + header.NumSkeletons + header.NumSkelHierachies + header.NumObjects; savedIdx++)
            {
                FrameEntry entry = NewFrames[savedIdx].Data;

                if (entry.GetType() == typeof(FrameObjectJoint))
                {
                    (entry as FrameObjectJoint).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectSingleMesh))
                {
                    (entry as FrameObjectSingleMesh).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectFrame))
                {
                    (entry as FrameObjectFrame).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectLight))
                {
                    (entry as FrameObjectLight).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectCamera))
                {
                    (entry as FrameObjectCamera).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectComponent_U005))
                {
                    (entry as FrameObjectComponent_U005).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectSector))
                {
                    (entry as FrameObjectSector).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectDummy))
                {
                    (entry as FrameObjectDummy).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectDeflector))
                {
                    (entry as FrameObjectDeflector).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectArea))
                {
                    (entry as FrameObjectArea).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectTarget))
                {
                    (entry as FrameObjectTarget).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectModel))
                {
                    (entry as FrameObjectModel).WriteToFile(writer);
                }
                else if (entry.GetType() == typeof(FrameObjectCollision))
                {
                    (entry as FrameObjectCollision).WriteToFile(writer);
                }
            }
        }
Пример #2
0
        public void WriteToFile(BinaryWriter writer)
        {
            //BEFORE WE WRITE, WE NEED TO COMPILE AND UPDATE THE FRAME.
            UpdateFrameData();
            header.WriteToFile(writer);

            foreach (var pair in frameGeometries)
            {
                pair.Value.WriteToFile(writer);
            }

            foreach (var pair in frameMaterials)
            {
                pair.Value.WriteToFile(writer);
            }

            foreach (var pair in frameBlendInfos)
            {
                pair.Value.WriteToFile(writer);
            }

            foreach (var pair in frameSkeletons)
            {
                pair.Value.WriteToFile(writer);
            }

            foreach (var pair in frameSkeletonHierachies)
            {
                pair.Value.WriteToFile(writer);
            }

            foreach (var pair in frameObjects)
            {
                FrameObjectBase entry = (pair.Value as FrameObjectBase);
                if (entry.GetType() == typeof(FrameObjectJoint))
                {
                    writer.Write((int)ObjectType.Joint);
                }
                else if (entry.GetType() == typeof(FrameObjectSingleMesh))
                {
                    writer.Write((int)ObjectType.SingleMesh);
                }
                else if (entry.GetType() == typeof(FrameObjectFrame))
                {
                    writer.Write((int)ObjectType.Frame);
                }
                else if (entry.GetType() == typeof(FrameObjectLight))
                {
                    writer.Write((int)ObjectType.Light);
                }
                else if (entry.GetType() == typeof(FrameObjectCamera))
                {
                    writer.Write((int)ObjectType.Camera);
                }
                else if (entry.GetType() == typeof(FrameObjectComponent_U005))
                {
                    writer.Write((int)ObjectType.Component_U00000005);
                }
                else if (entry.GetType() == typeof(FrameObjectSector))
                {
                    writer.Write((int)ObjectType.Sector);
                }
                else if (entry.GetType() == typeof(FrameObjectDummy))
                {
                    writer.Write((int)ObjectType.Dummy);
                }
                else if (entry.GetType() == typeof(FrameObjectDeflector))
                {
                    writer.Write((int)ObjectType.ParticleDeflector);
                }
                else if (entry.GetType() == typeof(FrameObjectArea))
                {
                    writer.Write((int)ObjectType.Area);
                }
                else if (entry.GetType() == typeof(FrameObjectTarget))
                {
                    writer.Write((int)ObjectType.Target);
                }
                else if (entry.GetType() == typeof(FrameObjectModel))
                {
                    writer.Write((int)ObjectType.Model);
                }
                else if (entry.GetType() == typeof(FrameObjectCollision))
                {
                    writer.Write((int)ObjectType.Collision);
                }
            }

            foreach (var pair in frameObjects)
            {
                FrameObjectBase entry = (pair.Value as FrameObjectBase);
                entry.WriteToFile(writer);
            }
        }