Show More
Commit Description:
Optimize PreserveCounts and only recalculate when needed....
Commit Description:
Optimize PreserveCounts and only recalculate when needed.
Previously would recalculate preservecounts every Update call (~1 per frame), which isn't necessary
when there's no tick. Might be some room to tweak, like doing these updates only when preserves change.
Some measurements: This takes about 30ms versus the .25 ms with no preserve (then like .0002ms).
When the map is filled up with preserve, about 35ms and 9ms. With a handful of
cells, it's more like 0.8ms (before JIT optimizes most of it away).
References:
File last commit:
Show/Diff file:
Action:
FNA/src/Input/Keyboard.cs
69 lines | 1.4 KiB | text/x-csharp | CSharpLexer
69 lines | 1.4 KiB | text/x-csharp | CSharpLexer
r0 | #region License | |||
/* FNA - XNA4 Reimplementation for Desktop Platforms | ||||
* Copyright 2009-2020 Ethan Lee and the MonoGame Team | ||||
* | ||||
* Released under the Microsoft Public License. | ||||
* See LICENSE for details. | ||||
*/ | ||||
#endregion | ||||
#region Using Statements | ||||
using System; | ||||
using System.Collections.Generic; | ||||
#endregion | ||||
namespace Microsoft.Xna.Framework.Input | ||||
{ | ||||
/// <summary> | ||||
/// Allows getting keystrokes from keyboard. | ||||
/// </summary> | ||||
public static class Keyboard | ||||
{ | ||||
#region Private Static Variables | ||||
static List<Keys> keys; | ||||
#endregion | ||||
#region Public Static Methods | ||||
/// <summary> | ||||
/// Returns the current keyboard state. | ||||
/// </summary> | ||||
/// <returns>Current keyboard state.</returns> | ||||
public static KeyboardState GetState() | ||||
{ | ||||
return new KeyboardState(keys); | ||||
} | ||||
/// <summary> | ||||
/// Returns the current keyboard state for a given player. | ||||
/// </summary> | ||||
/// <param name="playerIndex">Player index of the keyboard.</param> | ||||
/// <returns>Current keyboard state.</returns> | ||||
public static KeyboardState GetState(PlayerIndex playerIndex) | ||||
{ | ||||
return new KeyboardState(keys); | ||||
} | ||||
#endregion | ||||
#region Public Static FNA Extensions | ||||
public static Keys GetKeyFromScancodeEXT(Keys scancode) | ||||
{ | ||||
return FNAPlatform.GetKeyFromScancode(scancode); | ||||
} | ||||
#endregion | ||||
#region Internal Static Methods | ||||
internal static void SetKeys(List<Keys> newKeys) | ||||
{ | ||||
keys = newKeys; | ||||
} | ||||
#endregion | ||||
} | ||||
} | ||||