示例#1
0
        public override byte[] Serialize(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(SerializeBase(endianness));
                writer.Write(Vertices.Length);
                writer.Write(Triangles.Length);

                writer.Write(MinX);
                writer.Write(MinY);
                writer.Write(MinZ);
                writer.Write(MaxX);
                writer.Write(MaxY);
                writer.Write(MaxZ);

                foreach (var v in Vertices)
                {
                    writer.Write(v.Serialize(endianness));
                }

                foreach (var t in Triangles)
                {
                    writer.Write(t.Serialize(endianness));
                }

                writer.Write(SerializeLinks(endianness));
                return(writer.ToArray());
            }
        }
示例#2
0
 public override byte[] Serialize(Game game, Endianness endianness)
 {
     using (var writer = new EndianBinaryWriter(endianness))
     {
         writer.Write(SerializeBase(endianness));
         writer.Write(DamageType);
         writer.Write(Sticky);
         writer.Write(DamageFlags);
         writer.Write(SurfaceType);
         writer.Write(Phys_Pad);
         writer.Write(SlideStart);
         writer.Write(SlideStop);
         writer.Write(PhysicsFlags.FlagValueByte);
         writer.Write(Friction);
         writer.Write(zSurfMatFX.Serialize(game, endianness));
         writer.Write(zSurfColorFX.Serialize(game, endianness));
         writer.Write(TextureAnimFlags.FlagValueInt);
         writer.Write(zSurfTextureAnim1.Serialize(game, endianness));
         writer.Write(zSurfTextureAnim2.Serialize(game, endianness));
         writer.Write(UVEffectsFlags.FlagValueInt);
         writer.Write(zSurfUVFX.Serialize(game, endianness));
         if (game != Game.Scooby)
         {
             writer.Write(zSurfUVFX2.Serialize(game, endianness));
             writer.Write(On);
             writer.Write((byte)0);
             writer.Write((byte)0);
             writer.Write((byte)0);
         }
         writer.Write(OutOfBoundsDelay);
         writer.Write(WalljumpScaleXZ);
         writer.Write(WalljumpScaleY);
         writer.Write(DamageTimer);
         writer.Write(DamageBounce);
         if (game == Game.Scooby)
         {
             writer.Write(UnknownInt);
             writer.Write(On);
             writer.Write((byte)0);
             writer.Write((byte)0);
             writer.Write((byte)0);
         }
         if (game == Game.Incredibles)
         {
             writer.Write(ImpactSound_AssetID);
             writer.Write(DashImpactType);
             writer.Write((byte)0);
             writer.Write((byte)0);
             writer.Write((byte)0);
             writer.Write(DashImpactThrowBack);
             writer.Write(DashSprayMagnitude);
             writer.Write(DashCoolRate);
             writer.Write(DashCoolAmount);
             writer.Write(DashPass);
             writer.Write(DashRampMaxDistance);
             writer.Write(DashRampMinDistance);
             writer.Write(DashRampKeySpeed);
             writer.Write(DashRampMaxHeight);
             writer.Write(DashRampTarget_MovePoint_AssetID);
             writer.Write(DamageAmount);
             writer.Write((int)HitSourceDamageType);
             writer.Write(OffSurface.Serialize(game, endianness));
             writer.Write(OnSurface.Serialize(game, endianness));
             writer.Write(HitDecalData0.Serialize(game, endianness));
             writer.Write(HitDecalData1.Serialize(game, endianness));
             writer.Write(HitDecalData2.Serialize(game, endianness));
             writer.Write(OffSurfaceTime);
             writer.Write(SwimmableSurface);
             writer.Write(DashFall);
             writer.Write(NeedButtonPress);
             writer.Write(DashAttack);
             writer.Write(FootstepDecals);
             writer.Write(0);
             writer.Write(DrivingSurfaceType);
             writer.Write((byte)0);
             writer.Write((byte)0);
         }
         writer.Write(SerializeLinks(endianness));
         return(writer.ToArray());
     }
 }
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(BaseObject_AssetID);
                writer.Write(GunObject_AssetID);
                writer.Write(YawRange);
                writer.Write(YawSpeed);
                writer.Write(PitchRange);
                writer.Write(PitchSpeed);
                writer.Write(RecoveryTime);
                writer.Write(OverheatFraction);
                writer.Write(CoolingSpeed);
                writer.Write(OverheatTime);
                writer.Write(HitPoints);
                writer.Write(Damage);
                writer.Write(CameraOffsetX);
                writer.Write(CameraOffsetY);
                writer.Write(CameraOffsetZ);
                writer.Write(FinalPointer_AssetID);
                writer.Write(LaserColor);
                writer.Write(Offset1X);
                writer.Write(Offset1Y);
                writer.Write(Offset1Z);
                writer.Write(Offset2X);
                writer.Write(Offset2Y);
                writer.Write(Offset2Z);
                writer.Write(LaserLength);
                writer.Write(LaserThickness);
                writer.Write(LaserSpeed);
                writer.Write(LaserSoundGroup_AssetID);
                writer.Write(TargetTexture_AssetID);
                writer.Write(TargetTextureSizeX);
                writer.Write(TargetTextureSizeY);

                return(writer.ToArray());
            }
        }
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(idle03Extras.Length);
                writer.Write(0);
                writer.Write(idle04Extras.Length);
                writer.Write(0);
                writer.Write(bombCount);
                writer.Write(extraIdleDelay);
                writer.Write(hdrGlow);
                writer.Write(hdrDarken);
                writer.Write(BackgroundMusic_SoundAssetID);
                writer.Write(scenePropertiesFlags);
                writer.Write(waterTileWidth);
                writer.Write(lodFadeDistance);
                writer.Write(UnknownInt24);
                writer.Write(UnknownInt28);
                writer.Write(UnknownInt2C);
                writer.Write(UnknownInt30);

                if (inc)
                {
                    writer.Write(UnknownInt34);
                    writer.Write(UnknownInt38);
                    writer.Write(UnknownInt3C);
                    writer.Write(UnknownInt40);
                    writer.Write(UnknownInt44);
                    writer.Write(UnknownInt48);
                    writer.Write(UnknownInt4C);
                    writer.Write(UnknownInt50);
                    writer.Write(UnknownInt54);
                }

                var idle03Pos = (int)writer.BaseStream.Position;
                foreach (var u in idle03Extras)
                {
                    writer.Write(u);
                }

                var idle04Pos = (int)writer.BaseStream.Position;
                foreach (var u in idle04Extras)
                {
                    writer.Write(u);
                }

                writer.BaseStream.Position = 0x4;
                writer.Write(idle03Pos);

                writer.BaseStream.Position = 0xC;
                writer.Write(idle04Pos);

                return(writer.ToArray());
            }
        }
示例#5
0
 public override byte[] Serialize(Game game, Endianness endianness)
 {
     using (var writer = new EndianBinaryWriter(endianness))
     {
         writer.Write(Mode);
         writer.Write(Rot);
         writer.Write(RotSpd);
         writer.Write(Trans_X);
         writer.Write(Trans_Y);
         writer.Write(Trans_Z);
         writer.Write(TransSpeed_X);
         writer.Write(TransSpeed_Y);
         writer.Write(TransSpeed_Z);
         writer.Write(Scale_X);
         writer.Write(Scale_Y);
         writer.Write(Scale_Z);
         writer.Write(ScaleSpeed_X);
         writer.Write(ScaleSpeed_Y);
         writer.Write(ScaleSpeed_Z);
         writer.Write(Min_X);
         writer.Write(Min_Y);
         writer.Write(Min_Z);
         writer.Write(Max_X);
         writer.Write(Max_Y);
         writer.Write(Max_Z);
         writer.Write(MinMaxSpeed_X);
         writer.Write(MinMaxSpeed_Y);
         writer.Write(MinMaxSpeed_Z);
         return(writer.ToArray());
     }
 }
示例#6
0
        public override byte[] Serialize(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(SerializeBase(endianness));
                writer.Write(PARS_Type);
                writer.Write(PARS_AssetID);
                writer.Write(TextureAssetID);
                writer.Write(ParsFlags.FlagValueByte);
                writer.Write(Priority);
                writer.Write(MaxParticles);
                writer.Write(RenderFunction);
                writer.Write(RenderSourceBlendMode);
                writer.Write(RenderDestBlendMode);
                writer.Write(CmdCount);
                writer.Write(Cmd.Length * 4);
                foreach (var c in Cmd)
                {
                    writer.Write(c);
                }

                if (game == Game.Incredibles)
                {
                    writer.Write(Unknown01);
                    writer.Write(Unknown02);
                    writer.Write(Unknown03);
                    writer.Write(Unknown04);
                }
                writer.Write(SerializeLinks(endianness));
                return(writer.ToArray());
            }
        }
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(Persistent);
                writer.Write(Loop);
                writer.Write(Enable);
                writer.Write(Retry);
                writer.Write(TalkBox_AssetID);
                writer.Write(NextTaskBox_AssetID);
                writer.Write(Begin_TextID);
                writer.Write(Description_TextID);
                writer.Write(Reminder_TextID);
                writer.Write(Success_TextID);
                writer.Write(Failure_TextID);
                writer.Write(End_TextID);

                return(writer.ToArray());
            }
        }
示例#8
0
        public override byte[] Serialize(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.WriteMagic("SKB1");
                writer.Write(Flags.FlagValueInt);

                if (Offsets.Length > 0)
                {
                    writer.Write((ushort)Offsets[0].Length);
                }
                else
                {
                    writer.Write((ushort)0);
                }

                writer.Write((ushort)Times.Length);
                writer.Write(KeyFrames.Length);
                writer.Write(ScaleX);
                writer.Write(ScaleY);
                writer.Write(ScaleZ);

                foreach (var k in KeyFrames)
                {
                    k.Serialize(writer);
                }
                foreach (var t in Times)
                {
                    writer.Write(t);
                }
                foreach (var o in Offsets)
                {
                    foreach (var of in o)
                    {
                        writer.Write(of);
                    }
                }

                while (writer.BaseStream.Length % 4 != 0)
                {
                    writer.Write((byte)0xCD);
                }

                return(writer.ToArray());
            }
        }
示例#9
0
        public override byte[] Serialize(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(SerializeBase(endianness));

                writer.Write(InitialSpawn);
                writer.Write(MaximumInGame);
                writer.Write(MaximumToSpawn);
                writer.Write((short)0);
                writer.Write(SpawnRate);
                writer.Write(UnknownInt_14);
                writer.Write(UnknownInt_18);
                writer.Write(UnknownInt_1C);
                writer.Write(UnknownInt_20);
                writer.Write(UnknownInt_24);
                writer.Write(UnknownInt_28);
                writer.Write(NavMesh1_AssetID);
                writer.Write(UnknownInt_30);

                writer.Write(assetID);
                writer.Write((byte)BaseAssetType.NPC);
                writer.Write((byte)_links.Length);
                writer.Write(VIL.Serialize(game, endianness).Skip(6).ToArray());

                writer.Write(SerializeLinks(endianness));
                return(writer.ToArray());
            }
        }
示例#10
0
        public override byte[] Serialize(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(Height1);
                writer.Write(Height2);
                writer.Write(Height3);
                if (game != Game.Scooby)
                {
                    writer.Write(HeightBubbleBounce);
                }
                writer.Write(Anim1_AssetID);
                writer.Write(Anim2_AssetID);
                writer.Write(Anim3_AssetID);
                writer.Write(DirectionX);
                writer.Write(DirectionY);
                writer.Write(DirectionZ);
                if (game != Game.Scooby)
                {
                    writer.Write(Settings.FlagValueInt);
                }

                return(writer.ToArray());
            }
        }
示例#11
0
        protected byte[] SerializeDynaUI(Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(PositionX);
                writer.Write(PositionY);
                writer.Write(PositionZ);
                writer.Write(Width);
                writer.Write(Height);
                writer.Write(Flags.FlagValueInt);
                writer.Write(Color);
                writer.Write(UIMotion_Selected_AssetID);
                writer.Write(UIMotion_Unselected_AssetID);
                writer.Write(Brightness);
                writer.Write((byte)0);
                writer.Write((byte)0);
                writer.Write((byte)0);
                writer.Write(autoMenuUp);
                writer.Write(autoMenuDown);
                writer.Write(autoMenuLeft);
                writer.Write(autoMenuRight);
                writer.Write(custom);
                writer.Write(customWidget);

                return(writer.ToArray());
            }
        }
示例#12
0
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(ObjectAssetID);
                writer.Write(OffsetX);
                writer.Write(OffsetY);
                writer.Write(OffsetZ);
                writer.Write(OffsetRand);
                writer.Write(InitVelX);
                writer.Write(InitVelY);
                writer.Write(InitVelZ);
                writer.Write(VelAngleRand);
                writer.Write(VelMagRand);
                writer.Write(InitAxisX);
                writer.Write(InitAxisY);
                writer.Write(InitAxisZ);
                writer.Write(AngVel);

                return(writer.ToArray());
            }
        }
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(Unknown00);
                writer.Write(Unknown01);
                writer.Write(Unknown02);
                writer.Write(Unknown03);
                writer.Write(GRSM_AssetID);
                writer.Write(MODL_AssetID);
                writer.Write(UnknownFloat01);
                writer.Write(UnknownFloat02);
                writer.Write(UnknownFloat03);
                writer.Write(UnknownFloat04);
                writer.Write(UnknownFloat05);
                writer.Write(UnknownFloat06);

                return(writer.ToArray());
            }
        }
示例#14
0
        protected override byte[] SerializeDyna(Game game, Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(Time);
                writer.Write(Intensity);
                writer.Write(ID);
                writer.Write(Priority);
                writer.Write(RumbleType);
                writer.Write(RumbleInPause);
                writer.Write((byte)0);
                writer.Write(Param1);
                writer.Write(Param2);
                writer.Write(ShakeMagnitude);
                writer.Write(ShakeCycleMax);
                writer.Write(ShakeRotationalMagnitude);
                writer.Write(ShakeY);
                writer.Write((byte)0);
                writer.Write((byte)0);
                writer.Write((byte)0);

                return(writer.ToArray());
            }
        }
示例#15
0
        public byte[] Serialize(Endianness endianness)
        {
            using (var writer = new EndianBinaryWriter(endianness))
            {
                writer.Write(PickupHash);
                writer.Write(Model_AssetID);
                writer.Write(RingModel_AssetID);
                writer.Write(UnknownFloat_0C);
                writer.Write(UnknownFloat_10);
                writer.Write(UnknownFloat_14);
                writer.Write(RingColorR);
                writer.Write(RingColorG);
                writer.Write(RingColorB);
                writer.Write(Unknown_24);
                writer.Write(Unknown_28);
                writer.Write(Pickup_SGRP);
                writer.Write(Denied_SGRP);
                writer.Write(HealthValue);
                writer.Write(PowerValue);
                writer.Write(BonusValue);
                writer.Write(UnknownByte_37);

                return(writer.ToArray());
            }
        }
示例#16
0
 public override byte[] Serialize(Game game, Endianness endianness)
 {
     using (var writer = new EndianBinaryWriter(endianness))
     {
         writer.Write(SerializeBase(endianness));
         writer.Write(UnknownInt08);
         writer.Write(Model_AssetID);
         writer.Write(UnknownInt10);
         writer.Write(UnknownInt14);
         writer.Write(UnknownInt18);
         writer.Write(UnknownInt1C);
         writer.Write(UnknownFloat20);
         writer.Write(UnknownFloat24);
         writer.Write(UnknownInt28);
         writer.Write(UnknownInt2C);
         writer.Write(UnknownInt30);
         writer.Write(UnknownInt34);
         writer.Write(UnknownInt38);
         writer.Write(UnknownInt3C);
         writer.Write(UnknownInt40);
         writer.Write(SerializeLinks(endianness));
         return(writer.ToArray());
     }
 }