示例#1
0
    public void Execute(int index)
    {
        if (Keys.Length == 0)
        {
            Value[index] = 0;
            return;
        }
        int prevIndex = CachedKeysIndices[index + firstIndex - 1];

        if (prevIndex == -1)
        {
            Value[index] = Keys[0].value;
            return;
        }
        if (prevIndex == Keys.Length - 1)
        {
            Value[index] = Keys[Keys.Length - 1].value;
            return;
        }

        keyStruct prevKey = Keys[prevIndex];

        switch (prevKey.interpolation)
        {
        case Interpolation.Constant:
            Value[index] = prevKey.value;
            break;

        case Interpolation.Linear:
            keyStruct nextKey    = Keys[prevIndex + 1];
            float     dt         = (index - prevKey.frame) / (float)(nextKey.frame - prevKey.frame);
            float     oneMinusDt = 1f - dt;
            Value[index] = prevKey.value * oneMinusDt + nextKey.value * dt;
            break;

        case Interpolation.Bezier:
            keyStruct nextKey1 = Keys[prevIndex + 1];
            Vector2   A        = new Vector2(prevKey.frame, prevKey.value);
            Vector2   D        = new Vector2(nextKey1.frame, nextKey1.value);

            Vector2 B = A + prevKey.outTangent;
            Vector2 C = D - nextKey1.inTangent;
            Value[index] = Bezier.EvaluateBezier(A, B, C, D, index + firstIndex);

            break;
        }
    }
示例#2
0
        public cameraScript()
        {
            keyArray[0] = new keyStruct(Keys.W, "forwardKey");
            keyArray[1] = new keyStruct(Keys.S, "backKey");
            keyArray[2] = new keyStruct(Keys.D, "rightKey");
            keyArray[3] = new keyStruct(Keys.A, "leftKey");
            keyArray[4] = new keyStruct(Keys.Up, "strafeUpKey");
            keyArray[5] = new keyStruct(Keys.Down, "strafeDownKey");
            keyArray[6] = new keyStruct(Keys.Left, "strafeLeftKey");
            keyArray[7] = new keyStruct(Keys.Right, "strafeRightKey");
            keyArray[8] = new keyStruct(Keys.E, "upwardKey");
            keyArray[9] = new keyStruct(Keys.Q, "downwardKey");
            keyArray[10] = new keyStruct(Keys.ShiftKey, "sprintKey");
            keyArray[11] = new keyStruct(Keys.F5, "incFov");
            keyArray[12] = new keyStruct(Keys.F6, "decFov");
            keyArray[13] = new keyStruct(Keys.F7, "incRoll");
            keyArray[14] = new keyStruct(Keys.F8, "decRoll");
            keyArray[15] = new keyStruct(Keys.X, "yForwardKey");
            keyArray[16] = new keyStruct(Keys.Z, "yBackwardKey");
            keyArray[17] = new keyStruct(Keys.F3, "carCam_positionKey");

            numOfKeys = 18;

            oldVehPos = new Vector3();
            startPoint = new Vector3();
            customCam = new GTA.Camera();
            customCarCam = new GTA.Camera();
            customCamIdle = new GTA.Camera();
            customCarCam_aimCoord = new Vector3(0, 3f, 0f);
            customCarCam_directionDiff = new Vector3();
            defaultCarCamPos = new Vector3(-1.3f, 0f, 0f);
            customCarCam_offsPos = defaultCarCamPos;
            Interval = 0;

            this.KeyDown += new GTA.KeyEventHandler(bombScript_KeyDown);
            this.KeyUp += new GTA.KeyEventHandler(cameraScript_KeyUp);
            this.Tick += new EventHandler(bombScript_Tick);

            BindConsoleCommand("camcontrol_reloadsettings", new ConsoleCommandDelegate(console_reloadSettings), "- Reload the Cam-Control settings.");
            loadSettings();
        }