137 lines
4.3 KiB
C++
137 lines
4.3 KiB
C++
#include "digit.h"
|
|
#include "types.h"
|
|
|
|
#include <godot_cpp/core/class_db.hpp>
|
|
|
|
#include <godot_cpp/classes/global_constants.hpp>
|
|
|
|
#include <godot_cpp/variant/utility_functions.hpp>
|
|
#include <godot_cpp/variant/vector3.hpp>
|
|
#include <godot_cpp/variant/quaternion.hpp>
|
|
|
|
#include <LeapC.h>
|
|
|
|
using namespace godot;
|
|
|
|
|
|
void UltraleapDigit::_bind_methods() {
|
|
ClassDB::bind_method(D_METHOD("get_type"), &UltraleapDigit::get_type);
|
|
ClassDB::bind_method(D_METHOD("set_type", "type"), &UltraleapDigit::set_type);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_metacarpal"), &UltraleapDigit::get_metacarpal);
|
|
ClassDB::bind_method(D_METHOD("set_metacarpal", "metacarpal"), &UltraleapDigit::set_metacarpal);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_proximal"), &UltraleapDigit::get_proximal);
|
|
ClassDB::bind_method(D_METHOD("set_proximal", "proximal"), &UltraleapDigit::set_proximal);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_intermediate"), &UltraleapDigit::get_intermediate);
|
|
ClassDB::bind_method(D_METHOD("set_intermediate", "intermediate"), &UltraleapDigit::set_intermediate);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_distal"), &UltraleapDigit::get_distal);
|
|
ClassDB::bind_method(D_METHOD("set_distal", "distal"), &UltraleapDigit::set_distal);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_is_extended"), &UltraleapDigit::get_is_extended);
|
|
ClassDB::bind_method(D_METHOD("set_is_extended", "is_extended"), &UltraleapDigit::set_is_extended);
|
|
|
|
ClassDB::bind_method(D_METHOD("get_bones"), &UltraleapDigit::get_bones);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::INT,
|
|
"type",
|
|
PROPERTY_HINT_ENUM,
|
|
"Thumb,Index,Middle,Ring,Pinky,None"
|
|
),
|
|
"set_type",
|
|
"get_type"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::OBJECT,
|
|
"metacarpal",
|
|
PROPERTY_HINT_RESOURCE_TYPE,
|
|
"UltraleapBone"
|
|
),
|
|
"set_metacarpal",
|
|
"get_metacarpal"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::OBJECT,
|
|
"proximal",
|
|
PROPERTY_HINT_RESOURCE_TYPE,
|
|
"UltraleapBone"
|
|
),
|
|
"set_proximal",
|
|
"get_proximal"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::OBJECT,
|
|
"intermediate",
|
|
PROPERTY_HINT_RESOURCE_TYPE,
|
|
"UltraleapBone"
|
|
),
|
|
"set_intermediate",
|
|
"get_intermediate"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::OBJECT,
|
|
"distal",
|
|
PROPERTY_HINT_RESOURCE_TYPE,
|
|
"UltraleapBone"
|
|
),
|
|
"set_distal",
|
|
"get_distal"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::BOOL,
|
|
"is_extended"
|
|
),
|
|
"set_is_extended",
|
|
"get_is_extended"
|
|
);
|
|
|
|
ClassDB::add_property(
|
|
"UltraleapDigit",
|
|
PropertyInfo(
|
|
Variant::ARRAY,
|
|
"bones",
|
|
PROPERTY_HINT_ARRAY_TYPE,
|
|
"UltraleapBone",
|
|
PROPERTY_USAGE_READ_ONLY | PROPERTY_USAGE_EDITOR
|
|
),
|
|
"",
|
|
"get_bones"
|
|
);
|
|
}
|
|
|
|
void UltraleapDigit::fill_digit_data(Ref<UltraleapDigit> ul_digit, LEAP_DIGIT* digit, FingerType type) {
|
|
if (ul_digit->metacarpal_ref == NULL) {
|
|
ul_digit->metacarpal_ref = Ref<UltraleapBone>(memnew(UltraleapBone));
|
|
ul_digit->proximal_ref = Ref<UltraleapBone>(memnew(UltraleapBone));
|
|
ul_digit->intermediate_ref = Ref<UltraleapBone>(memnew(UltraleapBone));
|
|
ul_digit->distal_ref = Ref<UltraleapBone>(memnew(UltraleapBone));
|
|
}
|
|
|
|
ul_digit->is_extended = digit->is_extended == 1;
|
|
ul_digit->type = type;
|
|
|
|
UltraleapBone::fill_bone_data(ul_digit->metacarpal_ref, &digit->metacarpal, UltraleapBone::BoneType::Metacarpal);
|
|
UltraleapBone::fill_bone_data(ul_digit->proximal_ref, &digit->proximal, UltraleapBone::BoneType::Proximal);
|
|
UltraleapBone::fill_bone_data(ul_digit->intermediate_ref, &digit->intermediate, UltraleapBone::BoneType::Intermediate);
|
|
UltraleapBone::fill_bone_data(ul_digit->distal_ref, &digit->distal, UltraleapBone::BoneType::Distal);
|
|
} |