This override allows quantization to be disabled, and is used by the TS mod as the voxel based actors can be rotated to any orientation/facing. To prevent a divide by zero error for these actors, we need to return early from QuantizeFacing just like we do in QuantizeOrientation. However, when QuantizedFacings is not explicitly set to zero, we still want to catch errors when artwork sequences have zero facings. The new check would cause such errors to be hidden. To prevent this add some exceptions with a detailed error message.
37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
#region Copyright & License Information
|
|
/*
|
|
* Copyright (c) The OpenRA Developers and Contributors
|
|
* This file is part of OpenRA, which is free software. It is made
|
|
* available to you under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation, either version 3 of
|
|
* the License, or (at your option) any later version. For more
|
|
* information, see COPYING.
|
|
*/
|
|
#endregion
|
|
|
|
using OpenRA.Mods.Common.Traits;
|
|
|
|
namespace OpenRA.Mods.Cnc.Traits
|
|
{
|
|
[Desc("Fudge the coordinate system angles like the early games (for sprite sequences that use classic facing fudge).")]
|
|
public class ClassicFacingBodyOrientationInfo : BodyOrientationInfo
|
|
{
|
|
public override WAngle QuantizeFacing(WAngle facing, int facings)
|
|
{
|
|
// Quantization disabled
|
|
if (facings == 0)
|
|
return facing;
|
|
|
|
return Util.ClassicQuantizeFacing(facing, facings);
|
|
}
|
|
|
|
public override object Create(ActorInitializer init) { return new ClassicFacingBodyOrientation(init, this); }
|
|
}
|
|
|
|
public class ClassicFacingBodyOrientation : BodyOrientation
|
|
{
|
|
public ClassicFacingBodyOrientation(ActorInitializer init, ClassicFacingBodyOrientationInfo info)
|
|
: base(init, info) { }
|
|
}
|
|
}
|