1 |
using System; |
2 |
using System.Xml; |
3 |
using Oni.Metadata; |
4 |
|
5 |
namespace Oni.Particles |
6 |
{ |
7 |
internal class ImpactEffectSound |
8 |
{ |
9 |
private string soundName; |
10 |
private bool aiCanHear; |
11 |
private InstanceMetadata.DOORSoundType aiSoundType; |
12 |
private float aiSoundRadius; |
13 |
|
14 |
public ImpactEffectSound(BinaryReader reader) |
15 |
{ |
16 |
soundName = reader.ReadString(32); |
17 |
reader.Skip(8); |
18 |
aiCanHear = (reader.ReadInt16() != 0); |
19 |
aiSoundType = (InstanceMetadata.DOORSoundType)reader.ReadInt16(); |
20 |
aiSoundRadius = reader.ReadSingle(); |
21 |
} |
22 |
|
23 |
public void Write(BinaryWriter writer) |
24 |
{ |
25 |
writer.Write(soundName, 32); |
26 |
writer.Skip(8); |
27 |
writer.WriteInt16(aiCanHear ? 1 : 0); |
28 |
writer.WriteInt16((short)aiSoundType); |
29 |
writer.Write(aiSoundRadius); |
30 |
} |
31 |
|
32 |
public ImpactEffectSound(XmlReader xml) |
33 |
{ |
34 |
soundName = xml.ReadElementContentAsString("Name", ""); |
35 |
aiCanHear = bool.Parse(xml.ReadElementContentAsString("AICanHear", "")); |
36 |
aiSoundType = MetaEnum.Parse<InstanceMetadata.DOORSoundType>(xml.ReadElementContentAsString("AISoundType", "")); |
37 |
aiSoundRadius = XmlConvert.ToSingle(xml.ReadElementContentAsString("AISoundRadius", "")); |
38 |
} |
39 |
|
40 |
public void Write(XmlWriter writer) |
41 |
{ |
42 |
writer.WriteElementString("Name", soundName); |
43 |
writer.WriteElementString("AICanHear", XmlConvert.ToString(aiCanHear)); |
44 |
writer.WriteElementString("AISoundType", aiSoundType.ToString()); |
45 |
writer.WriteElementString("AISoundRadius", XmlConvert.ToString(aiSoundRadius)); |
46 |
} |
47 |
|
48 |
public string SoundName => soundName; |
49 |
public bool AICanHear => aiCanHear; |
50 |
public InstanceMetadata.DOORSoundType AISoundType => aiSoundType; |
51 |
public float AISoundRadius => aiSoundRadius; |
52 |
} |
53 |
} |