diff --git a/binaries/data/mods/public/simulation/components/Visibility.js b/binaries/data/mods/public/simulation/components/Visibility.js
index 7669e27243..ab8dc0fdd5 100644
--- a/binaries/data/mods/public/simulation/components/Visibility.js
+++ b/binaries/data/mods/public/simulation/components/Visibility.js
@@ -5,11 +5,16 @@ const VIS_VISIBLE = 2;
function Visibility() {}
Visibility.prototype.Schema =
- "";
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
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);
diff --git a/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml b/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
index 8285664067..19de685916 100644
--- a/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
+++ b/binaries/data/mods/public/simulation/templates/gaia/fauna_shark.xml
@@ -33,8 +33,10 @@
-
+
false
+
+
100
diff --git a/binaries/data/mods/public/simulation/templates/other/bench.xml b/binaries/data/mods/public/simulation/templates/other/bench.xml
index aa0a816355..4a0acb054f 100644
--- a/binaries/data/mods/public/simulation/templates/other/bench.xml
+++ b/binaries/data/mods/public/simulation/templates/other/bench.xml
@@ -38,9 +38,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/bench_1.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/bridge_hele.xml b/binaries/data/mods/public/simulation/templates/other/bridge_hele.xml
index 9dc4546f98..be4a00514b 100644
--- a/binaries/data/mods/public/simulation/templates/other/bridge_hele.xml
+++ b/binaries/data/mods/public/simulation/templates/other/bridge_hele.xml
@@ -25,9 +25,11 @@
+
+ true
+
72
- true
props/special/eyecandy/bridge_edge_hele.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/bridge_wooden.xml b/binaries/data/mods/public/simulation/templates/other/bridge_wooden.xml
index 006c053882..e68d157921 100644
--- a/binaries/data/mods/public/simulation/templates/other/bridge_wooden.xml
+++ b/binaries/data/mods/public/simulation/templates/other/bridge_wooden.xml
@@ -25,9 +25,11 @@
+
+ true
+
72
- true
props/special/eyecandy/bridge_edge_wooden.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/column_doric.xml b/binaries/data/mods/public/simulation/templates/other/column_doric.xml
index 10fa7d3561..388277cc84 100644
--- a/binaries/data/mods/public/simulation/templates/other/column_doric.xml
+++ b/binaries/data/mods/public/simulation/templates/other/column_doric.xml
@@ -35,9 +35,11 @@
8.0
+
+ true
+
4
- true
props/special/eyecandy/column_doric.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml b/binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
index ad270f7e43..3229e5e087 100644
--- a/binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
+++ b/binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
@@ -35,9 +35,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/column_doric_fallen.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml b/binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
index c1e1b65049..b42a5925ec 100644
--- a/binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
+++ b/binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
@@ -35,9 +35,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/column_doric_fallen_b.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/fence_long.xml b/binaries/data/mods/public/simulation/templates/other/fence_long.xml
index 674ae0aa71..784dfa0988 100644
--- a/binaries/data/mods/public/simulation/templates/other/fence_long.xml
+++ b/binaries/data/mods/public/simulation/templates/other/fence_long.xml
@@ -39,9 +39,11 @@
6.0
+
+ true
+
4
- true
temp/fence_wood_long_a.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/fence_short.xml b/binaries/data/mods/public/simulation/templates/other/fence_short.xml
index 8b754d0777..dd6fd013fd 100644
--- a/binaries/data/mods/public/simulation/templates/other/fence_short.xml
+++ b/binaries/data/mods/public/simulation/templates/other/fence_short.xml
@@ -39,9 +39,11 @@
6.0
+
+ true
+
4
- true
temp/fence_wood_short_a.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/fence_stone.xml b/binaries/data/mods/public/simulation/templates/other/fence_stone.xml
index 8e7ea6baa6..5a49902213 100644
--- a/binaries/data/mods/public/simulation/templates/other/fence_stone.xml
+++ b/binaries/data/mods/public/simulation/templates/other/fence_stone.xml
@@ -36,9 +36,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/fence_stone_medit.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/hellenic_propylaea.xml b/binaries/data/mods/public/simulation/templates/other/hellenic_propylaea.xml
index 21a3bf8491..dc200458e8 100644
--- a/binaries/data/mods/public/simulation/templates/other/hellenic_propylaea.xml
+++ b/binaries/data/mods/public/simulation/templates/other/hellenic_propylaea.xml
@@ -43,9 +43,11 @@
40
65536
+
+ true
+
20
- true
structures/hellenes/propylaea.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/hellenic_royal_stoa.xml b/binaries/data/mods/public/simulation/templates/other/hellenic_royal_stoa.xml
index 184a124a91..4d0de668f3 100644
--- a/binaries/data/mods/public/simulation/templates/other/hellenic_royal_stoa.xml
+++ b/binaries/data/mods/public/simulation/templates/other/hellenic_royal_stoa.xml
@@ -56,9 +56,11 @@
units/thrace_black_cloak
+
+ true
+
40
- true
special/greek_stoa_great.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/hellenic_stoa.xml b/binaries/data/mods/public/simulation/templates/other/hellenic_stoa.xml
index e6e8eb9c4a..f9cb52e893 100644
--- a/binaries/data/mods/public/simulation/templates/other/hellenic_stoa.xml
+++ b/binaries/data/mods/public/simulation/templates/other/hellenic_stoa.xml
@@ -44,9 +44,11 @@
36
65536
+
+ true
+
40
- true
special/greek_stoa.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/obelisk.xml b/binaries/data/mods/public/simulation/templates/other/obelisk.xml
index 89834bea6a..a1bb86584d 100644
--- a/binaries/data/mods/public/simulation/templates/other/obelisk.xml
+++ b/binaries/data/mods/public/simulation/templates/other/obelisk.xml
@@ -34,9 +34,11 @@
+
+ true
+
12
- true
props/special/eyecandy/obelisk.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/pyramid_great.xml b/binaries/data/mods/public/simulation/templates/other/pyramid_great.xml
index b6d83b4052..d86d27403b 100644
--- a/binaries/data/mods/public/simulation/templates/other/pyramid_great.xml
+++ b/binaries/data/mods/public/simulation/templates/other/pyramid_great.xml
@@ -36,9 +36,11 @@
0.6
12.0
+
+ true
+
72
- true
special/pyramid.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/pyramid_minor.xml b/binaries/data/mods/public/simulation/templates/other/pyramid_minor.xml
index 937690506b..f825a4bfc6 100644
--- a/binaries/data/mods/public/simulation/templates/other/pyramid_minor.xml
+++ b/binaries/data/mods/public/simulation/templates/other/pyramid_minor.xml
@@ -30,9 +30,11 @@
0.6
12.0
+
+ true
+
40
- true
special/pyramid_minor.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/table_rectangle.xml b/binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
index fa5fa3dcab..2314028df4 100644
--- a/binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
+++ b/binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
@@ -39,9 +39,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/table_rectangle.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/table_square.xml b/binaries/data/mods/public/simulation/templates/other/table_square.xml
index adb6626add..d035978a96 100644
--- a/binaries/data/mods/public/simulation/templates/other/table_square.xml
+++ b/binaries/data/mods/public/simulation/templates/other/table_square.xml
@@ -39,9 +39,11 @@
6.0
+
+ true
+
4
- true
props/special/eyecandy/table_square.xml
diff --git a/binaries/data/mods/public/simulation/templates/other/unfinished_greek_temple.xml b/binaries/data/mods/public/simulation/templates/other/unfinished_greek_temple.xml
index eb5dcbc314..f35965688b 100644
--- a/binaries/data/mods/public/simulation/templates/other/unfinished_greek_temple.xml
+++ b/binaries/data/mods/public/simulation/templates/other/unfinished_greek_temple.xml
@@ -27,9 +27,11 @@
0.6
12.0
+
+ true
+
40
- true
props/special/eyecandy/greek_temple_unfinished.xml
diff --git a/binaries/data/mods/public/simulation/templates/special/actor.xml b/binaries/data/mods/public/simulation/templates/special/actor.xml
index 045bc856d5..2395d196d2 100644
--- a/binaries/data/mods/public/simulation/templates/special/actor.xml
+++ b/binaries/data/mods/public/simulation/templates/special/actor.xml
@@ -6,11 +6,12 @@
false
6.0
-
-
- 0
+
true
false
+
+
+ 0
(should be overridden)
diff --git a/binaries/data/mods/public/simulation/templates/special/marker_object_sound.xml b/binaries/data/mods/public/simulation/templates/special/marker_object_sound.xml
index cefb5c69f5..48acc29c88 100644
--- a/binaries/data/mods/public/simulation/templates/special/marker_object_sound.xml
+++ b/binaries/data/mods/public/simulation/templates/special/marker_object_sound.xml
@@ -24,9 +24,9 @@
-
+
true
-
+
props/special/common/marker_object_sound.xml
diff --git a/binaries/data/mods/public/simulation/templates/special/rallypoint.xml b/binaries/data/mods/public/simulation/templates/special/rallypoint.xml
index c73b5d8f97..5432b86ff9 100644
--- a/binaries/data/mods/public/simulation/templates/special/rallypoint.xml
+++ b/binaries/data/mods/public/simulation/templates/special/rallypoint.xml
@@ -3,7 +3,7 @@
props/special/common/waypoint_flag.xml
-
+
true
-
+
diff --git a/binaries/data/mods/public/simulation/templates/structures/pers_wonder.xml b/binaries/data/mods/public/simulation/templates/structures/pers_wonder.xml
index 89622031d9..e7640ec2eb 100644
--- a/binaries/data/mods/public/simulation/templates/structures/pers_wonder.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/pers_wonder.xml
@@ -26,9 +26,11 @@
100
+
+ true
+
72
- true
structures/fndn_8x8.xml
diff --git a/binaries/data/mods/public/simulation/templates/template_gaia.xml b/binaries/data/mods/public/simulation/templates/template_gaia.xml
index 5acbdb1ff5..0340dcd2be 100644
--- a/binaries/data/mods/public/simulation/templates/template_gaia.xml
+++ b/binaries/data/mods/public/simulation/templates/template_gaia.xml
@@ -20,11 +20,12 @@
0.333
5.0
-
-
- 0
+
true
false
+
+
+ 0
false
diff --git a/binaries/data/mods/public/simulation/templates/template_rubble.xml b/binaries/data/mods/public/simulation/templates/template_rubble.xml
index bbfdcb5bcc..7d3ca0cd32 100644
--- a/binaries/data/mods/public/simulation/templates/template_rubble.xml
+++ b/binaries/data/mods/public/simulation/templates/template_rubble.xml
@@ -12,10 +12,12 @@
false
6.0
-
- 0
+
true
false
+
+
+ 0
structures/rubble_stone_3x3.xml
diff --git a/binaries/data/mods/public/simulation/templates/template_structure.xml b/binaries/data/mods/public/simulation/templates/template_structure.xml
index c1cf8cfd15..3a9e0dbc2f 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure.xml
@@ -101,11 +101,12 @@
5
-
-
- 40
+
true
false
+
+
+ 40
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_gaia_settlement.xml b/binaries/data/mods/public/simulation/templates/template_structure_gaia_settlement.xml
index 6f63496973..2d255d8ff1 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_gaia_settlement.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_gaia_settlement.xml
@@ -26,9 +26,11 @@
-
- 0
+
true
false
+
+
+ 0
diff --git a/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml b/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
index daeac59e43..cd30fc4bdd 100644
--- a/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
+++ b/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
@@ -75,9 +75,11 @@
100
65536
+
+ true
+
72
- true
structures/fndn_6x6.xml
diff --git a/binaries/data/mods/public/simulation/templates/template_unit.xml b/binaries/data/mods/public/simulation/templates/template_unit.xml
index 79ad81a10d..3a565939fa 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit.xml
@@ -104,11 +104,12 @@
default
default
-
-
- 10
+
false
false
+
+
+ 10
true
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
index b033799eae..691c4837b8 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
@@ -38,8 +38,10 @@
15.0
-
+
true
+
+
0
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml b/binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml
index 35bf0db1b3..fc08670d04 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_fauna_decorative.xml
@@ -38,10 +38,12 @@
unrestricted
default
-
+
true
- 0
false
+
+
+ 0
false
diff --git a/source/ps/TemplateLoader.cpp b/source/ps/TemplateLoader.cpp
index 07ceea6c5b..d692f6799d 100644
--- a/source/ps/TemplateLoader.cpp
+++ b/source/ps/TemplateLoader.cpp
@@ -381,7 +381,7 @@ void CTemplateLoader::CopyPreviewSubset(CParamNode& out, const CParamNode& in, b
CParamNode::LoadXMLString(out, "");
// Previews should always be visible in fog-of-war/etc
- CParamNode::LoadXMLString(out, "0falsetrue");
+ CParamNode::LoadXMLString(out, "falsetrue");
}
if (corpse)
@@ -395,7 +395,7 @@ void CTemplateLoader::CopyPreviewSubset(CParamNode& out, const CParamNode& in, b
CParamNode::LoadXMLString(out, "false");
// Corpses should remain visible in fog-of-war
- CParamNode::LoadXMLString(out, "0truefalse");
+ CParamNode::LoadXMLString(out, "truefalse");
}
}
@@ -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, "");
@@ -431,7 +430,7 @@ void CTemplateLoader::CopyMirageSubset(CParamNode& out, const CParamNode& in)
// Set the entity as mirage entity
CParamNode::LoadXMLString(out, "");
- CParamNode::LoadXMLString(out, "0truefalse");
+ CParamNode::LoadXMLString(out, "truefalse");
}
void CTemplateLoader::CopyFoundationSubset(CParamNode& out, const CParamNode& in)
diff --git a/source/simulation2/components/CCmpRangeManager.cpp b/source/simulation2/components/CCmpRangeManager.cpp
index 866cd8f07d..df0a8ab3a9 100644
--- a/source/simulation2/components/CCmpRangeManager.cpp
+++ b/source/simulation2/components/CCmpRangeManager.cpp
@@ -417,10 +417,10 @@ public:
// Store the LOS data, if any
CmpPtr cmpVision(GetSimContext(), ent);
if (cmpVision)
- {
entdata.visionRange = cmpVision->GetRange();
- entdata.retainInFog = (cmpVision->GetRetainInFog() ? 1 : 0);
- }
+ CmpPtr cmpVisibility(GetSimContext(), ent);
+ if (cmpVisibility)
+ entdata.retainInFog = (cmpVisibility->GetRetainInFog() ? 1 : 0);
// Remember this entity
m_EntityData.insert(ent, entdata);
diff --git a/source/simulation2/components/CCmpUnitRenderer.cpp b/source/simulation2/components/CCmpUnitRenderer.cpp
index 691c223397..5620145e3a 100644
--- a/source/simulation2/components/CCmpUnitRenderer.cpp
+++ b/source/simulation2/components/CCmpUnitRenderer.cpp
@@ -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 cmpVision(unit.entity);
- if (cmpVision && cmpVision->GetAlwaysVisible())
+ CmpPtr cmpVisibility(unit.entity);
+ if (cmpVisibility && cmpVisibility->GetAlwaysVisible())
unit.visibility = ICmpRangeManager::VIS_VISIBLE;
else
{
diff --git a/source/simulation2/components/CCmpVision.cpp b/source/simulation2/components/CCmpVision.cpp
index eaf61ffcfa..d03a00a127 100644
--- a/source/simulation2/components/CCmpVision.cpp
+++ b/source/simulation2/components/CCmpVision.cpp
@@ -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
""
""
- ""
- ""
- ""
- ""
- ""
- ""
"";
}
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)
diff --git a/source/simulation2/components/CCmpVisualActor.cpp b/source/simulation2/components/CCmpVisualActor.cpp
index 8b3f2998d0..52c189bf02 100644
--- a/source/simulation2/components/CCmpVisualActor.cpp
+++ b/source/simulation2/components/CCmpVisualActor.cpp
@@ -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 cmpVision(GetEntityHandle());
- if (cmpVision && cmpVision->GetAlwaysVisible())
+ CmpPtr cmpVisibility(GetEntityHandle());
+ if (cmpVisibility && cmpVisibility->GetAlwaysVisible())
modelFlags |= MODELFLAG_IGNORE_LOS;
model.ToCModel()->AddFlagsRec(modelFlags);
diff --git a/source/simulation2/components/ICmpVisibility.cpp b/source/simulation2/components/ICmpVisibility.cpp
index d2963f991c..6cade92161 100644
--- a/source/simulation2/components/ICmpVisibility.cpp
+++ b/source/simulation2/components/ICmpVisibility.cpp
@@ -47,6 +47,16 @@ public:
return ICmpRangeManager::VIS_HIDDEN;
}
}
+
+ virtual bool GetRetainInFog()
+ {
+ return m_Script.Call("GetRetainInFog");
+ }
+
+ virtual bool GetAlwaysVisible()
+ {
+ return m_Script.Call("GetAlwaysVisible");
+ }
};
REGISTER_COMPONENT_SCRIPT_WRAPPER(VisibilityScripted)
diff --git a/source/simulation2/components/ICmpVisibility.h b/source/simulation2/components/ICmpVisibility.h
index 15f30efa21..da87b588fe 100644
--- a/source/simulation2/components/ICmpVisibility.h
+++ b/source/simulation2/components/ICmpVisibility.h
@@ -25,7 +25,11 @@
class ICmpVisibility : public IComponent
{
public:
- virtual ICmpRangeManager::ELosVisibility GetLosVisibility(player_id_t player, bool isOutsideFog, bool forceRetainInFog) = 0;
+ 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)
};
diff --git a/source/simulation2/components/ICmpVision.cpp b/source/simulation2/components/ICmpVision.cpp
index a1361153b3..bc2a5b0c93 100644
--- a/source/simulation2/components/ICmpVision.cpp
+++ b/source/simulation2/components/ICmpVision.cpp
@@ -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)
diff --git a/source/simulation2/components/ICmpVision.h b/source/simulation2/components/ICmpVision.h
index 02bd9fa3b8..fed3163aff 100644
--- a/source/simulation2/components/ICmpVision.h
+++ b/source/simulation2/components/ICmpVision.h
@@ -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)
};