private bool CalcAutoRotation( FakeTransform _ftransBlend, FakeTransform _ftransBase, Transform _transRef, CSwayParamDetail _Detail) { Quaternion.get_identity(); float num1 = 1f; float num2 = 1f; double num3; float num4 = (float)(num3 = 1.0); float num5 = 0.0f; num4 = 0.0f; float num6 = Vector3.Dot(Vector3.get_up(), _transRef.get_up()); float num7 = Vector3.Dot(Vector3.get_up(), _transRef.get_forward()); float num8 = Vector3.Dot(Vector3.get_up(), _transRef.get_right()); float num9 = Mathf.Abs(num6); if ((double)num7 > 0.0) { num1 = -1f; } float num10 = Mathf.Abs(num7); if ((double)num8 > 0.0) { num2 = -1f; } float num11 = Mathf.Abs(num8); float num12 = Mathf.InverseLerp(1f, 0.0f, num9) * Mathf.InverseLerp(0.0f, 1f, num11); float fAutoRot1 = _Detail.fAutoRot; if ((double)num2 < 0.0) { fAutoRot1 *= -1f; } float num13 = Mathf.Lerp(0.0f, fAutoRot1, num12); if (!_Detail.bAutoRotUp || (double)num1 > 0.0) { float num14 = Mathf.InverseLerp(1f, 0.0f, num9) * Mathf.InverseLerp(0.0f, 1f, num10); float fAutoRot2 = _Detail.fAutoRot; if (!((double)num1 <= 0.0 ? !this.m_bLR : this.m_bLR)) { fAutoRot2 *= -1f; } num5 = Mathf.Lerp(0.0f, fAutoRot2, num14); } Quaternion quaternion = Quaternion.AngleAxis(MathfEx.ToDegree(num5 + num13), Vector3.get_up()); _ftransBlend.Rot = Quaternion.op_Multiply(_ftransBase.Rot, quaternion); _ftransBlend.Pos = _ftransBase.Pos; _ftransBlend.Scale = _ftransBase.Scale; return(true); }