public MouseMath() { this.varManager = VarManager.Instance; this.inputManager = InputManager.Instance; this.gamesManager = GamesManager.Instance; this.varManager.GetVar(VarManager.Names.Speed, out m_speed); this.varManager.GetVar(VarManager.Names.Speed2, out m_speed2); this.varManager.GetVar(VarManager.Names.Speed3, out m_speed3); this.varManager.GetVar(VarManager.Names.Speed4, out m_speed4); this.varManager.GetVar(VarManager.Names.Accel, out m_accel); this.varManager.GetVar(VarManager.Names.Accel2, out m_accel2); this.varManager.GetVar(VarManager.Names.Accel3, out m_accel3); this.varManager.GetVar(VarManager.Names.Accel4, out m_accel4); this.varManager.GetVar(VarManager.Names.Sensitivity1, out m_sensitivity1); this.varManager.GetVar(VarManager.Names.Sensitivity2, out m_sensitivity2); this.varManager.GetVar(VarManager.Names.AltSens, out m_altSens); this.varManager.GetVar(VarManager.Names.AltSens2, out m_altSens2); this.varManager.GetVar(VarManager.Names.AltSens3, out m_altSens3); this.varManager.GetVar(VarManager.Names.Deadzone, out m_deadzone); this.varManager.GetVar(VarManager.Names.YXRatio, out m_yxratio); this.varManager.GetVar(VarManager.Names.TransExponent1, out m_transExp1); this.varManager.GetVar(VarManager.Names.Smoothness, out m_smoothness); this.varManager.GetVar(VarManager.Names.Rate, out m_rate); this.varManager.GetVar(VarManager.Names.AutoAnalogDisconnect, out m_autoAnalogDisconnect); this.varManager.GetVar(VarManager.Names.CircularDeadzone, out m_circularDeadzone); this.varManager.GetVar(VarManager.Names.UseXimApiMouseMath, out m_useXimApiMouseMath); this.varManager.GetVar(VarManager.Names.DiagonalDampen, out m_diagonalDampen); this.varManager.GetVar(VarManager.Names.CurrentGame, out m_currentGame); this.varManager.GetVar(VarManager.Names.MouseStickX, out m_mouseStickX); this.varManager.GetVar(VarManager.Names.MouseStickY, out m_mouseStickY); this.varManager.GetVar(VarManager.Names.InvertY, out m_inverty); this.varManager.GetVar(VarManager.Names.MouseDPI, out m_mouseDpi); this.varManager.GetVar(VarManager.Names.DrivingMode, out m_drivingMode); }
public GameSettings GetGameSettings(GamesManager.Games game) { GameSettings settings; gameSettings.TryGetValue(game, out settings); return settings; }
private void CalcDiag(Vector2 mouseDelta, GamesManager.GameSettings gs) { if (gs.DiagonalCoeff != 0) { double newLength = mouseDelta.Length; Vector2 absDelta = new Vector2(Math.Abs(mouseDelta.X), Math.Abs(mouseDelta.Y)); absDelta.Cap(0, (double)Xim.Stick.Max); double association = 0; if (absDelta.X > absDelta.Y) { association = absDelta.Y / absDelta.X; if (association != 0 && !Double.IsNaN(association) && !Double.IsInfinity(association)) { mouseDelta.Y = mouseDelta.Y + mouseDelta.Y * (0.1 - association / 10) * gs.DiagonalCoeff * (newLength / (double)Xim.Stick.Max); mouseDelta.Scale(1 - ((newLength / (double)Xim.Stick.Max) * association * gs.DiagonalCoeff)); } } else { association = absDelta.X / absDelta.Y; if (association != 0 && !Double.IsNaN(association) && !Double.IsInfinity(association)) { mouseDelta.X = mouseDelta.X + mouseDelta.X * (0.1 - association / 10) * gs.DiagonalCoeff * (newLength / (double)Xim.Stick.Max); mouseDelta.Scale(1 - ((newLength / (double)Xim.Stick.Max) * association * gs.DiagonalCoeff)); } } } }
private void CalcDelta(Vector2 mouseDelta, GamesManager.GameSettings gs) { Vector2 mouseDeltaCopy = new Vector2(mouseDelta); mouseDelta.X = gs.XAxis.CalcOutputDelta(mouseDeltaCopy.X, mouseDeltaCopy.Y); mouseDelta.Y = gs.YAxis.CalcOutputDelta(mouseDeltaCopy.Y, mouseDeltaCopy.X); }
private void CalcAveraging(Vector2 mouseDelta, GamesManager.GameSettings gs) { mouseDelta.X = (mouseDelta.X + lastFrame.X * gs.Smoothing) / (1 + gs.Smoothing); mouseDelta.Y = (mouseDelta.Y + lastFrame.Y * gs.Smoothing) / (1 + gs.Smoothing); this.lastFrame = mouseDelta; }
private static Vector2 CalcDeadzone(Vector2 mouseDelta, GamesManager.GameSettings gs) { Vector2 deadzone = null; if (gs.Circular) { deadzone = new Vector2(mouseDelta.X, mouseDelta.Y); deadzone.Normalize(); deadzone.Scale(gs.Deadzone); } else { deadzone = new Vector2(gs.Deadzone * Math.Sign(mouseDelta.X), gs.Deadzone * Math.Sign(mouseDelta.Y)); } return deadzone; }