Represents a particle sequence.
Exemple #1
0
        /// <summary>
        /// Loads the file from the specified stream.
        /// </summary>
        /// <param name="stream">The stream to read from.</param>
        public override void Load(Stream stream)
        {
            BinaryReader reader = new BinaryReader(stream, CodePagesEncodingProvider.Instance.GetEncoding("EUC-KR"));

            int sequenceCount = reader.ReadInt32();

            for (int i = 0; i < sequenceCount; i++)
            {
                ParticleSequence sequence = new ParticleSequence();
                sequence.Name                 = reader.ReadIntString();
                sequence.Lifetime             = new MinMax <float>(reader.ReadSingle(), reader.ReadSingle());
                sequence.EmitRate             = new MinMax <float>(reader.ReadSingle(), reader.ReadSingle());
                sequence.LoopCount            = reader.ReadInt32();
                sequence.SpawnDirection       = new MinMax <Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.EmitRadius           = new MinMax <Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.Gravity              = new MinMax <Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.TextureFileName      = reader.ReadIntString();
                sequence.ParticleCount        = reader.ReadInt32();
                sequence.Alignment            = (AlignmentType)reader.ReadInt32();
                sequence.UpdateCoordinate     = (CoordinateType)reader.ReadInt32();
                sequence.TextureWidth         = reader.ReadInt32();
                sequence.TextureHeight        = reader.ReadInt32();
                sequence.Implementation       = (ImplementationType)reader.ReadInt32();
                sequence.DestinationBlendMode = reader.ReadInt32();
                sequence.SourceBlendMode      = reader.ReadInt32();
                sequence.BlendOperation       = reader.ReadInt32();

                int eventCount = reader.ReadInt32();

                for (int j = 0; j < eventCount; j++)
                {
                    ParticleEventType type = (ParticleEventType)reader.ReadInt32();

                    if (!Enum.IsDefined(typeof(ParticleEventType), type))
                    {
                        throw new InvalidParticleEventTypeException((int)type);
                    }

                    Type           classType = type.GetAttributeValue <ParticleEventTypeAttribute, Type>(x => x.Type);
                    IParticleEvent @event    = (IParticleEvent)Activator.CreateInstance(classType);
                    @event.Read(reader);

                    sequence.Events.Add(@event);
                }

                Sequences.Add(sequence);
            }
        }
Exemple #2
0
        /// <summary>
        /// Loads the file from the specified stream.
        /// </summary>
        /// <param name="stream">The stream to read from.</param>
        public override void Load(Stream stream)
        {
            BinaryReader reader = new BinaryReader(stream, Encoding.GetEncoding("EUC-KR"));

            int sequenceCount = reader.ReadInt32();

            for (int i = 0; i < sequenceCount; i++) {
                ParticleSequence sequence = new ParticleSequence();
                sequence.Name = reader.ReadIntString();
                sequence.Lifetime = new MinMax<float>(reader.ReadSingle(), reader.ReadSingle());
                sequence.EmitRate = new MinMax<float>(reader.ReadSingle(), reader.ReadSingle());
                sequence.LoopCount = reader.ReadInt32();
                sequence.SpawnDirection = new MinMax<Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.EmitRadius = new MinMax<Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.Gravity = new MinMax<Vector3>(reader.ReadVector3(), reader.ReadVector3());
                sequence.TextureFileName = reader.ReadIntString();
                sequence.ParticleCount = reader.ReadInt32();
                sequence.Alignment = (AlignmentType)reader.ReadInt32();
                sequence.UpdateCoordinate = (CoordinateType)reader.ReadInt32();
                sequence.TextureWidth = reader.ReadInt32();
                sequence.TextureHeight = reader.ReadInt32();
                sequence.Implementation = (ImplementationType)reader.ReadInt32();
                sequence.DestinationBlendMode = (Blend)reader.ReadInt32();
                sequence.SourceBlendMode = (Blend)reader.ReadInt32();
                sequence.BlendOperation = (BlendOperation)reader.ReadInt32();

                int eventCount = reader.ReadInt32();

                for (int j = 0; j < eventCount; j++) {
                    ParticleEventType type = (ParticleEventType)reader.ReadInt32();

                    if (!Enum.IsDefined(typeof(ParticleEventType), type)) {
                        throw new InvalidParticleEventTypeException((int)type);
                    }

                    Type classType = type.GetAttributeValue<ParticleEventTypeAttribute, Type>(x => x.Type);
                    IParticleEvent @event = (IParticleEvent)Activator.CreateInstance(classType);
                    @event.Read(reader);

                    sequence.Events.Add(@event);
                }

                Sequences.Add(sequence);
            }
        }