Bindings for SPeciesModelData.

This commit is contained in:
Relintai 2019-10-25 14:01:59 +02:00
parent f07afba4ff
commit 65ab6c1dbd
2 changed files with 405 additions and 52 deletions

View File

@ -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<PackedScene> SpeciesModelData::get_skeleton() {
return _skeleton;
}
void SpeciesModelData::set_skeleton(Ref<PackedScene> value) {
_skeleton = value;
}
//Entries
Ref<ItemVisualEntry> SpeciesModelData::get_visual(const int bone_index, const int index) const {
ERR_FAIL_INDEX_V(bone_index, EntityEnums::SKELETON_POINTS_MAX, Ref<ItemVisualEntry>());
ERR_FAIL_INDEX_V(index, _visuals[bone_index].size(), Ref<ItemVisualEntry>());
return _visuals[bone_index].get(index);
}
void SpeciesModelData::set_visual(const int bone_index, const int index, const Ref<ItemVisualEntry> 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<ItemVisualEntry> 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<Variant> SpeciesModelData::get_visuals(const int bone_index) {
ERR_FAIL_INDEX_V(bone_index, EntityEnums::SKELETON_POINTS_MAX, Vector<Variant>());
Vector<Variant> 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<Variant> &visuals) {
ERR_FAIL_INDEX(bone_index, EntityEnums::SKELETON_POINTS_MAX);
_visuals[bone_index].clear();
for (int i = 0; i < visuals.size(); i++) {
Ref<ItemVisualEntry> visual = Ref<ItemVisualEntry>(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<Variant> SpeciesModelData::get_skin_colors() {
Vector<Variant> 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<Variant> &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<ItemVisualEntry> SpeciesModelData::get_hair_style(const int index) const {
ERR_FAIL_INDEX_V(index, _hair_styles.size(), Ref<ItemVisualEntry>());
return _hair_styles.get(index);
}
void SpeciesModelData::set_hair_style(const int index, const Ref<ItemVisualEntry> hair_style) {
ERR_FAIL_INDEX(index, _hair_styles.size());
_hair_styles.set(index, hair_style);
}
void SpeciesModelData::add_hair_style(const Ref<ItemVisualEntry> 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<Variant> SpeciesModelData::get_hair_styles() {
Vector<Variant> 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<Variant> &hair_styles) {
_hair_styles.clear();
for (int i = 0; i < hair_styles.size(); i++) {
Ref<ItemVisualEntry> hair_style = Ref<ItemVisualEntry>(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<Variant> SpeciesModelData::get_hair_colors() {
Vector<Variant> 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<Variant> &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<ItemVisualEntry> SpeciesModelData::get_head(const int index) const {
ERR_FAIL_INDEX_V(index, _heads.size(), Ref<ItemVisualEntry>());
return _heads.get(index);
}
void SpeciesModelData::set_head(const int index, const Ref<ItemVisualEntry> head) {
ERR_FAIL_INDEX(index, _heads.size());
_heads.set(index, head);
}
void SpeciesModelData::add_head(const Ref<ItemVisualEntry> 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<Variant> SpeciesModelData::get_heads() {
Vector<Variant> 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<Variant> &heads) {
_heads.clear();
for (int i = 0; i < heads.size(); i++) {
Ref<ItemVisualEntry> head = Ref<ItemVisualEntry>(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");
}

View File

@ -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<PackedScene> get_skeleton();
void set_skeleton(Ref<PackedScene> value);
//Entries
Ref<ItemVisualEntry> get_visual(const int bone_index, const int index) const;
void set_visual(const int bone_index, const int index, const Ref<ItemVisualEntry> visual);
void add_visual(const int bone_index, const Ref<ItemVisualEntry> visual);
void remove_visual(const int bone_index, const int index);
int get_visual_count(const int bone_index) const;
Vector<Variant> get_visuals(const int bone_index);
void set_visuals(const int bone_index, const Vector<Variant> &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<Variant> get_skin_colors();
void set_skin_colors(const Vector<Variant> &skin_colors);
//HairStyles
Ref<ItemVisualEntry> get_hair_style(const int index) const;
void set_hair_style(const int index, const Ref<ItemVisualEntry> hair_style);
void add_hair_style(const Ref<ItemVisualEntry> hair_style);
void remove_hair_style(const int index);
int get_hair_style_count() const;
Vector<Variant> get_hair_styles();
void set_hair_styles(const Vector<Variant> &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<Variant> get_hair_colors();
void set_hair_colors(const Vector<Variant> &hair_colors);
//Heads
Ref<ItemVisualEntry> get_head(const int index) const;
void set_head(const int index, const Ref<ItemVisualEntry> head);
void add_head(const Ref<ItemVisualEntry> head);
void remove_head(const int index);
int get_head_count() const;
Vector<Variant> get_heads();
void set_heads(const Vector<Variant> &heads);
SpeciesModelData();
~SpeciesModelData();
@ -33,14 +91,16 @@ protected:
private:
int _id;
String _name;
String _text_name;
Vector<Ref<ItemVisualEntry> > _entries[EntityEnums::SKELETON_POINTS_MAX];
Ref<PackedScene> _skeleton;
Vector<Ref<ItemVisualEntry> > _visuals[EntityEnums::SKELETON_POINTS_MAX];
Vector<Color> _skin_colors;
Vector<Ref<ItemVisualEntry> > _hair_styles;
Vector<Color> _hair_colors;
Vector<Ref<ItemVisualEntry> > _heads;
Ref<PackedScene> _skeleton;
};