summaryrefslogtreecommitdiffstats
path: root/Scripts/generate_params.py
blob: b88a6981b9ed42f7f17dc19c1b69c06c746dbced (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env python3

import argparse
import generate_utils
import sys

PARAM_HEADER = """
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -1506855854, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
  m_Name: TaSTT_params
  m_EditorClassIdentifier: 
  parameters:
"""[1:]

INT_PARAM = """
  - name: %PARAM_NAME%
    valueType: 0
    saved: 0
    defaultValue: 0
"""[1:]

BOOL_PARAM = """
  - name: %PARAM_NAME%
    valueType: 2
    saved: %SAVED%
    defaultValue: 0
"""[1:]

FLOAT_PARAM = """
  - name: %PARAM_NAME%
    valueType: 1
    saved: 0
    defaultValue: %DEFAULT_FLOAT%
"""[1:]

def generate():
    result = ""

    # We're working with an 84-character board, and each FX layer is responsible
    # for 8 of those characters.
    params = {}
    params["SAVED"] = "0"
    params["DEFAULT_FLOAT"] = "0"

    params["PARAM_NAME"] = generate_utils.getDummyParam()
    result += generate_utils.replaceMacros(BOOL_PARAM, params)

    params["PARAM_NAME"] = generate_utils.getEnableParam()
    result += generate_utils.replaceMacros(BOOL_PARAM, params)

    params["PARAM_NAME"] = generate_utils.getScaleParam()
    params["DEFAULT_FLOAT"] = "0.05"
    result += generate_utils.replaceMacros(FLOAT_PARAM, params)
    params["DEFAULT_FLOAT"] = "0"

    params["PARAM_NAME"] = generate_utils.getToggleParam()
    result += generate_utils.replaceMacros(BOOL_PARAM, params)

    params["PARAM_NAME"] = generate_utils.getLockWorldParam()
    result += generate_utils.replaceMacros(BOOL_PARAM, params)

    params["PARAM_NAME"] = generate_utils.getClearBoardParam()
    result += generate_utils.replaceMacros(BOOL_PARAM, params)

    params["PARAM_NAME"] = generate_utils.getSelectParam()
    result += generate_utils.replaceMacros(INT_PARAM, params)

    for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
        for i in range(0, generate_utils.config.CHARS_PER_SYNC):
            params["PARAM_NAME"] = generate_utils.getBlendParam(i, byte)
            result += generate_utils.replaceMacros(FLOAT_PARAM, params)

    return result

def append(old_path, params, new_path):
    merged = ""
    with open(old_path, "r") as f:
        merged = f.read()
    merged += params
    with open(new_path, "w") as f:
        f.write(merged)

if __name__ == "__main__":

    parser = argparse.ArgumentParser()
    parser.add_argument("--old_params", type=str, help="The parameters to append to")
    parser.add_argument("--new_params", type=str, help="The parameters to create")
    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.old_params or not args.new_params:
        print("--old_params and --new_params are both required",
                file=sys.stderr)
        parser.print_help()
        parser.exit(1)

    if not args.bytes_per_char or not args.chars_per_sync:
        print("--bytes_per_char and --chars_per_sync required", file=sys.stderr)
        parser.print_help()
        parser.exit(1)
    generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char)
    generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync)

    append(args.old_params, generate(), args.new_params)