feat: expand editor scripting asset and viewport flow

This commit is contained in:
2026-04-03 13:22:30 +08:00
parent ed8c27fde2
commit a05d0b80a2
124 changed files with 10397 additions and 1737 deletions

View File

@@ -19,9 +19,12 @@ class ScriptComponent;
class ScriptEngine {
public:
static ScriptEngine& Get();
static constexpr float DefaultFixedDeltaTime = 1.0f / 50.0f;
void SetRuntime(IScriptRuntime* runtime);
IScriptRuntime* GetRuntime() const { return m_runtime; }
void SetRuntimeFixedDeltaTime(float fixedDeltaTime);
float GetRuntimeFixedDeltaTime() const { return m_runtimeFixedDeltaTime; }
void OnRuntimeStart(Components::Scene* scene);
void OnRuntimeStop();
@@ -33,6 +36,7 @@ public:
void OnScriptComponentEnabled(ScriptComponent* component);
void OnScriptComponentDisabled(ScriptComponent* component);
void OnScriptComponentDestroyed(ScriptComponent* component);
void OnScriptComponentClassChanged(ScriptComponent* component);
bool IsRuntimeRunning() const { return m_runtimeRunning; }
Components::Scene* GetRuntimeScene() const { return m_runtimeScene; }
@@ -40,6 +44,9 @@ public:
bool HasTrackedScriptComponent(const ScriptComponent* component) const;
bool HasRuntimeInstance(const ScriptComponent* component) const;
size_t GetTrackedScriptCount() const { return m_scriptOrder.size(); }
bool TryGetAvailableScriptClasses(
std::vector<ScriptClassDescriptor>& outClasses,
const std::string& assemblyName = std::string()) const;
bool TrySetScriptFieldValue(
ScriptComponent* component,
const std::string& fieldName,
@@ -138,6 +145,7 @@ private:
IScriptRuntime* m_runtime = &m_nullRuntime;
Components::Scene* m_runtimeScene = nullptr;
bool m_runtimeRunning = false;
float m_runtimeFixedDeltaTime = DefaultFixedDeltaTime;
uint64_t m_runtimeSceneCreatedSubscription = 0;
std::unordered_map<ScriptInstanceKey, ScriptInstanceState, ScriptInstanceKeyHasher> m_scriptStates;