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; } }
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(); }