Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert "Mode" classes to abstract enums. #48

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions away3d/animators/ParticleAnimationSet.hx
Original file line number Diff line number Diff line change
Expand Up @@ -103,11 +103,11 @@ class ParticleAnimationSet extends AnimationSetBase implements IAnimationSet
var i:Int;
var n:ParticleNodeBase = cast(node, ParticleNodeBase);
n.processAnimationSetting(this);
if (n.mode == ParticlePropertiesMode.LOCAL_STATIC) {
if (n.mode == LOCAL_STATIC) {
n.dataOffset = _totalLenOfOneVertex;
_totalLenOfOneVertex += n.dataLength;
_localStaticNodes.push(n);
} else if (n.mode == ParticlePropertiesMode.LOCAL_DYNAMIC)
} else if (n.mode == LOCAL_DYNAMIC)
_localDynamicNodes.push(n);

i = _particleNodes.length - 1;
Expand Down
2 changes: 1 addition & 1 deletion away3d/animators/ParticleAnimator.hx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class ParticleAnimator extends AnimatorBase implements IAnimator
var node:ParticleNodeBase;
for (node in _particleAnimationSet.particleNodes) {
state = cast(getAnimationState(node), ParticleStateBase);
if (node.mode == ParticlePropertiesMode.LOCAL_DYNAMIC) {
if (node.mode == LOCAL_DYNAMIC) {
_animatorParticleStates.push(state);
node.dataOffset = _totalLenOfOneVertex;
_totalLenOfOneVertex += node.dataLength;
Expand Down
10 changes: 5 additions & 5 deletions away3d/animators/VertexAnimationSet.hx
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ import openfl.Vector;
class VertexAnimationSet extends AnimationSetBase implements IAnimationSet
{
public var numPoses(get, never):Int;
public var blendMode(get, never):String;
public var blendMode(get, never):VertexAnimationMode;
public var useNormals(get, never):Bool;

private var _numPoses:Int;
private var _blendMode:String;
private var _blendMode:VertexAnimationMode;
private var _streamIndices:Map<MaterialPassBase, Int> = new Map();
private var _useNormals:Map<MaterialPassBase, Bool> = new Map();
private var _useTangents:Map<MaterialPassBase, Bool> = new Map();
Expand All @@ -37,7 +37,7 @@ class VertexAnimationSet extends AnimationSetBase implements IAnimationSet
/**
* Returns the active blend mode of the vertex animator object.
*/
private function get_blendMode():String
private function get_blendMode():VertexAnimationMode
{
return _blendMode;
}
Expand All @@ -58,7 +58,7 @@ class VertexAnimationSet extends AnimationSetBase implements IAnimationSet
*
* @see away3d.animators.data.VertexAnimationMode
*/
public function new(numPoses:Int = 2, blendMode:String = "absolute")
public function new(numPoses:Int = 2, blendMode:VertexAnimationMode = ABSOLUTE)
{
super();

Expand All @@ -71,7 +71,7 @@ class VertexAnimationSet extends AnimationSetBase implements IAnimationSet
*/
public function getAGALVertexCode(pass:MaterialPassBase, sourceRegisters:Vector<String>, targetRegisters:Vector<String>, profile:String):String
{
if (_blendMode == VertexAnimationMode.ABSOLUTE)
if (_blendMode == ABSOLUTE)
return getAbsoluteAGALCode(pass, sourceRegisters, targetRegisters);
else
return getAdditiveAGALCode(pass, sourceRegisters, targetRegisters);
Expand Down
6 changes: 3 additions & 3 deletions away3d/animators/VertexAnimator.hx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class VertexAnimator extends AnimatorBase implements IAnimator
private var _poses:Vector<Geometry> = new Vector<Geometry>();
private var _weights:Vector<Float> = Vector.ofArray([1, 0, 0, 0.0]);
private var _numPoses:Int;
private var _blendMode:String;
private var _blendMode:VertexAnimationMode;
private var _activeVertexState:IVertexAnimationState;

/**
Expand Down Expand Up @@ -115,7 +115,7 @@ class VertexAnimator extends AnimatorBase implements IAnimator

stage3DProxy.context3D.setProgramConstantsFromVector(Context3DProgramType.VERTEX, vertexConstantOffset, _weights, 1);

if (_blendMode == VertexAnimationMode.ABSOLUTE) {
if (_blendMode == ABSOLUTE) {
i = 1;
subGeom = _poses[0].subGeometries[subMesh._index];
// set the base sub-geometry so the material can simply pick up on this data
Expand All @@ -142,7 +142,7 @@ class VertexAnimator extends AnimatorBase implements IAnimator
{
stage3DProxy._context3D.setProgramConstantsFromVector(Context3DProgramType.VERTEX, vertexConstantOffset, _weights, 1);

if (_blendMode == VertexAnimationMode.ABSOLUTE) {
if (_blendMode == ABSOLUTE) {
var len:Int = _numPoses;
for (i in 0...len) {
renderable.activateVertexBuffer(vertexStreamOffset++, stage3DProxy);
Expand Down
8 changes: 4 additions & 4 deletions away3d/animators/data/ParticlePropertiesMode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@ package away3d.animators.data;
/**
* Options for setting the properties mode of a particle animation node.
*/
class ParticlePropertiesMode
@:enum abstract ParticlePropertiesMode(Int) from Int to Int
{
/**
* Mode that defines the particle node as acting on global properties (ie. the properties set in the node constructor or the corresponding animation state).
*/
public static inline var GLOBAL:Int = 0;
public var GLOBAL = 0;

/**
* Mode that defines the particle node as acting on local static properties (ie. the properties of particles set in the initialising function on the animation set).
*/
public static inline var LOCAL_STATIC:Int = 1;
public var LOCAL_STATIC = 1;

/**
* Mode that defines the particle node as acting on local dynamic properties (ie. the properties of the particles set in the corresponding animation state).
*/
public static inline var LOCAL_DYNAMIC:Int = 2;
public var LOCAL_DYNAMIC = 2;

}
6 changes: 3 additions & 3 deletions away3d/animators/data/VertexAnimationMode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ package away3d.animators.data;
*
* @see away3d.animators.VertexAnimator
*/
class VertexAnimationMode
@:enum abstract VertexAnimationMode(String) from String to String
{
/**
* Animation mode that adds all outputs from active vertex animation state to form the current vertex animation pose.
*/
public static var ADDITIVE:String = "additive";
public var ADDITIVE = "additive";

/**
* Animation mode that picks the output from a single vertex animation state to form the current vertex animation pose.
*/
public static var ABSOLUTE:String = "absolute";
public var ABSOLUTE = "absolute";
}
4 changes: 2 additions & 2 deletions away3d/animators/nodes/ParticleAccelerationNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class ParticleAccelerationNode extends ParticleNodeBase
* @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
* @param [optional] acceleration Defines the default acceleration vector of the node, used when in global mode.
*/
public function new(mode:Int, acceleration:Vector3D = null)
public function new(mode:ParticlePropertiesMode, acceleration:Vector3D = null)
{
super("ParticleAcceleration", mode, 3);

Expand All @@ -48,7 +48,7 @@ class ParticleAccelerationNode extends ParticleNodeBase
*/
override public function getAGALVertexCode(pass:MaterialPassBase, animationRegisterCache:AnimationRegisterCache):String
{
var accelerationValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var accelerationValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, ACCELERATION_INDEX, accelerationValue.index);

var temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();
Expand Down
6 changes: 3 additions & 3 deletions away3d/animators/nodes/ParticleBezierCurveNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class ParticleBezierCurveNode extends ParticleNodeBase
* @param [optional] controlPoint Defines the default control point of the node, used when in global mode.
* @param [optional] endPoint Defines the default end point of the node, used when in global mode.
*/
public function new(mode:Int, controlPoint:Vector3D = null, endPoint:Vector3D = null)
public function new(mode:ParticlePropertiesMode, controlPoint:Vector3D = null, endPoint:Vector3D = null)
{
super("ParticleBezierCurve", mode, 6);

Expand All @@ -66,10 +66,10 @@ class ParticleBezierCurveNode extends ParticleNodeBase
*/
override public function getAGALVertexCode(pass:MaterialPassBase, animationRegisterCache:AnimationRegisterCache):String
{
var controlValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var controlValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, BEZIER_CONTROL_INDEX, controlValue.index);

var endValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var endValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, BEZIER_END_INDEX, endValue.index);

var temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();
Expand Down
2 changes: 1 addition & 1 deletion away3d/animators/nodes/ParticleBillboardNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class ParticleBillboardNode extends ParticleNodeBase
*/
public function new(billboardAxis:Vector3D = null)
{
super("ParticleBillboard", ParticlePropertiesMode.GLOBAL, 0, 4);
super("ParticleBillboard", GLOBAL, 0, 4);

_stateConstructor = cast ParticleBillboardState.new;

Expand Down
10 changes: 5 additions & 5 deletions away3d/animators/nodes/ParticleColorNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class ParticleColorNode extends ParticleNodeBase
* @param [optional] cycleDuration Defines the duration of the animation in seconds, used as a period independent of particle duration when in global mode. Defaults to 1.
* @param [optional] cyclePhase Defines the phase of the cycle in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
*/
public function new(mode:Int, usesMultiplier:Bool = true, usesOffset:Bool = true, usesCycle:Bool = false, usesPhase:Bool = false, startColor:ColorTransform = null, endColor:ColorTransform = null, cycleDuration:Float = 1, cyclePhase:Float = 0)
public function new(mode:ParticlePropertiesMode, usesMultiplier:Bool = true, usesOffset:Bool = true, usesCycle:Bool = false, usesPhase:Bool = false, startColor:ColorTransform = null, endColor:ColorTransform = null, cycleDuration:Float = 1, cyclePhase:Float = 0)
{
_stateConstructor = cast ParticleColorState.new;

Expand Down Expand Up @@ -128,8 +128,8 @@ class ParticleColorNode extends ParticleNodeBase
}

if (_usesMultiplier) {
var startMultiplierValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var deltaMultiplierValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var startMultiplierValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var deltaMultiplierValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();

animationRegisterCache.setRegisterIndex(this, START_MULTIPLIER_INDEX, startMultiplierValue.index);
animationRegisterCache.setRegisterIndex(this, DELTA_MULTIPLIER_INDEX, deltaMultiplierValue.index);
Expand All @@ -140,8 +140,8 @@ class ParticleColorNode extends ParticleNodeBase
}

if (_usesOffset) {
var startOffsetValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
var deltaOffsetValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
var startOffsetValue:ShaderRegisterElement = (_mode == LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
var deltaOffsetValue:ShaderRegisterElement = (_mode == LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();

animationRegisterCache.setRegisterIndex(this, START_OFFSET_INDEX, startOffsetValue.index);
animationRegisterCache.setRegisterIndex(this, DELTA_OFFSET_INDEX, deltaOffsetValue.index);
Expand Down
2 changes: 1 addition & 1 deletion away3d/animators/nodes/ParticleFollowNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class ParticleFollowNode extends ParticleNodeBase
_usesRotation = usesRotation;
_smooth = smooth;

super("ParticleFollow", ParticlePropertiesMode.LOCAL_DYNAMIC, (_usesPosition && _usesRotation)? 6 : 3, ParticleAnimationSet.POST_PRIORITY);
super("ParticleFollow", LOCAL_DYNAMIC, (_usesPosition && _usesRotation)? 6 : 3, ParticleAnimationSet.POST_PRIORITY);
}

/**
Expand Down
6 changes: 3 additions & 3 deletions away3d/animators/nodes/ParticleInitialColorNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class ParticleInitialColorNode extends ParticleNodeBase
*/
public static inline var COLOR_INITIAL_COLORTRANSFORM:String = "ColorInitialColorTransform";

public function new(mode:Int, usesMultiplier:Bool = true, usesOffset:Bool = false, initialColor:ColorTransform = null)
public function new(mode:ParticlePropertiesMode, usesMultiplier:Bool = true, usesOffset:Bool = false, initialColor:ColorTransform = null)
{
_stateConstructor = cast ParticleInitialColorState.new;

Expand All @@ -56,14 +56,14 @@ class ParticleInitialColorNode extends ParticleNodeBase
if (animationRegisterCache.needFragmentAnimation) {

if (_usesMultiplier) {
var multiplierValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var multiplierValue:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, MULTIPLIER_INDEX, multiplierValue.index);

code += "mul " + animationRegisterCache.colorMulTarget + "," + multiplierValue + "," + animationRegisterCache.colorMulTarget + "\n";
}

if (_usesOffset) {
var offsetValue:ShaderRegisterElement = (_mode == ParticlePropertiesMode.LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
var offsetValue:ShaderRegisterElement = (_mode == LOCAL_STATIC)? animationRegisterCache.getFreeVertexAttribute() : animationRegisterCache.getFreeVertexConstant();
animationRegisterCache.setRegisterIndex(this, OFFSET_INDEX, offsetValue.index);

code += "add " + animationRegisterCache.colorAddTarget + "," + offsetValue + "," + animationRegisterCache.colorAddTarget + "\n";
Expand Down
7 changes: 4 additions & 3 deletions away3d/animators/nodes/ParticleNodeBase.hx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package away3d.animators.nodes;

import away3d.animators.data.ParticlePropertiesMode;
import away3d.animators.data.ParticleProperties;
import away3d.animators.ParticleAnimationSet;
import away3d.animators.data.AnimationRegisterCache;
Expand All @@ -12,12 +13,12 @@ import openfl.Vector;
*/
class ParticleNodeBase extends AnimationNodeBase
{
public var mode(get, never):Int;
public var mode(get, never):ParticlePropertiesMode;
public var priority(get, never):Int;
public var dataLength(get, never):Int;
public var oneData(get, never):Vector<Float>;

private var _mode:Int;
private var _mode:ParticlePropertiesMode;
private var _priority:Int;

private var _dataLength:Int = 3;
Expand Down Expand Up @@ -105,7 +106,7 @@ class ParticleNodeBase extends AnimationNodeBase
* @param dataLength Defines the length of the data used by the node when in <code>LOCAL_STATIC</code> mode.
* @param [optional] priority the priority of the particle animation node, used to order the agal generated in a particle animation set. Defaults to 1.
*/
public function new(name:String, mode:Int, dataLength:Int, priority:Int = 1)
public function new(name:String, mode:ParticlePropertiesMode, dataLength:Int, priority:Int = 1)
{
super();

Expand Down
4 changes: 2 additions & 2 deletions away3d/animators/nodes/ParticleOrbitNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class ParticleOrbitNode extends ParticleNodeBase
* @param [optional] cyclePhase Defines the phase of the orbit in degrees, used as the starting offset of the cycle when in global mode. Defaults to 0.
* @param [optional] eulers Defines the euler rotation in degrees, applied to the orientation of the orbit when in global mode.
*/
public function new(mode:Int, usesEulers:Bool = true, usesCycle:Bool = false, usesPhase:Bool = false, radius:Float = 100, cycleDuration:Float = 1, cyclePhase:Float = 0, eulers:Vector3D = null)
public function new(mode:ParticlePropertiesMode, usesEulers:Bool = true, usesCycle:Bool = false, usesPhase:Bool = false, radius:Float = 100, cycleDuration:Float = 1, cyclePhase:Float = 0, eulers:Vector3D = null)
{
var len:Int = 3;
if (usesPhase)
Expand All @@ -84,7 +84,7 @@ class ParticleOrbitNode extends ParticleNodeBase
*/
override public function getAGALVertexCode(pass:MaterialPassBase, animationRegisterCache:AnimationRegisterCache):String
{
var orbitRegister:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var orbitRegister:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, ORBIT_INDEX, orbitRegister.index);

var eulersMatrixRegister:ShaderRegisterElement = animationRegisterCache.getFreeVertexConstant();
Expand Down
4 changes: 2 additions & 2 deletions away3d/animators/nodes/ParticleOscillatorNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class ParticleOscillatorNode extends ParticleNodeBase
* @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
* @param [optional] oscillator Defines the default oscillator axis (x, y, z) and cycleDuration (w) of the node, used when in global mode.
*/
public function new(mode:Int, oscillator:Vector3D = null)
public function new(mode:ParticlePropertiesMode, oscillator:Vector3D = null)
{
super("ParticleOscillator", mode, 4);

Expand All @@ -49,7 +49,7 @@ class ParticleOscillatorNode extends ParticleNodeBase
*/
override public function getAGALVertexCode(pass:MaterialPassBase, animationRegisterCache:AnimationRegisterCache):String
{
var oscillatorRegister:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var oscillatorRegister:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, OSCILLATOR_INDEX, oscillatorRegister.index);
var temp:ShaderRegisterElement = animationRegisterCache.getFreeVertexVectorTemp();
var dgree:ShaderRegisterElement = new ShaderRegisterElement(temp.regName, temp.index, 0);
Expand Down
4 changes: 2 additions & 2 deletions away3d/animators/nodes/ParticlePositionNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class ParticlePositionNode extends ParticleNodeBase
* @param mode Defines whether the mode of operation acts on local properties of a particle or global properties of the node.
* @param [optional] position Defines the default position of the particle when in global mode. Defaults to 0,0,0.
*/
public function new(mode:Int, position:Vector3D = null)
public function new(mode:ParticlePropertiesMode, position:Vector3D = null)
{
super("ParticlePosition", mode, 3);

Expand All @@ -49,7 +49,7 @@ class ParticlePositionNode extends ParticleNodeBase
*/
override public function getAGALVertexCode(pass:MaterialPassBase, animationRegisterCache:AnimationRegisterCache):String
{
var positionAttribute:ShaderRegisterElement = (_mode == ParticlePropertiesMode.GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
var positionAttribute:ShaderRegisterElement = (_mode == GLOBAL)? animationRegisterCache.getFreeVertexConstant() : animationRegisterCache.getFreeVertexAttribute();
animationRegisterCache.setRegisterIndex(this, POSITION_INDEX, positionAttribute.index);

return "add " + animationRegisterCache.positionTarget + ".xyz," + positionAttribute + ".xyz," + animationRegisterCache.positionTarget + ".xyz\n";
Expand Down
2 changes: 1 addition & 1 deletion away3d/animators/nodes/ParticleRotateToHeadingNode.hx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class ParticleRotateToHeadingNode extends ParticleNodeBase
*/
public function new()
{
super("ParticleRotateToHeading", ParticlePropertiesMode.GLOBAL, 0, 3);
super("ParticleRotateToHeading", GLOBAL, 0, 3);

_stateConstructor = cast ParticleRotateToHeadingState.new;
}
Expand Down
Loading