public static void AddRotationAction(this SCNNode node, SCNActionTimingMode mode, double secs, bool loop = false) { SCNAction rotateAction = SCNAction.RotateBy(0, (float)Math.PI, 0, secs); rotateAction.TimingMode = mode; if (loop) { SCNAction indefiniteRotation = SCNAction.RepeatActionForever(rotateAction); node.RunAction(indefiniteRotation, "rotation"); } else { node.RunAction(rotateAction, "rotation"); } }
public static void MoveTo(this SCNNode node, SCNNode target, double timeInSeconds, SCNActionTimingMode timingMode = SCNActionTimingMode.EaseOut) => node.RunAction(SCNAction.MoveTo(new SCNVector3(target.Position.X, target.Position.Y, target.Position.Z), timeInSeconds).Ease(timingMode));
public static void RotateBy(this SCNNode node, float x, float y, float z, double timeInSeconds, SCNActionTimingMode timingMode = SCNActionTimingMode.EaseOut) => node.RunAction(SCNAction.RotateBy(x, y, z, timeInSeconds).Ease(timingMode));
public static SCNAction Ease(this SCNAction action, SCNActionTimingMode mode) { action.TimingMode = mode; return(action); }