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).
File last commit:
Show/Diff file:
Action:
FNA/src/Input/TextInputEXT.cs
67 lines | 1.5 KiB | text/x-csharp | CSharpLexer
Early working version (including all dependencies, lol).
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;
#endregion
namespace Microsoft.Xna.Framework.Input
{
public static class TextInputEXT
{
#region Event
/// <summary>
/// Use this event to retrieve text for objects like textboxes.
/// This event is not raised by noncharacter keys.
/// This event also supports key repeat.
/// For more information this event is based off:
/// http://msdn.microsoft.com/en-AU/library/system.windows.forms.control.keypress.aspx
/// </summary>
public static event Action<char> TextInput;
#endregion
#region Public Static Methods
public static void StartTextInput()
{
FNAPlatform.StartTextInput();
}
public static void StopTextInput()
{
FNAPlatform.StopTextInput();
}
/// <summary>
/// Sets the location within the game window where the text input is located.
/// This is used to set the location of the IME suggestions
/// </summary>
/// <param name="rectangle">Text input location relative to GameWindow.ClientBounds</param>
public static void SetInputRectangle(Rectangle rectangle)
{
FNAPlatform.SetTextInputRectangle(rectangle);
}
#endregion
#region Internal Event Access Method
internal static void OnTextInput(char c)
{
if (TextInput != null)
{
TextInput(c);
}
}
#endregion
}
}