/// <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); } }
/// <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); } }