rodolpheh
8b932e3a3c
The more I made changes, the more it crashed. Got it to a point where it doesn't crash when starting the editor, but it will crash when exciting.
115 lines
3.5 KiB
C++
115 lines
3.5 KiB
C++
#ifndef ULTRALEAP_HAND_H
|
|
#define ULTRALEAP_HAND_H
|
|
|
|
#include <godot_cpp/classes/global_constants.hpp>
|
|
#include <godot_cpp/classes/ref.hpp>
|
|
#include <godot_cpp/classes/resource.hpp>
|
|
|
|
#include <godot_cpp/core/binder_common.hpp>
|
|
|
|
#include <godot_cpp/variant/utility_functions.hpp>
|
|
|
|
#include <LeapC.h>
|
|
|
|
#include "digit.h"
|
|
#include "palm.h"
|
|
#include "bone.h"
|
|
#include "types.h"
|
|
|
|
using namespace godot;
|
|
|
|
class UltraleapHand : public Resource {
|
|
GDCLASS(UltraleapHand, Resource);
|
|
|
|
public:
|
|
UltraleapTypes::Chirality type;
|
|
float confidence;
|
|
uint64_t visible_time;
|
|
float pinch_distance;
|
|
float grab_angle;
|
|
float pinch_strength;
|
|
float grab_strength;
|
|
|
|
UltraleapDigit* digits[5] = {
|
|
memnew(UltraleapDigit),
|
|
memnew(UltraleapDigit),
|
|
memnew(UltraleapDigit),
|
|
memnew(UltraleapDigit),
|
|
memnew(UltraleapDigit)
|
|
};
|
|
UltraleapBone* arm = memnew(UltraleapBone);
|
|
UltraleapPalm* palm = memnew(UltraleapPalm);
|
|
|
|
// Getters / Setters
|
|
float get_confidence() { return confidence; }
|
|
void set_confidence(float value) { confidence = value; }
|
|
|
|
float get_pinch_distance() { return pinch_distance; }
|
|
void set_pinch_distance(float value) { pinch_distance = value; }
|
|
|
|
float get_pinch_strength() { return pinch_strength; }
|
|
void set_pinch_strength(float value) { pinch_strength = value; }
|
|
|
|
float get_grab_angle() { return grab_angle; }
|
|
void set_grab_angle(float value) { grab_angle = value; }
|
|
|
|
float get_grab_strength() { return grab_strength; }
|
|
void set_grab_strength(float value) { grab_strength = value; }
|
|
|
|
uint64_t get_visible_time() { return visible_time; }
|
|
void set_visible_time(uint64_t value) { visible_time = value; }
|
|
|
|
UltraleapTypes::Chirality get_type() { return type; }
|
|
void set_type(UltraleapTypes::Chirality value) { type = value; }
|
|
|
|
Variant get_thumb() { return digits_ref[0]; }
|
|
void set_thumb(Variant value) { digits_ref[0] = value; }
|
|
|
|
Variant get_index() { return digits_ref[1]; }
|
|
void set_index(Variant value) { digits_ref[1] = value; }
|
|
|
|
Variant get_middle() { return digits_ref[2]; }
|
|
void set_middle(Variant value) { digits_ref[2] = value; }
|
|
|
|
Variant get_ring() { return digits_ref[3]; }
|
|
void set_ring(Variant value) { digits_ref[3] = value; }
|
|
|
|
Variant get_pinky() { return digits_ref[4]; }
|
|
void set_pinky(Variant value) { digits_ref[4] = value; }
|
|
|
|
Variant get_arm() { return arm_ref; }
|
|
void set_arm(Variant value) { arm_ref = value; }
|
|
|
|
Variant get_palm() { return palm_ref; }
|
|
void set_palm(Variant value) { palm_ref = value; }
|
|
|
|
Array get_digits() {
|
|
if (digits_array.size() == 0) {
|
|
digits_array.append(digits_ref[0]);
|
|
digits_array.append(digits_ref[1]);
|
|
digits_array.append(digits_ref[2]);
|
|
digits_array.append(digits_ref[3]);
|
|
digits_array.append(digits_ref[4]);
|
|
}
|
|
return digits_array;
|
|
}
|
|
void set_digits(Array digits) { digits_array = digits; }
|
|
|
|
static void fill_hand_data(Ref<UltraleapHand> ul_hand, LEAP_HAND* hand);
|
|
protected:
|
|
static void _bind_methods();
|
|
|
|
private:
|
|
Ref<UltraleapBone> arm_ref = Ref<UltraleapBone>(arm);
|
|
Ref<UltraleapPalm> palm_ref = Ref<UltraleapPalm>(palm);
|
|
Array digits_array = Array();
|
|
Ref<UltraleapDigit> digits_ref[5] = {
|
|
Ref<UltraleapDigit>(digits[0]),
|
|
Ref<UltraleapDigit>(digits[1]),
|
|
Ref<UltraleapDigit>(digits[2]),
|
|
Ref<UltraleapDigit>(digits[3]),
|
|
Ref<UltraleapDigit>(digits[4])
|
|
};
|
|
};
|
|
|
|
#endif |