Fix missing game scripts types when starting editor from IDE with -skipCompile arg

This commit is contained in:
Wojtek Figat
2023-02-13 17:14:53 +01:00
parent cb83de4769
commit 19c24e2a4d
3 changed files with 25 additions and 0 deletions

View File

@@ -270,6 +270,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
{ {
ScriptsBuilder.ScriptsReload += OnScriptsReload; ScriptsBuilder.ScriptsReload += OnScriptsReload;
ScriptsBuilder.ScriptsReloadEnd += OnScriptsReloadEnd; ScriptsBuilder.ScriptsReloadEnd += OnScriptsReloadEnd;
ScriptsBuilder.ScriptsLoaded += OnScriptsLoaded;
Editor.Options.OptionsChanged += OnOptionsChanged; Editor.Options.OptionsChanged += OnOptionsChanged;
// Add default code editors (in-build) // Add default code editors (in-build)
@@ -340,6 +341,7 @@ namespace FlaxEditor.Modules.SourceCodeEditing
ScriptsBuilder.ScriptsReload -= OnScriptsReload; ScriptsBuilder.ScriptsReload -= OnScriptsReload;
ScriptsBuilder.ScriptsReloadEnd -= OnScriptsReloadEnd; ScriptsBuilder.ScriptsReloadEnd -= OnScriptsReloadEnd;
ScriptsBuilder.ScriptsLoaded -= OnScriptsLoaded;
} }
/// <summary> /// <summary>
@@ -375,6 +377,12 @@ namespace FlaxEditor.Modules.SourceCodeEditing
OnTypesChanged(); OnTypesChanged();
} }
private void OnScriptsLoaded()
{
// Clear any state with engine-only types
ClearTypes();
}
private static bool IsTypeValidScriptingType(ScriptType t) private static bool IsTypeValidScriptingType(ScriptType t)
{ {
return !t.IsGenericType && !t.IsAbstract && !t.HasAttribute(typeof(HideInEditorAttribute), false); return !t.IsGenericType && !t.IsAbstract && !t.HasAttribute(typeof(HideInEditorAttribute), false);

View File

@@ -37,6 +37,7 @@ enum class EventType
ReloadBegin = 5, ReloadBegin = 5,
Reload = 6, Reload = 6,
ReloadEnd = 7, ReloadEnd = 7,
ScriptsLoaded = 8,
}; };
struct EventData struct EventData
@@ -74,6 +75,7 @@ namespace ScriptsBuilderImpl
void onScriptsReloadStart(); void onScriptsReloadStart();
void onScriptsReload(); void onScriptsReload();
void onScriptsReloadEnd(); void onScriptsReloadEnd();
void onScriptsLoaded();
void GetClassName(const MString& fullname, MString& className); void GetClassName(const MString& fullname, MString& className);
@@ -203,6 +205,11 @@ void ScriptsBuilderImpl::onScriptsReloadEnd()
CallEvent(EventType::ReloadEnd); CallEvent(EventType::ReloadEnd);
} }
void ScriptsBuilderImpl::onScriptsLoaded()
{
CallEvent(EventType::ScriptsLoaded);
}
void ScriptsBuilder::Compile() void ScriptsBuilder::Compile()
{ {
ScopeLock scopeLock(_locker); ScopeLock scopeLock(_locker);
@@ -550,6 +557,7 @@ bool ScriptsBuilderService::Init()
Level::ScriptsReloadStart.Bind(onScriptsReloadStart); Level::ScriptsReloadStart.Bind(onScriptsReloadStart);
Level::ScriptsReload.Bind(onScriptsReload); Level::ScriptsReload.Bind(onScriptsReload);
Level::ScriptsReloadEnd.Bind(onScriptsReloadEnd); Level::ScriptsReloadEnd.Bind(onScriptsReloadEnd);
Scripting::ScriptsLoaded.Bind(onScriptsLoaded);
// Listen to code editors manager events // Listen to code editors manager events
CodeEditingManager::AsyncOpenBegin.Bind(onCodeEditorAsyncOpenBegin); CodeEditingManager::AsyncOpenBegin.Bind(onCodeEditorAsyncOpenBegin);

View File

@@ -66,6 +66,11 @@ namespace FlaxEditor
/// </summary> /// </summary>
public static event Action ScriptsReloadEnd; public static event Action ScriptsReloadEnd;
/// <summary>
/// Occurs when engine loads game scripts.
/// </summary>
public static event Action ScriptsLoaded;
/// <summary> /// <summary>
/// Occurs when code editor starts asynchronous open a file or a solution. /// Occurs when code editor starts asynchronous open a file or a solution.
/// </summary> /// </summary>
@@ -86,6 +91,7 @@ namespace FlaxEditor
ReloadBegin = 5, ReloadBegin = 5,
Reload = 6, Reload = 6,
ReloadEnd = 7, ReloadEnd = 7,
ScriptsLoaded = 8,
} }
internal static void Internal_OnEvent(EventType type) internal static void Internal_OnEvent(EventType type)
@@ -118,6 +124,9 @@ namespace FlaxEditor
case EventType.ReloadEnd: case EventType.ReloadEnd:
ScriptsReloadEnd?.Invoke(); ScriptsReloadEnd?.Invoke();
break; break;
case EventType.ScriptsLoaded:
ScriptsLoaded?.Invoke();
break;
} }
} }