/// <summary> /// Keyframe에 Rotation Bias 설정이 있는 경우 관련 변수를 갱신한다. /// </summary> /// <param name="rotationBias"></param> /// <param name="rotationCount"></param> public void SetAnimRotationBias(apAnimKeyframe.ROTATION_BIAS rotationBias, int rotationCount) { if (rotationBias == apAnimKeyframe.ROTATION_BIAS.CW) { _isAnimRotationBias = true; _animRotationBiasAngle = -360 * rotationCount; } else if (rotationBias == apAnimKeyframe.ROTATION_BIAS.CCW) { _isAnimRotationBias = true; _animRotationBiasAngle = 360 * rotationCount; } else { _isAnimRotationBias = false; _animRotationBiasAngle = 0; } //에디터에서는 최적화가 아니라 언제 바뀔지 모르므로 항상 갱신 //if(_animRotationBiasAngle_Prev != _animRotationBiasAngle && _isAnimRotationBias) if (_isAnimRotationBias) { if (_animRotationBiasedMatrix == null) { _animRotationBiasedMatrix = new apMatrix(); } if (_modifiedMesh != null) { _animRotationBiasedMatrix.SetTRS( _modifiedMesh._transformMatrix._pos, _modifiedMesh._transformMatrix._angleDeg + _animRotationBiasAngle, _modifiedMesh._transformMatrix._scale ); } else if (_modifiedBone != null) { _animRotationBiasedMatrix.SetTRS( _modifiedBone._transformMatrix._pos, _modifiedBone._transformMatrix._angleDeg + _animRotationBiasAngle, _modifiedBone._transformMatrix._scale ); } else { _animRotationBiasedMatrix.SetIdentity(); } _animRotationBiasAngle_Prev = _animRotationBiasAngle; } }
/// <summary> /// Keyframe에 Rotation Bias 설정이 있는 경우 관련 변수를 갱신한다. /// </summary> /// <param name="rotationBias"></param> /// <param name="rotationCount"></param> public void SetAnimRotationBias(apAnimKeyframe.ROTATION_BIAS rotationBias, int rotationCount) { if (rotationBias == apAnimKeyframe.ROTATION_BIAS.CW) { _isAnimRotationBias = true; _animRotationBiasAngle = -360 * rotationCount; } else if (rotationBias == apAnimKeyframe.ROTATION_BIAS.CCW) { _isAnimRotationBias = true; _animRotationBiasAngle = 360 * rotationCount; } else { _isAnimRotationBias = false; _animRotationBiasAngle = 0; } if (_animRotationBiasAngle_Prev != _animRotationBiasAngle && _isAnimRotationBias) { if (_animRotationBiasedMatrix == null) { _animRotationBiasedMatrix = new apMatrix(); } if (_modifiedMesh != null) { _animRotationBiasedMatrix.SetTRS( _modifiedMesh._transformMatrix._pos, _modifiedMesh._transformMatrix._angleDeg + _animRotationBiasAngle, _modifiedMesh._transformMatrix._scale ); } else if (_modifiedMeshSet != null) { //추가됨 19.5.24 : ModMeshSet으로 계산하기 _subModMesh_Transform = _modifiedMeshSet.SubModMesh_Transform; if (_subModMesh_Transform != null) { _animRotationBiasedMatrix.SetTRS( _subModMesh_Transform._transformMatrix._pos, _subModMesh_Transform._transformMatrix._angleDeg + _animRotationBiasAngle, _subModMesh_Transform._transformMatrix._scale ); } else { Debug.LogError("TODO : 에러 : 애니메이션에 SubModMeshSet_Transform이 없다."); _animRotationBiasedMatrix.SetIdentity(); } } else if (_modifiedBone != null) { _animRotationBiasedMatrix.SetTRS( _modifiedBone._transformMatrix._pos, _modifiedBone._transformMatrix._angleDeg + _animRotationBiasAngle, _modifiedBone._transformMatrix._scale ); } else { _animRotationBiasedMatrix.SetIdentity(); } _animRotationBiasAngle_Prev = _animRotationBiasAngle; } }