From f7d2303fe0b6ca1198c23af7b8e1c809d803d142 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Mon, 17 Jun 2024 20:22:26 +1000 Subject: [PATCH] add Object::clientEntityMode, & read scripts from params Suggested by Bott --- source/game/StarObject.cpp | 8 +++++++- source/game/StarObject.hpp | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/source/game/StarObject.cpp b/source/game/StarObject.cpp index fe1f3f3..269181e 100644 --- a/source/game/StarObject.cpp +++ b/source/game/StarObject.cpp @@ -110,6 +110,8 @@ Object::Object(ObjectConfigConstPtr config, Json const& parameters) { m_netGroup.setNeedsLoadCallback(bind(&Object::getNetStates, this, _1)); m_netGroup.setNeedsStoreCallback(bind(&Object::setNetStates, this)); + + m_clientEntityMode = ClientEntityModeNames.getLeft(configValue("clientEntityMode", "ClientSlaveOnly").toString()); } Json Object::diskStore() const { @@ -127,6 +129,10 @@ EntityType Object::entityType() const { return EntityType::Object; } +ClientEntityMode Object::clientEntityMode() const { + return m_clientEntityMode; +} + void Object::init(World* world, EntityId entityId, EntityMode mode) { Entity::init(world, entityId, mode); // Only try and find a new orientation if we do not already have one, @@ -182,7 +188,7 @@ void Object::init(World* world, EntityId entityId, EntityMode mode) { setKeepAlive(configValue("keepAlive", false).toBool()); - m_scriptComponent.setScripts(m_config->scripts); + m_scriptComponent.setScripts(jsonToStringList(configValue("scripts", JsonArray()).toArray())); m_scriptComponent.setUpdateDelta(configValue("scriptDelta", 5).toInt()); m_scriptComponent.addCallbacks("object", makeObjectCallbacks()); diff --git a/source/game/StarObject.hpp b/source/game/StarObject.hpp index 6483a27..a797842 100644 --- a/source/game/StarObject.hpp +++ b/source/game/StarObject.hpp @@ -40,6 +40,7 @@ public: ByteArray netStore(); virtual EntityType entityType() const override; + virtual ClientEntityMode clientEntityMode() const override; virtual void init(World* world, EntityId entityId, EntityMode mode) override; virtual void uninit() override; @@ -267,6 +268,8 @@ private: NetElementHashMap m_scriptedAnimationParameters; NetElementData> m_damageSources; + + ClientEntityMode m_clientEntityMode; }; }