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

View File

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

View File

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