-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjson_to_color_patch.py
58 lines (48 loc) · 2.92 KB
/
json_to_color_patch.py
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
import datamodel
def patchPCFWithJson(data, directory):
for filename in data:
particle = datamodel.load(directory + filename)
# print('\n')
# print(filename)
particleFile = open(directory + filename, "r+b")
for ele in particle.find_elements(elemtype="DmeParticleSystemDefinition"):
if ele.name in data[filename]:
# print('\n')
# print(ele.name)
if 'color_fade' in data[filename][ele.name]:
for operator in ele.get('operators'):
if(operator.name == "Color Fade"):
# print("color_fade")
# print(operator['color_fade'].offset)
particleFile.seek(operator['color_fade'].offset)
for i in data[filename][ele.name]['color_fade']:
particleFile.write(bytes((int(i),)))
# print(operator.get("color_fade")[0], end = '')
# print(", ", end = '')
# print(operator.get("color_fade")[1], end = '')
# print(", ", end = '')
# print(operator.get("color_fade")[2])
if 'color1' in data[filename][ele.name]:
for initializer in ele.get('initializers'):
if(initializer.name == "Color Random"):
# print("color1")
# print(initializer['color1'].offset)
particleFile.seek(initializer['color1'].offset)
for i in data[filename][ele.name]['color1']:
particleFile.write(bytes((int(i),)))
# print(initializer.get("color1")[0], end = '')
# print(", ", end = '')
# print(initializer.get("color1")[1], end = '')
# print(", ", end = '')
# print(initializer.get("color1")[2])
# print("color2")
# print(initializer['color2'].offset)
particleFile.seek(initializer['color2'].offset)
for i in data[filename][ele.name]['color2']:
particleFile.write(bytes((int(i),)))
# print(initializer.get("color2")[0], end = '')
# print(", ", end = '')
# print(initializer.get("color2")[1], end = '')
# print(", ", end = '')
# print(initializer.get("color2")[2])
particleFile.close()