Esempio n. 1
0
			void _SyncDisplacement_UpdateArgs()
			{
				if( _limbIKType == LimbIKType.Leg ) {
					float effectorMinLengthRate = _settings.limbIK.legEffectorMinLengthRate;
					_effectorMinLength._Reset( _beginToEndMaxLength, effectorMinLengthRate );

					// Memo: Their CachedDegreesToCosSin aren't required caching. (Use instantly.)
					CachedDegreesToCosSin kneeUpperLimitTheta = new CachedDegreesToCosSin( _settings.limbIK.prefixKneeUpperLimitAngle );
					CachedDegreesToCosSin legUpperLimitTheta = new CachedDegreesToCosSin( _settings.limbIK.prefixLegUpperLimitAngle );

					_leg_upperLimitNearCircleZ = _beginToBendingLength * legUpperLimitTheta.cos
												+ _bendingToEndLength * kneeUpperLimitTheta.cos;

					_leg_upperLimitNearCircleY = _beginToBendingLength * legUpperLimitTheta.sin
												+ _bendingToEndLength * kneeUpperLimitTheta.sin;
				}

				float effectorMaxLengthRate = (_limbIKType == LimbIKType.Leg) ? _settings.limbIK.legEffectorMaxLengthRate : _settings.limbIK.armEffectorMaxLengthRate;
				_effectorMaxLength._Reset( _beginToEndMaxLength, effectorMaxLengthRate );
			}
Esempio n. 2
0
			void _UpdateArgs()
			{
				if( _limbIKType == LimbIKType.Leg ) {
					float effectorMinLengthRate = _settings.limbIK.legEffectorMinLengthRate;
                    if( _effectorMinLength._b != effectorMinLengthRate ) {
						_effectorMinLength._Reset( _beginToEndMaxLength, effectorMinLengthRate );
					}

					if( _cache_kneeUpperLimitAngle != _settings.limbIK.prefixKneeUpperLimitAngle ||
						_cache_legUpperLimitAngle != _settings.limbIK.prefixLegUpperLimitAngle ) {
						_cache_kneeUpperLimitAngle = _settings.limbIK.prefixKneeUpperLimitAngle;
						_cache_legUpperLimitAngle = _settings.limbIK.prefixLegUpperLimitAngle;

						// Memo: Their CachedDegreesToCosSin aren't required caching. (Use instantly.)
						CachedDegreesToCosSin kneeUpperLimitTheta = new CachedDegreesToCosSin( _settings.limbIK.prefixKneeUpperLimitAngle );
						CachedDegreesToCosSin legUpperLimitTheta = new CachedDegreesToCosSin( _settings.limbIK.prefixLegUpperLimitAngle );

						_leg_upperLimitNearCircleZ = _beginToBendingLength * legUpperLimitTheta.cos
													+ _bendingToEndLength * kneeUpperLimitTheta.cos;

						_leg_upperLimitNearCircleY = _beginToBendingLength * legUpperLimitTheta.sin
													+ _bendingToEndLength * kneeUpperLimitTheta.sin;
					}
				}

				if( _limbIKType == LimbIKType.Arm ) {
					float beginRate = _settings.limbIK.armBasisForcefixEffectorLengthRate - _settings.limbIK.armBasisForcefixEffectorLengthLerpRate;
					float endRate = _settings.limbIK.armBasisForcefixEffectorLengthRate;
					if( _arm_elbowBasisForcefixEffectorLengthBegin._b != beginRate ) {
						_arm_elbowBasisForcefixEffectorLengthBegin._Reset( _beginToEndMaxLength, beginRate );
                    }
					if( _arm_elbowBasisForcefixEffectorLengthEnd._b != endRate ) {
						_arm_elbowBasisForcefixEffectorLengthEnd._Reset( _beginToEndMaxLength, endRate );
					}
				}

				float effectorMaxLengthRate = (_limbIKType == LimbIKType.Leg) ? _settings.limbIK.legEffectorMaxLengthRate : _settings.limbIK.armEffectorMaxLengthRate;
				if( _effectorMaxLength._b != effectorMaxLengthRate ) {
					_effectorMaxLength._Reset( _beginToEndMaxLength, effectorMaxLengthRate );
				}
			}