Fix issue in Rocket.lua script.
[Cafu-Engine.git] / Libs / SoundSystem / SoundShader.cpp
blob27a49a88bcc13d3dd5922363e78ccc395dee70c8
1 /*
2 Cafu Engine, http://www.cafu.de/
3 Copyright (c) Carsten Fuchs and other contributors.
4 This project is licensed under the terms of the MIT license.
5 */
7 #include "SoundShader.hpp"
9 #include "TextParser/TextParser.hpp"
12 SoundShaderT::SoundShaderT(const std::string& SoundShaderName)
13 : Name(SoundShaderName),
14 AudioFile(""),
15 InnerVolume(0.5f),
16 OuterVolume(0.0f),
17 InnerConeAngle(360.0f),
18 OuterConeAngle(360.0f),
19 MinDistance(0.0f),
20 MaxDistance(1000000000.0f),
21 NrOfLoops(1),
22 Pause(0.0f),
23 RollOfFactor(1.0f),
24 Pitch(1.0f),
25 Priority(0),
26 SoundGroup(SOUND_EFFECT),
27 LoadType(AUTO)
32 SoundShaderT::SoundShaderT(const std::string& SoundShaderName, TextParserT& TextParser, const std::string& ModDir)
33 : Name(SoundShaderName),
34 AudioFile(""),
35 InnerVolume(0.5f),
36 OuterVolume(0.0f),
37 InnerConeAngle(360.0f),
38 OuterConeAngle(360.0f),
39 MinDistance(0.0f),
40 MaxDistance(1000000000.0f),
41 NrOfLoops(1),
42 Pause(0.0f),
43 RollOfFactor(1.0f),
44 Pitch(1.0f),
45 Priority(0),
46 SoundGroup(SOUND_EFFECT),
47 LoadType(AUTO)
49 if (TextParser.GetNextToken()!="{") throw TextParserT::ParseError();
51 while (true)
53 std::string Token=TextParser.GetNextToken();
55 if (Token=="}")
57 // End of sound shader definition.
58 break;
60 else if (Token=="AudioFile")
62 AudioFile=ModDir+TextParser.GetNextToken();
64 else if (Token=="MinDistance")
66 MinDistance=(float)atof(TextParser.GetNextToken().c_str());
68 else if (Token=="LoadType")
70 std::string Value=TextParser.GetNextToken();
72 if (Value=="STATIC")
73 LoadType=STATIC;
74 else if (Value=="STREAM")
75 LoadType=STREAM;
76 else if (Value=="COMPRESSED")
77 LoadType=COMPRESSED;
78 else
79 LoadType=AUTO;
81 else if (Token=="Priority")
83 Priority=(unsigned int)atoi(TextParser.GetNextToken().c_str());
85 else if (Token=="InnerVolume")
87 InnerVolume=(float)atof(TextParser.GetNextToken().c_str());
89 else if (Token=="InnerConeAngle")
91 InnerConeAngle=(float)atof(TextParser.GetNextToken().c_str());
93 else if (Token=="OuterConeAngle")
95 OuterConeAngle=(float)atof(TextParser.GetNextToken().c_str());
97 else if (Token=="OuterVolume")
99 OuterVolume=(float)atof(TextParser.GetNextToken().c_str());
101 else throw TextParserT::ParseError(); // Unknown token!