소스 검색

Show warning when scaling Light3D nodes

RedMser 2 년 전
부모
커밋
87aeb59b5b
2개의 변경된 파일13개의 추가작업 그리고 2개의 파일을 삭제
  1. 12 2
      scene/3d/light_3d.cpp
  2. 1 0
      scene/3d/light_3d.h

+ 12 - 2
scene/3d/light_3d.cpp

@@ -165,6 +165,16 @@ AABB Light3D::get_aabb() const {
 	return AABB();
 }
 
+PackedStringArray Light3D::get_configuration_warnings() const {
+	PackedStringArray warnings = VisualInstance3D::get_configuration_warnings();
+
+	if (!get_scale().is_equal_approx(Vector3(1, 1, 1))) {
+		warnings.push_back(RTR("A light's scale does not affect the visual size of the light."));
+	}
+
+	return warnings;
+}
+
 void Light3D::set_bake_mode(BakeMode p_mode) {
 	bake_mode = p_mode;
 	RS::get_singleton()->light_set_bake_mode(light, RS::LightBakeMode(p_mode));
@@ -579,7 +589,7 @@ OmniLight3D::ShadowMode OmniLight3D::get_shadow_mode() const {
 }
 
 PackedStringArray OmniLight3D::get_configuration_warnings() const {
-	PackedStringArray warnings = Node::get_configuration_warnings();
+	PackedStringArray warnings = Light3D::get_configuration_warnings();
 
 	if (!has_shadow() && get_projector().is_valid()) {
 		warnings.push_back(RTR("Projector texture only works with shadows active."));
@@ -609,7 +619,7 @@ OmniLight3D::OmniLight3D() :
 }
 
 PackedStringArray SpotLight3D::get_configuration_warnings() const {
-	PackedStringArray warnings = Node::get_configuration_warnings();
+	PackedStringArray warnings = Light3D::get_configuration_warnings();
 
 	if (has_shadow() && get_param(PARAM_SPOT_ANGLE) >= 90.0) {
 		warnings.push_back(RTR("A SpotLight3D with an angle wider than 90 degrees cannot cast shadows."));

+ 1 - 0
scene/3d/light_3d.h

@@ -147,6 +147,7 @@ public:
 	Color get_correlated_color() const;
 
 	virtual AABB get_aabb() const override;
+	virtual PackedStringArray get_configuration_warnings() const override;
 
 	Light3D();
 	~Light3D();