diff --git a/Quik/CommandMachine/Frame.cs b/Quik/CommandMachine/Frame.cs index 40f8078..c17cc7b 100644 --- a/Quik/CommandMachine/Frame.cs +++ b/Quik/CommandMachine/Frame.cs @@ -1,3 +1,4 @@ +using System; using System.Runtime.InteropServices; namespace Quik.CommandMachine @@ -61,6 +62,18 @@ namespace Quik.CommandMachine } } + public FrameType Type => _type; + + public int I1 => _i1; + public int I2 => _i2; + public int I3 => _i3; + public int I4 => _i4; + + public float F1 => _f1; + public float F2 => _f2; + public float F3 => _f3; + public float F4 => _f4; + public static Frame None { get; } = new Frame() { _type = FrameType.None }; @@ -185,6 +198,32 @@ namespace Quik.CommandMachine return (T)_object; } + public float GetF(int i) + { + switch (i) + { + case 0: return _f1; + case 1: return _f2; + case 2: return _f3; + case 3: return _f4; + default: + throw new ArgumentOutOfRangeException(); + } + } + + public int GetI(int i) + { + switch (i) + { + case 0: return _i1; + case 1: return _i2; + case 2: return _i3; + case 3: return _i4; + default: + throw new ArgumentOutOfRangeException(); + } + } + public static explicit operator int(in Frame frame) => frame._i1; public static explicit operator float(in Frame frame) => frame._f1; public static explicit operator Command(in Frame frame) => (Command)frame._i1;