GameKit on Windows

GameKit updated for Windows and Mac with latest Rive Renderer.
- [x] Cleanup Windows includes
- [ ] Add image decoding from Flutter so procedural rendering can draw images.

I want to do the first one before submitting the PR and push the image decoding to a new PR. We can even start integrating it into the editor without that right now.

Diffs=
e96739328 GameKit on Windows (#7150)

Co-authored-by: Luigi Rosso <luigi-rosso@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head
index 1b876f8..6f48914 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-1c7e61b8a075b2eaacbcce4f5438d6072b30e420
+e96739328b7eb82870c5a642f6e3213c7b423d51
diff --git a/build/rive_build_config.lua b/build/rive_build_config.lua
index 49fa644..84993ee 100644
--- a/build/rive_build_config.lua
+++ b/build/rive_build_config.lua
@@ -130,10 +130,36 @@
     linkoptions({ '-flto=full' })
 end
 
-filter('system:windows')
+newoption({
+    trigger = 'use_default_runtime',
+    description = 'Don\'t set windows static runtime and runtime values.',
+})
+
+newoption({
+    trigger = 'runtime',
+    description = 'Choose whether to use staticruntime on/off/default',
+    allowed = {
+        { 'default', 'Use default runtime' },
+        { 'static', 'Use static runtime' },
+        { 'dynamic', 'Use dynamic runtime' },
+    },
+    default = 'static',
+})
+
+filter({ 'system:windows', 'options:runtime=static' })
 do
     staticruntime('on') -- Match Skia's /MT flag for link compatibility
     runtime('Release') -- Use /MT even in debug (/MTd is incompatible with Skia)
+end
+
+filter({ 'system:windows', 'options:runtime=dynamic' })
+do
+    staticruntime('off')
+    runtime('Release')
+end
+
+filter('system:windows')
+do
     architecture('x64')
     defines({ '_USE_MATH_DEFINES', 'NOMINMAX' })
 end
diff --git a/include/rive/artboard.hpp b/include/rive/artboard.hpp
index ba4ae11..69a339d 100644
--- a/include/rive/artboard.hpp
+++ b/include/rive/artboard.hpp
@@ -101,8 +101,8 @@
     void onDirty(ComponentDirt dirt) override;
 
     bool advance(double elapsedSeconds);
-    bool hasChangedDrawOrderInLastUpdate() { return m_HasChangedDrawOrderInLastUpdate; };
-    Drawable* firstDrawable() { return m_FirstDrawable; };
+    bool hasChangedDrawOrderInLastUpdate() { return m_HasChangedDrawOrderInLastUpdate; }
+    Drawable* firstDrawable() { return m_FirstDrawable; }
 
     enum class DrawOption
     {
diff --git a/src/animation/state_machine_instance.cpp b/src/animation/state_machine_instance.cpp
index 9434dd4..1719bbe 100644
--- a/src/animation/state_machine_instance.cpp
+++ b/src/animation/state_machine_instance.cpp
@@ -392,7 +392,7 @@
     HitComponent(Component* component, StateMachineInstance* stateMachineInstance) :
         m_component(component), m_stateMachineInstance(stateMachineInstance)
     {}
-    virtual ~HitComponent(){};
+    virtual ~HitComponent() {}
     virtual HitResult processEvent(Vec2D position, ListenerType hitType, bool canHit) = 0;
 
 protected:
@@ -409,7 +409,6 @@
     HitShape(Component* shape, StateMachineInstance* stateMachineInstance) :
         HitComponent(shape, stateMachineInstance)
     {}
-    ~HitShape() {}
     bool isHovered = false;
     float hitRadius = 2;
     std::vector<const StateMachineListener*> listeners;
@@ -459,7 +458,7 @@
     HitNestedArtboard(Component* nestedArtboard, StateMachineInstance* stateMachineInstance) :
         HitComponent(nestedArtboard, stateMachineInstance)
     {}
-    ~HitNestedArtboard() {}
+    ~HitNestedArtboard() override {}
     HitResult processEvent(Vec2D position, ListenerType hitType, bool canHit) override
     {
         auto nestedArtboard = m_component->as<NestedArtboard>();