Browse Source

Merge pull request #1478 from AtomicGameEngine/JME-ATOMIC-SCENERESOURCES

[C#] Better scene resource management
JoshEngebretson 8 years ago
parent
commit
082a125614

+ 1 - 1
Script/AtomicNET/AtomicNET/Core/NativeCore.cs

@@ -226,7 +226,7 @@ namespace AtomicEngine
 
         }
 
-        static void ExpireNatives()
+        internal static void ExpireNatives()
         {
             var watch = new Stopwatch();
             watch.Start();

+ 5 - 0
Script/AtomicNET/AtomicNET/Player/Player.cs

@@ -28,6 +28,11 @@ namespace AtomicPlayer
             {
                 if (loadedScenes.Contains(e.Scene))
                     loadedScenes.Remove(e.Scene);
+
+                GC.Collect();
+                GC.WaitForPendingFinalizers();
+                NativeCore.ExpireNatives();                
+
             });
 
         }

+ 6 - 0
Source/Atomic/UI/SystemUI/DebugHud.cpp

@@ -277,6 +277,12 @@ void DebugHud::SetProfilerMode(DebugHudProfileMode mode)
 
         if (!metrics)
             size = 32;
+        else
+        {
+            // Enable metrics immediately
+            if (!metrics->GetEnabled())
+                metrics->Enable();
+        }
 
         if (profilerText_.NotNull())
         {

+ 10 - 0
Source/Atomic/UI/UI.cpp

@@ -946,6 +946,16 @@ void UI::SetDebugHudProfileMode(DebugHudProfileMode mode)
     hud->SetProfilerMode(mode);
 }
 
+void UI::SetDebugHudRefreshInterval(float seconds)
+{
+    SystemUI::DebugHud* hud = GetSubsystem<SystemUI::DebugHud>();
+
+    if (!hud)
+        return;
+
+    hud->SetProfilerInterval(seconds);
+}
+
 void UI::ShowConsole(bool value)
 {
     SystemUI::Console* console = GetSubsystem<SystemUI::Console>();

+ 3 - 0
Source/Atomic/UI/UI.h

@@ -107,6 +107,9 @@ public:
 
     void SetDebugHudExtents(bool useRootExtents = true, const IntVector2& position = IntVector2::ZERO, const IntVector2& size = IntVector2::ZERO);
 
+    /// Set the DebugHud refresh interval for performance and metrics in seconds
+    void SetDebugHudRefreshInterval(float seconds);
+
     void ShowConsole(bool value);
     void ToggleConsole();