TextureLayers are now customizable.

This commit is contained in:
Relintai 2020-05-21 21:20:56 +02:00
parent 2d5d4c0a97
commit 740f3e1c99
8 changed files with 48 additions and 51 deletions

View File

@ -22,10 +22,12 @@ SOFTWARE.
#include "model_visual.h"
ItemEnums::EntityTextureLayers ModelVisual::get_layer() {
#include "../../singletons/ess.h"
int ModelVisual::get_layer() {
return _layer;
}
void ModelVisual::set_layer(ItemEnums::EntityTextureLayers layer) {
void ModelVisual::set_layer(int layer) {
_layer = layer;
}
@ -75,17 +77,25 @@ void ModelVisual::set_visual_entries(const Vector<Variant> &visual_entries) {
}
ModelVisual::ModelVisual() {
_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE;
_layer = 0;
}
ModelVisual::~ModelVisual() {
_visual_entries.clear();
}
void ModelVisual::_validate_property(PropertyInfo &property) const {
String name = property.name;
if (name == "layer") {
property.hint_string = ESS::get_instance()->texture_layers_get();
}
}
void ModelVisual::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_layer"), &ModelVisual::get_layer);
ClassDB::bind_method(D_METHOD("set_layer", "layer"), &ModelVisual::set_layer);
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_layer", "get_layer");
ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_ENUM, ""), "set_layer", "get_layer");
//ModelVisualEntry
ClassDB::bind_method(D_METHOD("get_visual_entry", "index"), &ModelVisual::get_visual_entry);

View File

@ -32,8 +32,8 @@ class ModelVisual : public Resource {
GDCLASS(ModelVisual, Resource);
public:
ItemEnums::EntityTextureLayers get_layer();
void set_layer(ItemEnums::EntityTextureLayers layer);
int get_layer();
void set_layer(int layer);
//ModelVisualEntry
Ref<ModelVisualEntry> get_visual_entry(const int index) const;
@ -50,10 +50,11 @@ public:
~ModelVisual();
protected:
void _validate_property(PropertyInfo &property) const;
static void _bind_methods();
private:
ItemEnums::EntityTextureLayers _layer;
int _layer;
Vector<Ref<ModelVisualEntry> > _visual_entries;
};

View File

@ -24,10 +24,10 @@ SOFTWARE.
#include "../../singletons/ess.h"
ItemEnums::EntityTextureLayers ModelVisualEntry::get_override_layer() const {
int ModelVisualEntry::get_override_layer() const {
return _override_layer;
}
void ModelVisualEntry::set_override_layer(const ItemEnums::EntityTextureLayers layer) {
void ModelVisualEntry::set_override_layer(const int layer) {
_override_layer = layer;
}
@ -116,7 +116,7 @@ void ModelVisualEntry::set_size(const int value) {
}
ModelVisualEntry::ModelVisualEntry() {
_override_layer = ItemEnums::ENTITY_TEXTURE_LAYER_NONE;
_override_layer = 0;
_entity_type = 0;
_bone = 0;
@ -232,13 +232,15 @@ void ModelVisualEntry::_validate_property(PropertyInfo &property) const {
}
} else if (name == "entity_type") {
property.hint_string = ESS::get_instance()->entity_types_get();
} else if (name == "override_layer") {
property.hint_string = ESS::get_instance()->texture_layers_get();
}
}
void ModelVisualEntry::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_override_layer"), &ModelVisualEntry::get_override_layer);
ClassDB::bind_method(D_METHOD("set_override_layer", "value"), &ModelVisualEntry::set_override_layer);
ADD_PROPERTY(PropertyInfo(Variant::INT, "override_layer", PROPERTY_HINT_ENUM, ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS), "set_override_layer", "get_override_layer");
ADD_PROPERTY(PropertyInfo(Variant::INT, "override_layer", PROPERTY_HINT_ENUM, ""), "set_override_layer", "get_override_layer");
ClassDB::bind_method(D_METHOD("get_entity_type"), &ModelVisualEntry::get_entity_type);
ClassDB::bind_method(D_METHOD("set_entity_type", "value"), &ModelVisualEntry::set_entity_type);

View File

@ -42,8 +42,8 @@ class ModelVisualEntry : public Resource {
GDCLASS(ModelVisualEntry, Resource);
public:
ItemEnums::EntityTextureLayers get_override_layer() const;
void set_override_layer(const ItemEnums::EntityTextureLayers layer);
int get_override_layer() const;
void set_override_layer(const int layer);
int get_entity_type() const;
void set_entity_type(const int value);
@ -109,7 +109,7 @@ protected:
static void _bind_methods();
private:
ItemEnums::EntityTextureLayers _override_layer;
int _override_layer;
int _entity_type;
int _bone;

View File

@ -29,7 +29,6 @@ const String ItemEnums::BINDING_STRING_ITEM_TYPE_FLAGS = "Equipment,Potion,Herb,
const String ItemEnums::BINDING_STRING_ITEM_SUB_TYPE = "None,Sword,Axe,Mace,Dagger,Bow,Crossbow,Gun,Wand,Quest Item";
const String ItemEnums::BINDING_STRING_ITEM_SUB_SUB_TYPE = "None,Two Hand,One Hand,Left Hand,Right Hand";
const String ItemEnums::BINDING_STRING_ARMOR_TYPE = "None,Cloth,Leather,Mail,Plate";
const String ItemEnums::BINDING_STRING_ENTITY_TEXTURE_LAYERS = "None,Skin,Underwear,Shirt,Clothes Base,Clothes 1,Clothes 2,Clothes 3,Clothes 4,Clothes 5,Belt,Tabard,Overlay";
String ItemEnums::get_armor_type_string(int type) {
switch (type) {

View File

@ -37,7 +37,6 @@ public:
static const String BINDING_STRING_ITEM_SUB_TYPE;
static const String BINDING_STRING_ITEM_SUB_SUB_TYPE;
static const String BINDING_STRING_ARMOR_TYPE;
static const String BINDING_STRING_ENTITY_TEXTURE_LAYERS;
enum ItemRarity {
ITEM_RARITY_NONE = 0,
@ -106,22 +105,6 @@ public:
ARMOR_TYPE_MAX = 5,
};
enum EntityTextureLayers {
ENTITY_TEXTURE_LAYER_NONE = 0,
ENTITY_TEXTURE_LAYER_SKIN = 1,
ENTITY_TEXTURE_LAYER_UNDERWEAR = 2,
ENTITY_TEXTURE_LAYER_SHIRT = 3,
ENTITY_TEXTURE_LAYER_CLOTHES_BASE = 4,
ENTITY_TEXTURE_LAYER_CLOTHES_1 = 5,
ENTITY_TEXTURE_LAYER_CLOTHES_2 = 6,
ENTITY_TEXTURE_LAYER_CLOTHES_3 = 7,
ENTITY_TEXTURE_LAYER_CLOTHES_4 = 8,
ENTITY_TEXTURE_LAYER_CLOTHES_5 = 9,
ENTITY_TEXTURE_LAYER_BELT = 10,
ENTITY_TEXTURE_LAYER_TABARD = 11,
ENTITY_TEXTURE_LAYER_OVERLAY = 12
};
static String get_equip_slot_string(int slot);
static String get_armor_type_string(int type);
@ -183,20 +166,6 @@ protected:
BIND_ENUM_CONSTANT(ARMOR_TYPE_MAIL);
BIND_ENUM_CONSTANT(ARMOR_TYPE_PLATE);
BIND_ENUM_CONSTANT(ARMOR_TYPE_MAX);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_NONE);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_SKIN);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_UNDERWEAR);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_SHIRT);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_BASE);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_1);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_2);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_3);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_4);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_CLOTHES_5);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_BELT);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_TABARD);
BIND_ENUM_CONSTANT(ENTITY_TEXTURE_LAYER_OVERLAY);
}
};
@ -206,6 +175,5 @@ VARIANT_ENUM_CAST(ItemEnums::ItemType);
VARIANT_ENUM_CAST(ItemEnums::ItemSubtype);
VARIANT_ENUM_CAST(ItemEnums::ItemSubSubtype);
VARIANT_ENUM_CAST(ItemEnums::ArmorType);
VARIANT_ENUM_CAST(ItemEnums::EntityTextureLayers);
#endif

View File

@ -438,7 +438,7 @@ void ESS::skeletons_bones_set(const PoolStringArray &value) {
_skeletons_bones = value;
}
//ModelVisualGroups
//Other
String ESS::model_visual_groups_get() const {
return _model_visual_groups;
}
@ -446,6 +446,13 @@ void ESS::model_visual_groups_set(const String &value) {
_model_visual_groups = value;
}
String ESS::texture_layers_get() const {
return _texture_layers;
}
void ESS::texture_layers_set(const String &value) {
_texture_layers = value;
}
void ESS::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_use_spell_points"), &ESS::get_use_spell_points);
ClassDB::bind_method(D_METHOD("set_use_spell_points", "value"), &ESS::set_use_spell_points);
@ -568,10 +575,14 @@ void ESS::_bind_methods() {
ClassDB::bind_method(D_METHOD("skeletons_bones_set", "value"), &ESS::skeletons_bones_set);
ADD_PROPERTY(PropertyInfo(Variant::POOL_STRING_ARRAY, "skeletons_bones"), "skeletons_bones_set", "skeletons_bones_get");
//ModelVisualGroups
//Other
ClassDB::bind_method(D_METHOD("model_visual_groups_get"), &ESS::model_visual_groups_get);
ClassDB::bind_method(D_METHOD("model_visual_groups_set", "value"), &ESS::model_visual_groups_set);
ADD_PROPERTY(PropertyInfo(Variant::STRING, "model_visual_groups"), "model_visual_groups_set", "model_visual_groups_get");
ClassDB::bind_method(D_METHOD("texture_layers_get"), &ESS::texture_layers_get);
ClassDB::bind_method(D_METHOD("texture_layers_set", "value"), &ESS::texture_layers_set);
ADD_PROPERTY(PropertyInfo(Variant::STRING, "texture_layers"), "texture_layers_set", "texture_layers_get");
}
ESS::ESS() {
@ -604,6 +615,8 @@ ESS::ESS() {
_model_visual_groups = GLOBAL_DEF("ess/enums/model_visual_groups", "None,Bodypart,Alt Bodypart,Attachment");
_texture_layers = GLOBAL_DEF("ess/enums/texture_layers", "None,Skin,Underwear,Shirt,Clothes Base,Clothes 1,Clothes 2,Clothes 3,Clothes 4,Clothes 5,Belt,Tabard,Overlay");
if (!Engine::get_singleton()->is_editor_hint() && _automatic_load) {
call_deferred("load_all");
}

View File

@ -152,10 +152,13 @@ public:
PoolStringArray skeletons_bones_get() const;
void skeletons_bones_set(const PoolStringArray &value);
//ModelVisualGroups
//Other
String model_visual_groups_get() const;
void model_visual_groups_set(const String &value);
String texture_layers_get() const;
void texture_layers_set(const String &value);
ESS();
~ESS();
@ -206,8 +209,9 @@ private:
String _entity_types;
PoolStringArray _skeletons_bones;
//ModelVisualGroups
//Other
String _model_visual_groups;
String _texture_layers;
};
#endif