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