public void FromBytes(BinaryReader reader, IWorldAccessor resolver)
        {
            basePos = new Vec3d(reader.ReadDouble(), reader.ReadDouble(), reader.ReadDouble());

            DieInAir      = reader.ReadBoolean();
            DieInLiquid   = reader.ReadBoolean();
            SwimOnLiquid  = reader.ReadBoolean();
            HsvaColor     = new NatFloat[] { NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader) };
            GravityEffect = NatFloat.createFromBytes(reader);
            LifeLength    = NatFloat.createFromBytes(reader);
            PosOffset     = new NatFloat[] { NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader) };
            Quantity      = NatFloat.createFromBytes(reader);
            Size          = NatFloat.createFromBytes(reader);
            Velocity      = new NatFloat[] { NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader), NatFloat.createFromBytes(reader) };
            ParticleModel = (EnumParticleModel)reader.ReadByte();
            VertexFlags   = reader.ReadInt32();

            if (!reader.ReadBoolean())
            {
                OpacityEvolve = EvolvingNatFloat.CreateFromBytes(reader);
            }

            if (!reader.ReadBoolean())
            {
                RedEvolve = EvolvingNatFloat.CreateFromBytes(reader);
            }

            if (!reader.ReadBoolean())
            {
                GreenEvolve = EvolvingNatFloat.CreateFromBytes(reader);
            }

            if (!reader.ReadBoolean())
            {
                BlueEvolve = EvolvingNatFloat.CreateFromBytes(reader);
            }

            SizeEvolve.FromBytes(reader);
            SelfPropelled    = reader.ReadBoolean();
            TerrainCollision = reader.ReadBoolean();
            ColorByBlock     = reader.ReadBoolean();

            if (reader.ReadBoolean())
            {
                VelocityEvolve = new EvolvingNatFloat[]
                {
                    EvolvingNatFloat.createIdentical(0),
                    EvolvingNatFloat.createIdentical(0),
                    EvolvingNatFloat.createIdentical(0),
                };

                VelocityEvolve[0].FromBytes(reader);
                VelocityEvolve[1].FromBytes(reader);
                VelocityEvolve[2].FromBytes(reader);
            }
            SecondarySpawnInterval = NatFloat.createFromBytes(reader);
            int secondaryPropCount = reader.ReadInt32();

            if (secondaryPropCount > 0)
            {
                SecondaryParticles = new AdvancedParticleProperties[secondaryPropCount];
                for (int i = 0; i < secondaryPropCount; i++)
                {
                    SecondaryParticles[i] = AdvancedParticleProperties.createFromBytes(reader, resolver);
                }
            }

            int deathPropCount = reader.ReadInt32();

            if (deathPropCount > 0)
            {
                DeathParticles = new AdvancedParticleProperties[deathPropCount];
                for (int i = 0; i < deathPropCount; i++)
                {
                    DeathParticles[i] = AdvancedParticleProperties.createFromBytes(reader, resolver);
                }
            }

            WindAffectednes = reader.ReadSingle();
        }
Esempio n. 2
0
        public void ToBytes(BinaryWriter writer)
        {
            writer.Write(MinQuantity);
            writer.Write(AddQuantity);
            MinPos.ToBytes(writer);
            AddPos.ToBytes(writer);
            MinVelocity.ToBytes(writer);
            AddVelocity.ToBytes(writer);
            writer.Write(LifeLength);
            writer.Write(GravityEffect);
            writer.Write(MinSize);
            writer.Write(MaxSize);
            writer.Write(Color);
            writer.Write(VertexFlags);
            writer.Write((int)ParticleModel);
            writer.Write(ShouldDieInAir);
            writer.Write(ShouldDieInLiquid);

            writer.Write(OpacityEvolve == null);
            if (OpacityEvolve != null)
            {
                OpacityEvolve.ToBytes(writer);
            }

            writer.Write(RedEvolve == null);
            if (RedEvolve != null)
            {
                RedEvolve.ToBytes(writer);
            }

            writer.Write(GreenEvolve == null);
            if (GreenEvolve != null)
            {
                GreenEvolve.ToBytes(writer);
            }

            writer.Write(BlueEvolve == null);
            if (BlueEvolve != null)
            {
                BlueEvolve.ToBytes(writer);
            }

            writer.Write(SizeEvolve == null);
            if (SizeEvolve != null)
            {
                SizeEvolve.ToBytes(writer);
            }

            writer.Write(SelfPropelled);

            writer.Write(ColorByBlock == null);
            if (ColorByBlock != null)
            {
                writer.Write(ColorByBlock.BlockId);
            }

            writer.Write(ClimateColorMap == null);
            if (ClimateColorMap != null)
            {
                writer.Write(ClimateColorMap);
            }

            writer.Write(SeasonColorMap == null);
            if (SeasonColorMap != null)
            {
                writer.Write(SeasonColorMap);
            }
        }
        public void ToBytes(BinaryWriter writer)
        {
            writer.Write(basePos.X);
            writer.Write(basePos.Y);
            writer.Write(basePos.Z);

            writer.Write(DieInAir);
            writer.Write(DieInLiquid);
            writer.Write(SwimOnLiquid);
            for (int i = 0; i < 4; i++)
            {
                HsvaColor[i].ToBytes(writer);
            }
            GravityEffect.ToBytes(writer);
            LifeLength.ToBytes(writer);
            for (int i = 0; i < 3; i++)
            {
                PosOffset[i].ToBytes(writer);
            }
            Quantity.ToBytes(writer);
            Size.ToBytes(writer);
            for (int i = 0; i < 3; i++)
            {
                Velocity[i].ToBytes(writer);
            }
            writer.Write((byte)ParticleModel);
            writer.Write(VertexFlags);


            writer.Write(OpacityEvolve == null);
            if (OpacityEvolve != null)
            {
                OpacityEvolve.ToBytes(writer);
            }

            writer.Write(RedEvolve == null);
            if (RedEvolve != null)
            {
                RedEvolve.ToBytes(writer);
            }

            writer.Write(GreenEvolve == null);
            if (GreenEvolve != null)
            {
                GreenEvolve.ToBytes(writer);
            }

            writer.Write(BlueEvolve == null);
            if (BlueEvolve != null)
            {
                BlueEvolve.ToBytes(writer);
            }


            SizeEvolve.ToBytes(writer);
            writer.Write(SelfPropelled);
            writer.Write(TerrainCollision);
            writer.Write(ColorByBlock);

            writer.Write(VelocityEvolve != null);
            if (VelocityEvolve != null)
            {
                for (int i = 0; i < 3; i++)
                {
                    VelocityEvolve[i].ToBytes(writer);
                }
            }

            SecondarySpawnInterval.ToBytes(writer);
            if (SecondaryParticles == null)
            {
                writer.Write(0);
            }
            else
            {
                writer.Write(SecondaryParticles.Length);
                for (int i = 0; i < SecondaryParticles.Length; i++)
                {
                    SecondaryParticles[i].ToBytes(writer);
                }
            }


            if (DeathParticles == null)
            {
                writer.Write(0);
            }
            else
            {
                writer.Write(DeathParticles.Length);
                for (int i = 0; i < DeathParticles.Length; i++)
                {
                    DeathParticles[i].ToBytes(writer);
                }
            }

            writer.Write(WindAffectednes);
        }