diff options
author | Stijn Buys <ingar@osirion.org> | 2008-05-02 13:05:03 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-05-02 13:05:03 +0000 |
commit | 3dedab035c98772fd9607480bddc8ffd9d7dc799 (patch) | |
tree | 2d346751841dd85e9bf0edc421469239fead10c7 /src/core | |
parent | 36ce28a7557c4b2b73316621471558354024ca54 (diff) |
additional light properties
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/model.cc | 25 | ||||
-rw-r--r-- | src/core/model.h | 8 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/core/model.cc b/src/core/model.cc index e956612..c38749b 100644 --- a/src/core/model.cc +++ b/src/core/model.cc @@ -184,6 +184,7 @@ Light::Light(math::Vector3f const & location, math::Color const & color, bool st light_radius = 1.0f; light_frequency = 1.0f; light_offset = 0.0f; + light_time = 0.5f; } Light::~Light() @@ -251,6 +252,7 @@ Model::Model(std::string const & name) : float class_light = 100; float class_frequency = 1.0f; float class_offset = 0; + float class_time = 0.0f; bool brush_detail = false; while (ifs) { @@ -272,6 +274,7 @@ Model::Model(std::string const & name) : class_light = 100; class_offset = 0; class_frequency = 1.0f; + class_time = 0.0f; brush_detail = false; } level ++; @@ -302,7 +305,10 @@ Model::Model(std::string const & name) : Light *light = new Light(class_origin * model_scale, class_color, (class_spawnflags & 1) == 1); light->light_radius = class_light / 100.0f; light->light_offset = class_offset; - light->light_frequency = class_frequency; + if (class_frequency > 0 ) + light->light_frequency = class_frequency; + if (class_time > 0 ) + light->light_time = class_time; add_light(light); } @@ -399,6 +405,15 @@ Model::Model(std::string const & name) : tmp += c; std::istringstream is(tmp); is >> class_offset; + + } else if (firstword == "\"time\"") { + std::string tmp; + char c; + while ((linestream.get(c)) && (c != '"')); + while ((linestream.get(c)) && (c != '"')) + tmp += c; + std::istringstream is(tmp); + is >> class_time; } else if (firstword == "(") { if ((level == 2) && (class_name == "worldspawn")) { @@ -408,6 +423,7 @@ Model::Model(std::string const & name) : Vector3f p3; std::string tmp; std::string texture; + int n; linestream >> p1; linestream >> tmp; // ) @@ -423,9 +439,10 @@ Model::Model(std::string const & name) : for (int i=0; i < 5; i++) linestream >> tmp; - if (linestream >> tmp) - brush_detail = true; - + if (linestream >> n) { + if (n > 0) + brush_detail = true; + } //cout << data << std::endl; //cout << "(" << p1 << ") (" << p2 << ") (" << p3 << ") " << texture << std::endl; diff --git a/src/core/model.h b/src/core/model.h index 1c56982..6175ec7 100644 --- a/src/core/model.h +++ b/src/core/model.h @@ -119,13 +119,20 @@ public: inline math::Color const & color() const { return light_color; }; + /// true if this is a strobe light inline bool strobe() const { return light_strobe; } + /// size if the light, default is 1.0f inline float radius() const { return light_radius; } + /// strobe time offset, in seconds inline float offset() const { return light_offset; } + /// frequency in strobes per second inline float frequency() const { return light_frequency; } + + /// fraction a strobe light will be on, default is 0.5f + inline float time() const { return light_time; } math::Vector3f light_location; math::Color light_color; @@ -133,6 +140,7 @@ public: float light_radius; float light_frequency; float light_offset; + float light_time; }; |