Example #1
0
 protected override void ReadData(ESPReader reader)
 {
     using (MemoryStream stream = new MemoryStream(reader.ReadBytes(size)))
         using (ESPReader subReader = new ESPReader(stream, reader.Plugin))
         {
             try
             {
                 DamageMultiplier     = subReader.ReadSingle();
                 Flags                = subReader.ReadEnum <BodyPartDataFlags>();
                 Type                 = subReader.ReadEnum <BodyPartType>();
                 HealthPercent        = subReader.ReadByte();
                 ActorValue           = subReader.ReadEnum <ActorValuesByte>();
                 ToHitChance          = subReader.ReadByte();
                 ExplosionChance      = subReader.ReadByte();
                 ExplosionDebrisCount = subReader.ReadUInt16();
                 ExplosionDebris.ReadBinary(subReader);
                 Explosion.ReadBinary(subReader);
                 TrackingMaxAngle     = subReader.ReadSingle();
                 ExplosionDebrisScale = subReader.ReadSingle();
                 SeverableDebrisCount = subReader.ReadInt32();
                 SeverableDebris.ReadBinary(subReader);
                 SeverableExplosion.ReadBinary(subReader);
                 SeverableDebrisScale  = subReader.ReadSingle();
                 GoreEffectsTranslateX = subReader.ReadSingle();
                 GoreEffectsTranslateY = subReader.ReadSingle();
                 GoreEffectsTranslateZ = subReader.ReadSingle();
                 GoreEffectsRotationX  = subReader.ReadSingle();
                 GoreEffectsRotationY  = subReader.ReadSingle();
                 GoreEffectsRotationZ  = subReader.ReadSingle();
                 SeverableImpactDataSet.ReadBinary(subReader);
                 ExplosionImpactDataSet.ReadBinary(subReader);
                 SeverableDecalCount = subReader.ReadByte();
                 ExplosionDecalCount = subReader.ReadByte();
                 Unused = subReader.ReadBytes(2);
                 LimbReplacementScale = subReader.ReadSingle();
             }
             catch
             {
                 return;
             }
         }
 }
Example #2
0
 protected override void WriteData(ESPWriter writer)
 {
     writer.Write(DamageMultiplier);
     writer.Write((Byte)Flags);
     writer.Write((Byte)Type);
     writer.Write(HealthPercent);
     writer.Write((SByte)ActorValue);
     writer.Write(ToHitChance);
     writer.Write(ExplosionChance);
     writer.Write(ExplosionDebrisCount);
     ExplosionDebris.WriteBinary(writer);
     Explosion.WriteBinary(writer);
     writer.Write(TrackingMaxAngle);
     writer.Write(ExplosionDebrisScale);
     writer.Write(SeverableDebrisCount);
     SeverableDebris.WriteBinary(writer);
     SeverableExplosion.WriteBinary(writer);
     writer.Write(SeverableDebrisScale);
     writer.Write(GoreEffectsTranslateX);
     writer.Write(GoreEffectsTranslateY);
     writer.Write(GoreEffectsTranslateZ);
     writer.Write(GoreEffectsRotationX);
     writer.Write(GoreEffectsRotationY);
     writer.Write(GoreEffectsRotationZ);
     SeverableImpactDataSet.WriteBinary(writer);
     ExplosionImpactDataSet.WriteBinary(writer);
     writer.Write(SeverableDecalCount);
     writer.Write(ExplosionDecalCount);
     if (Unused == null)
     {
         writer.Write(new byte[2]);
     }
     else
     {
         writer.Write(Unused);
     }
     writer.Write(LimbReplacementScale);
 }
Example #3
0
        protected override void ReadDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            if (ele.TryPathTo("DamageMultiplier", false, out subEle))
            {
                DamageMultiplier = subEle.ToSingle();
            }

            if (ele.TryPathTo("Flags", false, out subEle))
            {
                Flags = subEle.ToEnum <BodyPartDataFlags>();
            }

            if (ele.TryPathTo("Type", false, out subEle))
            {
                Type = subEle.ToEnum <BodyPartType>();
            }

            if (ele.TryPathTo("HealthPercent", false, out subEle))
            {
                HealthPercent = subEle.ToByte();
            }

            if (ele.TryPathTo("ActorValue", false, out subEle))
            {
                ActorValue = subEle.ToEnum <ActorValuesByte>();
            }

            if (ele.TryPathTo("ToHitChance", false, out subEle))
            {
                ToHitChance = subEle.ToByte();
            }

            if (ele.TryPathTo("Explodable/ExplosionChance", false, out subEle))
            {
                ExplosionChance = subEle.ToByte();
            }

            if (ele.TryPathTo("Explodable/DebrisCount", false, out subEle))
            {
                ExplosionDebrisCount = subEle.ToUInt16();
            }

            if (ele.TryPathTo("Explodable/Debris", false, out subEle))
            {
                ExplosionDebris.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("Explodable/Explosion", false, out subEle))
            {
                Explosion.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("TrackingMaxAngle", false, out subEle))
            {
                TrackingMaxAngle = subEle.ToSingle();
            }

            if (ele.TryPathTo("Explodable/DebrisScale", false, out subEle))
            {
                ExplosionDebrisScale = subEle.ToSingle();
            }

            if (ele.TryPathTo("Severable/DebrisCount", false, out subEle))
            {
                SeverableDebrisCount = subEle.ToInt32();
            }

            if (ele.TryPathTo("Severable/Debris", false, out subEle))
            {
                SeverableDebris.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("Severable/Explosion", false, out subEle))
            {
                SeverableExplosion.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("Severable/DebrisScale", false, out subEle))
            {
                SeverableDebrisScale = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Translate/X", false, out subEle))
            {
                GoreEffectsTranslateX = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Translate/Y", false, out subEle))
            {
                GoreEffectsTranslateY = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Translate/Z", false, out subEle))
            {
                GoreEffectsTranslateZ = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Rotation/X", false, out subEle))
            {
                GoreEffectsRotationX = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Rotation/Y", false, out subEle))
            {
                GoreEffectsRotationY = subEle.ToSingle();
            }

            if (ele.TryPathTo("GoreEffects/Rotation/Z", false, out subEle))
            {
                GoreEffectsRotationZ = subEle.ToSingle();
            }

            if (ele.TryPathTo("Severable/ImpactDataSet", false, out subEle))
            {
                SeverableImpactDataSet.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("Explodable/ImpactDataSet", false, out subEle))
            {
                ExplosionImpactDataSet.ReadXML(subEle, master);
            }

            if (ele.TryPathTo("Severable/DecalCount", false, out subEle))
            {
                SeverableDecalCount = subEle.ToByte();
            }

            if (ele.TryPathTo("Explodable/DecalCount", false, out subEle))
            {
                ExplosionDecalCount = subEle.ToByte();
            }

            ReadUnusedXML(ele, master);

            if (ele.TryPathTo("LimbReplacementScale", false, out subEle))
            {
                LimbReplacementScale = subEle.ToSingle();
            }
        }
Example #4
0
        protected override void WriteDataXML(XElement ele, ElderScrollsPlugin master)
        {
            XElement subEle;

            ele.TryPathTo("DamageMultiplier", true, out subEle);
            subEle.Value = DamageMultiplier.ToString("G15");

            ele.TryPathTo("Flags", true, out subEle);
            subEle.Value = Flags.ToString();

            ele.TryPathTo("Type", true, out subEle);
            subEle.Value = Type.ToString();

            ele.TryPathTo("HealthPercent", true, out subEle);
            subEle.Value = HealthPercent.ToString();

            ele.TryPathTo("ActorValue", true, out subEle);
            subEle.Value = ActorValue.ToString();

            ele.TryPathTo("ToHitChance", true, out subEle);
            subEle.Value = ToHitChance.ToString();

            ele.TryPathTo("Explodable/ExplosionChance", true, out subEle);
            subEle.Value = ExplosionChance.ToString();

            ele.TryPathTo("Explodable/DebrisCount", true, out subEle);
            subEle.Value = ExplosionDebrisCount.ToString();

            ele.TryPathTo("Explodable/Debris", true, out subEle);
            ExplosionDebris.WriteXML(subEle, master);

            ele.TryPathTo("Explodable/Explosion", true, out subEle);
            Explosion.WriteXML(subEle, master);

            ele.TryPathTo("TrackingMaxAngle", true, out subEle);
            subEle.Value = TrackingMaxAngle.ToString("G15");

            ele.TryPathTo("Explodable/DebrisScale", true, out subEle);
            subEle.Value = ExplosionDebrisScale.ToString("G15");

            ele.TryPathTo("Severable/DebrisCount", true, out subEle);
            subEle.Value = SeverableDebrisCount.ToString();

            ele.TryPathTo("Severable/Debris", true, out subEle);
            SeverableDebris.WriteXML(subEle, master);

            ele.TryPathTo("Severable/Explosion", true, out subEle);
            SeverableExplosion.WriteXML(subEle, master);

            ele.TryPathTo("Severable/DebrisScale", true, out subEle);
            subEle.Value = SeverableDebrisScale.ToString("G15");

            ele.TryPathTo("GoreEffects/Translate/X", true, out subEle);
            subEle.Value = GoreEffectsTranslateX.ToString("G15");

            ele.TryPathTo("GoreEffects/Translate/Y", true, out subEle);
            subEle.Value = GoreEffectsTranslateY.ToString("G15");

            ele.TryPathTo("GoreEffects/Translate/Z", true, out subEle);
            subEle.Value = GoreEffectsTranslateZ.ToString("G15");

            ele.TryPathTo("GoreEffects/Rotation/X", true, out subEle);
            subEle.Value = GoreEffectsRotationX.ToString("G15");

            ele.TryPathTo("GoreEffects/Rotation/Y", true, out subEle);
            subEle.Value = GoreEffectsRotationY.ToString("G15");

            ele.TryPathTo("GoreEffects/Rotation/Z", true, out subEle);
            subEle.Value = GoreEffectsRotationZ.ToString("G15");

            ele.TryPathTo("Severable/ImpactDataSet", true, out subEle);
            SeverableImpactDataSet.WriteXML(subEle, master);

            ele.TryPathTo("Explodable/ImpactDataSet", true, out subEle);
            ExplosionImpactDataSet.WriteXML(subEle, master);

            ele.TryPathTo("Severable/DecalCount", true, out subEle);
            subEle.Value = SeverableDecalCount.ToString();

            ele.TryPathTo("Explodable/DecalCount", true, out subEle);
            subEle.Value = ExplosionDecalCount.ToString();

            WriteUnusedXML(ele, master);

            ele.TryPathTo("LimbReplacementScale", true, out subEle);
            subEle.Value = LimbReplacementScale.ToString("G15");
        }