[1114] | 1 | using Oni.Physics;
|
---|
| 2 |
|
---|
| 3 | namespace Oni.Objects
|
---|
| 4 | {
|
---|
| 5 | internal class DoorClass : GunkObjectClass
|
---|
| 6 | {
|
---|
| 7 | public ObjectNode Geometry;
|
---|
| 8 | public string AnimationName;
|
---|
| 9 | public ObjectAnimation Animation;
|
---|
| 10 | public float SoundAttenuation;
|
---|
| 11 | public int AllowedSounds;
|
---|
| 12 | public int SoundType;
|
---|
| 13 | public float SoundVolume;
|
---|
| 14 | public string OpenSound;
|
---|
| 15 | public string CloseSound;
|
---|
| 16 |
|
---|
| 17 | public static DoorClass Read(InstanceDescriptor door)
|
---|
| 18 | {
|
---|
| 19 | var klass = new DoorClass();
|
---|
| 20 |
|
---|
| 21 | InstanceDescriptor geometryDescriptor;
|
---|
| 22 | InstanceDescriptor animationDescriptor;
|
---|
| 23 |
|
---|
| 24 | using (var reader = door.OpenRead())
|
---|
| 25 | {
|
---|
| 26 | geometryDescriptor = reader.ReadInstance();
|
---|
| 27 | reader.Skip(4);
|
---|
| 28 | animationDescriptor = reader.ReadInstance();
|
---|
| 29 | klass.SoundAttenuation = reader.ReadSingle();
|
---|
| 30 | klass.AllowedSounds = reader.ReadInt32();
|
---|
| 31 | klass.SoundType = reader.ReadInt32();
|
---|
| 32 | klass.SoundVolume = reader.ReadSingle();
|
---|
| 33 | klass.OpenSound = reader.ReadString(32);
|
---|
| 34 | klass.CloseSound = reader.ReadString(32);
|
---|
| 35 | }
|
---|
| 36 |
|
---|
| 37 | if (geometryDescriptor != null)
|
---|
| 38 | {
|
---|
| 39 | klass.Geometry = ObjectDatReader.ReadObjectGeometry(geometryDescriptor);
|
---|
| 40 | }
|
---|
| 41 |
|
---|
| 42 | if (animationDescriptor != null)
|
---|
| 43 | {
|
---|
| 44 | klass.AnimationName = animationDescriptor.Name;
|
---|
| 45 | klass.Animation = ObjectDatReader.ReadAnimation(animationDescriptor);
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | return klass;
|
---|
| 49 | }
|
---|
| 50 |
|
---|
| 51 | public override ObjectGeometry[] GunkNodes => Geometry.Geometries;
|
---|
| 52 | }
|
---|
| 53 | }
|
---|