public ushort LicenseeNonCriticalBuildVersion; // ME3/UDK

        protected override void Serialize(SerializingContainer2 sc)
        {
            base.Serialize(sc);
            sc.Serialize(ref SourceStaticMesh);
            sc.Serialize(ref Fragments, SCExt.Serialize);
            sc.Serialize(ref CoreFragmentIndex);
            if (sc.Game >= MEGame.ME3)
            {
                sc.Serialize(ref InteriorElementIndex);
                sc.Serialize(ref CoreMeshScale3D);
                sc.Serialize(ref CoreMeshOffset);
                sc.Serialize(ref CoreMeshRotation);
                sc.Serialize(ref PlaneBias);
                sc.Serialize(ref NonCriticalBuildVersion);
                sc.Serialize(ref LicenseeNonCriticalBuildVersion);
            }
            else if (sc.IsLoading)
            {
                InteriorElementIndex            = -1;
                CoreMeshScale3D                 = new Vector3(1, 1, 1);
                PlaneBias                       = new Vector3(1, 1, 1);
                NonCriticalBuildVersion         = 1;
                LicenseeNonCriticalBuildVersion = 1;
            }
        }
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref CollisionVertices, SCExt.Serialize);
     sc.Serialize(ref BVTree, SCExt.Serialize);
     sc.Serialize(ref PatchBounds, SCExt.Serialize);
     sc.Serialize(ref LightMap);
 }
示例#3
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref SM3StaticPermutationResource);
     sc.Serialize(ref SM3StaticParameterSet);
     sc.Serialize(ref SM2StaticPermutationResource);
     sc.Serialize(ref SM2StaticParameterSet);
 }
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref Model);
     sc.Serialize(ref ZoneIndex);
     sc.Serialize(ref Elements, SCExt.Serialize);
     sc.Serialize(ref ComponentIndex);
     sc.Serialize(ref Nodes, SCExt.Serialize);
 }
示例#5
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref SM3MaterialResource);
     if (sc.Game != MEGame.UDK)
     {
         sc.Serialize(ref SM2MaterialResource);
     }
 }
示例#6
0
        public OrderedMultiValueDictionary <NameReference, PropertyCollection> CameraList; //PropertyCollection is struct of type BioStageCamera, which contains nothing that needs relinking

        protected override void Serialize(SerializingContainer2 sc)
        {
            if (sc.Game != MEGame.ME3)
            {
                if (sc.IsLoading)
                {
                    CameraList = new OrderedMultiValueDictionary <NameReference, PropertyCollection>();
                }
                return;
            }
            long startPos = sc.ms.Position;

            sc.Serialize(ref length);
            if (length == 0 && (sc.IsLoading || CameraList.Count == 0))
            {
                if (sc.IsLoading)
                {
                    CameraList = new OrderedMultiValueDictionary <NameReference, PropertyCollection>();
                }
                return;
            }

            NameReference arrayName = "m_aCameraList";

            sc.Serialize(ref arrayName);
            int dummy = 0;

            sc.Serialize(ref dummy);

            if (sc.IsLoading)
            {
                int count = sc.ms.ReadInt32();
                sc.ms.SkipInt32();
                CameraList = new OrderedMultiValueDictionary <NameReference, PropertyCollection>(count);
                for (int i = 0; i < count; i++)
                {
                    CameraList.Add(sc.ms.ReadNameReference(sc.Pcc), PropertyCollection.ReadProps(Export, sc.ms, "BioStageCamera", true, entry: Export));
                }
            }
            else
            {
                sc.ms.WriteInt32(CameraList.Count);
                sc.ms.WriteInt32(0);
                foreach ((NameReference name, PropertyCollection props) in CameraList)
                {
                    sc.ms.WriteNameReference(name, sc.Pcc);
                    props.WriteTo(sc.ms, sc.Pcc);
                }
            }

            if (sc.IsSaving)
            {
                long endPos = sc.ms.Position;
                sc.ms.JumpTo(startPos);
                sc.ms.WriteInt32((int)(endPos - startPos - 4));
                sc.ms.JumpTo(endPos);
            }
        }
示例#7
0
 public static void Serialize(SerializingContainer2 sc, ref MorphTarget.BoneOffset boff)
 {
     if (sc.IsLoading)
     {
         boff = new MorphTarget.BoneOffset();
     }
     sc.Serialize(ref boff.Offset);
     sc.Serialize(ref boff.Bone);
 }
示例#8
0
 public static void Serialize(SerializingContainer2 sc, ref MorphTarget.MorphLODModel lod)
 {
     if (sc.IsLoading)
     {
         lod = new MorphTarget.MorphLODModel();
     }
     sc.Serialize(ref lod.Vertices, Serialize);
     sc.Serialize(ref lod.NumBaseMeshVerts);
 }
示例#9
0
 public static void Serialize(SerializingContainer2 sc, ref MorphTarget.MorphVertex vert)
 {
     if (sc.IsLoading)
     {
         vert = new MorphTarget.MorphVertex();
     }
     sc.Serialize(ref vert.PositionDelta);
     sc.Serialize(ref vert.TangentZDelta);
     sc.Serialize(ref vert.SourceIdx);
 }
示例#10
0
 public static void Serialize(this SerializingContainer2 sc, ref LevelViewportInfo info)
 {
     if (sc.IsLoading)
     {
         info = new LevelViewportInfo();
     }
     sc.Serialize(ref info.CamPosition);
     sc.Serialize(ref info.CamRotation);
     sc.Serialize(ref info.CamOrthoZoom);
 }
示例#11
0
 public static void Serialize(this SerializingContainer2 sc, ref PSA.PSAAnimKeys k)
 {
     if (sc.IsLoading)
     {
         k = new PSA.PSAAnimKeys();
     }
     sc.Serialize(ref k.Position);
     sc.Serialize(ref k.Rotation);
     sc.Serialize(ref k.Time);
 }
示例#12
0
        protected override void Serialize(SerializingContainer2 sc)
        {
            int i = 0;

            sc.Serialize(ref DefaultSettingsNames, (SerializingContainer2 sc2, ref string name) =>
            {
                sc.Serialize(ref name);
                sc.Serialize(ref i);
                ++i;
            });
        }
 protected override void Serialize(SerializingContainer2 sc)
 {
     base.Serialize(sc);
     sc.Serialize(ref ArraySize);
     sc.Serialize(ref PropertyFlags);
     sc.Serialize(ref Category);
     sc.Serialize(ref ArraySizeEnum);
     if (PropertyFlags.HasFlag(UnrealFlags.EPropertyFlags.Net))
     {
         sc.Serialize(ref ReplicationOffset);
     }
 }
示例#14
0
        public static void Serialize(this SerializingContainer2 sc, ref PSA.ChunkHeader h)
        {
            if (sc.IsLoading)
            {
                h = new PSA.ChunkHeader();
            }

            sc.SerializeFixedSizeString(ref h.ChunkID, 20);
            sc.Serialize(ref h.Version);
            sc.Serialize(ref h.DataSize);
            sc.Serialize(ref h.DataCount);
        }
示例#15
0
        protected override void Serialize(SerializingContainer2 sc)
        {
            base.Serialize(sc);
            if (sc.Game <= MEGame.ME2)
            {
                int dummy = 0;
                sc.Serialize(ref dummy);
            }
            sc.Serialize(ref Children);
            if (sc.Game <= MEGame.ME2)
            {
                int dummy = 0;
                sc.Serialize(ref dummy);
                sc.Serialize(ref Line);
                sc.Serialize(ref TextPos);
            }

            if (sc.Game >= MEGame.ME3)
            {
                sc.Serialize(ref ScriptBytecodeSize);
            }
            if (sc.IsSaving)
            {
                ScriptStorageSize = ScriptBytes.Length;
            }
            sc.Serialize(ref ScriptStorageSize);
            sc.Serialize(ref ScriptBytes, ScriptStorageSize);
        }
示例#16
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     if (sc.Game >= MEGame.ME3)
     {
         sc.Serialize(ref LightMap);
     }
 }
示例#17
0
        protected override void Serialize(SerializingContainer2 sc)
        {
            sc.Serialize(ref PersistentLevel);
            if (sc.Game == MEGame.ME3)
            {
                sc.Serialize(ref PersistentFaceFXAnimSet);
            }
            else if (sc.IsLoading)
            {
                PersistentFaceFXAnimSet = new UIndex(0);
            }

            for (int i = 0; i < 4; i++)
            {
                sc.Serialize(ref EditorViews[i]);
            }

            if (sc.Game == MEGame.UDK)
            {
                sc.Serialize(ref unkFloat);
            }
            int dummy = 0;

            sc.Serialize(ref dummy);
            if (sc.Game == MEGame.ME1)
            {
                sc.Serialize(ref DecalManager);
            }
            else if (sc.IsLoading)
            {
                DecalManager = new UIndex(0);
            }

            sc.Serialize(ref ExtraReferencedObjects, SCExt.Serialize);
        }
示例#18
0
 public NameReference FriendlyName; //ME1/2
 protected override void Serialize(SerializingContainer2 sc)
 {
     base.Serialize(sc);
     sc.Serialize(ref NativeIndex);
     if (sc.Game <= MEGame.ME2)
     {
         sc.Serialize(ref OperatorPrecedence);
     }
     sc.Serialize(ref FunctionFlags);
     if (sc.Game <= MEGame.ME2 && FunctionFlags.HasFlag(FunctionFlags.Net))
     {
         sc.Serialize(ref ReplicationOffset);
     }
     if (sc.Game <= MEGame.ME2)
     {
         sc.Serialize(ref FriendlyName);
     }
 }
示例#19
0
        public static void Serialize(this SerializingContainer2 sc, ref PSA.PSAAnimInfo a)
        {
            if (sc.IsLoading)
            {
                a = new PSA.PSAAnimInfo();
            }

            sc.SerializeFixedSizeString(ref a.Name, 64);
            sc.SerializeFixedSizeString(ref a.Group, 64);
            sc.Serialize(ref a.TotalBones);
            sc.Serialize(ref a.RootInclude);
            sc.Serialize(ref a.KeyCompressionStyle);
            sc.Serialize(ref a.KeyQuotum);
            sc.Serialize(ref a.KeyReduction);
            sc.Serialize(ref a.TrackTime);
            sc.Serialize(ref a.AnimRate);
            sc.Serialize(ref a.StartBone);
            sc.Serialize(ref a.FirstRawFrame);
            sc.Serialize(ref a.NumRawFrames);
        }
示例#20
0
        protected override void Serialize(SerializingContainer2 sc)
        {
            byte platform = 0;

            sc.Serialize(ref platform);
            sc.Serialize(ref ShaderTypeCRCMap, SCExt.Serialize, SCExt.Serialize);
            if (sc.Game == MEGame.ME3 && sc.IsLoading)
            {
                int nameMapCount = sc.ms.ReadInt32();
                sc.ms.Skip(nameMapCount * 12);
            }
            else if (sc.Game == MEGame.ME3 && sc.IsSaving)
            {
                sc.ms.WriteInt32(0);
            }

            if (sc.Game == MEGame.ME1)
            {
                sc.Serialize(ref VertexFactoryTypeCRCMap, SCExt.Serialize, SCExt.Serialize);
            }

            if (sc.IsLoading)
            {
                int shaderCount = sc.ms.ReadInt32();
                Shaders = new OrderedMultiValueDictionary <Guid, Shader>(shaderCount);
                for (int i = 0; i < shaderCount; i++)
                {
                    Shader shader = null;
                    sc.Serialize(ref shader);
                    Shaders.Add(shader.Guid, shader);
                }
            }
            else
            {
                sc.ms.WriteInt32(Shaders.Count);
                foreach ((_, Shader shader) in Shaders)
                {
                    var temp = shader;
                    sc.Serialize(ref temp);
                }
            }

            if (sc.Game != MEGame.ME1)
            {
                sc.Serialize(ref VertexFactoryTypeCRCMap, SCExt.Serialize, SCExt.Serialize);
            }
            sc.Serialize(ref MaterialShaderMaps, SCExt.Serialize, SCExt.Serialize);
            int dummy = 0;

            sc.Serialize(ref dummy);
        }
示例#21
0
        public float MaxCollisionDisplacement;                    //not ME1

        protected override void Serialize(SerializingContainer2 sc)
        {
            sc.Serialize(ref Heights, SCExt.Serialize);
            sc.Serialize(ref InfoData, SCExt.Serialize);
            sc.Serialize(ref AlphaMaps, SCExt.Serialize);
            sc.Serialize(ref WeightedTextureMaps, SCExt.Serialize);
            sc.Serialize(ref CachedTerrainMaterials, SCExt.Serialize);
            if (sc.Game > MEGame.ME1)
            {
                sc.Serialize(ref CachedTerrainMaterials2, SCExt.Serialize);
                sc.Serialize(ref CachedDisplacements, SCExt.Serialize);
                sc.Serialize(ref MaxCollisionDisplacement);
            }
        }
示例#22
0
        public PropertyCollection Defaults; //I'm assuming any ObjectProperties in here are set to 0, so relinking will be unnecesary

        protected override void Serialize(SerializingContainer2 sc)
        {
            base.Serialize(sc);
            sc.Serialize(ref StructFlags);
            if (sc.IsLoading)
            {
                Defaults = PropertyCollection.ReadProps(Export, sc.ms, Export.ObjectName, includeNoneProperty: true, entry: Export);
            }
            else
            {
                Defaults.WriteTo(sc.ms, sc.Pcc, true);
            }
        }
示例#23
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     base.Serialize(sc);
     sc.Serialize(ref stateUnk1);
     sc.Serialize(ref stateUnk2);
     sc.Serialize(ref stateUnk3);
     sc.Serialize(ref stateUnk4);
     sc.Serialize(ref stateUnk5);
     sc.Serialize(ref StateFlags);
     sc.Serialize(ref LocalFunctionMap, SCExt.Serialize, SCExt.Serialize);
 }
示例#24
0
        public static void Serialize(this SerializingContainer2 sc, ref PSA.PSABone b)
        {
            if (sc.IsLoading)
            {
                b = new PSA.PSABone();
            }

            sc.SerializeFixedSizeString(ref b.Name, 64);
            sc.Serialize(ref b.Flags);
            sc.Serialize(ref b.NumChildren);
            sc.Serialize(ref b.ParentIndex);
            sc.Serialize(ref b.Rotation);
            sc.Serialize(ref b.Position);
            sc.Serialize(ref b.Length);
            sc.Serialize(ref b.Size);
        }
示例#25
0
        protected void Serialize(SerializingContainer2 sc)
        {
            var mainHeader = new ChunkHeader
            {
                ChunkID = "ANIMHEAD",
                Version = version
            };

            sc.Serialize(ref mainHeader);

            var boneHeader = new ChunkHeader
            {
                ChunkID   = "BONENAMES",
                Version   = version,
                DataSize  = 0x78,
                DataCount = Bones?.Count ?? 0
            };

            sc.Serialize(ref boneHeader);
            sc.Serialize(ref Bones, boneHeader.DataCount, SCExt.Serialize);

            var infoHeader = new ChunkHeader
            {
                ChunkID   = "ANIMINFO",
                Version   = version,
                DataSize  = 0xa8,
                DataCount = Infos?.Count ?? 0
            };

            sc.Serialize(ref infoHeader);
            sc.Serialize(ref Infos, infoHeader.DataCount, SCExt.Serialize);

            var keyHeader = new ChunkHeader
            {
                ChunkID   = "ANIMKEYS",
                Version   = version,
                DataSize  = 0x20,
                DataCount = Keys?.Count ?? 0
            };

            sc.Serialize(ref keyHeader);
            sc.Serialize(ref Keys, keyHeader.DataCount, SCExt.Serialize);
        }
示例#26
0
        protected override void Serialize(SerializingContainer2 sc)
        {
            var components = Export.GetProperty <ArrayProperty <ObjectProperty> >("LightComponents");

            if (components == null || components.Count == 0)
            {
                return;
            }

            if (sc.IsLoading)
            {
                LocalToWorldTransforms = new List <Matrix>(components.Count);
            }

            for (int i = 0; i < components.Count; i++)
            {
                Matrix m = i < LocalToWorldTransforms.Count ? LocalToWorldTransforms[i] : Matrix.Identity;
                sc.Serialize(ref m);
                if (sc.IsLoading)
                {
                    LocalToWorldTransforms.Add(m);
                }
            }
        }
示例#27
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref LODData, SCExt.Serialize);
 }
示例#28
0
        public LightmassPrimitiveSettings[] LightmassSettings; //ME3

        protected override void Serialize(SerializingContainer2 sc)
        {
            sc.Serialize(ref Bounds);
            sc.BulkSerialize(ref Vectors, SCExt.Serialize, 12);
            sc.BulkSerialize(ref Points, SCExt.Serialize, 12);
            sc.BulkSerialize(ref Nodes, SCExt.Serialize, 64);
            sc.Serialize(ref Self);
            sc.Serialize(ref Surfs, SCExt.Serialize);
            sc.BulkSerialize(ref Verts, SCExt.Serialize, sc.Game == MEGame.ME3 ? 16 : 24);
            sc.Serialize(ref NumSharedSides);
            sc.Serialize(ref Zones, SCExt.Serialize);
            sc.Serialize(ref Polys);
            sc.BulkSerialize(ref LeafHulls, SCExt.Serialize, 4);
            sc.BulkSerialize(ref Leaves, SCExt.Serialize, 4);
            sc.Serialize(ref RootOutside);
            sc.Serialize(ref Linked);
            sc.BulkSerialize(ref PortalNodes, SCExt.Serialize, 4);
            sc.BulkSerialize(ref ShadowVolume, SCExt.Serialize, 16);
            sc.Serialize(ref NumVertices);
            sc.BulkSerialize(ref VertexBuffer, SCExt.Serialize, 36);
            if (sc.Game == MEGame.ME3)
            {
                sc.Serialize(ref LightingGuid);
                sc.Serialize(ref LightmassSettings, SCExt.Serialize);
            }
            else if (sc.IsLoading)
            {
                LightmassSettings = new[]
                {
                    new LightmassPrimitiveSettings
                    {
                        FullyOccludedSamplesFraction = 1,
                        EmissiveLightFalloffExponent = 2,
                        EmissiveBoost = 1,
                        DiffuseBoost  = 1,
                        SpecularBoost = 1
                    }
                };
            }
        }
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref StaticRecievers, SCExt.Serialize);
 }
示例#30
0
 protected override void Serialize(SerializingContainer2 sc)
 {
     sc.Serialize(ref SM3MaterialResource);
     sc.Serialize(ref SM2MaterialResource);
 }