From 0d09f290d99d742a12ca114aa5d5141957101701 Mon Sep 17 00:00:00 2001 From: leper Date: Thu, 2 May 2013 20:29:22 +0000 Subject: [PATCH] Allow setting rally points for foundations. Patch by Josh. Fixes #902. This was SVN commit r13390. --- .../public/simulation/components/Foundation.js | 16 ++++++++++++++++ .../components/CCmpTemplateManager.cpp | 2 ++ 2 files changed, 18 insertions(+) diff --git a/binaries/data/mods/public/simulation/components/Foundation.js b/binaries/data/mods/public/simulation/components/Foundation.js index 941f57fc76..9285a31437 100644 --- a/binaries/data/mods/public/simulation/components/Foundation.js +++ b/binaries/data/mods/public/simulation/components/Foundation.js @@ -279,6 +279,22 @@ Foundation.prototype.Build = function(builderEnt, work) cmpBuildingPosition.SetXZRotation(rot.x, rot.z); // TODO: should add a ICmpPosition::CopyFrom() instead of all this + var cmpRallyPoint = Engine.QueryInterface(this.entity, IID_RallyPoint); + var cmpBuildingRallyPoint = Engine.QueryInterface(building, IID_RallyPoint); + if(cmpRallyPoint && cmpBuildingRallyPoint) + { + var rallyCoords = cmpRallyPoint.GetPositions(); + var rallyData = cmpRallyPoint.GetData(); + var cmpBuildingRallyPointRenderer = Engine.QueryInterface(building, IID_RallyPointRenderer); + for (var i = 0; i < rallyCoords.length; ++i) + { + cmpBuildingRallyPoint.AddPosition(rallyCoords[i].x, rallyCoords[i].z); + cmpBuildingRallyPoint.AddData(rallyData[i]); + if (cmpBuildingRallyPointRenderer) + cmpBuildingRallyPointRenderer.AddPosition({'x': rallyCoords[i].x, 'y': rallyCoords[i].z}); + } + } + // ---------------------------------------------------------------------- var cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); diff --git a/source/simulation2/components/CCmpTemplateManager.cpp b/source/simulation2/components/CCmpTemplateManager.cpp index e87e6a4430..9797813f2c 100644 --- a/source/simulation2/components/CCmpTemplateManager.cpp +++ b/source/simulation2/components/CCmpTemplateManager.cpp @@ -566,6 +566,8 @@ void CCmpTemplateManager::CopyFoundationSubset(CParamNode& out, const CParamNode permittedComponentTypes.insert("Sound"); permittedComponentTypes.insert("Vision"); permittedComponentTypes.insert("AIProxy"); + permittedComponentTypes.insert("RallyPoint"); + permittedComponentTypes.insert("RallyPointRenderer"); CParamNode::LoadXMLString(out, ""); out.CopyFilteredChildrenOfChild(in, "Entity", permittedComponentTypes);