Use only 1 script component per Entity

Serialization won't make sense if we allow two of the same component like that
This commit is contained in:
David Markowitz 2023-06-12 04:13:06 -07:00
parent f9ac0a9dec
commit d224a86e93
3 changed files with 7 additions and 5 deletions

View File

@ -269,11 +269,13 @@ void Entity::Initialize() {
AddComponent<PlayerForcedMovementComponent>();
break;
case eReplicaComponentType::SCRIPT: {
AddComponent<ScriptComponent>(ScriptComponent::GetScriptName(this, componentId));
std::string script;
if (m_TemplateID == LOT_ZONE_CONTROL) {
const auto zoneScript = ScriptComponent::GetZoneScriptName(componentId);
if (!zoneScript.empty()) AddComponent<ScriptComponent>(zoneScript);
script = ScriptComponent::GetZoneScriptName(componentId);
} else {
script = ScriptComponent::GetScriptName(this, componentId);
}
AddComponent<ScriptComponent>(script); // Technically this should check for if the script name is empty and not create a component if it is.
break;
}
case eReplicaComponentType::BOUNCER:

View File

@ -10,7 +10,7 @@
#include "CDZoneTableTable.h"
#include "dZoneManager.h"
ScriptComponent::ScriptComponent(Entity* parent, std::string scriptName) : Component(parent) {
ScriptComponent::ScriptComponent(Entity* parent, const std::string& scriptName) : Component(parent) {
SetScript(scriptName);
}

View File

@ -21,7 +21,7 @@ class ScriptComponent : public Component {
public:
inline static const eReplicaComponentType ComponentType = eReplicaComponentType::SCRIPT;
ScriptComponent(Entity* parent, std::string scriptName);
ScriptComponent(Entity* parent, const std::string& scriptName);
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags);