Exemple #1
0
        private void SetEyePosition(CameraUpdateInfo iRUpdateInfo)
        {
            m_lstPoints.Clear();
            m_lstCamera.Clear();

            LimitStock crLimit = Global.CameraMgr.Impl.Limit;

            m_lstPoints.Add((iRUpdateInfo.At + iRUpdateInfo.LookatDir * crLimit.MinDistance));   // Last point

            float fDistance = iRUpdateInfo.Distance / 4.0f;

            float nXDir = m_effectQuake.RandLength;
            float nYDir = m_effectQuake.RandLength;

            int ran = LEMath.RandInt(2);

            if (m_effectQuake.RandState && ran > 0)
            {
                nXDir *= -1.0f;
                nYDir *= -1.0f;
            }

            for (int i = 0; i < 2; i++)
            {
                if (i % 2 > 0)
                {
                    nXDir *= -1.0f;
                    nYDir *= -1.0f;
                }
                if (m_effectQuake.RandState)
                {
                    nXDir = LEMath.RandRange(0.0f, nXDir);
                    nYDir = LEMath.RandRange(0.0f, nYDir);
                }

                float valueDst = (i + 2) * fDistance;
                float horAngle = (iRUpdateInfo.Horizon) + nXDir;
                float verAngle = (iRUpdateInfo.Vertical) + nYDir;

                Vector3 lookatDir = (LEMath.AngleToDirection(verAngle * LEMath.s_fDegreeToRadian, horAngle * LEMath.s_fDegreeToRadian));

                m_lstPoints.Add((iRUpdateInfo.At + lookatDir * (valueDst)));
            }

            m_lstPoints.Add((iRUpdateInfo.At + iRUpdateInfo.LookatDir * iRUpdateInfo.Distance)); // Start point

            SetRespectiveBlending();                                                             // Camera path setting
        }
Exemple #2
0
 public void UpdateLimit(LimitStock stock)
 {
     m_limitStock = stock;
 }