diff --git a/data/species/species_model_data.cpp b/data/species/species_model_data.cpp index e7f5da5..fd3f665 100644 --- a/data/species/species_model_data.cpp +++ b/data/species/species_model_data.cpp @@ -24,6 +24,8 @@ SOFTWARE. #include "core/version.h" +#include "../../singletons/ess.h" + int SpeciesModelData::get_id() { return _id; } @@ -94,6 +96,47 @@ void SpeciesModelData::set_visuals(const int bone_index, const Vector & } } +//Layer Colors + +Color SpeciesModelData::get_layer_color(const int index) const { + ERR_FAIL_INDEX_V(index, _layer_colors.size(), Color()); + + return _layer_colors.get(index); +} +void SpeciesModelData::set_layer_color(const int index, const Color &layer_color) { + ERR_FAIL_INDEX(index, _layer_colors.size()); + + _layer_colors.set(index, layer_color); +} +void SpeciesModelData::add_layer_color(const Color &layer_color) { + _layer_colors.push_back(layer_color); +} +void SpeciesModelData::remove_layer_color(const int index) { + ERR_FAIL_INDEX(index, _layer_colors.size()); + + _layer_colors.remove(index); +} + +int SpeciesModelData::get_layer_color_count() const { + return _layer_colors.size(); +} + +Vector SpeciesModelData::get_layer_colors() { + Vector r; + for (int i = 0; i < _layer_colors.size(); i++) { + r.push_back(_layer_colors[i]); + } + return r; +} +void SpeciesModelData::set_layer_colors(const Vector &layer_colors) { + _layer_colors.clear(); + for (int i = 0; i < layer_colors.size(); i++) { + Color layer_color = Color(layer_colors[i]); + + _layer_colors.push_back(layer_color); + } +} + //SkinColors Color SpeciesModelData::get_skin_color(const int index) const { @@ -293,6 +336,18 @@ void SpeciesModelData::_bind_methods() { ClassDB::bind_method(D_METHOD("set_body", "value"), &SpeciesModelData::set_body); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "body", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_body", "get_body"); + //Layer Colors + ClassDB::bind_method(D_METHOD("get_layer_color", "index"), &SpeciesModelData::get_layer_color); + ClassDB::bind_method(D_METHOD("set_layer_color", "index", "data"), &SpeciesModelData::set_layer_color); + ClassDB::bind_method(D_METHOD("add_layer_color", "layer_color"), &SpeciesModelData::add_layer_color); + ClassDB::bind_method(D_METHOD("remove_layer_color", "index"), &SpeciesModelData::remove_layer_color); + + ClassDB::bind_method(D_METHOD("get_layer_color_count"), &SpeciesModelData::get_layer_color_count); + + ClassDB::bind_method(D_METHOD("get_layer_colors"), &SpeciesModelData::get_layer_colors); + ClassDB::bind_method(D_METHOD("set_layer_colors", "layer_colors"), &SpeciesModelData::set_layer_colors); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "layer_colors", PROPERTY_HINT_NONE, "17/17:Color", PROPERTY_USAGE_DEFAULT, "Color"), "set_layer_colors", "get_layer_colors"); + //Entries ClassDB::bind_method(D_METHOD("get_visual", "bone_index", "index"), &SpeciesModelData::get_visual); ClassDB::bind_method(D_METHOD("set_visual", "bone_index", "index", "data"), &SpeciesModelData::set_visual); diff --git a/data/species/species_model_data.h b/data/species/species_model_data.h index 83b477c..4164c58 100644 --- a/data/species/species_model_data.h +++ b/data/species/species_model_data.h @@ -57,6 +57,17 @@ public: Vector get_visuals(const int bone_index); void set_visuals(const int bone_index, const Vector &visuals); + //Layer Colors + Color get_layer_color(const int index) const; + void set_layer_color(const int index, const Color &layer_color); + void add_layer_color(const Color &layer_color); + void remove_layer_color(const int index); + + int get_layer_color_count() const; + + Vector get_layer_colors(); + void set_layer_colors(const Vector &layer_colors); + //SkinColors Color get_skin_color(const int index) const; void set_skin_color(const int index, const Color skin_color); @@ -113,6 +124,8 @@ private: Ref _body; Vector > _visuals[EntityEnums::SKELETON_POINTS_MAX]; + Vector _layer_colors; + Vector _skin_colors; Vector > _hair_styles; Vector _hair_colors;