diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj
index 9ed5a1f830..6d2b122188 100755
--- a/OpenRA.Game/OpenRA.Game.csproj
+++ b/OpenRA.Game/OpenRA.Game.csproj
@@ -106,7 +106,6 @@
-
@@ -136,7 +135,6 @@
-
@@ -151,7 +149,6 @@
-
@@ -159,7 +156,6 @@
-
@@ -202,7 +198,6 @@
-
diff --git a/OpenRA.Game/Support/PerfHistory.cs b/OpenRA.Game/Support/PerfHistory.cs
index 628c34e6ea..ab9fd16a44 100644
--- a/OpenRA.Game/Support/PerfHistory.cs
+++ b/OpenRA.Game/Support/PerfHistory.cs
@@ -90,7 +90,7 @@ namespace OpenRA.Support
}
}
- class PerfSample : IDisposable
+ public class PerfSample : IDisposable
{
readonly Stopwatch sw = new Stopwatch();
readonly string Item;
diff --git a/OpenRA.Game/Traits/World/Shroud.cs b/OpenRA.Game/Traits/World/Shroud.cs
index b80596d14f..8f5ce19415 100644
--- a/OpenRA.Game/Traits/World/Shroud.cs
+++ b/OpenRA.Game/Traits/World/Shroud.cs
@@ -129,9 +129,9 @@ namespace OpenRA.Traits
}
else
{
- var mobile = a.TraitOrDefault();
- if (mobile != null)
- return new[] { mobile.fromCell, mobile.toCell };
+ var ios = a.TraitOrDefault();
+ if (ios != null)
+ return ios.OccupiedCells();
else
return new[] { (1f / Game.CellSize * a.CenterLocation).ToInt2() };
}
diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs
index c4d71398ca..4ad76473d6 100644
--- a/OpenRA.Game/World.cs
+++ b/OpenRA.Game/World.cs
@@ -28,6 +28,8 @@ namespace OpenRA
List effects = new List();
Queue> frameEndActions = new Queue>();
+ public int FrameNumber { get { return orderManager.LocalFrameNumber; } }
+
internal readonly OrderManager orderManager;
public Session LobbyInfo { get { return orderManager.LobbyInfo; } }
@@ -49,7 +51,6 @@ namespace OpenRA
}
public readonly Actor WorldActor;
- public readonly PathFinder PathFinder;
public readonly Map Map;
public readonly TileSet TileSet;
@@ -109,8 +110,6 @@ namespace OpenRA
if (!p.Stances.ContainsKey(q))
p.Stances[q] = Stance.Neutral;
- PathFinder = new PathFinder(this);
-
Sound.SoundVolumeModifier = 1.0f;
foreach (var wlh in WorldActor.TraitsImplementing())
wlh.WorldLoaded(this);
diff --git a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs
index 7bc663e9f2..7080965c39 100644
--- a/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs
+++ b/OpenRA.Mods.Cnc/Missions/Gdi01Script.cs
@@ -17,7 +17,8 @@ using OpenRA.FileFormats;
using OpenRA;
using OpenRA.Mods.RA.Activities;
using System;
-using OpenRA.Mods.RA;
+using OpenRA.Mods.RA;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.Cnc
{
diff --git a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs
index a3f7c4e58a..6cb5040d41 100644
--- a/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs
+++ b/OpenRA.Mods.Cnc/TiberiumRefineryDockAction.cs
@@ -13,7 +13,8 @@ using OpenRA.Mods.RA;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
-using OpenRA.Traits.Activities;
+using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.Cnc
{
diff --git a/OpenRA.Mods.RA/Activities/Attack.cs b/OpenRA.Mods.RA/Activities/Attack.cs
index 209169dfd8..f1219747d3 100755
--- a/OpenRA.Mods.RA/Activities/Attack.cs
+++ b/OpenRA.Mods.RA/Activities/Attack.cs
@@ -11,6 +11,7 @@
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/DeliverOre.cs b/OpenRA.Mods.RA/Activities/DeliverOre.cs
index 3ed6e9ec78..fe3f3933c8 100755
--- a/OpenRA.Mods.RA/Activities/DeliverOre.cs
+++ b/OpenRA.Mods.RA/Activities/DeliverOre.cs
@@ -11,6 +11,7 @@
using System.Collections.Generic;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/Enter.cs b/OpenRA.Mods.RA/Activities/Enter.cs
index d965410c7c..50e8786257 100755
--- a/OpenRA.Mods.RA/Activities/Enter.cs
+++ b/OpenRA.Mods.RA/Activities/Enter.cs
@@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Linq;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/Follow.cs b/OpenRA.Mods.RA/Activities/Follow.cs
index 596589ff75..6cbdda0a91 100644
--- a/OpenRA.Mods.RA/Activities/Follow.cs
+++ b/OpenRA.Mods.RA/Activities/Follow.cs
@@ -10,6 +10,7 @@
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/Harvest.cs b/OpenRA.Mods.RA/Activities/Harvest.cs
index 0e4428148e..332e1cf4a6 100755
--- a/OpenRA.Mods.RA/Activities/Harvest.cs
+++ b/OpenRA.Mods.RA/Activities/Harvest.cs
@@ -12,6 +12,7 @@ using System.Linq;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
@@ -67,7 +68,7 @@ namespace OpenRA.Mods.RA.Activities
self.QueueActivity(mobile.MoveTo(
() =>
{
- return self.World.PathFinder.FindPath(PathSearch.Search(self.World, mobileInfo, true)
+ return self.World.WorldActor.Trait().FindPath(PathSearch.Search(self.World, mobileInfo, true)
.WithHeuristic(loc => (res.GetResource(loc) != null && harv.Resources.Contains( res.GetResource(loc).info.Name )) ? 0 : 1)
.FromPoint(self.Location));
}));
diff --git a/OpenRA.Mods.RA/Activities/LayMines.cs b/OpenRA.Mods.RA/Activities/LayMines.cs
index 32eedf1053..49e8fe75f3 100644
--- a/OpenRA.Mods.RA/Activities/LayMines.cs
+++ b/OpenRA.Mods.RA/Activities/LayMines.cs
@@ -12,6 +12,7 @@ using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/Leap.cs b/OpenRA.Mods.RA/Activities/Leap.cs
index fa1c653c70..9f02f8c7e5 100644
--- a/OpenRA.Mods.RA/Activities/Leap.cs
+++ b/OpenRA.Mods.RA/Activities/Leap.cs
@@ -11,6 +11,7 @@
using System.Linq;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/Activities/MoveAdjacentTo.cs b/OpenRA.Mods.RA/Activities/MoveAdjacentTo.cs
index 66bcc2f695..4d6220f204 100755
--- a/OpenRA.Mods.RA/Activities/MoveAdjacentTo.cs
+++ b/OpenRA.Mods.RA/Activities/MoveAdjacentTo.cs
@@ -13,6 +13,7 @@ using System.Collections.Generic;
using System.Linq;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
@@ -45,7 +46,7 @@ namespace OpenRA.Mods.RA.Activities
ps1.heuristic = PathSearch.DefaultEstimator( mobile.toCell );
var ps2 = PathSearch.FromPoint( self.World, mobile.Info, mobile.toCell, target.Location, true );
- var ret = self.World.PathFinder.FindBidiPath( ps1, ps2 );
+ var ret = self.World.WorldActor.Trait().FindBidiPath( ps1, ps2 );
if( ret.Count > 0 )
ret.RemoveAt( 0 );
return Util.SequenceActivities( mobile.MoveTo( () => ret ), this );
diff --git a/OpenRA.Mods.RA/Activities/UnloadCargo.cs b/OpenRA.Mods.RA/Activities/UnloadCargo.cs
index 49b91f8394..6755aa7939 100644
--- a/OpenRA.Mods.RA/Activities/UnloadCargo.cs
+++ b/OpenRA.Mods.RA/Activities/UnloadCargo.cs
@@ -13,6 +13,7 @@ using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
using System.Drawing;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Activities
{
diff --git a/OpenRA.Mods.RA/AttackMove.cs b/OpenRA.Mods.RA/AttackMove.cs
index 0418af233f..77ae56e5eb 100644
--- a/OpenRA.Mods.RA/AttackMove.cs
+++ b/OpenRA.Mods.RA/AttackMove.cs
@@ -11,6 +11,7 @@
using System.Drawing;
using OpenRA.Effects;
using OpenRA.Traits;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/AttackTurreted.cs b/OpenRA.Mods.RA/AttackTurreted.cs
index 35a4c6f195..b54a632199 100644
--- a/OpenRA.Mods.RA/AttackTurreted.cs
+++ b/OpenRA.Mods.RA/AttackTurreted.cs
@@ -12,6 +12,7 @@ using System;
using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
using System.Linq;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/C4Demolition.cs b/OpenRA.Mods.RA/C4Demolition.cs
index 87e1952c19..595cf8dee7 100644
--- a/OpenRA.Mods.RA/C4Demolition.cs
+++ b/OpenRA.Mods.RA/C4Demolition.cs
@@ -16,6 +16,7 @@ using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Orders;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs b/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs
index b71716903f..640d30a556 100644
--- a/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs
+++ b/OpenRA.Mods.RA/Crates/GiveUnitCrateAction.cs
@@ -12,6 +12,7 @@ using System.Collections.Generic;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Traits;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Crates
{
diff --git a/OpenRA.Mods.RA/Harvester.cs b/OpenRA.Mods.RA/Harvester.cs
index 80b9d60524..0c8c1a27e4 100644
--- a/OpenRA.Mods.RA/Harvester.cs
+++ b/OpenRA.Mods.RA/Harvester.cs
@@ -15,7 +15,8 @@ using OpenRA.Effects;
using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
-using OpenRA.Mods.RA.Orders;
+using OpenRA.Mods.RA.Orders;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
@@ -65,7 +66,7 @@ namespace OpenRA.Mods.RA
.Where(x => x != ignore && x.HasTrait())
.ToList();
var mi = self.Info.Traits.Get();
- var path = self.World.PathFinder.FindPath(PathSearch.FromPoints(self.World, mi,
+ var path = self.World.WorldActor.Trait().FindPath(PathSearch.FromPoints(self.World, mi,
refs.Select(r => r.Location + r.Trait().DeliverOffset),
self.Location,
false));
diff --git a/OpenRA.Game/Traits/Activities/Drag.cs b/OpenRA.Mods.RA/Move/Drag.cs
old mode 100644
new mode 100755
similarity index 93%
rename from OpenRA.Game/Traits/Activities/Drag.cs
rename to OpenRA.Mods.RA/Move/Drag.cs
index 0655f3e735..8c042bc947
--- a/OpenRA.Game/Traits/Activities/Drag.cs
+++ b/OpenRA.Mods.RA/Move/Drag.cs
@@ -9,8 +9,9 @@
#endregion
using System.Collections.Generic;
+using OpenRA.Traits;
-namespace OpenRA.Traits.Activities
+namespace OpenRA.Mods.RA.Move
{
public class Drag : IActivity
{
diff --git a/OpenRA.Game/Traits/Mobile.cs b/OpenRA.Mods.RA/Move/Mobile.cs
old mode 100644
new mode 100755
similarity index 95%
rename from OpenRA.Game/Traits/Mobile.cs
rename to OpenRA.Mods.RA/Move/Mobile.cs
index da70dacd63..1650ff0945
--- a/OpenRA.Game/Traits/Mobile.cs
+++ b/OpenRA.Mods.RA/Move/Mobile.cs
@@ -17,8 +17,9 @@ using OpenRA.Traits.Activities;
using OpenRA.FileFormats;
using System.Diagnostics;
using OpenRA.Orders;
+using OpenRA.Traits;
-namespace OpenRA.Traits
+namespace OpenRA.Mods.RA.Move
{
public class MobileInfo : ITraitInfo
{
@@ -180,7 +181,7 @@ namespace OpenRA.Traits
if( !order.Queued ) self.CancelActivity();
- self.QueueActivity(new Activities.Move(currentLocation, 8));
+ self.QueueActivity(new Move(currentLocation, 8));
if (self.Owner == self.World.LocalPlayer)
self.World.AddFrameEndTask(w =>
diff --git a/OpenRA.Game/Traits/Activities/Move.cs b/OpenRA.Mods.RA/Move/Move.cs
similarity index 90%
rename from OpenRA.Game/Traits/Activities/Move.cs
rename to OpenRA.Mods.RA/Move/Move.cs
index 01e6f1e4f7..478e7732a1 100755
--- a/OpenRA.Game/Traits/Activities/Move.cs
+++ b/OpenRA.Mods.RA/Move/Move.cs
@@ -12,8 +12,10 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
+using OpenRA.Traits;
+using OpenRA.Traits.Activities;
-namespace OpenRA.Traits.Activities
+namespace OpenRA.Mods.RA.Move
{
class Move : CancelableActivity
{
@@ -28,7 +30,7 @@ namespace OpenRA.Traits.Activities
public Move( int2 destination )
{
this.getPath = (self,mobile) =>
- self.World.PathFinder.FindPath(
+ self.World.WorldActor.Trait().FindPath(
PathSearch.FromPoint( self.World, mobile.Info, mobile.toCell, destination, false )
.WithoutLaneBias());
this.destination = destination;
@@ -37,7 +39,7 @@ namespace OpenRA.Traits.Activities
public Move( int2 destination, int nearEnough )
{
- this.getPath = (self,mobile) => self.World.PathFinder.FindUnitPath( mobile.toCell, destination, self );
+ this.getPath = (self,mobile) => self.World.WorldActor.Trait().FindUnitPath( mobile.toCell, destination, self );
this.destination = destination;
this.nearEnough = nearEnough;
}
@@ -45,9 +47,9 @@ namespace OpenRA.Traits.Activities
public Move(int2 destination, Actor ignoreBuilding)
{
this.getPath = (self,mobile) =>
- self.World.PathFinder.FindPath(
+ self.World.WorldActor.Trait().FindPath(
PathSearch.FromPoint( self.World, mobile.Info, mobile.toCell, destination, false )
- .WithCustomBlocker( self.World.PathFinder.AvoidUnitsNear( mobile.toCell, 4, self ))
+ .WithCustomBlocker( self.World.WorldActor.Trait().AvoidUnitsNear( mobile.toCell, 4, self ))
.WithIgnoredBuilding( ignoreBuilding ));
this.destination = destination;
@@ -57,7 +59,7 @@ namespace OpenRA.Traits.Activities
public Move( Actor target, int range )
{
- this.getPath = (self,mobile) => self.World.PathFinder.FindUnitPathToRange(
+ this.getPath = (self,mobile) => self.World.WorldActor.Trait().FindUnitPathToRange(
mobile.toCell, target.Location,
range, self );
this.destination = null;
@@ -66,7 +68,7 @@ namespace OpenRA.Traits.Activities
public Move(Target target, int range)
{
- this.getPath = (self,mobile) => self.World.PathFinder.FindUnitPathToRange(
+ this.getPath = (self,mobile) => self.World.WorldActor.Trait().FindUnitPathToRange(
mobile.toCell, Util.CellContaining(target.CenterLocation),
range, self);
this.destination = null;
diff --git a/OpenRA.Game/PathFinder.cs b/OpenRA.Mods.RA/Move/PathFinder.cs
old mode 100644
new mode 100755
similarity index 89%
rename from OpenRA.Game/PathFinder.cs
rename to OpenRA.Mods.RA/Move/PathFinder.cs
index 718c023bd1..59035f05b0
--- a/OpenRA.Game/PathFinder.cs
+++ b/OpenRA.Mods.RA/Move/PathFinder.cs
@@ -15,16 +15,17 @@ using System.Linq;
using OpenRA.Support;
using OpenRA.Traits;
-namespace OpenRA
+namespace OpenRA.Mods.RA.Move
{
+ public class PathFinderInfo : ITraitInfo
+ {
+ public object Create( ActorInitializer init ) { return new PathFinder( init.world ); }
+ }
+
public class PathFinder
{
readonly World world;
-
- public PathFinder( World world )
- {
- this.world = world;
- }
+ public PathFinder( World world ) { this.world = world; }
class CachedPath
{
@@ -45,8 +46,8 @@ namespace OpenRA
var cached = CachedPaths.FirstOrDefault(p => p.from == from && p.to == target && p.actor == self);
if (cached != null)
{
- Log.Write("debug", "Actor {0} asked for a path from {1} tick(s) ago", self.ActorID, Game.LocalTick - cached.tick);
- cached.tick = Game.LocalTick;
+ Log.Write("debug", "Actor {0} asked for a path from {1} tick(s) ago", self.ActorID, world.FrameNumber - cached.tick);
+ cached.tick = world.FrameNumber;
return new List(cached.result);
}
@@ -61,8 +62,8 @@ namespace OpenRA
CheckSanePath2(pb, from, target);
- CachedPaths.RemoveAll(p => Game.LocalTick - p.tick > MaxPathAge);
- CachedPaths.Add(new CachedPath { from = from, to = target, actor = self, result = pb, tick = Game.LocalTick });
+ CachedPaths.RemoveAll(p => world.FrameNumber - p.tick > MaxPathAge);
+ CachedPaths.Add(new CachedPath { from = from, to = target, actor = self, result = pb, tick = world.FrameNumber });
return new List(pb);
}
}
@@ -98,8 +99,6 @@ namespace OpenRA
while (!search.queue.Empty)
{
var p = search.Expand( world );
- PerfHistory.Increment("nodes_expanded", .01);
-
if (search.heuristic(p) == 0)
return MakePath(search.cellInfo, p);
}
diff --git a/OpenRA.Game/PathSearch.cs b/OpenRA.Mods.RA/Move/PathSearch.cs
similarity index 95%
rename from OpenRA.Game/PathSearch.cs
rename to OpenRA.Mods.RA/Move/PathSearch.cs
index 2d4b73e3df..5b4e5cba2c 100755
--- a/OpenRA.Game/PathSearch.cs
+++ b/OpenRA.Mods.RA/Move/PathSearch.cs
@@ -13,7 +13,7 @@ using System.Collections.Generic;
using OpenRA.FileFormats;
using OpenRA.Traits;
-namespace OpenRA
+namespace OpenRA.Mods.RA.Move
{
public class PathSearch
{
diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index c4281dff74..742baf4e1d 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -97,6 +97,11 @@
+
+
+
+
+
diff --git a/OpenRA.Mods.RA/OreRefineryDockAction.cs b/OpenRA.Mods.RA/OreRefineryDockAction.cs
index 6bf34214c5..1abd6fc795 100644
--- a/OpenRA.Mods.RA/OreRefineryDockAction.cs
+++ b/OpenRA.Mods.RA/OreRefineryDockAction.cs
@@ -12,7 +12,8 @@ using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Render;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
-using System.Drawing;
+using System.Drawing;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/Passenger.cs b/OpenRA.Mods.RA/Passenger.cs
index c717a0c969..b91b989353 100644
--- a/OpenRA.Mods.RA/Passenger.cs
+++ b/OpenRA.Mods.RA/Passenger.cs
@@ -16,6 +16,7 @@ using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Orders;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/Production.cs b/OpenRA.Mods.RA/Production.cs
index 2894c486e4..238bb2e0dc 100755
--- a/OpenRA.Mods.RA/Production.cs
+++ b/OpenRA.Mods.RA/Production.cs
@@ -12,6 +12,7 @@ using System.Drawing;
using OpenRA.FileFormats;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/Render/RenderInfantry.cs b/OpenRA.Mods.RA/Render/RenderInfantry.cs
index 472255d37c..dfadbd7425 100644
--- a/OpenRA.Mods.RA/Render/RenderInfantry.cs
+++ b/OpenRA.Mods.RA/Render/RenderInfantry.cs
@@ -12,6 +12,7 @@ using OpenRA.Mods.RA.Effects;
using OpenRA.Traits;
using OpenRA.Traits.Activities;
using OpenRA.Mods.RA.Activities;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA.Render
{
diff --git a/OpenRA.Mods.RA/Repairable.cs b/OpenRA.Mods.RA/Repairable.cs
index d6c1f26d6c..638d30258b 100644
--- a/OpenRA.Mods.RA/Repairable.cs
+++ b/OpenRA.Mods.RA/Repairable.cs
@@ -16,6 +16,7 @@ using OpenRA.Traits.Activities;
using System.Drawing;
using System.Collections.Generic;
using OpenRA.Mods.RA.Orders;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/OpenRA.Mods.RA/RepairableNear.cs b/OpenRA.Mods.RA/RepairableNear.cs
index cfbdd8885d..b446932985 100644
--- a/OpenRA.Mods.RA/RepairableNear.cs
+++ b/OpenRA.Mods.RA/RepairableNear.cs
@@ -15,6 +15,7 @@ using OpenRA.Traits.Activities;
using System.Drawing;
using System.Collections.Generic;
using OpenRA.Mods.RA.Orders;
+using OpenRA.Mods.RA.Move;
namespace OpenRA.Mods.RA
{
diff --git a/mods/cnc/rules/system.yaml b/mods/cnc/rules/system.yaml
index b03b05132f..2f4d10df21 100644
--- a/mods/cnc/rules/system.yaml
+++ b/mods/cnc/rules/system.yaml
@@ -178,6 +178,7 @@ World:
Maximum: 3
SpawnInterval: 120
WaterChance: 0
+ PathFinder:
CRATE:
Tooltip:
diff --git a/mods/ra/rules/system.yaml b/mods/ra/rules/system.yaml
index 71719fc0a9..90cd719523 100644
--- a/mods/ra/rules/system.yaml
+++ b/mods/ra/rules/system.yaml
@@ -218,6 +218,7 @@ World:
SpatialBins:
BinSize: 4
Shroud:
+ PathFinder:
MINP:
Mine: