Exemplo n.º 1
0
        public override void ReadData()
        {
            if (autoWind)
            {
                if (showDebug)
                {
                    Debug.Log(base.name + " Auto Wind Compare vectors");
                }
                Vector3 referenceVector = base.transform.TransformDirection(new Vector3(1f, 0f, 0f));
                Vector3 normal          = base.transform.TransformDirection(new Vector3(0f, 0f, 1f));
                float   num;
                for (num = Math3d.SignedVectorAngle(referenceVector, initialWorldVectorX, normal); num - windAngle < -180f; num += 360f)
                {
                }
                while (num - windAngle > 180f)
                {
                    num -= 360f;
                }
                windAngle         = num;
                catapultWindCount = windAngle / 360f;
            }
            dataWindCount  = catapultWindCount;
            windRadius     = windCoreRadius + radius;
            localTargetPos = base.transform.InverseTransformPoint(target.position);
            Vector2 vector  = localTargetPos.SetZ(0f);
            float   num2    = Mathf.Acos(windRadius / vector.magnitude);
            Vector2 vector2 = vector.Rotate(0f - num2).normalized *windRadius;
            float   num3    = Math2d.NormalizeAnglePositive(Math2d.SignedAngle(new Vector2(0f, 1f), vector2) * ((float)Math.PI / 180f));
            float   num4    = num3 / ((float)Math.PI * 2f);
            int     num5    = Mathf.RoundToInt(catapultWindCount - num4);
            float   num6    = num4 + (float)num5 + 2f;

            exitWindPos = new Vector3(vector2.x, vector2.y, num6 * windThickness);
            if (autoWind)
            {
                if (showDebug)
                {
                    Debug.Log(base.name + " Auto Wind Calc Total Length");
                }
                straightT = 0.9f;
                float num7 = num6 * 2f * (float)Math.PI * windRadius / straightT;
                lengthChange = totalLen - num7;
                totalLen     = num7;
            }
            else
            {
                straightT = num6 * 2f * (float)Math.PI * windRadius / totalLen;
            }
            straightNormal   = vector2.normalized;
            straightBinormal = Vector3.Cross((vector - vector2).normalized, straightNormal);
        }