SA.FullBodyIK._LimitXZ_Square C# (CSharp) Method

_LimitXZ_Square() public static method

public static _LimitXZ_Square ( Vector3 &dir, float limitXMinus, float limitXPlus, float limitZMinus, float limitZPlus ) : bool
dir Vector3
limitXMinus float
limitXPlus float
limitZMinus float
limitZPlus float
return bool
		public static bool _LimitXZ_Square(
			ref Vector3 dir,                // dirZ
			float limitXMinus,               // X-
			float limitXPlus,                // X+
			float limitZMinus,               // Z-
			float limitZPlus )               // Z+
		{
			bool isXLimited = false;
			bool isZLimited = false;

			if( dir.x < -limitXMinus ) {
				dir.x = -limitXMinus;
				isXLimited = true;
			} else if( dir.x > limitXPlus ) {
				dir.x = limitXPlus;
				isXLimited = true;
			}

			if( dir.z < -limitZMinus ) {
				dir.z = -limitZMinus;
				isZLimited = true;
			} else if( dir.z > limitZPlus ) {
				dir.z = limitZPlus;
				isZLimited = true;
			}

			if( isXLimited || isZLimited ) {
				dir.y = SAFBIKSqrt( 1.0f - (dir.x * dir.x + dir.z * dir.z) );
				return true;
			} else {
				if( dir.y < 0.0f ) {
					dir.y = -dir.y;
					return true;
				}
			}

			return false;
		}
FullBodyIK