Fix missing game scripts types when starting editor from IDE with -skipCompile arg
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user