public static void Copy(PackFrame src, PackFrame trg)
        {
            var s = src as PackFrame_TestPackObject;
            var t = trg as PackFrame_TestPackObject;

            t.rotation   = s.rotation;
            t.intoroboto = s.intoroboto;
        }
        public static void Capture(System.Object src, PackFrame trg)
        {
            var s = src as emotitron.TestPackObject;
            var t = trg as PackFrame_TestPackObject;

            t.rotation   = s.rotation;
            t.intoroboto = s.intoroboto;
        }
        public static void Interpolate(PackFrame start, PackFrame end, System.Object trg, float time, ref FastBitMask128 readyMask, ref int maskOffset)
        {
            var s    = start as PackFrame_TestPackObject;
            var e    = end as PackFrame_TestPackObject;
            var t    = trg as emotitron.TestPackObject;
            var mask = end.mask;

            if (readyMask[maskOffset] && mask[maskOffset])
            {
                t.rotation = (System.Single)((e.rotation - s.rotation) * time) + s.rotation;
            }
            maskOffset++;
            maskOffset++;
        }
        public static void SnapshotCallback(PackFrame snapframe, PackFrame targframe, System.Object trg, ref FastBitMask128 readyMask, ref int maskOffset)
        {
            var snap     = snapframe as PackFrame_TestPackObject;
            var targ     = targframe as PackFrame_TestPackObject;
            var t        = trg as emotitron.TestPackObject;
            var snapmask = snapframe.mask;
            var targmask = targframe.mask;

            if (readyMask[maskOffset])
            {
                var snapval = snapmask[maskOffset] ? snap.rotation : t.rotation; var targval = targmask[maskOffset] ? targ.rotation : snapval; t.SnapshotHook(snapval, targval);
            }
            maskOffset++;
            maskOffset++;
        }
        public static SerializationFlags Pack(ref PackFrame_TestPackObject packable, PackFrame prevFrame, ref FastBitMask128 mask, ref int maskOffset, byte[] buffer, ref int bitposition, int frameId, SerializationFlags writeFlags)
        {
            var prev = prevFrame as PackFrame_TestPackObject;
            SerializationFlags flags = SerializationFlags.None;

            {
                var flag = rotationPacker(ref packable.rotation, prev.rotation, buffer, ref bitposition, frameId, writeFlags);
                mask[maskOffset] = flag != SerializationFlags.None;     flags |= flag; maskOffset++;
            }
            {
                var flag = intorobotoPacker(ref packable.intoroboto, prev.intoroboto, buffer, ref bitposition, frameId, writeFlags);
                mask[maskOffset] = flag != SerializationFlags.None;     flags |= flag; maskOffset++;
            }
            return(flags);
        }
        public static void Apply(PackFrame src, System.Object trg, ref FastBitMask128 mask, ref int maskOffset)
        {
            var s = src as PackFrame_TestPackObject;
            var t = trg as emotitron.TestPackObject;

            { if (mask[maskOffset])
              {
                  var hold = t.rotation; t.rotation = s.rotation; t.RotationHook(s.rotation, hold);
              }
            } maskOffset++;
            { if (mask[maskOffset])
              {
                  t.intoroboto = s.intoroboto;
              }
            } maskOffset++;
        }
        public static void Interpolate(PackFrame start, PackFrame end, PackFrame trg, float time, ref FastBitMask128 readyMask, ref int maskOffset)
        {
            var s    = start as PackFrame_TestPackObject;
            var e    = end as PackFrame_TestPackObject;
            var t    = trg as PackFrame_TestPackObject;
            var mask = end.mask;

            if (mask[maskOffset])
            {
                t.rotation = (System.Single)((e.rotation - s.rotation) * time) + s.rotation;
            }
            maskOffset++;
            if (mask[maskOffset])
            {
                t.intoroboto = (System.Int32)((e.intoroboto - s.intoroboto) * time) + s.intoroboto;
            }
            maskOffset++;
        }
        public static SerializationFlags Unpack(PackFrame obj, ref FastBitMask128 mask, ref FastBitMask128 isCompleteMask, ref int maskOffset, byte[] buffer, ref int bitposition, int frameId, SerializationFlags writeFlags)
        {
            var packable             = obj as PackFrame_TestPackObject;
            SerializationFlags flags = SerializationFlags.None;

            {
                if (mask[maskOffset])
                {
                    var flag = rotationUnpacker(ref packable.rotation, buffer, ref bitposition, frameId, writeFlags);
                    isCompleteMask[maskOffset] = (flag & SerializationFlags.IsComplete) != 0; mask[maskOffset] = flag != 0; flags |= flag;
                }
                maskOffset++;
            }
            {
                if (mask[maskOffset])
                {
                    var flag = intorobotoUnpacker(ref packable.intoroboto, buffer, ref bitposition, frameId, writeFlags);
                    isCompleteMask[maskOffset] = (flag & SerializationFlags.IsComplete) != 0; mask[maskOffset] = flag != 0; flags |= flag;
                }
                maskOffset++;
            }
            return(flags);
        }