| 1 | using System; | 
 
 
 
 
 | 2 | using System.Collections.Generic; | 
 
 
 
 
 | 3 | using Oni.Akira; | 
 
 
 
 
 | 4 | using Oni.Imaging; | 
 
 
 
 
 | 5 | using Oni.Motoko; | 
 
 
 
 
 | 6 | using Oni.Physics; | 
 
 
 
 
 | 7 |  | 
 
 
 
 
 | 8 | namespace Oni.Objects | 
 
 
 
 
 | 9 | { | 
 
 
 
 
 | 10 | internal class TriggerClass : GunkObjectClass | 
 
 
 
 
 | 11 | { | 
 
 
 
 
 | 12 | public Color Color; | 
 
 
 
 
 | 13 | public int TimeOn; | 
 
 
 
 
 | 14 | public int TimeOff; | 
 
 
 
 
 | 15 | public float StartOffset; | 
 
 
 
 
 | 16 | public float AnimScale; | 
 
 
 
 
 | 17 | public Geometry RailGeometry; | 
 
 
 
 
 | 18 | public GunkFlags RailGunkFlags; | 
 
 
 
 
 | 19 | public string ActiveSoundName; | 
 
 
 
 
 | 20 | public string HitSoundName; | 
 
 
 
 
 | 21 |  | 
 
 
 
 
 | 22 | public static TriggerClass Read(InstanceDescriptor trig) | 
 
 
 
 
 | 23 | { | 
 
 
 
 
 | 24 | var klass = new TriggerClass(); | 
 
 
 
 
 | 25 |  | 
 
 
 
 
 | 26 | InstanceDescriptor railGeometryDescriptor; | 
 
 
 
 
 | 27 |  | 
 
 
 
 
 | 28 | using (var reader = trig.OpenRead()) | 
 
 
 
 
 | 29 | { | 
 
 
 
 
 | 30 | klass.Color = reader.ReadColor(); | 
 
 
 
 
 | 31 | klass.TimeOn = reader.ReadUInt16(); | 
 
 
 
 
 | 32 | klass.TimeOff = reader.ReadUInt16(); | 
 
 
 
 
 | 33 | klass.StartOffset = reader.ReadSingle(); | 
 
 
 
 
 | 34 | klass.AnimScale = reader.ReadSingle(); | 
 
 
 
 
 | 35 | railGeometryDescriptor = reader.ReadInstance(); | 
 
 
 
 
 | 36 | reader.Skip(4); | 
 
 
 
 
 | 37 | klass.RailGunkFlags = (GunkFlags)reader.ReadInt32(); | 
 
 
 
 
 | 38 |  | 
 
 
 
 
 | 39 | // we do not need the emitter and animation for now | 
 
 
 
 
 | 40 | reader.Skip(8); | 
 
 
 
 
 | 41 | //trge = reader.ReadInstanceLink<TRGEInstance>(); | 
 
 
 
 
 | 42 | //oban = reader.ReadInstanceLink<OBANInstance>(); | 
 
 
 
 
 | 43 |  | 
 
 
 
 
 | 44 | klass.ActiveSoundName = reader.ReadString(32) + ".amb"; | 
 
 
 
 
 | 45 | klass.HitSoundName = reader.ReadString(32) + ".imp"; | 
 
 
 
 
 | 46 | reader.Skip(8); | 
 
 
 
 
 | 47 | } | 
 
 
 
 
 | 48 |  | 
 
 
 
 
 | 49 | if (railGeometryDescriptor != null) | 
 
 
 
 
 | 50 | klass.RailGeometry = GeometryDatReader.Read(railGeometryDescriptor); | 
 
 
 
 
 | 51 |  | 
 
 
 
 
 | 52 | return klass; | 
 
 
 
 
 | 53 | } | 
 
 
 
 
 | 54 |  | 
 
 
 
 
 | 55 | public override ObjectGeometry[] GunkNodes | 
 
 
 
 
 | 56 | { | 
 
 
 
 
 | 57 | get | 
 
 
 
 
 | 58 | { | 
 
 
 
 
 | 59 | return new[] { | 
 
 
 
 
 | 60 | new ObjectGeometry { | 
 
 
 
 
 | 61 | Geometry = RailGeometry, | 
 
 
 
 
 | 62 | Flags = RailGunkFlags | 
 
 
 
 
 | 63 | } | 
 
 
 
 
 | 64 | }; | 
 
 
 
 
 | 65 | } | 
 
 
 
 
 | 66 | } | 
 
 
 
 
 | 67 | } | 
 
 
 
 
 | 68 | } |