using System; using System.Collections.Generic; using Oni.Akira; using Oni.Imaging; using Oni.Motoko; using Oni.Physics; namespace Oni.Objects { internal class TriggerClass : GunkObjectClass { public Color Color; public int TimeOn; public int TimeOff; public float StartOffset; public float AnimScale; public Geometry RailGeometry; public GunkFlags RailGunkFlags; public string ActiveSoundName; public string HitSoundName; public static TriggerClass Read(InstanceDescriptor trig) { var klass = new TriggerClass(); InstanceDescriptor railGeometryDescriptor; using (var reader = trig.OpenRead()) { klass.Color = reader.ReadColor(); klass.TimeOn = reader.ReadUInt16(); klass.TimeOff = reader.ReadUInt16(); klass.StartOffset = reader.ReadSingle(); klass.AnimScale = reader.ReadSingle(); railGeometryDescriptor = reader.ReadInstance(); reader.Skip(4); klass.RailGunkFlags = (GunkFlags)reader.ReadInt32(); // we do not need the emitter and animation for now reader.Skip(8); //trge = reader.ReadInstanceLink(); //oban = reader.ReadInstanceLink(); klass.ActiveSoundName = reader.ReadString(32) + ".amb"; klass.HitSoundName = reader.ReadString(32) + ".imp"; reader.Skip(8); } if (railGeometryDescriptor != null) klass.RailGeometry = GeometryDatReader.Read(railGeometryDescriptor); return klass; } public override ObjectGeometry[] GunkNodes { get { return new[] { new ObjectGeometry { Geometry = RailGeometry, Flags = RailGunkFlags } }; } } } }