From 78764926f8d336d1c76986fbd68b1a441991ee97 Mon Sep 17 00:00:00 2001 From: wraitii Date: Tue, 12 Jan 2021 16:15:40 +0000 Subject: [PATCH] Fix 9fc6c3c897 - Set entity/template before deserializing. Following 9fc6c3c897, components Deserialize() was called before entity/template were set, which is incorrect. Refs #4698. Differential Revision: https://code.wildfiregames.com/D3337 This was SVN commit r24561. --- .../simulation/components/test-serialize.js | 12 +++++++++++- source/simulation2/scripting/ScriptComponent.cpp | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/binaries/data/mods/_test.sim/simulation/components/test-serialize.js b/binaries/data/mods/_test.sim/simulation/components/test-serialize.js index 6416eeed6b..9e572a58f2 100644 --- a/binaries/data/mods/_test.sim/simulation/components/test-serialize.js +++ b/binaries/data/mods/_test.sim/simulation/components/test-serialize.js @@ -87,8 +87,18 @@ function TestScript1_consts() {} TestScript1_consts.prototype.Schema = ""; +TestScript1_consts.prototype.Init = function() { + this.cached = (+this.entity) + (+this.template.x); +}; + +TestScript1_consts.prototype.Serialize = null; + +TestScript1_consts.prototype.Deserialize = function(data) { + this.Init(); +}; + TestScript1_consts.prototype.GetX = function() { - return (+this.entity) + (+this.template.x); + return this.cached; }; Engine.RegisterComponentType(IID_Test1, "TestScript1_consts", TestScript1_consts); diff --git a/source/simulation2/scripting/ScriptComponent.cpp b/source/simulation2/scripting/ScriptComponent.cpp index 8c349c4549..74b2d8b510 100644 --- a/source/simulation2/scripting/ScriptComponent.cpp +++ b/source/simulation2/scripting/ScriptComponent.cpp @@ -62,9 +62,8 @@ void CComponentTypeScript::Deserialize(const CParamNode& paramNode, IDeserialize { ScriptRequest rq(m_ScriptInterface); - deserialize.ScriptObjectAssign("comp", m_Instance); - m_ScriptInterface.SetProperty(m_Instance, "entity", (int)ent, true, false); m_ScriptInterface.SetProperty(m_Instance, "template", paramNode, true, false); + deserialize.ScriptObjectAssign("comp", m_Instance); }