Exemplo n.º 1
0
        public override void updateExecution(float timeElapsed)
        {
            base.updateExecution(timeElapsed);

            if (timeElapsed <= 0f)
            {
                return;
            }

            var mParams = missile.parameters as SSpaceMissileVisualParameters;
            var target  = missile.target;

            // make visual direction "lean into" velocity
            Vector3 axis;
            float   angle;

            OpenTKHelper.neededRotationAxisAngle(missile.visualDirection, missile.velocity.Normalized(),
                                                 out axis, out angle);
            float abs = Math.Abs(angle);

            if (abs > mParams.pursuitVisualRotationRate && abs > 0f)
            {
                angle = angle / abs * mParams.pursuitVisualRotationRate;
            }
            Quaternion quat = Quaternion.FromAxisAngle(axis, angle);

            missile.visualDirection = Vector3.Transform(missile.visualDirection, quat);

            missile.visualSmokeAmmount = missile.velocity.LengthFast / mParams.pursuitMaxVelocity;
        }