static void _DrawBoneGizmo( Vector3 fromPosition, Vector3 toPosition, ref Matrix3x3 basis, ref Vector3 cameraForward, BoneType boneType )
{
Vector3 dir = toPosition - fromPosition;
if( SAFBIKVecNormalize( ref dir ) ) {
Vector3 nY = Vector3.Cross( cameraForward, dir );
if( SAFBIKVecNormalize( ref nY ) ) {
float boneGizmoOuterLen = _BoneGizmoOuterLen;
float boneGizmoThickness = _BoneGizmoThickness;
if( boneType == BoneType.HandFinger ) {
boneGizmoOuterLen = _BoneGizmoOuterLen * _BoneGizmoFingerScale;
boneGizmoThickness = _BoneGizmoThickness * _BoneGizmoFingerScale;
}
Vector3 outerY = nY * boneGizmoOuterLen;
Vector3 thicknessY = nY * boneGizmoThickness;
Vector3 interPosition = fromPosition + dir * boneGizmoOuterLen;
for( int i = 0; i < _BoneGizmoDrawCycles; ++i ) {
Gizmos.color = (i < _BoneGizmoDrawCycles / 2) ? Color.black : Color.white;
Gizmos.DrawLine( fromPosition, interPosition + outerY );
Gizmos.DrawLine( fromPosition, interPosition - outerY );
Gizmos.DrawLine( interPosition + outerY, toPosition );
Gizmos.DrawLine( interPosition - outerY, toPosition );
outerY -= thicknessY;
}
}
}
}
#endif