public override void Save(SaveContext saveContext)
        {
            var utility = saveContext.Utility;

            base.Save(saveContext);

            utility.Write(Flags);

            saveContext.WritePointerPlaceholder(BoundingBox);

            PositionOffset.Write(utility);

            saveContext.WriteObjectListPointerPlaceholder(SubMeshes);

            utility.Write(BaseAddress);

            saveContext.WriteObjectListPointerPlaceholder(VertexBuffers);

            saveContext.WritePointerPlaceholder(BlendShape);

            /////////////////////////////
            // Begin saving dependent data

            saveContext.SaveAndMarkReference(SubMeshes);
            saveContext.SaveAndMarkReference(VertexBuffers);
            saveContext.SaveAndMarkReference(BoundingBox);

            SubMeshes.SaveList(saveContext);
            VertexBuffers.SaveList(saveContext);

            saveContext.SaveAndMarkReference(BlendShape);
        }
        public override void Save(SaveContext saveContext)
        {
            base.Save(saveContext);

            var utility = saveContext.Utility;

            saveContext.WriteObjectListPointerPlaceholder(Meshes);

            // Materials
            saveContext.WriteDICTPointerPlaceholder(ModelMaterials);

            // Shapes
            saveContext.WriteObjectListPointerPlaceholder(Shapes);

            // Mesh Node Visibilities
            saveContext.WriteObjectListPointerPlaceholder(MeshNodeVisibilities);

            utility.Write(Flags);

            utility.Write((uint)FaceCulling);

            utility.Write(LayerId);

            // Load a Skeleton if this model has one
            if (HasSkeleton)
            {
                saveContext.WritePointerPlaceholder(Skeleton);
            }

            /////////////////////////////
            // Begin saving dependent data

            // Save Lists
            saveContext.SaveAndMarkReference(Meshes);
            saveContext.SaveAndMarkReference(Shapes);
            saveContext.SaveAndMarkReference(MeshNodeVisibilities);      // I'm not SURE this is where this goes (no test data at the moment I'm writing this) but all lists seem to follow here

            // Save DICT headers
            saveContext.SaveAndMarkReference(MetaDatas);
            saveContext.SaveAndMarkReference(AnimGroup);
            saveContext.SaveAndMarkReference(ModelMaterials);

            // Now for other interior data...
            MetaDatas?.SaveEntries(saveContext);
            AnimGroup?.SaveEntries(saveContext);

            Meshes.SaveList(saveContext);
            ModelMaterials?.SaveEntries(saveContext);
            Shapes.SaveList(saveContext);
            MeshNodeVisibilities.SaveList(saveContext);

            if (HasSkeleton)
            {
                saveContext.SaveAndMarkReference(Skeleton);
            }
        }
            public void Save(SaveContext saveContext)
            {
                var utility = saveContext.Utility;

                CGFXDebug.SaveStart(this, saveContext);

                // Bone Indices
                if (BoneReferences != null)
                {
                    BoneIndices = BoneReferences.Select(b => (uint)b.Index).ToList();   // Rebuild from referenced objects
                }
                saveContext.WriteValueListPointerPlaceholder(BoneIndices);

                // Skinning
                utility.Write((uint)Skinning);

                // Faces
                saveContext.WriteObjectListPointerPlaceholder(Faces);

                /////////////////////////////
                // Begin saving dependent data

                saveContext.SaveAndMarkReference(BoneIndices);
                saveContext.SaveAndMarkReference(Faces);

                Faces.SaveList(saveContext);
            }
示例#4
0
        public void Save(SaveContext saveContext)
        {
            var utility = saveContext.Utility;

            CGFXDebug.SaveStart(this, saveContext);

            saveContext.WriteObjectListPointerPlaceholder(FaceDescriptors);

            saveContext.WriteValueListPointerPlaceholder(BufferObjs);

            utility.Write(Flags);
            utility.Write(CommandAlloc);

            /////////////////////////////
            // Begin saving dependent data

            saveContext.SaveAndMarkReference(FaceDescriptors);
            saveContext.SaveAndMarkReference(BufferObjs);

            FaceDescriptors.SaveList(saveContext);
        }
示例#5
0
        protected override void SaveInternal(SaveContext saveContext)
        {
            var utility = saveContext.Utility;

            utility.Write(BufferObject);
            utility.Write(LocationFlag);

            utility.Write(RawBuffer.Length);
            saveContext.IMAGData.EnqueueAndWriteTempRel(RawBuffer);

            utility.Write(LocationPtr);
            utility.Write(MemoryArea);
            utility.Write(VertexStride);

            saveContext.WriteObjectListPointerPlaceholder(Attributes);

            /////////////////////////////
            // Begin saving dependent data

            saveContext.SaveAndMarkReference(Attributes);

            Attributes.SaveList(saveContext);
        }