From 65ab6c1dbdf43a02eb35c1848e5ada7d1da59746 Mon Sep 17 00:00:00 2001 From: Relintai Date: Fri, 25 Oct 2019 14:01:59 +0200 Subject: [PATCH] Bindings for SPeciesModelData. --- skeleton/species_model_data.cpp | 387 ++++++++++++++++++++++++++++---- skeleton/species_model_data.h | 70 +++++- 2 files changed, 405 insertions(+), 52 deletions(-) diff --git a/skeleton/species_model_data.cpp b/skeleton/species_model_data.cpp index 050f3b5..02de062 100644 --- a/skeleton/species_model_data.cpp +++ b/skeleton/species_model_data.cpp @@ -1,69 +1,362 @@ #include "species_model_data.h" +int SpeciesModelData::get_id() { + return _id; +} +void SpeciesModelData::set_id(int value) { + _id = value; +} + +String SpeciesModelData::get_text_name() { + return _text_name; +} +void SpeciesModelData::set_text_name(String value) { + _text_name = value; +} + +Ref SpeciesModelData::get_skeleton() { + return _skeleton; +} +void SpeciesModelData::set_skeleton(Ref value) { + _skeleton = value; +} + +//Entries + +Ref SpeciesModelData::get_visual(const int bone_index, const int index) const { + ERR_FAIL_INDEX_V(bone_index, EntityEnums::SKELETON_POINTS_MAX, Ref()); + ERR_FAIL_INDEX_V(index, _visuals[bone_index].size(), Ref()); + + return _visuals[bone_index].get(index); +} +void SpeciesModelData::set_visual(const int bone_index, const int index, const Ref visual) { + ERR_FAIL_INDEX(bone_index, EntityEnums::SKELETON_POINTS_MAX); + ERR_FAIL_INDEX(index, _visuals[bone_index].size()); + + _visuals[bone_index].set(index, visual); +} +void SpeciesModelData::add_visual(const int bone_index, const Ref visual) { + ERR_FAIL_INDEX(bone_index, EntityEnums::SKELETON_POINTS_MAX); + + _visuals[bone_index].push_back(visual); +} +void SpeciesModelData::remove_visual(const int bone_index, const int index) { + ERR_FAIL_INDEX(bone_index, EntityEnums::SKELETON_POINTS_MAX); + ERR_FAIL_INDEX(index, _visuals[bone_index].size()); + + _visuals[bone_index].remove(index); +} + +int SpeciesModelData::get_visual_count(const int bone_index) const { + ERR_FAIL_INDEX_V(bone_index, EntityEnums::SKELETON_POINTS_MAX, 0); + + return _visuals[bone_index].size(); +} + +Vector SpeciesModelData::get_visuals(const int bone_index) { + ERR_FAIL_INDEX_V(bone_index, EntityEnums::SKELETON_POINTS_MAX, Vector()); + + Vector r; + for (int i = 0; i < _visuals[bone_index].size(); i++) { + r.push_back(_visuals[bone_index][i].get_ref_ptr()); + } + return r; +} +void SpeciesModelData::set_visuals(const int bone_index, const Vector &visuals) { + ERR_FAIL_INDEX(bone_index, EntityEnums::SKELETON_POINTS_MAX); + + _visuals[bone_index].clear(); + for (int i = 0; i < visuals.size(); i++) { + Ref visual = Ref(visuals[i]); + + _visuals[bone_index].push_back(visual); + } +} + +//SkinColors + +Color SpeciesModelData::get_skin_color(const int index) const { + ERR_FAIL_INDEX_V(index, _skin_colors.size(), Color()); + + return _skin_colors.get(index); +} +void SpeciesModelData::set_skin_color(const int index, const Color skin_color) { + ERR_FAIL_INDEX(index, _skin_colors.size()); + + _skin_colors.set(index, skin_color); +} +void SpeciesModelData::add_skin_color(const Color skin_color) { + _skin_colors.push_back(skin_color); +} +void SpeciesModelData::remove_skin_color(const int index) { + ERR_FAIL_INDEX(index, _skin_colors.size()); + + _skin_colors.remove(index); +} + +int SpeciesModelData::get_skin_color_count() const { + return _skin_colors.size(); +} + +Vector SpeciesModelData::get_skin_colors() { + Vector r; + for (int i = 0; i < _skin_colors.size(); i++) { + r.push_back(_skin_colors[i]); + } + return r; +} +void SpeciesModelData::set_skin_colors(const Vector &skin_colors) { + _skin_colors.clear(); + for (int i = 0; i < skin_colors.size(); i++) { + Color skin_color = Color(skin_colors[i]); + + _skin_colors.push_back(skin_color); + } +} + +//HairStyles + +Ref SpeciesModelData::get_hair_style(const int index) const { + ERR_FAIL_INDEX_V(index, _hair_styles.size(), Ref()); + + return _hair_styles.get(index); +} +void SpeciesModelData::set_hair_style(const int index, const Ref hair_style) { + ERR_FAIL_INDEX(index, _hair_styles.size()); + + _hair_styles.set(index, hair_style); +} +void SpeciesModelData::add_hair_style(const Ref hair_style) { + _hair_styles.push_back(hair_style); +} +void SpeciesModelData::remove_hair_style(const int index) { + ERR_FAIL_INDEX(index, _hair_styles.size()); + + _hair_styles.remove(index); +} + +int SpeciesModelData::get_hair_style_count() const { + return _hair_styles.size(); +} + +Vector SpeciesModelData::get_hair_styles() { + Vector r; + for (int i = 0; i < _hair_styles.size(); i++) { + r.push_back(_hair_styles[i].get_ref_ptr()); + } + return r; +} +void SpeciesModelData::set_hair_styles(const Vector &hair_styles) { + _hair_styles.clear(); + for (int i = 0; i < hair_styles.size(); i++) { + Ref hair_style = Ref(hair_styles[i]); + + _hair_styles.push_back(hair_style); + } +} + +//HairColors + +Color SpeciesModelData::get_hair_color(const int index) const { + ERR_FAIL_INDEX_V(index, _hair_colors.size(), Color()); + + return _hair_colors.get(index); +} +void SpeciesModelData::set_hair_color(const int index, const Color hair_color) { + ERR_FAIL_INDEX(index, _hair_colors.size()); + + _hair_colors.set(index, hair_color); +} +void SpeciesModelData::add_hair_color(const Color hair_color) { + _hair_colors.push_back(hair_color); +} +void SpeciesModelData::remove_hair_color(const int index) { + ERR_FAIL_INDEX(index, _hair_colors.size()); + + _hair_colors.remove(index); +} + +int SpeciesModelData::get_hair_color_count() const { + return _hair_colors.size(); +} + +Vector SpeciesModelData::get_hair_colors() { + Vector r; + for (int i = 0; i < _hair_colors.size(); i++) { + r.push_back(_hair_colors[i]); + } + return r; +} +void SpeciesModelData::set_hair_colors(const Vector &hair_colors) { + _hair_colors.clear(); + for (int i = 0; i < hair_colors.size(); i++) { + Color hair_color = Color(hair_colors[i]); + + _hair_colors.push_back(hair_color); + } +} + +//Heads + +Ref SpeciesModelData::get_head(const int index) const { + ERR_FAIL_INDEX_V(index, _heads.size(), Ref()); + + return _heads.get(index); +} +void SpeciesModelData::set_head(const int index, const Ref head) { + ERR_FAIL_INDEX(index, _heads.size()); + + _heads.set(index, head); +} +void SpeciesModelData::add_head(const Ref head) { + _heads.push_back(head); +} +void SpeciesModelData::remove_head(const int index) { + ERR_FAIL_INDEX(index, _heads.size()); + + _heads.remove(index); +} + +int SpeciesModelData::get_head_count() const { + return _heads.size(); +} + +Vector SpeciesModelData::get_heads() { + Vector r; + for (int i = 0; i < _heads.size(); i++) { + r.push_back(_heads[i].get_ref_ptr()); + } + return r; +} +void SpeciesModelData::set_heads(const Vector &heads) { + _heads.clear(); + for (int i = 0; i < heads.size(); i++) { + Ref head = Ref(heads[i]); + + _heads.push_back(head); + } +} + SpeciesModelData::SpeciesModelData() { + _id = 0; } SpeciesModelData::~SpeciesModelData() { + _skeleton.unref(); + + for (int i = 0; i < EntityEnums::SKELETON_POINTS_MAX; ++i) { + _visuals[i].clear(); + } + + _skin_colors.clear(); + _hair_styles.clear(); + _hair_colors.clear(); + _heads.clear(); } void SpeciesModelData::_bind_methods() { - /* - ClassDB::bind_method(D_METHOD("get_bone_path", "index"), &SpeciesModelData::get_bone_path); - ClassDB::bind_method(D_METHOD("set_bone_path", "index", "path"), &SpeciesModelData::set_bone_path); + ClassDB::bind_method(D_METHOD("get_id"), &SpeciesModelData::get_id); + ClassDB::bind_method(D_METHOD("set_id", "value"), &SpeciesModelData::set_id); + ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id"); - ClassDB::bind_method(D_METHOD("get_visual", "index"), &SpeciesModelData::get_visual); - ClassDB::bind_method(D_METHOD("set_visual", "index", "entry"), &SpeciesModelData::set_visual); + ClassDB::bind_method(D_METHOD("get_text_name"), &SpeciesModelData::get_text_name); + ClassDB::bind_method(D_METHOD("set_text_name", "value"), &SpeciesModelData::set_text_name); + ADD_PROPERTY(PropertyInfo(Variant::STRING, "text_name"), "set_text_name", "get_text_name"); + + ClassDB::bind_method(D_METHOD("get_skeleton"), &SpeciesModelData::get_skeleton); + ClassDB::bind_method(D_METHOD("set_skeleton", "value"), &SpeciesModelData::set_skeleton); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "skeleton", PROPERTY_HINT_RESOURCE_TYPE, "PackedScene"), "set_skeleton", "get_skeleton"); + + //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); + ClassDB::bind_method(D_METHOD("add_visual", "bone_index", "visual"), &SpeciesModelData::add_visual); + ClassDB::bind_method(D_METHOD("remove_visual", "bone_index", "index"), &SpeciesModelData::remove_visual); + + ClassDB::bind_method(D_METHOD("get_visual_count", "bone_index"), &SpeciesModelData::get_visual_count); + + ClassDB::bind_method(D_METHOD("get_visuals", "bone_index"), &SpeciesModelData::get_visuals); + ClassDB::bind_method(D_METHOD("set_visuals", "bone_index", "visuals"), &SpeciesModelData::set_visuals); ADD_GROUP("Visuals", "visual_"); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_root", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_ROOT); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_pelvis", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_PELVIS); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine_1", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE_1); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_spine_2", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_SPINE_2); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_neck", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_NECK); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_head", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_HEAD); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_root", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_ROOT); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_pelvis", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_PELVIS); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_spine", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_SPINE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_spine_1", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_SPINE_1); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_spine_2", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_SPINE_2); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_neck", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_NECK); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_head", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_HEAD); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_clavicle", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_CLAVICLE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_upper_arm", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_UPPER_ARM); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_forearm", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FOREARM); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_hand", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_HAND); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thumb_base", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THUMB_BASE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thumb_end", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THUMB_END); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_fingers_base", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FINGERS_BASE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_fingers_end", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FINGERS_END); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_clavicle", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_CLAVICLE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_upper_arm", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_UPPER_ARM); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_forearm", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_FOREARM); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_hand", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_HAND); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_thumb_base", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_THUMB_BASE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_thumb_end", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_THUMB_END); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_fingers_base", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_FINGERS_BASE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_fingers_end", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_FINGERS_END); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_clavicle", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_CLAVICLE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_upper_arm", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_UPPER_ARM); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_forearm", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FOREARM); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_hand", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_HAND); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thumb_base", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THUMB_BASE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thumb_end", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THUMB_END); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_fingers_base", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_BASE); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_fingers_end", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_END); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_clavicle", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_CLAVICLE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_upper_arm", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_UPPER_ARM); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_forearm", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_FOREARM); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_hand", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_HAND); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_thumb_base", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_THUMB_BASE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_thumb_end", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_THUMB_END); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_fingers_base", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_BASE); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_fingers_end", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_FINGERS_END); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_thigh", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_THIGH); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_calf", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_CALF); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_left_foot", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_LEFT_FOOT); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_thigh", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_THIGH); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_calf", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_CALF); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_left_foot", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_LEFT_FOOT); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_thigh", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_THIGH); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_calf", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_CALF); - ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "visual_right_foot", PROPERTY_HINT_RESOURCE_TYPE, "CharacterSkeletonVisualEntry"), "set_visual", "get_visual", EntityEnums::SKELETON_POINT_RIGHT_FOOT); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_thigh", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_THIGH); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_calf", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_CALF); + ADD_PROPERTYI(PropertyInfo(Variant::ARRAY, "visual_right_foot", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_visuals", "get_visuals", EntityEnums::SKELETON_POINT_RIGHT_FOOT); - ADD_GROUP("Bone Paths", "bone_path_"); - ADD_PROPERTYI(PropertyInfo(Variant::NODE_PATH, "bone_path_root"), "set_bone_path", "get_bone_path", EntityEnums::SKELETON_POINT_ROOT); + //DungeonDatas + ClassDB::bind_method(D_METHOD("get_skin_color", "index"), &SpeciesModelData::get_skin_color); + ClassDB::bind_method(D_METHOD("set_skin_color", "index", "data"), &SpeciesModelData::set_skin_color); + ClassDB::bind_method(D_METHOD("add_skin_color", "skin_color"), &SpeciesModelData::add_skin_color); + ClassDB::bind_method(D_METHOD("remove_skin_color", "index"), &SpeciesModelData::remove_skin_color); - ClassDB::bind_method(D_METHOD("get_bone_node", "bone_idx"), &SpeciesModelData::get_bone_node); + ClassDB::bind_method(D_METHOD("get_skin_color_count"), &SpeciesModelData::get_skin_color_count); - ClassDB::bind_method(D_METHOD("get_animation_player_path"), &SpeciesModelData::get_animation_player_path); - ClassDB::bind_method(D_METHOD("set_animation_player_path", "path"), &SpeciesModelData::set_animation_player_path); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "animation_player_path"), "set_animation_player_path", "get_animation_player_path"); + ClassDB::bind_method(D_METHOD("get_skin_colors"), &SpeciesModelData::get_skin_colors); + ClassDB::bind_method(D_METHOD("set_skin_colors", "skin_colors"), &SpeciesModelData::set_skin_colors); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "skin_colors", PROPERTY_HINT_NONE, "17/17:Color", PROPERTY_USAGE_DEFAULT, "Color"), "set_skin_colors", "get_skin_colors"); - ClassDB::bind_method(D_METHOD("get_animation_tree_path"), &SpeciesModelData::get_animation_tree_path); - ClassDB::bind_method(D_METHOD("set_animation_tree_path", "path"), &SpeciesModelData::set_animation_tree_path); - ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "animation_tree_path"), "set_animation_tree_path", "get_animation_tree_path"); + //DungeonDatas + ClassDB::bind_method(D_METHOD("get_hair_style", "index"), &SpeciesModelData::get_hair_style); + ClassDB::bind_method(D_METHOD("set_hair_style", "index", "data"), &SpeciesModelData::set_hair_style); + ClassDB::bind_method(D_METHOD("add_hair_style", "hair_style"), &SpeciesModelData::add_hair_style); + ClassDB::bind_method(D_METHOD("remove_hair_style", "index"), &SpeciesModelData::remove_hair_style); - ClassDB::bind_method(D_METHOD("get_animation_player"), &SpeciesModelData::get_animation_player); - ClassDB::bind_method(D_METHOD("get_animation_tree"), &SpeciesModelData::get_animation_tree); + ClassDB::bind_method(D_METHOD("get_hair_style_count"), &SpeciesModelData::get_hair_style_count); - ClassDB::bind_method(D_METHOD("update_nodes"), &SpeciesModelData::update_nodes); - */ + ClassDB::bind_method(D_METHOD("get_hair_styles"), &SpeciesModelData::get_hair_styles); + ClassDB::bind_method(D_METHOD("set_hair_styles", "hair_styles"), &SpeciesModelData::set_hair_styles); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "hair_styles", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_hair_styles", "get_hair_styles"); + + //DungeonDatas + ClassDB::bind_method(D_METHOD("get_hair_color", "index"), &SpeciesModelData::get_hair_color); + ClassDB::bind_method(D_METHOD("set_hair_color", "index", "data"), &SpeciesModelData::set_hair_color); + ClassDB::bind_method(D_METHOD("add_hair_color", "hair_color"), &SpeciesModelData::add_hair_color); + ClassDB::bind_method(D_METHOD("remove_hair_color", "index"), &SpeciesModelData::remove_hair_color); + + ClassDB::bind_method(D_METHOD("get_hair_color_count"), &SpeciesModelData::get_hair_color_count); + + ClassDB::bind_method(D_METHOD("get_hair_colors"), &SpeciesModelData::get_hair_colors); + ClassDB::bind_method(D_METHOD("set_hair_colors", "hair_colors"), &SpeciesModelData::set_hair_colors); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "hair_colors", PROPERTY_HINT_NONE, "17/17:Color", PROPERTY_USAGE_DEFAULT, "Color"), "set_hair_colors", "get_hair_colors"); + + //DungeonDatas + ClassDB::bind_method(D_METHOD("get_head", "index"), &SpeciesModelData::get_head); + ClassDB::bind_method(D_METHOD("set_head", "index", "data"), &SpeciesModelData::set_head); + ClassDB::bind_method(D_METHOD("add_head", "head"), &SpeciesModelData::add_head); + ClassDB::bind_method(D_METHOD("remove_head", "index"), &SpeciesModelData::remove_head); + + ClassDB::bind_method(D_METHOD("get_head_count"), &SpeciesModelData::get_head_count); + + ClassDB::bind_method(D_METHOD("get_heads"), &SpeciesModelData::get_heads); + ClassDB::bind_method(D_METHOD("set_heads", "heads"), &SpeciesModelData::set_heads); + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "heads", PROPERTY_HINT_NONE, "17/17:ItemVisualEntry", PROPERTY_USAGE_DEFAULT, "ItemVisualEntry"), "set_heads", "get_heads"); } diff --git a/skeleton/species_model_data.h b/skeleton/species_model_data.h index 582ee8d..856e629 100644 --- a/skeleton/species_model_data.h +++ b/skeleton/species_model_data.h @@ -21,8 +21,66 @@ public: int get_id(); void set_id(int value); - String get_name(); - void set_name(String value); + String get_text_name(); + void set_text_name(String value); + + Ref get_skeleton(); + void set_skeleton(Ref value); + + //Entries + Ref get_visual(const int bone_index, const int index) const; + void set_visual(const int bone_index, const int index, const Ref visual); + void add_visual(const int bone_index, const Ref visual); + void remove_visual(const int bone_index, const int index); + + int get_visual_count(const int bone_index) const; + + Vector get_visuals(const int bone_index); + void set_visuals(const int bone_index, const Vector &visuals); + + //SkinColors + Color get_skin_color(const int index) const; + void set_skin_color(const int index, const Color skin_color); + void add_skin_color(const Color skin_color); + void remove_skin_color(const int index); + + int get_skin_color_count() const; + + Vector get_skin_colors(); + void set_skin_colors(const Vector &skin_colors); + + //HairStyles + Ref get_hair_style(const int index) const; + void set_hair_style(const int index, const Ref hair_style); + void add_hair_style(const Ref hair_style); + void remove_hair_style(const int index); + + int get_hair_style_count() const; + + Vector get_hair_styles(); + void set_hair_styles(const Vector &hair_styles); + + //HairColors + Color get_hair_color(const int index) const; + void set_hair_color(const int index, const Color hair_color); + void add_hair_color(const Color hair_color); + void remove_hair_color(const int index); + + int get_hair_color_count() const; + + Vector get_hair_colors(); + void set_hair_colors(const Vector &hair_colors); + + //Heads + Ref get_head(const int index) const; + void set_head(const int index, const Ref head); + void add_head(const Ref head); + void remove_head(const int index); + + int get_head_count() const; + + Vector get_heads(); + void set_heads(const Vector &heads); SpeciesModelData(); ~SpeciesModelData(); @@ -33,14 +91,16 @@ protected: private: int _id; - String _name; + String _text_name; - Vector > _entries[EntityEnums::SKELETON_POINTS_MAX]; + Ref _skeleton; + + Vector > _visuals[EntityEnums::SKELETON_POINTS_MAX]; Vector _skin_colors; Vector > _hair_styles; Vector _hair_colors; Vector > _heads; - Ref _skeleton; + };