From fb90408570d16b050fb16ad203e68dc80ab95007 Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 20 Mar 2024 20:27:56 +0100 Subject: [PATCH] Added VertexLightData3D class. --- modules/vertex_lights_3d/SCsub | 2 +- modules/vertex_lights_3d/config.py | 2 +- modules/vertex_lights_3d/register_types.cpp | 4 +- .../vertex_lights_3d/vertex_light_data_3d.cpp | 134 ++++++++++++++++++ .../vertex_lights_3d/vertex_light_data_3d.h | 86 +++++++++++ 5 files changed, 225 insertions(+), 3 deletions(-) create mode 100644 modules/vertex_lights_3d/vertex_light_data_3d.cpp create mode 100644 modules/vertex_lights_3d/vertex_light_data_3d.h diff --git a/modules/vertex_lights_3d/SCsub b/modules/vertex_lights_3d/SCsub index 88c563559..5d0b4433a 100644 --- a/modules/vertex_lights_3d/SCsub +++ b/modules/vertex_lights_3d/SCsub @@ -5,4 +5,4 @@ Import('env') module_env = env.Clone() module_env.add_source_files(env.modules_sources,"register_types.cpp") - +module_env.add_source_files(env.modules_sources,"vertex_light_data_3d.cpp") diff --git a/modules/vertex_lights_3d/config.py b/modules/vertex_lights_3d/config.py index b080c717d..dd6bdfbb9 100644 --- a/modules/vertex_lights_3d/config.py +++ b/modules/vertex_lights_3d/config.py @@ -10,7 +10,7 @@ def configure(env): def get_doc_classes(): return [ - #"", + "VertexLightData3D", ] def get_doc_path(): diff --git a/modules/vertex_lights_3d/register_types.cpp b/modules/vertex_lights_3d/register_types.cpp index 63f714f58..3de384c4f 100644 --- a/modules/vertex_lights_3d/register_types.cpp +++ b/modules/vertex_lights_3d/register_types.cpp @@ -31,9 +31,11 @@ #include "register_types.h" +#include "vertex_light_data_3d.h" + void register_vertex_lights_3d_types(ModuleRegistrationLevel p_level) { if (p_level == MODULE_REGISTRATION_LEVEL_SCENE) { - //ClassDB::register_class(); + ClassDB::register_class(); } } diff --git a/modules/vertex_lights_3d/vertex_light_data_3d.cpp b/modules/vertex_lights_3d/vertex_light_data_3d.cpp new file mode 100644 index 000000000..294cbb2ed --- /dev/null +++ b/modules/vertex_lights_3d/vertex_light_data_3d.cpp @@ -0,0 +1,134 @@ +/*************************************************************************/ +/* vertex_light_data_3d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* PANDEMONIUM ENGINE */ +/* https://github.com/Relintai/pandemonium_engine */ +/*************************************************************************/ +/* Copyright (c) 2022-present Péter Magyar. */ +/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ +/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#include "vertex_light_data_3d.h" + +Transform VertexLightData3D::get_transform() const { + return _transform; +} +void VertexLightData3D::set_transform(const Transform &p_transform) { + _transform = p_transform; +} + +real_t VertexLightData3D::get_range() const { + return _range; +} +void VertexLightData3D::set_range(const real_t value) { + _range = value; +} + +real_t VertexLightData3D::get_attenuation() const { + return _attenuation; +} +void VertexLightData3D::set_attenuation(const real_t value) { + _attenuation = value; +} + +Color VertexLightData3D::get_color() const { + return _color; +} +void VertexLightData3D::set_color(const Color value) { + _color = value; +} + +real_t VertexLightData3D::get_energy() const { + return _energy; +} +void VertexLightData3D::set_energy(const real_t value) { + _energy = value; +} + +real_t VertexLightData3D::get_indirect_energy() const { + return _indirect_energy; +} +void VertexLightData3D::set_indirect_energy(const real_t value) { + _indirect_energy = value; +} + +bool VertexLightData3D::get_negative() const { + return _negative; +} +void VertexLightData3D::set_negative(const bool value) { + _negative = value; +} + +real_t VertexLightData3D::get_specular() const { + return _specular; +} +void VertexLightData3D::set_specular(const real_t value) { + _specular = value; +} + +VertexLightData3D::VertexLightData3D() { + _range = 0; + _attenuation = 0; + _energy = 0; + _indirect_energy = 0; + _negative = false; + _specular = 0; +} + +VertexLightData3D::~VertexLightData3D() { +} + +void VertexLightData3D::_bind_methods() { + ClassDB::bind_method(D_METHOD("get_transform"), &VertexLightData3D::get_transform); + ClassDB::bind_method(D_METHOD("set_transform", "transform"), &VertexLightData3D::set_transform); + ADD_PROPERTY(PropertyInfo(Variant::TRANSFORM, "transform"), "set_transform", "get_transform"); + + ClassDB::bind_method(D_METHOD("get_range"), &VertexLightData3D::get_range); + ClassDB::bind_method(D_METHOD("set_range", "value"), &VertexLightData3D::set_range); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "light_range"), "set_range", "get_range"); + + ClassDB::bind_method(D_METHOD("get_attenuation"), &VertexLightData3D::get_attenuation); + ClassDB::bind_method(D_METHOD("set_attenuation", "value"), &VertexLightData3D::set_attenuation); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "light_attenuation"), "set_attenuation", "get_attenuation"); + + ClassDB::bind_method(D_METHOD("get_color"), &VertexLightData3D::get_color); + ClassDB::bind_method(D_METHOD("set_color", "value"), &VertexLightData3D::set_color); + ADD_PROPERTY(PropertyInfo(Variant::COLOR, "light_color"), "set_color", "get_color"); + + ClassDB::bind_method(D_METHOD("get_energy"), &VertexLightData3D::get_energy); + ClassDB::bind_method(D_METHOD("set_energy", "value"), &VertexLightData3D::set_energy); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "light_energy"), "set_energy", "get_energy"); + + ClassDB::bind_method(D_METHOD("get_indirect_energy"), &VertexLightData3D::get_indirect_energy); + ClassDB::bind_method(D_METHOD("set_indirect_energy", "value"), &VertexLightData3D::set_indirect_energy); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "light_indirect_energy"), "set_indirect_energy", "get_indirect_energy"); + + ClassDB::bind_method(D_METHOD("get_negative"), &VertexLightData3D::get_negative); + ClassDB::bind_method(D_METHOD("set_negative", "value"), &VertexLightData3D::set_negative); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "light_negative"), "set_negative", "get_negative"); + + ClassDB::bind_method(D_METHOD("get_specular"), &VertexLightData3D::get_specular); + ClassDB::bind_method(D_METHOD("set_specular", "value"), &VertexLightData3D::set_specular); + ADD_PROPERTY(PropertyInfo(Variant::REAL, "light_specular"), "set_specular", "get_specular"); +} diff --git a/modules/vertex_lights_3d/vertex_light_data_3d.h b/modules/vertex_lights_3d/vertex_light_data_3d.h new file mode 100644 index 000000000..d0d12d463 --- /dev/null +++ b/modules/vertex_lights_3d/vertex_light_data_3d.h @@ -0,0 +1,86 @@ +#ifndef VERTEX_LIGHT_DATA_3D_H +#define VERTEX_LIGHT_DATA_3D_H + +/*************************************************************************/ +/* vertex_light_data_3d.h.h */ +/*************************************************************************/ +/* This file is part of: */ +/* PANDEMONIUM ENGINE */ +/* https://github.com/Relintai/pandemonium_engine */ +/*************************************************************************/ +/* Copyright (c) 2022-present Péter Magyar. */ +/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */ +/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +#include "core/containers/vector.h" +#include "core/math/color.h" +#include "core/object/reference.h" +#include "core/math/transform.h" + +class VertexLightData3D : public Reference { + GDCLASS(VertexLightData3D, Reference); + +public: + Transform get_transform() const; + void set_transform(const Transform &p_transform); + + real_t get_range() const; + void set_range(const real_t value); + + real_t get_attenuation() const; + void set_attenuation(const real_t value); + + Color get_color() const; + void set_color(const Color value); + + real_t get_energy() const; + void set_energy(const real_t value); + + real_t get_indirect_energy() const; + void set_indirect_energy(const real_t value); + + bool get_negative() const; + void set_negative(const bool value); + + real_t get_specular() const; + void set_specular(const real_t value); + + VertexLightData3D(); + ~VertexLightData3D(); + +private: + static void _bind_methods(); + +private: + Transform _transform; + + real_t _range; + real_t _attenuation; + Color _color; + real_t _energy; + real_t _indirect_energy; + bool _negative; + real_t _specular; +}; + +#endif