diff --git a/addon/ops/base_export.py b/addon/ops/base_export.py index d3904da..a4d0db1 100644 --- a/addon/ops/base_export.py +++ b/addon/ops/base_export.py @@ -10,6 +10,12 @@ class BaseExport: COMMAND_END = 0x3E LINE_BREAK = 10 + skip_duplicates: bpy.props.BoolProperty( + name="Skip unchanged positions", + description="Skip positions which haven't changed since the last frame", + default=True + ) + @classmethod def poll(cls, context): if not context.object or context.object.type != 'ARMATURE': @@ -47,28 +53,37 @@ def execute(self, context): return {'FINISHED'} - @classmethod - def get_command(cls, servo_id, position): - command = [cls.COMMAND_START, servo_id] - command += position.to_bytes(2, 'big') - command += [cls.COMMAND_END] - - return command - - @classmethod - def get_commands(cls, frames, positions): + def get_commands(self, frames, positions): commands = [] + last_positions = {} for frame in range(frames): for servo_id in range(255): if servo_id not in positions: continue + + if servo_id not in last_positions: + last_positions[servo_id] = None + position = positions[servo_id][frame] - commands += cls.get_command(servo_id, position) - commands.append(cls.LINE_BREAK) + + if self.skip_duplicates and last_positions[servo_id] == position: + continue + + commands += self.get_command(servo_id, position) + last_positions[servo_id] = position + + commands.append(self.LINE_BREAK) return commands + def get_command(self, servo_id, position): + command = [self.COMMAND_START, servo_id] + command += position.to_bytes(2, 'big') + command += [self.COMMAND_END] + + return command + @staticmethod def get_time_meta(scene): fps = scene.render.fps diff --git a/addon/ops/json_export.py b/addon/ops/json_export.py index 5705f7c..6bde312 100644 --- a/addon/ops/json_export.py +++ b/addon/ops/json_export.py @@ -20,6 +20,8 @@ class JsonExport(Operator, BaseExport, ExportHelper): maxlen=255 ) + skip_duplicates: None + def export(self, positions, filepath, context): fps, frames, seconds = self.get_time_meta(context.scene) filename = self.get_blend_filename() diff --git a/addon/utils/live_mode.py b/addon/utils/live_mode.py index 90dc8e6..6f801d4 100644 --- a/addon/utils/live_mode.py +++ b/addon/utils/live_mode.py @@ -91,7 +91,7 @@ def handler(cls, _scene, _depsgraph): servo_animation = bpy.context.window_manager.servo_animation for pose_bone in get_active_pose_bones(bpy.context.scene): - position, _angle, in_range = calculate_position(pose_bone, None) + position, _angle, in_range = calculate_position(pose_bone) if not in_range: continue diff --git a/examples/IK/ik.h b/examples/IK/ik.h index 51ea664..e17ff28 100644 --- a/examples/IK/ik.h +++ b/examples/IK/ik.h @@ -14,7 +14,7 @@ const byte FPS = 30; const int FRAMES = 100; -const int LENGTH = 1100; +const int LENGTH = 1040; const byte PROGMEM ANIMATION_DATA[LENGTH] = { 0x3c, 0x00, 0x01, 0x77, 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, 0x3c, @@ -29,84 +29,79 @@ const byte PROGMEM ANIMATION_DATA[LENGTH] = { 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x96, 0x3e, 0x3c, 0x01, 0x01, 0xb2, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x98, 0x3e, 0x3c, 0x01, 0x01, 0xbb, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x9a, 0x3e, 0x3c, 0x01, 0x01, 0xc2, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x9a, 0x3e, 0x3c, 0x01, 0x01, 0xc9, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x99, 0x3e, 0x3c, 0x01, 0x01, 0xcf, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x96, 0x3e, 0x3c, 0x01, 0x01, 0xd4, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x92, - 0x3e, 0x3c, 0x01, 0x01, 0xd7, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8c, 0x3e, - 0x3c, 0x01, 0x01, 0xd8, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x86, 0x3e, 0x3c, - 0x01, 0x01, 0xd7, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x7e, 0x3e, 0x3c, 0x01, - 0x01, 0xd5, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x75, 0x3e, 0x3c, 0x01, 0x01, - 0xd2, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x6c, 0x3e, 0x3c, 0x01, 0x01, 0xce, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x63, 0x3e, 0x3c, 0x01, 0x01, 0xc9, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x5a, 0x3e, 0x3c, 0x01, 0x01, 0xc4, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x52, 0x3e, 0x3c, 0x01, 0x01, 0xbf, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x4a, 0x3e, 0x3c, 0x01, 0x01, 0xb9, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x43, 0x3e, 0x3c, 0x01, 0x01, 0xb5, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x3e, 0x3e, 0x3c, 0x01, 0x01, 0xb0, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x3a, - 0x3e, 0x3c, 0x01, 0x01, 0xac, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x37, 0x3e, - 0x3c, 0x01, 0x01, 0xa8, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x35, 0x3e, 0x3c, - 0x01, 0x01, 0xa4, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x33, 0x3e, 0x3c, 0x01, - 0x01, 0xa0, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x31, 0x3e, 0x3c, 0x01, 0x01, - 0x9b, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x31, 0x3e, 0x3c, 0x01, 0x01, 0x97, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x31, 0x3e, 0x3c, 0x01, 0x01, 0x92, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x31, 0x3e, 0x3c, 0x01, 0x01, 0x8e, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x32, 0x3e, 0x3c, 0x01, 0x01, 0x8a, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x33, 0x3e, 0x3c, 0x01, 0x01, 0x85, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x35, 0x3e, 0x3c, 0x01, 0x01, 0x80, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x37, 0x3e, 0x3c, 0x01, 0x01, 0x7c, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x3a, - 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x3d, 0x3e, - 0x3c, 0x01, 0x01, 0x72, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x40, 0x3e, 0x3c, - 0x01, 0x01, 0x6e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x43, 0x3e, 0x3c, 0x01, - 0x01, 0x69, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x47, 0x3e, 0x3c, 0x01, 0x01, - 0x64, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x4b, 0x3e, 0x3c, 0x01, 0x01, 0x60, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x4f, 0x3e, 0x3c, 0x01, 0x01, 0x5b, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x53, 0x3e, 0x3c, 0x01, 0x01, 0x56, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x57, 0x3e, 0x3c, 0x01, 0x01, 0x51, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x5b, 0x3e, 0x3c, 0x01, 0x01, 0x4d, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x5f, 0x3e, 0x3c, 0x01, 0x01, 0x48, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x64, 0x3e, 0x3c, 0x01, 0x01, 0x44, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x68, - 0x3e, 0x3c, 0x01, 0x01, 0x3f, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x6c, 0x3e, - 0x3c, 0x01, 0x01, 0x3b, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x71, 0x3e, 0x3c, - 0x01, 0x01, 0x38, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x76, 0x3e, 0x3c, 0x01, - 0x01, 0x35, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x7c, 0x3e, 0x3c, 0x01, 0x01, - 0x34, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x82, 0x3e, 0x3c, 0x01, 0x01, 0x33, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x88, 0x3e, 0x3c, 0x01, 0x01, 0x32, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x8e, 0x3e, 0x3c, 0x01, 0x01, 0x32, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x94, 0x3e, 0x3c, 0x01, 0x01, 0x32, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x9a, 0x3e, 0x3c, 0x01, 0x01, 0x33, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x9f, 0x3e, 0x3c, 0x01, 0x01, 0x34, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0xa4, 0x3e, 0x3c, 0x01, 0x01, 0x35, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa9, - 0x3e, 0x3c, 0x01, 0x01, 0x36, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xad, 0x3e, - 0x3c, 0x01, 0x01, 0x37, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb0, 0x3e, 0x3c, - 0x01, 0x01, 0x38, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb3, 0x3e, 0x3c, 0x01, - 0x01, 0x39, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb4, 0x3e, 0x3c, 0x01, 0x01, - 0x39, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb5, 0x3e, 0x3c, 0x01, 0x01, 0x39, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb5, 0x3e, 0x3c, 0x01, 0x01, 0x39, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0xb4, 0x3e, 0x3c, 0x01, 0x01, 0x3a, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0xb3, 0x3e, 0x3c, 0x01, 0x01, 0x3b, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0xb2, 0x3e, 0x3c, 0x01, 0x01, 0x3c, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0xb0, 0x3e, 0x3c, 0x01, 0x01, 0x3e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0xae, 0x3e, 0x3c, 0x01, 0x01, 0x40, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xac, - 0x3e, 0x3c, 0x01, 0x01, 0x42, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xaa, 0x3e, - 0x3c, 0x01, 0x01, 0x44, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa7, 0x3e, 0x3c, - 0x01, 0x01, 0x47, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa5, 0x3e, 0x3c, 0x01, - 0x01, 0x49, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa2, 0x3e, 0x3c, 0x01, 0x01, - 0x4c, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x9f, 0x3e, 0x3c, 0x01, 0x01, 0x4f, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x9c, 0x3e, 0x3c, 0x01, 0x01, 0x52, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x99, 0x3e, 0x3c, 0x01, 0x01, 0x55, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x96, 0x3e, 0x3c, 0x01, 0x01, 0x58, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x93, 0x3e, 0x3c, 0x01, 0x01, 0x5b, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x90, 0x3e, 0x3c, 0x01, 0x01, 0x5e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x8d, 0x3e, 0x3c, 0x01, 0x01, 0x61, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8a, - 0x3e, 0x3c, 0x01, 0x01, 0x64, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x87, 0x3e, - 0x3c, 0x01, 0x01, 0x67, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x84, 0x3e, 0x3c, - 0x01, 0x01, 0x6a, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x82, 0x3e, 0x3c, 0x01, - 0x01, 0x6c, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x80, 0x3e, 0x3c, 0x01, 0x01, - 0x6e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x7d, 0x3e, 0x3c, 0x01, 0x01, 0x71, - 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x7c, 0x3e, 0x3c, 0x01, 0x01, 0x72, 0x3e, - 0x0a, 0x3c, 0x00, 0x01, 0x7a, 0x3e, 0x3c, 0x01, 0x01, 0x74, 0x3e, 0x0a, - 0x3c, 0x00, 0x01, 0x79, 0x3e, 0x3c, 0x01, 0x01, 0x75, 0x3e, 0x0a, 0x3c, - 0x00, 0x01, 0x78, 0x3e, 0x3c, 0x01, 0x01, 0x76, 0x3e, 0x0a, 0x3c, 0x00, - 0x01, 0x77, 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, 0x3c, 0x00, 0x01, - 0x77, 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, + 0x01, 0x01, 0xc9, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x99, 0x3e, 0x3c, 0x01, + 0x01, 0xcf, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x96, 0x3e, 0x3c, 0x01, 0x01, + 0xd4, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x92, 0x3e, 0x3c, 0x01, 0x01, 0xd7, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8c, 0x3e, 0x3c, 0x01, 0x01, 0xd8, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x86, 0x3e, 0x3c, 0x01, 0x01, 0xd7, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x7e, 0x3e, 0x3c, 0x01, 0x01, 0xd5, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x75, 0x3e, 0x3c, 0x01, 0x01, 0xd2, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0x6c, 0x3e, 0x3c, 0x01, 0x01, 0xce, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0x63, 0x3e, 0x3c, 0x01, 0x01, 0xc9, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x5a, + 0x3e, 0x3c, 0x01, 0x01, 0xc4, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x52, 0x3e, + 0x3c, 0x01, 0x01, 0xbf, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x4a, 0x3e, 0x3c, + 0x01, 0x01, 0xb9, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x43, 0x3e, 0x3c, 0x01, + 0x01, 0xb5, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x3e, 0x3e, 0x3c, 0x01, 0x01, + 0xb0, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x3a, 0x3e, 0x3c, 0x01, 0x01, 0xac, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x37, 0x3e, 0x3c, 0x01, 0x01, 0xa8, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x35, 0x3e, 0x3c, 0x01, 0x01, 0xa4, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x33, 0x3e, 0x3c, 0x01, 0x01, 0xa0, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x31, 0x3e, 0x3c, 0x01, 0x01, 0x9b, 0x3e, 0x0a, 0x3c, 0x01, + 0x01, 0x97, 0x3e, 0x0a, 0x3c, 0x01, 0x01, 0x92, 0x3e, 0x0a, 0x3c, 0x01, + 0x01, 0x8e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x32, 0x3e, 0x3c, 0x01, 0x01, + 0x8a, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x33, 0x3e, 0x3c, 0x01, 0x01, 0x85, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x35, 0x3e, 0x3c, 0x01, 0x01, 0x80, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x37, 0x3e, 0x3c, 0x01, 0x01, 0x7c, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x3a, 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x3d, 0x3e, 0x3c, 0x01, 0x01, 0x72, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0x40, 0x3e, 0x3c, 0x01, 0x01, 0x6e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0x43, 0x3e, 0x3c, 0x01, 0x01, 0x69, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x47, + 0x3e, 0x3c, 0x01, 0x01, 0x64, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x4b, 0x3e, + 0x3c, 0x01, 0x01, 0x60, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x4f, 0x3e, 0x3c, + 0x01, 0x01, 0x5b, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x53, 0x3e, 0x3c, 0x01, + 0x01, 0x56, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x57, 0x3e, 0x3c, 0x01, 0x01, + 0x51, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x5b, 0x3e, 0x3c, 0x01, 0x01, 0x4d, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x5f, 0x3e, 0x3c, 0x01, 0x01, 0x48, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x64, 0x3e, 0x3c, 0x01, 0x01, 0x44, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x68, 0x3e, 0x3c, 0x01, 0x01, 0x3f, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x6c, 0x3e, 0x3c, 0x01, 0x01, 0x3b, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0x71, 0x3e, 0x3c, 0x01, 0x01, 0x38, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0x76, 0x3e, 0x3c, 0x01, 0x01, 0x35, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x7c, + 0x3e, 0x3c, 0x01, 0x01, 0x34, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x82, 0x3e, + 0x3c, 0x01, 0x01, 0x33, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x88, 0x3e, 0x3c, + 0x01, 0x01, 0x32, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8e, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x94, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x9a, 0x3e, 0x3c, 0x01, + 0x01, 0x33, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x9f, 0x3e, 0x3c, 0x01, 0x01, + 0x34, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa4, 0x3e, 0x3c, 0x01, 0x01, 0x35, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa9, 0x3e, 0x3c, 0x01, 0x01, 0x36, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0xad, 0x3e, 0x3c, 0x01, 0x01, 0x37, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0xb0, 0x3e, 0x3c, 0x01, 0x01, 0x38, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0xb3, 0x3e, 0x3c, 0x01, 0x01, 0x39, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0xb4, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb5, 0x3e, 0x0a, 0x0a, 0x3c, + 0x00, 0x01, 0xb4, 0x3e, 0x3c, 0x01, 0x01, 0x3a, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0xb3, 0x3e, 0x3c, 0x01, 0x01, 0x3b, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0xb2, 0x3e, 0x3c, 0x01, 0x01, 0x3c, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xb0, + 0x3e, 0x3c, 0x01, 0x01, 0x3e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xae, 0x3e, + 0x3c, 0x01, 0x01, 0x40, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xac, 0x3e, 0x3c, + 0x01, 0x01, 0x42, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xaa, 0x3e, 0x3c, 0x01, + 0x01, 0x44, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa7, 0x3e, 0x3c, 0x01, 0x01, + 0x47, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa5, 0x3e, 0x3c, 0x01, 0x01, 0x49, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0xa2, 0x3e, 0x3c, 0x01, 0x01, 0x4c, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x9f, 0x3e, 0x3c, 0x01, 0x01, 0x4f, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x9c, 0x3e, 0x3c, 0x01, 0x01, 0x52, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x99, 0x3e, 0x3c, 0x01, 0x01, 0x55, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0x96, 0x3e, 0x3c, 0x01, 0x01, 0x58, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0x93, 0x3e, 0x3c, 0x01, 0x01, 0x5b, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x90, + 0x3e, 0x3c, 0x01, 0x01, 0x5e, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8d, 0x3e, + 0x3c, 0x01, 0x01, 0x61, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x8a, 0x3e, 0x3c, + 0x01, 0x01, 0x64, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x87, 0x3e, 0x3c, 0x01, + 0x01, 0x67, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x84, 0x3e, 0x3c, 0x01, 0x01, + 0x6a, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x82, 0x3e, 0x3c, 0x01, 0x01, 0x6c, + 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x80, 0x3e, 0x3c, 0x01, 0x01, 0x6e, 0x3e, + 0x0a, 0x3c, 0x00, 0x01, 0x7d, 0x3e, 0x3c, 0x01, 0x01, 0x71, 0x3e, 0x0a, + 0x3c, 0x00, 0x01, 0x7c, 0x3e, 0x3c, 0x01, 0x01, 0x72, 0x3e, 0x0a, 0x3c, + 0x00, 0x01, 0x7a, 0x3e, 0x3c, 0x01, 0x01, 0x74, 0x3e, 0x0a, 0x3c, 0x00, + 0x01, 0x79, 0x3e, 0x3c, 0x01, 0x01, 0x75, 0x3e, 0x0a, 0x3c, 0x00, 0x01, + 0x78, 0x3e, 0x3c, 0x01, 0x01, 0x76, 0x3e, 0x0a, 0x3c, 0x00, 0x01, 0x77, + 0x3e, 0x3c, 0x01, 0x01, 0x77, 0x3e, 0x0a, 0x0a, }; diff --git a/examples/Scenes/scene-a.h b/examples/Scenes/scene-a.h index 38dbece..c4e3c42 100644 --- a/examples/Scenes/scene-a.h +++ b/examples/Scenes/scene-a.h @@ -19,18 +19,56 @@ const int FRAMES = 100; const int LENGTH = 600; const byte PROGMEM ANIMATION_DATA[LENGTH] = { - 60, 0, 5, 192, 62, 10, 60, 0, 5, 193, 62, 10, 60, 0, 5, 197, 62, 10, 60, 0, 5, 203, 62, 10, 60, 0, 5, 212, 62, 10, 60, 0, 5, 222, 62, 10, 60, 0, 5, 235, 62, 10, 60, 0, 5, 249, 62, 10, 60, 0, - 6, 8, 62, 10, 60, 0, 6, 26, 62, 10, 60, 0, 6, 44, 62, 10, 60, 0, 6, 63, 62, 10, 60, 0, 6, 83, 62, 10, 60, 0, 6, 104, 62, 10, 60, 0, 6, 125, 62, 10, 60, 0, 6, 146, 62, 10, 60, 0, 6, 168, - 62, 10, 60, 0, 6, 190, 62, 10, 60, 0, 6, 211, 62, 10, 60, 0, 6, 232, 62, 10, 60, 0, 6, 253, 62, 10, 60, 0, 7, 17, 62, 10, 60, 0, 7, 36, 62, 10, 60, 0, 7, 54, 62, 10, 60, 0, 7, 72, 62, 10, - 60, 0, 7, 87, 62, 10, 60, 0, 7, 101, 62, 10, 60, 0, 7, 114, 62, 10, 60, 0, 7, 124, 62, 10, 60, 0, 7, 133, 62, 10, 60, 0, 7, 139, 62, 10, 60, 0, 7, 143, 62, 10, 60, 0, 7, 144, 62, 10, 60, 0, - 7, 142, 62, 10, 60, 0, 7, 134, 62, 10, 60, 0, 7, 122, 62, 10, 60, 0, 7, 106, 62, 10, 60, 0, 7, 87, 62, 10, 60, 0, 7, 63, 62, 10, 60, 0, 7, 36, 62, 10, 60, 0, 7, 7, 62, 10, 60, 0, 6, 231, - 62, 10, 60, 0, 6, 196, 62, 10, 60, 0, 6, 159, 62, 10, 60, 0, 6, 121, 62, 10, 60, 0, 6, 81, 62, 10, 60, 0, 6, 41, 62, 10, 60, 0, 5, 255, 62, 10, 60, 0, 5, 213, 62, 10, 60, 0, 5, 171, 62, 10, - 60, 0, 5, 129, 62, 10, 60, 0, 5, 87, 62, 10, 60, 0, 5, 47, 62, 10, 60, 0, 5, 7, 62, 10, 60, 0, 4, 225, 62, 10, 60, 0, 4, 188, 62, 10, 60, 0, 4, 153, 62, 10, 60, 0, 4, 121, 62, 10, 60, 0, - 4, 92, 62, 10, 60, 0, 4, 65, 62, 10, 60, 0, 4, 41, 62, 10, 60, 0, 4, 22, 62, 10, 60, 0, 4, 6, 62, 10, 60, 0, 3, 250, 62, 10, 60, 0, 3, 242, 62, 10, 60, 0, 3, 240, 62, 10, 60, 0, 3, 241, - 62, 10, 60, 0, 3, 245, 62, 10, 60, 0, 3, 250, 62, 10, 60, 0, 4, 2, 62, 10, 60, 0, 4, 11, 62, 10, 60, 0, 4, 22, 62, 10, 60, 0, 4, 35, 62, 10, 60, 0, 4, 49, 62, 10, 60, 0, 4, 64, 62, 10, - 60, 0, 4, 81, 62, 10, 60, 0, 4, 98, 62, 10, 60, 0, 4, 117, 62, 10, 60, 0, 4, 136, 62, 10, 60, 0, 4, 155, 62, 10, 60, 0, 4, 175, 62, 10, 60, 0, 4, 196, 62, 10, 60, 0, 4, 216, 62, 10, 60, 0, - 4, 236, 62, 10, 60, 0, 5, 1, 62, 10, 60, 0, 5, 21, 62, 10, 60, 0, 5, 40, 62, 10, 60, 0, 5, 59, 62, 10, 60, 0, 5, 78, 62, 10, 60, 0, 5, 95, 62, 10, 60, 0, 5, 112, 62, 10, 60, 0, 5, 127, - 62, 10, 60, 0, 5, 141, 62, 10, 60, 0, 5, 154, 62, 10, 60, 0, 5, 165, 62, 10, 60, 0, 5, 174, 62, 10, 60, 0, 5, 182, 62, 10, 60, 0, 5, 187, 62, 10, 60, 0, 5, 191, 62, 10, 60, 0, 5, 192, 62, 10, + 0x3c, 0x00, 0x05, 0xc0, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc1, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xc5, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xcb, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xd4, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xde, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xeb, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xf9, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x08, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x1a, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x2c, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x3f, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x53, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x68, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x7d, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x92, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xa8, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xbe, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xd3, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xe8, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xfd, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x11, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x24, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x36, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x48, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x57, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x65, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x72, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x7c, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x85, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x8b, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8f, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x90, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8e, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x86, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x7a, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x6a, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x57, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x3f, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x24, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x07, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xe7, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xc4, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x9f, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x79, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x51, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x29, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xff, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xd5, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xab, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x81, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x57, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x2f, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x07, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0xe1, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0xbc, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x99, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x79, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x5c, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x41, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x29, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x16, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x06, 0x3e, 0x0a, 0x3c, 0x00, 0x03, 0xfa, 0x3e, 0x0a, + 0x3c, 0x00, 0x03, 0xf2, 0x3e, 0x0a, 0x3c, 0x00, 0x03, 0xf0, 0x3e, 0x0a, + 0x3c, 0x00, 0x03, 0xf1, 0x3e, 0x0a, 0x3c, 0x00, 0x03, 0xf5, 0x3e, 0x0a, + 0x3c, 0x00, 0x03, 0xfa, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x02, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x0b, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x16, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x23, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x31, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x40, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x51, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x62, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x75, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0x88, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0x9b, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0xaf, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0xc4, 0x3e, 0x0a, + 0x3c, 0x00, 0x04, 0xd8, 0x3e, 0x0a, 0x3c, 0x00, 0x04, 0xec, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x01, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x15, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x28, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x3b, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x4e, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x5f, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x70, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x7f, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0x8d, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0x9a, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xa5, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xae, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xb6, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xbb, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xbf, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc0, 0x3e, 0x0a, }; } // namespace SceneA diff --git a/examples/Scenes/scene-b.h b/examples/Scenes/scene-b.h index 325c7bb..c5ae145 100644 --- a/examples/Scenes/scene-b.h +++ b/examples/Scenes/scene-b.h @@ -16,33 +16,106 @@ namespace SceneB { const byte FPS = 60; const int FRAMES = 200; -const int LENGTH = 1200; +const int LENGTH = 1160; const byte PROGMEM ANIMATION_DATA[LENGTH] = { - 60, 0, 5, 192, 62, 10, 60, 0, 5, 192, 62, 10, 60, 0, 5, 193, 62, 10, 60, 0, 5, 193, 62, 10, 60, 0, 5, 194, 62, 10, 60, 0, 5, 195, 62, 10, 60, 0, 5, 197, 62, 10, 60, 0, 5, 199, 62, 10, 60, 0, - 5, 201, 62, 10, 60, 0, 5, 203, 62, 10, 60, 0, 5, 205, 62, 10, 60, 0, 5, 208, 62, 10, 60, 0, 5, 211, 62, 10, 60, 0, 5, 214, 62, 10, 60, 0, 5, 217, 62, 10, 60, 0, 5, 221, 62, 10, 60, 0, 5, 224, - 62, 10, 60, 0, 5, 228, 62, 10, 60, 0, 5, 232, 62, 10, 60, 0, 5, 237, 62, 10, 60, 0, 5, 241, 62, 10, 60, 0, 5, 246, 62, 10, 60, 0, 5, 251, 62, 10, 60, 0, 6, 0, 62, 10, 60, 0, 6, 5, 62, 10, - 60, 0, 6, 10, 62, 10, 60, 0, 6, 15, 62, 10, 60, 0, 6, 21, 62, 10, 60, 0, 6, 26, 62, 10, 60, 0, 6, 32, 62, 10, 60, 0, 6, 38, 62, 10, 60, 0, 6, 44, 62, 10, 60, 0, 6, 50, 62, 10, 60, 0, - 6, 56, 62, 10, 60, 0, 6, 63, 62, 10, 60, 0, 6, 69, 62, 10, 60, 0, 6, 75, 62, 10, 60, 0, 6, 82, 62, 10, 60, 0, 6, 89, 62, 10, 60, 0, 6, 95, 62, 10, 60, 0, 6, 102, 62, 10, 60, 0, 6, 109, - 62, 10, 60, 0, 6, 116, 62, 10, 60, 0, 6, 123, 62, 10, 60, 0, 6, 130, 62, 10, 60, 0, 6, 136, 62, 10, 60, 0, 6, 143, 62, 10, 60, 0, 6, 150, 62, 10, 60, 0, 6, 157, 62, 10, 60, 0, 6, 164, 62, 10, - 60, 0, 6, 172, 62, 10, 60, 0, 6, 179, 62, 10, 60, 0, 6, 186, 62, 10, 60, 0, 6, 193, 62, 10, 60, 0, 6, 200, 62, 10, 60, 0, 6, 206, 62, 10, 60, 0, 6, 213, 62, 10, 60, 0, 6, 220, 62, 10, 60, 0, - 6, 227, 62, 10, 60, 0, 6, 234, 62, 10, 60, 0, 6, 241, 62, 10, 60, 0, 6, 247, 62, 10, 60, 0, 6, 254, 62, 10, 60, 0, 7, 5, 62, 10, 60, 0, 7, 11, 62, 10, 60, 0, 7, 17, 62, 10, 60, 0, 7, 24, - 62, 10, 60, 0, 7, 30, 62, 10, 60, 0, 7, 36, 62, 10, 60, 0, 7, 42, 62, 10, 60, 0, 7, 48, 62, 10, 60, 0, 7, 54, 62, 10, 60, 0, 7, 59, 62, 10, 60, 0, 7, 65, 62, 10, 60, 0, 7, 70, 62, 10, - 60, 0, 7, 75, 62, 10, 60, 0, 7, 80, 62, 10, 60, 0, 7, 85, 62, 10, 60, 0, 7, 90, 62, 10, 60, 0, 7, 95, 62, 10, 60, 0, 7, 99, 62, 10, 60, 0, 7, 104, 62, 10, 60, 0, 7, 108, 62, 10, 60, 0, - 7, 112, 62, 10, 60, 0, 7, 115, 62, 10, 60, 0, 7, 119, 62, 10, 60, 0, 7, 122, 62, 10, 60, 0, 7, 125, 62, 10, 60, 0, 7, 128, 62, 10, 60, 0, 7, 131, 62, 10, 60, 0, 7, 133, 62, 10, 60, 0, 7, 135, - 62, 10, 60, 0, 7, 137, 62, 10, 60, 0, 7, 139, 62, 10, 60, 0, 7, 141, 62, 10, 60, 0, 7, 142, 62, 10, 60, 0, 7, 143, 62, 10, 60, 0, 7, 143, 62, 10, 60, 0, 7, 144, 62, 10, 60, 0, 7, 144, 62, 10, - 60, 0, 7, 144, 62, 10, 60, 0, 7, 143, 62, 10, 60, 0, 7, 143, 62, 10, 60, 0, 7, 142, 62, 10, 60, 0, 7, 141, 62, 10, 60, 0, 7, 139, 62, 10, 60, 0, 7, 138, 62, 10, 60, 0, 7, 136, 62, 10, 60, 0, - 7, 133, 62, 10, 60, 0, 7, 131, 62, 10, 60, 0, 7, 128, 62, 10, 60, 0, 7, 126, 62, 10, 60, 0, 7, 123, 62, 10, 60, 0, 7, 119, 62, 10, 60, 0, 7, 116, 62, 10, 60, 0, 7, 112, 62, 10, 60, 0, 7, 108, - 62, 10, 60, 0, 7, 104, 62, 10, 60, 0, 7, 100, 62, 10, 60, 0, 7, 96, 62, 10, 60, 0, 7, 91, 62, 10, 60, 0, 7, 86, 62, 10, 60, 0, 7, 82, 62, 10, 60, 0, 7, 77, 62, 10, 60, 0, 7, 72, 62, 10, - 60, 0, 7, 66, 62, 10, 60, 0, 7, 61, 62, 10, 60, 0, 7, 55, 62, 10, 60, 0, 7, 50, 62, 10, 60, 0, 7, 44, 62, 10, 60, 0, 7, 38, 62, 10, 60, 0, 7, 32, 62, 10, 60, 0, 7, 26, 62, 10, 60, 0, - 7, 20, 62, 10, 60, 0, 7, 13, 62, 10, 60, 0, 7, 7, 62, 10, 60, 0, 7, 0, 62, 10, 60, 0, 6, 250, 62, 10, 60, 0, 6, 243, 62, 10, 60, 0, 6, 237, 62, 10, 60, 0, 6, 230, 62, 10, 60, 0, 6, 223, - 62, 10, 60, 0, 6, 216, 62, 10, 60, 0, 6, 210, 62, 10, 60, 0, 6, 203, 62, 10, 60, 0, 6, 196, 62, 10, 60, 0, 6, 189, 62, 10, 60, 0, 6, 182, 62, 10, 60, 0, 6, 175, 62, 10, 60, 0, 6, 168, 62, 10, - 60, 0, 6, 161, 62, 10, 60, 0, 6, 154, 62, 10, 60, 0, 6, 147, 62, 10, 60, 0, 6, 140, 62, 10, 60, 0, 6, 133, 62, 10, 60, 0, 6, 126, 62, 10, 60, 0, 6, 120, 62, 10, 60, 0, 6, 113, 62, 10, 60, 0, - 6, 106, 62, 10, 60, 0, 6, 99, 62, 10, 60, 0, 6, 93, 62, 10, 60, 0, 6, 86, 62, 10, 60, 0, 6, 80, 62, 10, 60, 0, 6, 73, 62, 10, 60, 0, 6, 67, 62, 10, 60, 0, 6, 60, 62, 10, 60, 0, 6, 54, - 62, 10, 60, 0, 6, 48, 62, 10, 60, 0, 6, 42, 62, 10, 60, 0, 6, 36, 62, 10, 60, 0, 6, 30, 62, 10, 60, 0, 6, 25, 62, 10, 60, 0, 6, 19, 62, 10, 60, 0, 6, 14, 62, 10, 60, 0, 6, 8, 62, 10, - 60, 0, 6, 3, 62, 10, 60, 0, 5, 254, 62, 10, 60, 0, 5, 250, 62, 10, 60, 0, 5, 245, 62, 10, 60, 0, 5, 240, 62, 10, 60, 0, 5, 236, 62, 10, 60, 0, 5, 232, 62, 10, 60, 0, 5, 228, 62, 10, 60, 0, - 5, 224, 62, 10, 60, 0, 5, 220, 62, 10, 60, 0, 5, 217, 62, 10, 60, 0, 5, 213, 62, 10, 60, 0, 5, 210, 62, 10, 60, 0, 5, 208, 62, 10, 60, 0, 5, 205, 62, 10, 60, 0, 5, 203, 62, 10, 60, 0, 5, 200, - 62, 10, 60, 0, 5, 198, 62, 10, 60, 0, 5, 197, 62, 10, 60, 0, 5, 195, 62, 10, 60, 0, 5, 194, 62, 10, 60, 0, 5, 193, 62, 10, 60, 0, 5, 193, 62, 10, 60, 0, 5, 192, 62, 10, 60, 0, 5, 192, 62, 10, + 0x3c, 0x00, 0x05, 0xc0, 0x3e, 0x0a, 0x0a, 0x3c, 0x00, 0x05, 0xc1, 0x3e, + 0x0a, 0x0a, 0x3c, 0x00, 0x05, 0xc2, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc3, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc5, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc7, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc9, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xcb, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xcd, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd0, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd3, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd6, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd9, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xdd, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xe0, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xe4, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xe8, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xed, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xf1, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xf6, + 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xfb, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x00, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x05, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x0a, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x0f, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x15, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x1a, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x20, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x26, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x2c, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x32, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x38, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x3f, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x45, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x4b, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x52, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x59, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x5f, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x66, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x6d, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x74, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x7b, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x82, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x88, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x8f, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x96, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x9d, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xa4, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xac, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xb3, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xba, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xc1, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xc8, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xce, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xd5, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xdc, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xe3, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xea, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xf1, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xf7, + 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xfe, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x05, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x0b, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x11, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x18, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x1e, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x24, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x2a, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x30, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x36, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x3b, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x41, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x46, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x4b, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x50, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x55, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x5a, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x5f, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x63, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x68, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x6c, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x70, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x73, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x77, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x7a, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x7d, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x80, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x83, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x85, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x87, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x89, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8b, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8d, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8e, + 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8f, 0x3e, 0x0a, 0x0a, 0x3c, 0x00, 0x07, + 0x90, 0x3e, 0x0a, 0x0a, 0x0a, 0x3c, 0x00, 0x07, 0x8f, 0x3e, 0x0a, 0x0a, + 0x3c, 0x00, 0x07, 0x8e, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8d, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x8b, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x8a, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x88, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x85, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x83, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x80, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x7e, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x7b, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x77, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x74, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x70, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x6c, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x68, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x64, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x60, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x5b, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x56, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x52, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x4d, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x48, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x42, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x3d, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x37, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x32, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x2c, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x26, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x20, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x1a, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x14, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x0d, 0x3e, 0x0a, + 0x3c, 0x00, 0x07, 0x07, 0x3e, 0x0a, 0x3c, 0x00, 0x07, 0x00, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xfa, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xf3, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xed, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xe6, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xdf, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xd8, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xd2, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xcb, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xc4, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xbd, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xb6, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xaf, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0xa8, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0xa1, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x9a, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x93, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x8c, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x85, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x7e, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x78, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x71, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x6a, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x63, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x5d, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x56, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x50, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x49, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x43, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x3c, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x36, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x30, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x2a, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x24, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x1e, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x19, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x13, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x0e, 0x3e, 0x0a, 0x3c, 0x00, 0x06, 0x08, 0x3e, 0x0a, + 0x3c, 0x00, 0x06, 0x03, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xfe, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xfa, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xf5, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xf0, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xec, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xe8, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xe4, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xe0, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xdc, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xd9, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd5, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xd2, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xd0, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xcd, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xcb, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xc8, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc6, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xc5, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc3, 0x3e, 0x0a, + 0x3c, 0x00, 0x05, 0xc2, 0x3e, 0x0a, 0x3c, 0x00, 0x05, 0xc1, 0x3e, 0x0a, + 0x0a, 0x3c, 0x00, 0x05, 0xc0, 0x3e, 0x0a, 0x0a, }; } // namespace SceneB