Show disabled HitShapes in gray
Instead of disabling their debug overlay entirely.
This commit is contained in:
@@ -13,6 +13,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
namespace OpenRA.Mods.Common.HitShapes
|
||||
@@ -92,7 +93,7 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
return DistanceFromEdge((pos - new WPos(origin.X, origin.Y, pos.Z)).Rotate(-orientation));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(WorldRenderer wr, WPos origin, WRot orientation)
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(HitShape hs, WorldRenderer wr, WPos origin, WRot orientation)
|
||||
{
|
||||
var a = origin + new WVec(PointA.X, PointA.Y, VerticalTopOffset).Rotate(orientation);
|
||||
var b = origin + new WVec(PointB.X, PointB.Y, VerticalTopOffset).Rotate(orientation);
|
||||
@@ -104,15 +105,17 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
var offset2 = new WVec(aa.Y - bb.Y, bb.X - aa.X, 0);
|
||||
offset2 = offset2 * Radius.Length / offset2.Length;
|
||||
|
||||
yield return new CircleAnnotationRenderable(a, Radius, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(b, Radius, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(aa, Radius, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(bb, Radius, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(origin, OuterRadius, 1, Color.LimeGreen);
|
||||
yield return new LineAnnotationRenderable(a - offset1, b - offset1, 1, Color.Yellow);
|
||||
yield return new LineAnnotationRenderable(a + offset1, b + offset1, 1, Color.Yellow);
|
||||
yield return new LineAnnotationRenderable(aa - offset2, bb - offset2, 1, Color.Yellow);
|
||||
yield return new LineAnnotationRenderable(aa + offset2, bb + offset2, 1, Color.Yellow);
|
||||
var shapeColor = hs.IsTraitDisabled ? Color.LightGray : Color.Yellow;
|
||||
|
||||
yield return new CircleAnnotationRenderable(a, Radius, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(b, Radius, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(aa, Radius, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(bb, Radius, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(origin, OuterRadius, 1, hs.IsTraitDisabled ? Color.Gray : Color.LimeGreen);
|
||||
yield return new LineAnnotationRenderable(a - offset1, b - offset1, 1, shapeColor);
|
||||
yield return new LineAnnotationRenderable(a + offset1, b + offset1, 1, shapeColor);
|
||||
yield return new LineAnnotationRenderable(aa - offset2, bb - offset2, 1, shapeColor);
|
||||
yield return new LineAnnotationRenderable(aa + offset2, bb + offset2, 1, shapeColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
namespace OpenRA.Mods.Common.HitShapes
|
||||
@@ -56,10 +57,11 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
return DistanceFromEdge(pos - new WPos(origin.X, origin.Y, pos.Z));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(WorldRenderer wr, WPos origin, WRot orientation)
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(HitShape hs, WorldRenderer wr, WPos origin, WRot orientation)
|
||||
{
|
||||
yield return new CircleAnnotationRenderable(origin + new WVec(0, 0, VerticalTopOffset), Radius, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(origin + new WVec(0, 0, VerticalBottomOffset), Radius, 1, Color.Yellow);
|
||||
var shapeColor = hs.IsTraitDisabled ? Color.LightGray : Color.Yellow;
|
||||
yield return new CircleAnnotationRenderable(origin + new WVec(0, 0, VerticalTopOffset), Radius, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(origin + new WVec(0, 0, VerticalBottomOffset), Radius, 1, shapeColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
|
||||
namespace OpenRA.Mods.Common.HitShapes
|
||||
{
|
||||
@@ -22,6 +23,6 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
WDist DistanceFromEdge(WPos pos, WPos origin, WRot orientation);
|
||||
|
||||
void Initialize();
|
||||
IEnumerable<IRenderable> RenderDebugOverlay(WorldRenderer wr, WPos origin, WRot orientation);
|
||||
IEnumerable<IRenderable> RenderDebugOverlay(HitShape hs, WorldRenderer wr, WPos origin, WRot orientation);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
namespace OpenRA.Mods.Common.HitShapes
|
||||
@@ -112,15 +113,17 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
return DistanceFromEdge((pos - new WPos(origin.X, origin.Y, pos.Z)).Rotate(-orientation));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(WorldRenderer wr, WPos actorPos, WRot orientation)
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(HitShape hs, WorldRenderer wr, WPos actorPos, WRot orientation)
|
||||
{
|
||||
orientation += WRot.FromYaw(LocalYaw);
|
||||
var vertsTop = combatOverlayVertsTop.Select(v => actorPos + v.Rotate(orientation)).ToArray();
|
||||
var vertsBottom = combatOverlayVertsBottom.Select(v => actorPos + v.Rotate(orientation)).ToArray();
|
||||
|
||||
yield return new PolygonAnnotationRenderable(vertsTop, actorPos, 1, Color.Yellow);
|
||||
yield return new PolygonAnnotationRenderable(vertsBottom, actorPos, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(actorPos, OuterRadius, 1, Color.LimeGreen);
|
||||
var shapeColor = hs.IsTraitDisabled ? Color.LightGray : Color.Yellow;
|
||||
|
||||
yield return new PolygonAnnotationRenderable(vertsTop, actorPos, 1, shapeColor);
|
||||
yield return new PolygonAnnotationRenderable(vertsBottom, actorPos, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(actorPos, OuterRadius, 1, hs.IsTraitDisabled ? Color.Gray : Color.LimeGreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Mods.Common.Graphics;
|
||||
using OpenRA.Mods.Common.Traits;
|
||||
using OpenRA.Primitives;
|
||||
|
||||
namespace OpenRA.Mods.Common.HitShapes
|
||||
@@ -125,7 +126,7 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
return DistanceFromEdge((pos - new WPos(origin.X, origin.Y, pos.Z)).Rotate(-orientation));
|
||||
}
|
||||
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(WorldRenderer wr, WPos origin, WRot orientation)
|
||||
IEnumerable<IRenderable> IHitShape.RenderDebugOverlay(HitShape hs, WorldRenderer wr, WPos origin, WRot orientation)
|
||||
{
|
||||
orientation += WRot.FromYaw(LocalYaw);
|
||||
|
||||
@@ -134,11 +135,13 @@ namespace OpenRA.Mods.Common.HitShapes
|
||||
var side1 = combatOverlayVertsSide1.Select(v => origin + v.Rotate(orientation)).ToArray();
|
||||
var side2 = combatOverlayVertsSide2.Select(v => origin + v.Rotate(orientation)).ToArray();
|
||||
|
||||
yield return new PolygonAnnotationRenderable(vertsTop, origin, 1, Color.Yellow);
|
||||
yield return new PolygonAnnotationRenderable(vertsBottom, origin, 1, Color.Yellow);
|
||||
yield return new PolygonAnnotationRenderable(side1, origin, 1, Color.Yellow);
|
||||
yield return new PolygonAnnotationRenderable(side2, origin, 1, Color.Yellow);
|
||||
yield return new CircleAnnotationRenderable(origin, OuterRadius, 1, Color.LimeGreen);
|
||||
var shapeColor = hs.IsTraitDisabled ? Color.LightGray : Color.Yellow;
|
||||
|
||||
yield return new PolygonAnnotationRenderable(vertsTop, origin, 1, shapeColor);
|
||||
yield return new PolygonAnnotationRenderable(vertsBottom, origin, 1, shapeColor);
|
||||
yield return new PolygonAnnotationRenderable(side1, origin, 1, shapeColor);
|
||||
yield return new PolygonAnnotationRenderable(side2, origin, 1, shapeColor);
|
||||
yield return new CircleAnnotationRenderable(origin, OuterRadius, 1, hs.IsTraitDisabled ? Color.Gray : Color.LimeGreen);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,8 +69,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
yield return new LineAnnotationRenderable(self.CenterPosition, self.CenterPosition + height, 1, Color.Orange);
|
||||
}
|
||||
|
||||
var activeShapes = shapes.Where(Exts.IsTraitEnabled);
|
||||
foreach (var s in activeShapes)
|
||||
foreach (var s in shapes)
|
||||
foreach (var r in s.RenderDebugOverlay(self, wr))
|
||||
yield return r;
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
var origin = turret != null ? self.CenterPosition + turret.Position(self) : self.CenterPosition;
|
||||
var orientation = turret != null ? turret.WorldOrientation : self.Orientation;
|
||||
return Info.Type.RenderDebugOverlay(wr, origin, orientation);
|
||||
return Info.Type.RenderDebugOverlay(this, wr, origin, orientation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user