forked from 0ad/0ad
Move template items GetRetainInFog and AlwaysVisible from Vision to Visibility.
Refs #2913 This was SVN commit r16022.
This commit is contained in:
parent
0df90c5c2b
commit
b05879e151
@ -5,7 +5,12 @@ const VIS_VISIBLE = 2;
|
||||
function Visibility() {}
|
||||
|
||||
Visibility.prototype.Schema =
|
||||
"<empty/>";
|
||||
"<element name='RetainInFog'>" +
|
||||
"<data type='boolean'/>" +
|
||||
"</element>" +
|
||||
"<element name='AlwaysVisible'>" +
|
||||
"<data type='boolean'/>" +
|
||||
"</element>";
|
||||
|
||||
Visibility.prototype.Init = function()
|
||||
{
|
||||
@ -29,8 +34,7 @@ Visibility.prototype.GetLosVisibility = function(player, isOutsideFog, forceReta
|
||||
}
|
||||
|
||||
// Fogged if the 'retain in fog' flag is set, and in a non-visible explored region
|
||||
var cmpVision = Engine.QueryInterface(this.entity, IID_Vision);
|
||||
if (!forceRetainInFog && !(cmpVision && cmpVision.GetRetainInFog()))
|
||||
if (!forceRetainInFog && !this.GetRetainInFog())
|
||||
return VIS_HIDDEN;
|
||||
|
||||
var cmpMirage = Engine.QueryInterface(this.entity, IID_Mirage);
|
||||
@ -62,4 +66,14 @@ Visibility.prototype.GetLosVisibility = function(player, isOutsideFog, forceReta
|
||||
return VIS_HIDDEN;
|
||||
};
|
||||
|
||||
Visibility.prototype.GetRetainInFog = function()
|
||||
{
|
||||
return this.template.RetainInFog == "true";
|
||||
};
|
||||
|
||||
Visibility.prototype.GetAlwaysVisible = function()
|
||||
{
|
||||
return this.template.AlwaysVisible == "true";
|
||||
};
|
||||
|
||||
Engine.RegisterComponentType(IID_Visibility, "Visibility", Visibility);
|
||||
|
@ -33,8 +33,10 @@
|
||||
</Texture>
|
||||
</Overlay>
|
||||
</Selectable>
|
||||
<Vision>
|
||||
<Visibility>
|
||||
<RetainInFog>false</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>100</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
|
@ -38,9 +38,11 @@
|
||||
<StatusBars>
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/bench_1.xml</Actor>
|
||||
|
@ -25,9 +25,11 @@
|
||||
<Selectable>
|
||||
<EditorOnly/>
|
||||
</Selectable>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>72</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/bridge_edge_hele.xml</Actor>
|
||||
|
@ -25,9 +25,11 @@
|
||||
<Selectable>
|
||||
<EditorOnly/>
|
||||
</Selectable>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>72</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/bridge_edge_wooden.xml</Actor>
|
||||
|
@ -35,9 +35,11 @@
|
||||
<StatusBars>
|
||||
<HeightOffset>8.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/column_doric.xml</Actor>
|
||||
|
@ -35,9 +35,11 @@
|
||||
<StatusBars>
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/column_doric_fallen.xml</Actor>
|
||||
|
@ -35,9 +35,11 @@
|
||||
<StatusBars>
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/column_doric_fallen_b.xml</Actor>
|
||||
|
@ -39,9 +39,11 @@
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>temp/fence_wood_long_a.xml</Actor>
|
||||
|
@ -39,9 +39,11 @@
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>temp/fence_wood_short_a.xml</Actor>
|
||||
|
@ -36,9 +36,11 @@
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/fence_stone_medit.xml</Actor>
|
||||
|
@ -43,9 +43,11 @@
|
||||
<Radius>40</Radius>
|
||||
<Weight>65536</Weight>
|
||||
</TerritoryInfluence>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>20</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>structures/hellenes/propylaea.xml</Actor>
|
||||
|
@ -56,9 +56,11 @@
|
||||
units/thrace_black_cloak
|
||||
</Entities>
|
||||
</ProductionQueue>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>special/greek_stoa_great.xml</Actor>
|
||||
|
@ -44,9 +44,11 @@
|
||||
<Radius>36</Radius>
|
||||
<Weight>65536</Weight>
|
||||
</TerritoryInfluence>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>special/greek_stoa.xml</Actor>
|
||||
|
@ -34,9 +34,11 @@
|
||||
<Static width="4.0" depth="4.0"/>
|
||||
</Obstruction>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>12</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/obelisk.xml</Actor>
|
||||
|
@ -36,9 +36,11 @@
|
||||
<BarHeight>0.6</BarHeight>
|
||||
<HeightOffset>12.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>72</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>special/pyramid.xml</Actor>
|
||||
|
@ -30,9 +30,11 @@
|
||||
<BarHeight>0.6</BarHeight>
|
||||
<HeightOffset>12.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>special/pyramid_minor.xml</Actor>
|
||||
|
@ -39,9 +39,11 @@
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/table_rectangle.xml</Actor>
|
||||
|
@ -39,9 +39,11 @@
|
||||
<HeightOffset>6.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<TerritoryDecay disable=""/>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>4</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/table_square.xml</Actor>
|
||||
|
@ -27,9 +27,11 @@
|
||||
<BarHeight>0.6</BarHeight>
|
||||
<HeightOffset>12.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>props/special/eyecandy/greek_temple_unfinished.xml</Actor>
|
||||
|
@ -6,11 +6,12 @@
|
||||
<Floating>false</Floating>
|
||||
<TurnRate>6.0</TurnRate>
|
||||
</Position>
|
||||
<Visibility/>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>(should be overridden)</Actor>
|
||||
|
@ -24,9 +24,9 @@
|
||||
<Selectable>
|
||||
<EditorOnly/>
|
||||
</Selectable>
|
||||
<Vision>
|
||||
<Visibility>
|
||||
<AlwaysVisible>true</AlwaysVisible>
|
||||
</Vision>
|
||||
</Visibility>
|
||||
<VisualActor>
|
||||
<Actor>props/special/common/marker_object_sound.xml</Actor>
|
||||
</VisualActor>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<VisualActor>
|
||||
<Actor>props/special/common/waypoint_flag.xml</Actor>
|
||||
</VisualActor>
|
||||
<Vision>
|
||||
<Visibility>
|
||||
<AlwaysVisible>true</AlwaysVisible>
|
||||
</Vision>
|
||||
</Visibility>
|
||||
</Entity>
|
||||
|
@ -26,9 +26,11 @@
|
||||
<TerritoryInfluence>
|
||||
<Radius>100</Radius>
|
||||
</TerritoryInfluence>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>72</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<FoundationActor>structures/fndn_8x8.xml</FoundationActor>
|
||||
|
@ -20,11 +20,12 @@
|
||||
<BarHeight>0.333</BarHeight>
|
||||
<HeightOffset>5.0</HeightOffset>
|
||||
</StatusBars>
|
||||
<Visibility/>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<SilhouetteDisplay>false</SilhouetteDisplay>
|
||||
|
@ -12,10 +12,12 @@
|
||||
<Floating>false</Floating>
|
||||
<TurnRate>6.0</TurnRate>
|
||||
</Position>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<Actor>structures/rubble_stone_3x3.xml</Actor>
|
||||
|
@ -101,11 +101,12 @@
|
||||
<TerritoryDecay>
|
||||
<HealthDecayRate>5</HealthDecayRate>
|
||||
</TerritoryDecay>
|
||||
<Visibility/>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>40</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<ConstructionPreview/>
|
||||
|
@ -26,9 +26,11 @@
|
||||
</Obstruction>
|
||||
<OverlayRenderer/>
|
||||
<Settlement/>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
</Entity>
|
||||
|
@ -75,9 +75,11 @@
|
||||
<Radius>100</Radius>
|
||||
<Weight>65536</Weight>
|
||||
</TerritoryInfluence>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>72</Range>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<FoundationActor>structures/fndn_6x6.xml</FoundationActor>
|
||||
|
@ -104,11 +104,12 @@
|
||||
<PassabilityClass>default</PassabilityClass>
|
||||
<CostClass>default</CostClass>
|
||||
</UnitMotion>
|
||||
<Visibility/>
|
||||
<Vision>
|
||||
<Range>10</Range>
|
||||
<Visibility>
|
||||
<RetainInFog>false</RetainInFog>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>10</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<SilhouetteDisplay>true</SilhouetteDisplay>
|
||||
|
@ -38,8 +38,10 @@
|
||||
<Speed>15.0</Speed>
|
||||
</Run>
|
||||
</UnitMotion>
|
||||
<Vision>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
|
@ -38,10 +38,12 @@
|
||||
<PassabilityClass>unrestricted</PassabilityClass>
|
||||
<CostClass>default</CostClass>
|
||||
</UnitMotion>
|
||||
<Vision>
|
||||
<Visibility>
|
||||
<RetainInFog>true</RetainInFog>
|
||||
<Range>0</Range>
|
||||
<AlwaysVisible>false</AlwaysVisible>
|
||||
</Visibility>
|
||||
<Vision>
|
||||
<Range>0</Range>
|
||||
</Vision>
|
||||
<VisualActor>
|
||||
<SilhouetteDisplay>false</SilhouetteDisplay>
|
||||
|
@ -381,7 +381,7 @@ void CTemplateLoader::CopyPreviewSubset(CParamNode& out, const CParamNode& in, b
|
||||
CParamNode::LoadXMLString(out, "<Entity><VisualActor><DisableShadows/></VisualActor></Entity>");
|
||||
|
||||
// Previews should always be visible in fog-of-war/etc
|
||||
CParamNode::LoadXMLString(out, "<Entity><Vision><Range>0</Range><RetainInFog>false</RetainInFog><AlwaysVisible>true</AlwaysVisible></Vision></Entity>");
|
||||
CParamNode::LoadXMLString(out, "<Entity><Visibility><RetainInFog>false</RetainInFog><AlwaysVisible>true</AlwaysVisible></Visibility></Entity>");
|
||||
}
|
||||
|
||||
if (corpse)
|
||||
@ -395,7 +395,7 @@ void CTemplateLoader::CopyPreviewSubset(CParamNode& out, const CParamNode& in, b
|
||||
CParamNode::LoadXMLString(out, "<Entity><VisualActor><SilhouetteDisplay>false</SilhouetteDisplay></VisualActor></Entity>");
|
||||
|
||||
// Corpses should remain visible in fog-of-war
|
||||
CParamNode::LoadXMLString(out, "<Entity><Vision><Range>0</Range><RetainInFog>true</RetainInFog><AlwaysVisible>false</AlwaysVisible></Vision></Entity>");
|
||||
CParamNode::LoadXMLString(out, "<Entity><Visibility><RetainInFog>true</RetainInFog><AlwaysVisible>false</AlwaysVisible></Visibility></Entity>");
|
||||
}
|
||||
}
|
||||
|
||||
@ -409,7 +409,6 @@ void CTemplateLoader::CopyMirageSubset(CParamNode& out, const CParamNode& in)
|
||||
permittedComponentTypes.insert("Ownership");
|
||||
permittedComponentTypes.insert("Position");
|
||||
permittedComponentTypes.insert("Selectable");
|
||||
permittedComponentTypes.insert("Visibility");
|
||||
permittedComponentTypes.insert("VisualActor");
|
||||
|
||||
CParamNode::LoadXMLString(out, "<Entity/>");
|
||||
@ -431,7 +430,7 @@ void CTemplateLoader::CopyMirageSubset(CParamNode& out, const CParamNode& in)
|
||||
|
||||
// Set the entity as mirage entity
|
||||
CParamNode::LoadXMLString(out, "<Entity><Mirage/></Entity>");
|
||||
CParamNode::LoadXMLString(out, "<Entity><Vision><Range>0</Range><RetainInFog>true</RetainInFog><AlwaysVisible>false</AlwaysVisible></Vision></Entity>");
|
||||
CParamNode::LoadXMLString(out, "<Entity><Visibility><RetainInFog>true</RetainInFog><AlwaysVisible>false</AlwaysVisible></Visibility></Entity>");
|
||||
}
|
||||
|
||||
void CTemplateLoader::CopyFoundationSubset(CParamNode& out, const CParamNode& in)
|
||||
|
@ -417,10 +417,10 @@ public:
|
||||
// Store the LOS data, if any
|
||||
CmpPtr<ICmpVision> cmpVision(GetSimContext(), ent);
|
||||
if (cmpVision)
|
||||
{
|
||||
entdata.visionRange = cmpVision->GetRange();
|
||||
entdata.retainInFog = (cmpVision->GetRetainInFog() ? 1 : 0);
|
||||
}
|
||||
CmpPtr<ICmpVisibility> cmpVisibility(GetSimContext(), ent);
|
||||
if (cmpVisibility)
|
||||
entdata.retainInFog = (cmpVisibility->GetRetainInFog() ? 1 : 0);
|
||||
|
||||
// Remember this entity
|
||||
m_EntityData.insert(ent, entdata);
|
||||
|
@ -25,7 +25,7 @@
|
||||
#include "ICmpPosition.h"
|
||||
#include "ICmpRangeManager.h"
|
||||
#include "ICmpSelectable.h"
|
||||
#include "ICmpVision.h"
|
||||
#include "ICmpVisibility.h"
|
||||
|
||||
#include "graphics/Frustum.h"
|
||||
#include "graphics/ModelAbstract.h"
|
||||
@ -388,8 +388,8 @@ void CCmpUnitRenderer::UpdateVisibility(SUnit& unit)
|
||||
{
|
||||
// The 'always visible' flag means we should always render the unit
|
||||
// (regardless of whether the LOS system thinks it's visible)
|
||||
CmpPtr<ICmpVision> cmpVision(unit.entity);
|
||||
if (cmpVision && cmpVision->GetAlwaysVisible())
|
||||
CmpPtr<ICmpVisibility> cmpVisibility(unit.entity);
|
||||
if (cmpVisibility && cmpVisibility->GetAlwaysVisible())
|
||||
unit.visibility = ICmpRangeManager::VIS_VISIBLE;
|
||||
else
|
||||
{
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2012 Wildfire Games.
|
||||
/* Copyright (C) 2014 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -38,28 +38,18 @@ public:
|
||||
// Template state:
|
||||
|
||||
entity_pos_t m_Range, m_BaseRange;
|
||||
bool m_RetainInFog;
|
||||
bool m_AlwaysVisible;
|
||||
|
||||
static std::string GetSchema()
|
||||
{
|
||||
return
|
||||
"<element name='Range'>"
|
||||
"<data type='nonNegativeInteger'/>"
|
||||
"</element>"
|
||||
"<element name='RetainInFog'>"
|
||||
"<data type='boolean'/>"
|
||||
"</element>"
|
||||
"<element name='AlwaysVisible'>"
|
||||
"<data type='boolean'/>"
|
||||
"</element>";
|
||||
}
|
||||
|
||||
virtual void Init(const CParamNode& paramNode)
|
||||
{
|
||||
m_BaseRange = m_Range = paramNode.GetChild("Range").ToFixed();
|
||||
m_RetainInFog = paramNode.GetChild("RetainInFog").ToBool();
|
||||
m_AlwaysVisible = paramNode.GetChild("AlwaysVisible").ToBool();
|
||||
}
|
||||
|
||||
virtual void Deinit()
|
||||
@ -105,16 +95,6 @@ public:
|
||||
{
|
||||
return m_Range;
|
||||
}
|
||||
|
||||
virtual bool GetRetainInFog()
|
||||
{
|
||||
return m_RetainInFog;
|
||||
}
|
||||
|
||||
virtual bool GetAlwaysVisible()
|
||||
{
|
||||
return m_AlwaysVisible;
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_COMPONENT_TYPE(Vision)
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "ICmpTerrain.h"
|
||||
#include "ICmpUnitMotion.h"
|
||||
#include "ICmpValueModificationManager.h"
|
||||
#include "ICmpVision.h"
|
||||
#include "ICmpVisibility.h"
|
||||
|
||||
#include "graphics/Decal.h"
|
||||
#include "graphics/Frustum.h"
|
||||
@ -562,8 +562,8 @@ void CCmpVisualActor::InitModel(const CParamNode& paramNode)
|
||||
if (paramNode.GetChild("SilhouetteOccluder").ToBool())
|
||||
modelFlags |= MODELFLAG_SILHOUETTE_OCCLUDER;
|
||||
|
||||
CmpPtr<ICmpVision> cmpVision(GetEntityHandle());
|
||||
if (cmpVision && cmpVision->GetAlwaysVisible())
|
||||
CmpPtr<ICmpVisibility> cmpVisibility(GetEntityHandle());
|
||||
if (cmpVisibility && cmpVisibility->GetAlwaysVisible())
|
||||
modelFlags |= MODELFLAG_IGNORE_LOS;
|
||||
|
||||
model.ToCModel()->AddFlagsRec(modelFlags);
|
||||
|
@ -47,6 +47,16 @@ public:
|
||||
return ICmpRangeManager::VIS_HIDDEN;
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool GetRetainInFog()
|
||||
{
|
||||
return m_Script.Call<bool>("GetRetainInFog");
|
||||
}
|
||||
|
||||
virtual bool GetAlwaysVisible()
|
||||
{
|
||||
return m_Script.Call<bool>("GetAlwaysVisible");
|
||||
}
|
||||
};
|
||||
|
||||
REGISTER_COMPONENT_SCRIPT_WRAPPER(VisibilityScripted)
|
||||
|
@ -27,6 +27,10 @@ class ICmpVisibility : public IComponent
|
||||
public:
|
||||
virtual ICmpRangeManager::ELosVisibility GetLosVisibility(player_id_t player, bool isOutsideFog, bool forceRetainInFog) = 0;
|
||||
|
||||
virtual bool GetRetainInFog() = 0;
|
||||
|
||||
virtual bool GetAlwaysVisible() = 0;
|
||||
|
||||
DECLARE_INTERFACE_TYPE(Visibility)
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2010 Wildfire Games.
|
||||
/* Copyright (C) 2014 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -23,6 +23,4 @@
|
||||
|
||||
BEGIN_INTERFACE_WRAPPER(Vision)
|
||||
DEFINE_INTERFACE_METHOD_0("GetRange", entity_pos_t, ICmpVision, GetRange)
|
||||
DEFINE_INTERFACE_METHOD_0("GetRetainInFog", bool, ICmpVision, GetRetainInFog)
|
||||
DEFINE_INTERFACE_METHOD_0("GetAlwaysVisible", bool, ICmpVision, GetAlwaysVisible)
|
||||
END_INTERFACE_WRAPPER(Vision)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2010 Wildfire Games.
|
||||
/* Copyright (C) 2014 Wildfire Games.
|
||||
* This file is part of 0 A.D.
|
||||
*
|
||||
* 0 A.D. is free software: you can redistribute it and/or modify
|
||||
@ -23,17 +23,13 @@
|
||||
#include "simulation2/helpers/Position.h"
|
||||
|
||||
/**
|
||||
* Vision (LOS etc) interface (typically implemented by a scripted component).
|
||||
* Vision range interface
|
||||
*/
|
||||
class ICmpVision : public IComponent
|
||||
{
|
||||
public:
|
||||
virtual entity_pos_t GetRange() = 0;
|
||||
|
||||
virtual bool GetRetainInFog() = 0;
|
||||
|
||||
virtual bool GetAlwaysVisible() = 0;
|
||||
|
||||
DECLARE_INTERFACE_TYPE(Vision)
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user