Ultraviolet Versions Save

The Ultraviolet Framework is a .NET game development framework written in C#.

v2023.07.0.2

9 months ago

What's Changed

  • Upgraded projects to .NET Core 6.0 for both Desktop(net6.0) and Android(net6.0-android)
  • Dropped support for .NET Core 2
  • Dropped support for .NET Core 3
  • Dropped support for .NET Standard 2.0
  • Fixed bug in BASS audio backend which was causing a crash on Android
  • Fixed leak in ExpandingPool
  • Fixed shader compilation for GLES2
  • Support Byte4 vertex format in VertexDeclaration stride calculation
  • Restored FMOD binaries
  • Added new package Ultraviolet.Image to replace System.Drawing Bitmap

v2019.06

4 years ago

Miscellaneous

  • Support for the armeabi Android ABI has been dropped, since it's no longer supported by the Android SDK.

Input

  • Added the GetIsRelativeModeEnabled() and SetIsRelativeModeEnabled() methods to MouseDevice.
    • When the mouse is in relative mode, the cursor is hidden and the mouse will produce continuous motion events even if it is directly against the edge of the screen.
  • Added several methods to MouseDevice for setting the cursor's position:
    • WarpToWindow()
    • WarpToWindowCenter()
    • WarpToPrimaryWindow()
    • WarpToPrimaryWindowCenter()

v2019.05

4 years ago

Content

  • Metadata files are now correctly handled when they are loaded from a stream.

Graphics

  • FIX: Fixed a NullReferenceException when drawing text icons.
  • FIX: Always try to request a newer version of OpenGL if it is available.

Presentation

  • FIX: Fixed a NullReferenceException when using the system cursor.

ImGui

  • FIX: Ensure that the scissor test is properly enabled so that ImGui windows are properly clipped.

v2019.03.0.3902

5 years ago

Platform

  • Added the IsCursorVisible property to IUltravioletPlatform

v2019.03

5 years ago

Core

  • Ultraviolet's core timing logic can now be overridden if you want more control over your application's main loop.
    • A virtual method called CreateTimingLogic() has been added to the following classes:
      • UltravioletApplication
      • UltravioletActivity
      • UltravioletForm
    • Return a new instance of the IUltravioletTimingLogic interface from that method in order to control the timing of your Draw() and Update() calls. The UltravioletTimingLogic class is the default implementation of this interface which is used if CreateTimingLogic() is not overridden.

v2019.02

5 years ago

Graphics

  • FIX: Fixed a bug which could cause a System.OverflowException on some systems when altering window styles.

v2019.01

5 years ago

Presentation

  • FIX: Dependency property inheritance is now correctly implemented.
  • The TextElement.Font, TextElement.FontStyle, TextElement.Foreground, and TextElement.Background attached properties are now inherited.
  • The TextOptions.TextRenderingMode, TextOptions.TextScript, and TextOptions.TextLanguage attached properties are now inherited.
  • The FlowDirection dependency property is now inherited.

v2018.12

5 years ago

Core

  • There are now Xamarin.Mac Modern versions of all Ultraviolet assemblies, as well as corresponding NuGet packages. A new compatibility shim, Ultraviolet.Shims.macOSModern, has also been provided for this use case.

Graphics

  • Fixed a bug causing a crash on .NET Core 3.0 Preview.
  • The VertexFormat enumeration has been renamed to VertexElementFormat.
  • The VertexUsage enumeration has been renamed to VertexElementUsage.
  • Added the Name property to VertexElement. This property can be set using an optional parameter in the constructor. If specified, it will override the default name used for the vertex element in shaders.
  • Numerous fixes and improvements to text rendering.

Presentation

  • The TextEditor control now supports text shaping via the TextOptions.TextRenderingMode attached property.

v2018.10

5 years ago

Core

  • Added bidirectional implicit conversion operators between Vector2, Vector3, Vector4, Quaternion, Matrix, and their equivalent types from the System.Numerics.Vectors package.

UI

  • Added a new NuGet package, Ultraviolet.ImGuiViewProvider. This package, intended as a simpler alternative to Ultraviolet.Presentation, allows an Ultraviolet application to use the immediate-mode Dear ImGui library for constructing user interfaces.

Graphics

  • FIX: The SetData() methods on IndexBuffer and VertexBuffer now correctly support all valid types.
  • FIX: Fix for caching behavior in OpenGL effect parameters when using array types.
  • Made changes to the TextShaper API:
    • Removed GuessUnicodeProperties() method.
    • Removed Length property.
    • Added SetUnicodeProperties() method.
    • Added GetUnicodeProperties() method.
    • Added RawLength property.
  • Added SourceIndex property to ShapedChar structure.
  • Added SetRawData() method to Texture2D, Texture3D, VertexBuffer, IndexBuffer, and Surface2D classes.

v2018.08

5 years ago

General

  • NuGet packages for .NET Core 2.1 are now available.
    • Ultraviolet.Game.NETCore contains references to all other required assemblies.
    • Ultraviolet.Shims.NETCore contains the platform compatibility shim for .NET Core 2.1.
  • All Ultraviolet projects have been downgraded from .NET Framework 4.7 to 4.6.1 for increased compatibility.

Core

  • Reworked how the host core times its main loop for hopefully more consistent performance.
  • The Matrix structure has the following new methods:
    • CreateFromQuaternion()
    • CreateFromYawPitchRoll()
    • CreateFromTranslationRotationScale()

Presentation

  • The TextDirection attached property has been replaced with FlowDirection in order to conform more closely to the Windows Presentation Foundation API.
  • The TextIsShaped attached property has been replaced with the TextRenderingMode attached property.
  • The TextRenderingMode, TextScript, and TextLanguage attached properties have been moved into the TextOptions static class.
  • The TextBox and PasswordBox classes now support right-to-left flow.
  • The UVML <StyleSheet> element now supports the Languages attribute. This attribute contains a comma-delimited list of two-letter ISO language names. If specified, the style sheet will only be included in the view style if the current language is included in this list.
  • The UVML <StyleSheet> element now supports the Cultures attribute. This attribute contains a comma-delimited list of ISO culture names. If specified, the style sheet will only be included in the view style if the current culture is included in this list.