X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=plugins%2Fentity%2Flight.cpp;h=667b38b7c19b164f4104b73064e7dc1779fa3719;hp=901e79de6167777503d1be3dabce277d6de166d2;hb=68159d9ed443f990fecf207847408a673eb641f7;hpb=93060cb6340e11df6aefb0c3916c420d87a44029;ds=sidebyside diff --git a/plugins/entity/light.cpp b/plugins/entity/light.cpp index 901e79de..667b38b7 100644 --- a/plugins/entity/light.cpp +++ b/plugins/entity/light.cpp @@ -537,25 +537,30 @@ public: typedef MemberCaller1 FlagsChangedCaller; }; -const Vector3 c_defaultDoom3LightRadius = Vector3(300, 300, 300); class Doom3LightRadius { public: + Vector3 m_defaultRadius; Vector3 m_radius; Vector3 m_radiusTransformed; Vector3 m_center; Callback m_changed; bool m_useCenterKey; - Doom3LightRadius() : m_radius(c_defaultDoom3LightRadius), m_center(0, 0, 0), m_useCenterKey(false) + Doom3LightRadius(const char* defaultRadius) : m_defaultRadius(300, 300, 300), m_center(0, 0, 0), m_useCenterKey(false) { + if(!string_parse_vector3(defaultRadius, m_defaultRadius)) + { + globalErrorStream() << "Doom3LightRadius: failed to parse default light radius\n"; + } + m_radius = m_defaultRadius; } void lightRadiusChanged(const char* value) { if(!string_parse_vector3(value, m_radius)) { - m_radius = c_defaultDoom3LightRadius; + m_radius = m_defaultRadius; } m_radiusTransformed = m_radius; m_changed(); @@ -903,6 +908,11 @@ class Light : m_traverse.detach(&m_traverseObservers); } } + +// vc 2k5 compiler fix +#if _MSC_VER >= 1400 + public: +#endif void updateOrigin() { @@ -1043,6 +1053,7 @@ public: m_named(m_entity), m_nameKeys(m_entity), m_funcStaticOrigin(m_traverse, m_originKey.m_origin), + m_doom3Radius(EntityClass_valueForKey(m_entity.getEntityClass(), "light_radius")), m_radii_wire(m_radii, m_aabb_light.origin), m_radii_fill(m_radii, m_aabb_light.origin), m_radii_box(m_aabb_light.origin), @@ -1066,6 +1077,7 @@ public: m_named(m_entity), m_nameKeys(m_entity), m_funcStaticOrigin(m_traverse, m_originKey.m_origin), + m_doom3Radius(EntityClass_valueForKey(m_entity.getEntityClass(), "light_radius")), m_radii_wire(m_radii, m_aabb_light.origin), m_radii_fill(m_radii, m_aabb_light.origin), m_radii_box(m_aabb_light.origin), @@ -1330,14 +1342,7 @@ public: write_rotation(m_rotationKey.m_rotation, &m_entity); m_doom3Radius.m_radius = m_doom3Radius.m_radiusTransformed; - if(m_doom3Radius.m_radius == c_defaultDoom3LightRadius) - { - m_entity.setKeyValue("light_radius", ""); - } - else - { - write_origin(m_doom3Radius.m_radius, &m_entity, "light_radius"); - } + write_origin(m_doom3Radius.m_radius, &m_entity, "light_radius"); } } void transformChanged() @@ -1686,10 +1691,7 @@ public: //globalOutputStream() << getTranslation() << "\n"; m_dragPlanes.m_bounds = m_contained.aabb(); - AABB aabb(m_dragPlanes.evaluateResize(translation_to_local(getTranslation(), rotation()))); - aabb.origin = m_contained.aabb().origin + translation_from_local(aabb.origin - m_contained.aabb().origin, rotation()); - - m_contained.setLightRadius(aabb); + m_contained.setLightRadius(m_dragPlanes.evaluateResize(getTranslation(), rotation())); } } void applyTransform()