Completed work on exposing subsystems to scene events
This commit is contained in:
@@ -203,6 +203,8 @@ namespace Nuake
|
||||
managedObject.Destroy();
|
||||
}
|
||||
|
||||
onUninitializeDelegate.Broadcast();
|
||||
|
||||
Coral::GC::Collect();
|
||||
Coral::GC::WaitForPendingFinalizers();
|
||||
|
||||
@@ -331,15 +333,6 @@ namespace Nuake
|
||||
return widgetUUIDToManagedObjects[std::make_pair(canvasUUID, uuid)];
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void ScriptingEngineNet::AddListener(const T& delegate) {}
|
||||
|
||||
template <>
|
||||
void ScriptingEngineNet::AddListener<ScriptingEngineNet::GameAssemblyLoadedDelegate>(const GameAssemblyLoadedDelegate& delegate)
|
||||
{
|
||||
listenersGameAssemblyLoaded.push_back(delegate);
|
||||
}
|
||||
|
||||
std::vector<CompilationError> ScriptingEngineNet::BuildProjectAssembly(Ref<Project> project)
|
||||
{
|
||||
const std::string sanitizedProjectName = String::Sanitize(project->Name);
|
||||
@@ -541,10 +534,7 @@ namespace Nuake
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& delegate : listenersGameAssemblyLoaded)
|
||||
{
|
||||
delegate();
|
||||
}
|
||||
onGameAssemblyLoadedDelegate.Broadcast();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@ namespace Nuake
|
||||
{
|
||||
class Project;
|
||||
|
||||
DECLARE_MULTICAST_DELEGATE(OnGameAssemblyLoadedDelegate)
|
||||
DECLARE_MULTICAST_DELEGATE(OnUninitializeDelegate)
|
||||
|
||||
enum class ExposedVarTypes
|
||||
{
|
||||
Bool,
|
||||
@@ -115,8 +118,8 @@ namespace Nuake
|
||||
std::unordered_map<std::string, NetGameScriptObject> GetPointEntities() const { return pointEntityTypes; }
|
||||
std::unordered_map<std::string, UIWidgetObject> GetUIWidgets() const { return uiWidgets; }
|
||||
|
||||
template<class T> void AddListener(const T& delegate);
|
||||
template<> void AddListener(const GameAssemblyLoadedDelegate& delegate);
|
||||
OnGameAssemblyLoadedDelegate& OnUninitialize() { return onUninitializeDelegate; }
|
||||
OnUninitializeDelegate& OnGameAssemblyLoaded() { return onGameAssemblyLoadedDelegate; }
|
||||
|
||||
private:
|
||||
const std::string m_Scope = "Nuake.Net";
|
||||
@@ -149,7 +152,8 @@ namespace Nuake
|
||||
std::unordered_map<uint32_t, Coral::ManagedObject> entityToManagedObjects;
|
||||
std::map<std::pair<UUID, UUID>, Coral::ManagedObject> widgetUUIDToManagedObjects;
|
||||
|
||||
std::vector<GameAssemblyLoadedDelegate> listenersGameAssemblyLoaded;
|
||||
OnGameAssemblyLoadedDelegate onGameAssemblyLoadedDelegate;
|
||||
OnUninitializeDelegate onUninitializeDelegate;
|
||||
|
||||
ScriptingEngineNet();
|
||||
~ScriptingEngineNet();
|
||||
|
||||
Reference in New Issue
Block a user