You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Move enum BoneAxis to SkeletonModifier from LookAtModifier
This commit is contained in:
@@ -47,7 +47,7 @@
|
|||||||
<member name="ease_type" type="int" setter="set_ease_type" getter="get_ease_type" enum="Tween.EaseType" default="0">
|
<member name="ease_type" type="int" setter="set_ease_type" getter="get_ease_type" enum="Tween.EaseType" default="0">
|
||||||
The ease type of the time-based interpolation. See also [enum Tween.EaseType].
|
The ease type of the time-based interpolation. See also [enum Tween.EaseType].
|
||||||
</member>
|
</member>
|
||||||
<member name="forward_axis" type="int" setter="set_forward_axis" getter="get_forward_axis" enum="LookAtModifier3D.BoneAxis" default="4">
|
<member name="forward_axis" type="int" setter="set_forward_axis" getter="get_forward_axis" enum="SkeletonModifier3D.BoneAxis" default="4">
|
||||||
The forward axis of the bone. This [SkeletonModifier3D] modifies the bone so that this axis points toward the [member target_node].
|
The forward axis of the bone. This [SkeletonModifier3D] modifies the bone so that this axis points toward the [member target_node].
|
||||||
</member>
|
</member>
|
||||||
<member name="origin_bone" type="int" setter="set_origin_bone" getter="get_origin_bone">
|
<member name="origin_bone" type="int" setter="set_origin_bone" getter="get_origin_bone">
|
||||||
@@ -129,24 +129,6 @@
|
|||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
<constants>
|
<constants>
|
||||||
<constant name="BONE_AXIS_PLUS_X" value="0" enum="BoneAxis">
|
|
||||||
Enumerated value for the +X axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="BONE_AXIS_MINUS_X" value="1" enum="BoneAxis">
|
|
||||||
Enumerated value for the -X axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="BONE_AXIS_PLUS_Y" value="2" enum="BoneAxis">
|
|
||||||
Enumerated value for the +Y axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="BONE_AXIS_MINUS_Y" value="3" enum="BoneAxis">
|
|
||||||
Enumerated value for the -Y axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="BONE_AXIS_PLUS_Z" value="4" enum="BoneAxis">
|
|
||||||
Enumerated value for the +Z axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="BONE_AXIS_MINUS_Z" value="5" enum="BoneAxis">
|
|
||||||
Enumerated value for the -Z axis.
|
|
||||||
</constant>
|
|
||||||
<constant name="ORIGIN_FROM_SELF" value="0" enum="OriginFrom">
|
<constant name="ORIGIN_FROM_SELF" value="0" enum="OriginFrom">
|
||||||
The bone rest position of the bone specified in [member bone] is used as origin.
|
The bone rest position of the bone specified in [member bone] is used as origin.
|
||||||
</constant>
|
</constant>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<class name="SkeletonModifier3D" inherits="Node3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
<class name="SkeletonModifier3D" inherits="Node3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
|
||||||
<brief_description>
|
<brief_description>
|
||||||
A Node that may modify Skeleton3D's bone.
|
A node that may modify Skeleton3D's bone.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
[SkeletonModifier3D] retrieves a target [Skeleton3D] by having a [Skeleton3D] parent.
|
[SkeletonModifier3D] retrieves a target [Skeleton3D] by having a [Skeleton3D] parent.
|
||||||
@@ -43,4 +43,24 @@
|
|||||||
</description>
|
</description>
|
||||||
</signal>
|
</signal>
|
||||||
</signals>
|
</signals>
|
||||||
|
<constants>
|
||||||
|
<constant name="BONE_AXIS_PLUS_X" value="0" enum="BoneAxis">
|
||||||
|
Enumerated value for the +X axis.
|
||||||
|
</constant>
|
||||||
|
<constant name="BONE_AXIS_MINUS_X" value="1" enum="BoneAxis">
|
||||||
|
Enumerated value for the -X axis.
|
||||||
|
</constant>
|
||||||
|
<constant name="BONE_AXIS_PLUS_Y" value="2" enum="BoneAxis">
|
||||||
|
Enumerated value for the +Y axis.
|
||||||
|
</constant>
|
||||||
|
<constant name="BONE_AXIS_MINUS_Y" value="3" enum="BoneAxis">
|
||||||
|
Enumerated value for the -Y axis.
|
||||||
|
</constant>
|
||||||
|
<constant name="BONE_AXIS_PLUS_Z" value="4" enum="BoneAxis">
|
||||||
|
Enumerated value for the +Z axis.
|
||||||
|
</constant>
|
||||||
|
<constant name="BONE_AXIS_MINUS_Z" value="5" enum="BoneAxis">
|
||||||
|
Enumerated value for the -Z axis.
|
||||||
|
</constant>
|
||||||
|
</constants>
|
||||||
</class>
|
</class>
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ void LookAtModifier3D::set_forward_axis(BoneAxis p_axis) {
|
|||||||
update_configuration_warnings();
|
update_configuration_warnings();
|
||||||
}
|
}
|
||||||
|
|
||||||
LookAtModifier3D::BoneAxis LookAtModifier3D::get_forward_axis() const {
|
SkeletonModifier3D::BoneAxis LookAtModifier3D::get_forward_axis() const {
|
||||||
return forward_axis;
|
return forward_axis;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -482,13 +482,6 @@ void LookAtModifier3D::_bind_methods() {
|
|||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "secondary_negative_limit_angle", PROPERTY_HINT_RANGE, "0,180,0.01,radians_as_degrees"), "set_secondary_negative_limit_angle", "get_secondary_negative_limit_angle");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "secondary_negative_limit_angle", PROPERTY_HINT_RANGE, "0,180,0.01,radians_as_degrees"), "set_secondary_negative_limit_angle", "get_secondary_negative_limit_angle");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "secondary_negative_damp_threshold", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_secondary_negative_damp_threshold", "get_secondary_negative_damp_threshold");
|
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "secondary_negative_damp_threshold", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_secondary_negative_damp_threshold", "get_secondary_negative_damp_threshold");
|
||||||
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_X);
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_X);
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_Y);
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_Y);
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_Z);
|
|
||||||
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_Z);
|
|
||||||
|
|
||||||
BIND_ENUM_CONSTANT(ORIGIN_FROM_SELF);
|
BIND_ENUM_CONSTANT(ORIGIN_FROM_SELF);
|
||||||
BIND_ENUM_CONSTANT(ORIGIN_FROM_SPECIFIC_BONE);
|
BIND_ENUM_CONSTANT(ORIGIN_FROM_SPECIFIC_BONE);
|
||||||
BIND_ENUM_CONSTANT(ORIGIN_FROM_EXTERNAL_NODE);
|
BIND_ENUM_CONSTANT(ORIGIN_FROM_EXTERNAL_NODE);
|
||||||
@@ -610,7 +603,7 @@ bool LookAtModifier3D::is_intersecting_axis(const Vector3 &p_prev, const Vector3
|
|||||||
return signbit(p_prev[p_flipping_axis]) != signbit(p_current[p_flipping_axis]);
|
return signbit(p_prev[p_flipping_axis]) != signbit(p_current[p_flipping_axis]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis(const Basis &p_basis, LookAtModifier3D::BoneAxis p_axis) const {
|
Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis(const Basis &p_basis, BoneAxis p_axis) {
|
||||||
Vector3 ret;
|
Vector3 ret;
|
||||||
switch (p_axis) {
|
switch (p_axis) {
|
||||||
case BONE_AXIS_PLUS_X: {
|
case BONE_AXIS_PLUS_X: {
|
||||||
@@ -635,67 +628,12 @@ Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis(const Basis &p_basis,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 LookAtModifier3D::get_vector_from_bone_axis(const LookAtModifier3D::BoneAxis &p_axis) const {
|
Vector3::Axis LookAtModifier3D::get_secondary_rotation_axis(BoneAxis p_forward_axis, Vector3::Axis p_primary_rotation_axis) {
|
||||||
Vector3 ret;
|
Vector3 secondary_plane = get_vector_from_bone_axis(p_forward_axis) + get_vector_from_axis(p_primary_rotation_axis);
|
||||||
switch (p_axis) {
|
return Math::is_zero_approx(secondary_plane.x) ? Vector3::AXIS_X : (Math::is_zero_approx(secondary_plane.y) ? Vector3::AXIS_Y : Vector3::AXIS_Z);
|
||||||
case BONE_AXIS_PLUS_X: {
|
|
||||||
ret = Vector3(1, 0, 0);
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_MINUS_X: {
|
|
||||||
ret = Vector3(-1, 0, 0);
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_PLUS_Y: {
|
|
||||||
ret = Vector3(0, 1, 0);
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_MINUS_Y: {
|
|
||||||
ret = Vector3(0, -1, 0);
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_PLUS_Z: {
|
|
||||||
ret = Vector3(0, 0, 1);
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_MINUS_Z: {
|
|
||||||
ret = Vector3(0, 0, -1);
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 LookAtModifier3D::get_vector_from_axis(const Vector3::Axis &p_axis) const {
|
Vector2 LookAtModifier3D::get_projection_vector(const Vector3 &p_vector, Vector3::Axis p_axis) {
|
||||||
Vector3 ret;
|
|
||||||
switch (p_axis) {
|
|
||||||
case Vector3::AXIS_X: {
|
|
||||||
ret = Vector3(1, 0, 0);
|
|
||||||
} break;
|
|
||||||
case Vector3::AXIS_Y: {
|
|
||||||
ret = Vector3(0, 1, 0);
|
|
||||||
} break;
|
|
||||||
case Vector3::AXIS_Z: {
|
|
||||||
ret = Vector3(0, 0, 1);
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector3::Axis LookAtModifier3D::get_axis_from_bone_axis(BoneAxis p_axis) const {
|
|
||||||
Vector3::Axis ret = Vector3::AXIS_X;
|
|
||||||
switch (p_axis) {
|
|
||||||
case BONE_AXIS_PLUS_X:
|
|
||||||
case BONE_AXIS_MINUS_X: {
|
|
||||||
ret = Vector3::AXIS_X;
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_PLUS_Y:
|
|
||||||
case BONE_AXIS_MINUS_Y: {
|
|
||||||
ret = Vector3::AXIS_Y;
|
|
||||||
} break;
|
|
||||||
case BONE_AXIS_PLUS_Z:
|
|
||||||
case BONE_AXIS_MINUS_Z: {
|
|
||||||
ret = Vector3::AXIS_Z;
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector2 LookAtModifier3D::get_projection_vector(const Vector3 &p_vector, Vector3::Axis p_axis) const {
|
|
||||||
// NOTE: axis is swapped between 2D and 3D.
|
// NOTE: axis is swapped between 2D and 3D.
|
||||||
Vector2 ret;
|
Vector2 ret;
|
||||||
switch (p_axis) {
|
switch (p_axis) {
|
||||||
@@ -789,8 +727,7 @@ Transform3D LookAtModifier3D::look_at_with_axes(const Transform3D &p_rest) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Needs for detecting flipping even if use_secondary_rotation is false.
|
// Needs for detecting flipping even if use_secondary_rotation is false.
|
||||||
Vector3 secondary_plane = get_vector_from_bone_axis(forward_axis) + get_vector_from_axis(primary_rotation_axis);
|
secondary_rotation_axis = get_secondary_rotation_axis(forward_axis, primary_rotation_axis);
|
||||||
secondary_rotation_axis = Math::is_zero_approx(secondary_plane.x) ? Vector3::AXIS_X : (Math::is_zero_approx(secondary_plane.y) ? Vector3::AXIS_Y : Vector3::AXIS_Z);
|
|
||||||
|
|
||||||
if (!use_secondary_rotation) {
|
if (!use_secondary_rotation) {
|
||||||
return current_result;
|
return current_result;
|
||||||
|
|||||||
@@ -38,15 +38,6 @@ class LookAtModifier3D : public SkeletonModifier3D {
|
|||||||
GDCLASS(LookAtModifier3D, SkeletonModifier3D);
|
GDCLASS(LookAtModifier3D, SkeletonModifier3D);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum BoneAxis {
|
|
||||||
BONE_AXIS_PLUS_X,
|
|
||||||
BONE_AXIS_MINUS_X,
|
|
||||||
BONE_AXIS_PLUS_Y,
|
|
||||||
BONE_AXIS_MINUS_Y,
|
|
||||||
BONE_AXIS_PLUS_Z,
|
|
||||||
BONE_AXIS_MINUS_Z,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum OriginFrom {
|
enum OriginFrom {
|
||||||
ORIGIN_FROM_SELF,
|
ORIGIN_FROM_SELF,
|
||||||
ORIGIN_FROM_SPECIFIC_BONE,
|
ORIGIN_FROM_SPECIFIC_BONE,
|
||||||
@@ -104,11 +95,6 @@ private:
|
|||||||
float remaining = 0;
|
float remaining = 0;
|
||||||
float time_step = 1.0;
|
float time_step = 1.0;
|
||||||
|
|
||||||
Vector3 get_basis_vector_from_bone_axis(const Basis &p_basis, BoneAxis p_axis) const;
|
|
||||||
Vector3 get_vector_from_bone_axis(const BoneAxis &p_axis) const;
|
|
||||||
Vector3 get_vector_from_axis(const Vector3::Axis &p_axis) const;
|
|
||||||
Vector3::Axis get_axis_from_bone_axis(BoneAxis p_axis) const;
|
|
||||||
Vector2 get_projection_vector(const Vector3 &p_vector, Vector3::Axis p_axis) const;
|
|
||||||
float remap_damped(float p_from, float p_to, float p_damp_threshold, float p_value) const;
|
float remap_damped(float p_from, float p_to, float p_damp_threshold, float p_value) const;
|
||||||
double get_bspline_y(const Vector2 &p_from, const Vector2 &p_control, const Vector2 &p_to, double p_x) const;
|
double get_bspline_y(const Vector2 &p_from, const Vector2 &p_control, const Vector2 &p_to, double p_x) const;
|
||||||
bool is_intersecting_axis(const Vector3 &p_prev, const Vector3 &p_current, Vector3::Axis p_flipping_axis, Vector3::Axis p_check_axis, bool p_check_plane = false) const;
|
bool is_intersecting_axis(const Vector3 &p_prev, const Vector3 &p_current, Vector3::Axis p_flipping_axis, Vector3::Axis p_check_axis, bool p_check_plane = false) const;
|
||||||
@@ -197,9 +183,12 @@ public:
|
|||||||
float get_interpolation_remaining() const;
|
float get_interpolation_remaining() const;
|
||||||
bool is_interpolating() const;
|
bool is_interpolating() const;
|
||||||
bool is_target_within_limitation() const;
|
bool is_target_within_limitation() const;
|
||||||
|
|
||||||
|
static Vector3::Axis get_secondary_rotation_axis(BoneAxis p_forward_axis, Vector3::Axis p_primary_rotation_axis);
|
||||||
|
static Vector3 get_basis_vector_from_bone_axis(const Basis &p_basis, BoneAxis p_axis);
|
||||||
|
static Vector2 get_projection_vector(const Vector3 &p_vector, Vector3::Axis p_axis);
|
||||||
};
|
};
|
||||||
|
|
||||||
VARIANT_ENUM_CAST(LookAtModifier3D::BoneAxis);
|
|
||||||
VARIANT_ENUM_CAST(LookAtModifier3D::OriginFrom);
|
VARIANT_ENUM_CAST(LookAtModifier3D::OriginFrom);
|
||||||
|
|
||||||
#endif // LOOK_AT_MODIFIER_3D_H
|
#endif // LOOK_AT_MODIFIER_3D_H
|
||||||
|
|||||||
@@ -152,6 +152,73 @@ void SkeletonModifier3D::_bind_methods() {
|
|||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("modification_processed"));
|
ADD_SIGNAL(MethodInfo("modification_processed"));
|
||||||
GDVIRTUAL_BIND(_process_modification);
|
GDVIRTUAL_BIND(_process_modification);
|
||||||
|
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_X);
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_X);
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_Y);
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_Y);
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_PLUS_Z);
|
||||||
|
BIND_ENUM_CONSTANT(BONE_AXIS_MINUS_Z);
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 SkeletonModifier3D::get_vector_from_bone_axis(BoneAxis p_axis) {
|
||||||
|
Vector3 ret;
|
||||||
|
switch (p_axis) {
|
||||||
|
case BONE_AXIS_PLUS_X: {
|
||||||
|
ret = Vector3(1, 0, 0);
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_MINUS_X: {
|
||||||
|
ret = Vector3(-1, 0, 0);
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_PLUS_Y: {
|
||||||
|
ret = Vector3(0, 1, 0);
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_MINUS_Y: {
|
||||||
|
ret = Vector3(0, -1, 0);
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_PLUS_Z: {
|
||||||
|
ret = Vector3(0, 0, 1);
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_MINUS_Z: {
|
||||||
|
ret = Vector3(0, 0, -1);
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3 SkeletonModifier3D::get_vector_from_axis(Vector3::Axis p_axis) {
|
||||||
|
Vector3 ret;
|
||||||
|
switch (p_axis) {
|
||||||
|
case Vector3::AXIS_X: {
|
||||||
|
ret = Vector3(1, 0, 0);
|
||||||
|
} break;
|
||||||
|
case Vector3::AXIS_Y: {
|
||||||
|
ret = Vector3(0, 1, 0);
|
||||||
|
} break;
|
||||||
|
case Vector3::AXIS_Z: {
|
||||||
|
ret = Vector3(0, 0, 1);
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector3::Axis SkeletonModifier3D::get_axis_from_bone_axis(BoneAxis p_axis) {
|
||||||
|
Vector3::Axis ret = Vector3::AXIS_X;
|
||||||
|
switch (p_axis) {
|
||||||
|
case BONE_AXIS_PLUS_X:
|
||||||
|
case BONE_AXIS_MINUS_X: {
|
||||||
|
ret = Vector3::AXIS_X;
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_PLUS_Y:
|
||||||
|
case BONE_AXIS_MINUS_Y: {
|
||||||
|
ret = Vector3::AXIS_Y;
|
||||||
|
} break;
|
||||||
|
case BONE_AXIS_PLUS_Z:
|
||||||
|
case BONE_AXIS_MINUS_Z: {
|
||||||
|
ret = Vector3::AXIS_Z;
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SkeletonModifier3D::SkeletonModifier3D() {
|
SkeletonModifier3D::SkeletonModifier3D() {
|
||||||
|
|||||||
@@ -40,6 +40,16 @@ class SkeletonModifier3D : public Node3D {
|
|||||||
|
|
||||||
void rebind();
|
void rebind();
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum BoneAxis {
|
||||||
|
BONE_AXIS_PLUS_X,
|
||||||
|
BONE_AXIS_MINUS_X,
|
||||||
|
BONE_AXIS_PLUS_Y,
|
||||||
|
BONE_AXIS_MINUS_Y,
|
||||||
|
BONE_AXIS_PLUS_Z,
|
||||||
|
BONE_AXIS_MINUS_Z,
|
||||||
|
};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool active = true;
|
bool active = true;
|
||||||
real_t influence = 1.0;
|
real_t influence = 1.0;
|
||||||
@@ -76,7 +86,14 @@ public:
|
|||||||
|
|
||||||
void process_modification();
|
void process_modification();
|
||||||
|
|
||||||
|
// Utility APIs.
|
||||||
|
static Vector3 get_vector_from_bone_axis(BoneAxis p_axis);
|
||||||
|
static Vector3 get_vector_from_axis(Vector3::Axis p_axis);
|
||||||
|
static Vector3::Axis get_axis_from_bone_axis(BoneAxis p_axis);
|
||||||
|
|
||||||
SkeletonModifier3D();
|
SkeletonModifier3D();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
VARIANT_ENUM_CAST(SkeletonModifier3D::BoneAxis);
|
||||||
|
|
||||||
#endif // SKELETON_MODIFIER_3D_H
|
#endif // SKELETON_MODIFIER_3D_H
|
||||||
|
|||||||
Reference in New Issue
Block a user