@@ -109,7 +109,7 @@ void LookAtModifier3D::set_forward_axis(BoneAxis p_axis) {
109
109
update_configuration_warnings ();
110
110
}
111
111
112
- LookAtModifier3D ::BoneAxis LookAtModifier3D::get_forward_axis () const {
112
+ SkeletonModifier3D ::BoneAxis LookAtModifier3D::get_forward_axis () const {
113
113
return forward_axis;
114
114
}
115
115
@@ -482,13 +482,6 @@ void LookAtModifier3D::_bind_methods() {
482
482
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" );
483
483
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" );
484
484
485
- BIND_ENUM_CONSTANT (BONE_AXIS_PLUS_X);
486
- BIND_ENUM_CONSTANT (BONE_AXIS_MINUS_X);
487
- BIND_ENUM_CONSTANT (BONE_AXIS_PLUS_Y);
488
- BIND_ENUM_CONSTANT (BONE_AXIS_MINUS_Y);
489
- BIND_ENUM_CONSTANT (BONE_AXIS_PLUS_Z);
490
- BIND_ENUM_CONSTANT (BONE_AXIS_MINUS_Z);
491
-
492
485
BIND_ENUM_CONSTANT (ORIGIN_FROM_SELF);
493
486
BIND_ENUM_CONSTANT (ORIGIN_FROM_SPECIFIC_BONE);
494
487
BIND_ENUM_CONSTANT (ORIGIN_FROM_EXTERNAL_NODE);
@@ -610,7 +603,7 @@ bool LookAtModifier3D::is_intersecting_axis(const Vector3 &p_prev, const Vector3
610
603
return signbit (p_prev[p_flipping_axis]) != signbit (p_current[p_flipping_axis]);
611
604
}
612
605
613
- Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis (const Basis &p_basis, LookAtModifier3D:: BoneAxis p_axis) const {
606
+ Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis (const Basis &p_basis, BoneAxis p_axis) {
614
607
Vector3 ret;
615
608
switch (p_axis) {
616
609
case BONE_AXIS_PLUS_X: {
@@ -635,67 +628,12 @@ Vector3 LookAtModifier3D::get_basis_vector_from_bone_axis(const Basis &p_basis,
635
628
return ret;
636
629
}
637
630
638
- Vector3 LookAtModifier3D::get_vector_from_bone_axis (const LookAtModifier3D::BoneAxis &p_axis) const {
639
- Vector3 ret;
640
- switch (p_axis) {
641
- case BONE_AXIS_PLUS_X: {
642
- ret = Vector3 (1 , 0 , 0 );
643
- } break ;
644
- case BONE_AXIS_MINUS_X: {
645
- ret = Vector3 (-1 , 0 , 0 );
646
- } break ;
647
- case BONE_AXIS_PLUS_Y: {
648
- ret = Vector3 (0 , 1 , 0 );
649
- } break ;
650
- case BONE_AXIS_MINUS_Y: {
651
- ret = Vector3 (0 , -1 , 0 );
652
- } break ;
653
- case BONE_AXIS_PLUS_Z: {
654
- ret = Vector3 (0 , 0 , 1 );
655
- } break ;
656
- case BONE_AXIS_MINUS_Z: {
657
- ret = Vector3 (0 , 0 , -1 );
658
- } break ;
659
- }
660
- return ret;
661
- }
662
-
663
- Vector3 LookAtModifier3D::get_vector_from_axis (const Vector3::Axis &p_axis) const {
664
- Vector3 ret;
665
- switch (p_axis) {
666
- case Vector3::AXIS_X: {
667
- ret = Vector3 (1 , 0 , 0 );
668
- } break ;
669
- case Vector3::AXIS_Y: {
670
- ret = Vector3 (0 , 1 , 0 );
671
- } break ;
672
- case Vector3::AXIS_Z: {
673
- ret = Vector3 (0 , 0 , 1 );
674
- } break ;
675
- }
676
- return ret;
677
- }
678
-
679
- Vector3::Axis LookAtModifier3D::get_axis_from_bone_axis (BoneAxis p_axis) const {
680
- Vector3::Axis ret = Vector3::AXIS_X;
681
- switch (p_axis) {
682
- case BONE_AXIS_PLUS_X:
683
- case BONE_AXIS_MINUS_X: {
684
- ret = Vector3::AXIS_X;
685
- } break ;
686
- case BONE_AXIS_PLUS_Y:
687
- case BONE_AXIS_MINUS_Y: {
688
- ret = Vector3::AXIS_Y;
689
- } break ;
690
- case BONE_AXIS_PLUS_Z:
691
- case BONE_AXIS_MINUS_Z: {
692
- ret = Vector3::AXIS_Z;
693
- } break ;
694
- }
695
- return ret;
631
+ Vector3::Axis LookAtModifier3D::get_secondary_rotation_axis (BoneAxis p_forward_axis, Vector3::Axis p_primary_rotation_axis) {
632
+ Vector3 secondary_plane = get_vector_from_bone_axis (p_forward_axis) + get_vector_from_axis (p_primary_rotation_axis);
633
+ return Math::is_zero_approx (secondary_plane.x ) ? Vector3::AXIS_X : (Math::is_zero_approx (secondary_plane.y ) ? Vector3::AXIS_Y : Vector3::AXIS_Z);
696
634
}
697
635
698
- Vector2 LookAtModifier3D::get_projection_vector (const Vector3 &p_vector, Vector3::Axis p_axis) const {
636
+ Vector2 LookAtModifier3D::get_projection_vector (const Vector3 &p_vector, Vector3::Axis p_axis) {
699
637
// NOTE: axis is swapped between 2D and 3D.
700
638
Vector2 ret;
701
639
switch (p_axis) {
@@ -789,8 +727,7 @@ Transform3D LookAtModifier3D::look_at_with_axes(const Transform3D &p_rest) {
789
727
}
790
728
791
729
// Needs for detecting flipping even if use_secondary_rotation is false.
792
- Vector3 secondary_plane = get_vector_from_bone_axis (forward_axis) + get_vector_from_axis (primary_rotation_axis);
793
- 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);
730
+ secondary_rotation_axis = get_secondary_rotation_axis (forward_axis, primary_rotation_axis);
794
731
795
732
if (!use_secondary_rotation) {
796
733
return current_result;
0 commit comments