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 | }
|
---|