diff options
| author | yum <yum.food.vr@gmail.com> | 2022-12-22 23:10:37 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2022-12-24 12:13:07 -0800 |
| commit | 50d327b83b496085ec91e31100d12f5f60c7d4ac (patch) | |
| tree | 239431b51e578f2188e6cf4c70ca8905390e72be /Scripts/libtastt.py | |
| parent | 6f2c1dace46a68620bc61a732a2f43252bd5d3ba (diff) | |
GUI: expose chars per sync, bytes per char
Users can now control how many characters they send per sync event, as
well as the number of bytes used to represent each character.
This gives them the power to pick between faster paging and fewer sync
params.
International users must use 2 bytes per char (at least for now).
* package.ps1: don't distribute the gigantic TTF files, just the bitmaps
Diffstat (limited to 'Scripts/libtastt.py')
| -rw-r--r-- | Scripts/libtastt.py | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/Scripts/libtastt.py b/Scripts/libtastt.py index 9efd0e9..3168517 100644 --- a/Scripts/libtastt.py +++ b/Scripts/libtastt.py @@ -165,9 +165,9 @@ def generateClearAnimation(anim_dir, guid_map): letter = 0 - for byte in range(0, generate_utils.BYTES_PER_CHAR): - for row in range(0, generate_utils.BOARD_ROWS): - for col in range(0, generate_utils.BOARD_COLS): + for byte in range(0, generate_utils.config.BYTES_PER_CHAR): + for row in range(0, generate_utils.config.BOARD_ROWS): + for col in range(0, generate_utils.config.BOARD_COLS): curve = curve_template.copy() for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence: keyframe.mapping['value'] = str(letter + @@ -294,14 +294,14 @@ def generateAnimations(anim_dir, guid_map): anim_clip.mapping['m_EditorCurves'].sequence = [] # To support more languages, we use 2 bytes per character, giving us a 64K character set. - for byte in range(0, generate_utils.BYTES_PER_CHAR): - for row in range(0, generate_utils.BOARD_ROWS): + for byte in range(0, generate_utils.config.BYTES_PER_CHAR): + for row in range(0, generate_utils.config.BOARD_ROWS): print("Generating letter animations (row {}/{}) (byte {}/2)".format(row, - generate_utils.BOARD_ROWS, byte), file=sys.stderr) - for col in range(0, generate_utils.BOARD_COLS): + generate_utils.config.BOARD_ROWS, byte), file=sys.stderr) + for col in range(0, generate_utils.config.BOARD_COLS): for letter in range(0, 2): if letter == 1: - letter = generate_utils.CHARS_PER_CELL - 1 + letter = generate_utils.config.CHARS_PER_CELL - 1 # Make a deep copy of the templates node = anim_node.copy() @@ -348,9 +348,9 @@ def generateFXController(anim: libunity.UnityAnimator) -> typing.Dict[int, libun anim.addParameter(generate_utils.getScaleParam(), float) layers = {} - for byte in range(0, generate_utils.BYTES_PER_CHAR): + for byte in range(0, generate_utils.config.BYTES_PER_CHAR): layers[byte] = {} - for i in range(0, generate_utils.NUM_LAYERS): + for i in range(0, generate_utils.config.CHARS_PER_SYNC): anim.addParameter(generate_utils.getBlendParam(i, byte), float) layer = anim.addLayer(generate_utils.getLayerName(i, byte)) @@ -375,7 +375,7 @@ def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer: enable_param, True) select_states = {} - for i in range(0, generate_utils.NUM_REGIONS): + for i in range(0, generate_utils.config.numRegions(which_layer)): dx = i * 200 dy = 200 @@ -387,7 +387,7 @@ def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer: guid_lo = guid_map[anim_lo_path] anim_hi_path = os.path.join(gen_anim_dir, generate_utils.getAnimationNameByLayerAndIndex( - which_layer, i, generate_utils.CHARS_PER_CELL - 1, byte) + \ + which_layer, i, generate_utils.config.CHARS_PER_CELL - 1, byte) + \ ".anim") guid_hi = guid_map[anim_hi_path] @@ -490,7 +490,7 @@ def generateFX(guid_map, gen_anim_dir): layers = generateFXController(anim) # TODO(yum) parallelize - for byte in range(0, generate_utils.BYTES_PER_CHAR): + for byte in range(0, generate_utils.config.BYTES_PER_CHAR): for which_layer, layer in layers[byte].items(): print("Generating layer {}/{}".format(which_layer, len(layers[byte].items())), file=sys.stderr) generateFXLayer(which_layer, anim, layer, gen_anim_dir, byte) @@ -547,6 +547,8 @@ def parseArgs(): "which all generated animations are placed.") parser.add_argument("--guid_map", type=str, help="The path to a file which will store guids") parser.add_argument("--fx_dest", type=str, help="The path at which to save the generated FX controller") + parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character") + parser.add_argument("--chars_per_sync", type=str, help="The number of characters to send on each sync event") args = parser.parse_args() if not args.gen_dir: @@ -569,6 +571,13 @@ if __name__ == "__main__": args = parseArgs() if args.cmd == "gen_anims": + if not args.bytes_per_char or not args.chars_per_sync: + print("--bytes_per_char and --chars_per_sync required", file=sys.stderr) + sys.exit(1) + + generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char) + generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync) + guid_map = {} with open(args.guid_map, 'rb') as f: guid_map = pickle.load(f) @@ -579,6 +588,13 @@ if __name__ == "__main__": with open(args.guid_map, 'wb') as f: pickle.dump(guid_map, f) elif args.cmd == "gen_fx": + if not args.bytes_per_char or not args.chars_per_sync: + print("--bytes_per_char and --chars_per_sync required", file=sys.stderr) + sys.exit(1) + + generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char) + generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync) + guid_map = {} with open(args.guid_map, 'rb') as f: guid_map = pickle.load(f) |
