Skip to content

Commit bfe67cf

Browse files
committed
initial implementation of new sprite groups
1 parent c3d4f20 commit bfe67cf

File tree

4 files changed

+330
-182
lines changed

4 files changed

+330
-182
lines changed
Lines changed: 223 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,53 @@
11
'''
2-
Copyright (c) 2022 RCT Graphics Helper developers
2+
Copyright (c) 2023 RCT Graphics Helper developers
33
44
For a complete list of all authors, please refer to the addon's meta info.
55
Interested in contributing? Visit https://github.com/oli414/Blender-RCT-Graphics
66
77
RCT Graphics Helper is licensed under the GNU General Public License version 3.
88
'''
99

10-
track_angle_sections_names = [
11-
"VEHICLE_SPRITE_FLAG_FLAT",
12-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES",
13-
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES",
14-
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES",
15-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES",
16-
"VEHICLE_SPRITE_FLAG_FLAT_BANKED",
17-
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS",
18-
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS",
19-
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS",
20-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS",
21-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS",
22-
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS",
23-
"VEHICLE_SPRITE_FLAG_CORKSCREWS",
24-
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION",
25-
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL"
10+
# This is the order sprite groups are rendered in
11+
sprite_group_names = [
12+
"slopeFlat", "slopes12", "slopes25", "slopes42", "slopes60",
13+
"slopes75", "slopes90", "slopesLoop", "slopeInverted", "slopes8",
14+
"slopes16", "slopes50", "flatBanked22", "flatBanked45", "flatBanked67",
15+
"flatBanked90", "inlineTwists", "slopes12Banked22", "slopes8Banked22", "slopes25Banked22",
16+
"slopes25Banked45", "slopes12Banked45", "slopes25Banked67", "slopes25Banked90", "slopes25InlineTwists",
17+
"slopes42Banked22", "slopes42Banked45", "slopes42Banked67", "slopes42Banked90", "slopes60Banked22",
18+
"corkscrews", "restraintAnimation", "curvedLiftHillUp", "curvedLiftHillDown"
2619
]
2720

28-
track_angle_sections = {
29-
"VEHICLE_SPRITE_FLAG_FLAT": [
21+
# The sprites to render in each sprite group. The given rotation values are used in simple mode
22+
sprite_group_manifest = {
23+
'slopeFlat': [
3024
[False, 32, 0, 0, 0]
3125
],
32-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES": [
26+
'slopes12': [
3327
[False, 4, 11.1026, 0, 0],
34-
[False, 4, -11.1026, 0, 0],
28+
[False, 4, -11.1026, 0, 0]
29+
],
30+
'slopes25': [
3531
[False, 32, 22.2052, 0, 0],
3632
[False, 32, -22.2052, 0, 0]
3733
],
38-
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES": [
34+
'slopes42': [
3935
[False, 8, 40.36, 0, 0],
40-
[False, 8, -40.36, 0, 0],
36+
[False, 8, -40.36, 0, 0]
37+
],
38+
'slopes60': [
4139
[False, 32, 58.5148, 0, 0],
4240
[False, 32, -58.5148, 0, 0]
4341
],
44-
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES": [
42+
'slopes75': [
4543
[False, 4, 75, 0, 0],
46-
[False, 4, -75, 0, 0],
44+
[False, 4, -75, 0, 0]
45+
],
46+
'slopes90': [
4747
[False, 32, 90, 0, 0],
48-
[False, 32, -90, 0, 0],
48+
[False, 32, -90, 0, 0]
49+
],
50+
'slopesLoop': [
4951
[False, 4, 105, 0, 0],
5052
[False, 4, -105, 0, 0],
5153
[False, 4, 120, 0, 0],
@@ -55,67 +57,134 @@
5557
[False, 4, 150, 0, 0],
5658
[False, 4, -150, 0, 0],
5759
[False, 4, 165, 0, 0],
58-
[False, 4, -165, 0, 0],
60+
[False, 4, -165, 0, 0]
61+
],
62+
'slopeInverted': [
5963
[False, 4, 180, 0, 0]
6064
],
61-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES": [
65+
'slopes8': [
6266
[True, 4, 8.0503, 0, 0],
63-
[True, 4, -8.0503, 0, 0],
67+
[True, 4, -8.0503, 0, 0]
68+
],
69+
'slopes16': [
6470
[True, 4, 16.1005, 0, 0],
65-
[True, 4, -16.1005, 0, 0],
71+
[True, 4, -16.1005, 0, 0]
72+
],
73+
'slopes50': [
6674
[True, 4, 49.1035, 0, 0],
6775
[True, 4, -49.1035, 0, 0]
6876
],
69-
"VEHICLE_SPRITE_FLAG_FLAT_BANKED": [
77+
'flatBanked22': [
7078
[False, 8, 0, -22.5, 0],
71-
[False, 8, 0, 22.5, 0],
79+
[False, 8, 0, 22.5, 0]
80+
],
81+
'flatBanked45': [
7282
[False, 32, 0, -45, 0],
7383
[False, 32, 0, 45, 0]
7484
],
75-
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS": [
76-
# The banking sprites are used at the start of a twist ((180-MAX_BANK)/6*FRAME)+MAX_BANK
85+
'flatBanked67': [
7786
[False, 4, 0, -67.5, 0],
78-
[False, 4, 0, 67.5, 0],
87+
[False, 4, 0, 67.5, 0]
88+
],
89+
'flatBanked90': [
7990
[False, 4, 0, -90, 0],
80-
[False, 4, 0, 90, 0],
91+
[False, 4, 0, 90, 0]
92+
],
93+
'inlineTwists': [
8194
[False, 4, 0, -112.5, 0],
8295
[False, 4, 0, 112.5, 0],
8396
[False, 4, 0, -135, 0],
8497
[False, 4, 0, 135, 0],
8598
[False, 4, 0, -157.5, 0],
8699
[False, 4, 0, 157.5, 0]
87100
],
88-
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS": [
101+
'slopes12Banked22': [
89102
[False, 32, 11.1026, -22.5, 0],
90103
[False, 32, 11.1026, 22.5, 0],
91104
[False, 32, -11.1026, -22.5, 0],
92105
[False, 32, -11.1026, 22.5, 0]
93106
],
94-
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS": [
107+
'slopes8Banked22': [
95108
[True, 4, 8.0503, -22.5, 0],
96109
[True, 4, 8.0503, 22.5, 0],
97110
[True, 4, -8.0503, -22.5, 0],
98111
[True, 4, -8.0503, 22.5, 0]
99112
],
100-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS": [
113+
'slopes25Banked22': [
101114
[False, 4, 22.2052, -22.5, 0],
102115
[False, 4, 22.2052, 22.5, 0],
103116
[False, 4, -22.2052, -22.5, 0],
104117
[False, 4, -22.2052, 22.5, 0]
105118
],
106-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS": [
119+
'slopes25Banked45': [
107120
[False, 32, 22.2052, -45, 0],
108121
[False, 32, 22.2052, 45, 0],
109122
[False, 32, -22.2052, -45, 0],
110123
[False, 32, -22.2052, 45, 0]
111124
],
112-
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS": [
125+
'slopes12Banked45': [
113126
[False, 4, 11.1026, -45, 0],
114127
[False, 4, 11.1026, 45, 0],
115128
[False, 4, -11.1026, -45, 0],
116129
[False, 4, -11.1026, 45, 0]
117130
],
118-
"VEHICLE_SPRITE_FLAG_CORKSCREWS": [
131+
'slopes25Banked67': [
132+
[False, 4, 22.2052, -67.5, 0],
133+
[False, 4, 22.2052, 67.5, 0],
134+
[False, 4, -22.2052, -67.5, 0],
135+
[False, 4, -22.2052, 67.5, 0]
136+
],
137+
'slopes25Banked90': [
138+
[False, 4, 22.2052, -90, 0],
139+
[False, 4, 22.2052, 90, 0],
140+
[False, 4, -22.2052, -90, 0],
141+
[False, 4, -22.2052, 90, 0]
142+
],
143+
'slopes25InlineTwists': [
144+
[False, 4, 22.2052, -112.5, 0],
145+
[False, 4, 22.2052, 112.5, 0],
146+
[False, 4, 22.2052, -135, 0],
147+
[False, 4, 22.2052, 135, 0],
148+
[False, 4, 22.2052, -157.5, 0],
149+
[False, 4, 22.2052, 157.5, 0],
150+
[False, 4, -22.2052, -112.5, 0],
151+
[False, 4, -22.2052, 112.5, 0],
152+
[False, 4, -22.2052, -135, 0],
153+
[False, 4, -22.2052, 135, 0],
154+
[False, 4, -22.2052, -157.5, 0],
155+
[False, 4, -22.2052, 157.5, 0]
156+
],
157+
'slopes42Banked22': [
158+
[False, 8, 40.36, -22.5, 0],
159+
[False, 8, 40.36, 22.5, 0],
160+
[False, 8, -40.36, -22.5, 0],
161+
[False, 8, -40.36, 22.5, 0]
162+
],
163+
'slopes42Banked45': [
164+
[False, 8, 40.36, -45, 0],
165+
[False, 8, 40.36, 45, 0],
166+
[False, 8, -40.36, -45, 0],
167+
[False, 8, -40.36, 45, 0]
168+
],
169+
'slopes42Banked67': [
170+
[False, 8, 40.36, -67.5, 0],
171+
[False, 8, 40.36, 67.5, 0],
172+
[False, 8, -40.36,-67.5, 0],
173+
[False, 8, -40.36, 67.5, 0]
174+
],
175+
'slopes42Banked90': [
176+
[False, 8, 40.36, -90, 0],
177+
[False, 8, 40.36, 90, 0],
178+
[False, 8, -40.36, -90, 0],
179+
[False, 8, -40.36, 90, 0]
180+
],
181+
'slopes60Banked22': [
182+
[False, 32, 58.5148, -22.5, 0],
183+
[False, 32, 58.5148, 22.5, 0],
184+
[False, 32, -58.5148, -22.5, 0],
185+
[False, 32, -58.5148, 22.5, 0]
186+
],
187+
'corkscrews': [
119188
[False, 4, 22.21, 20.7, 4.11],
120189
[False, 4, 50.77, 37.76, 18.43],
121190
[False, 4, 90, 45, 45],
@@ -140,10 +209,120 @@
140209
[False, 4, -129.23, 37.76, -71.57],
141210
[False, 4, -157.79, 20.7, -85.89],
142211
],
143-
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION": [
212+
'restraintAnimation': [
144213
[False, 4, 0, 0, 0]
145214
],
146-
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL": [
215+
'curvedLiftHillUp': [
216+
[False, 32, 9.8287, 0, 0]
217+
],
218+
'curvedLiftHillDown': [
147219
[False, 32, 9.8287, 0, 0]
148220
]
149221
}
222+
223+
# Default sprite precision for full mode, the tooltip for the sprite group, and if the sprite group should be hidden from the list of sprite groups
224+
sprite_group_metadata = {
225+
"slopeFlat": [32, "Flat track"],
226+
"slopes12": [4, "Orthogonal flat-to-gentle slope track"],
227+
"slopes25": [32, "Orthogonal gentle slope track"],
228+
"slopes42": [8, "Gentle-to-steep slope track"],
229+
"slopes60": [32, "Orthogonal steep slope track"],
230+
"slopes75": [4, "Steep-to-vertical slope track"],
231+
"slopes90": [4, "Vertical track"],
232+
"slopesLoop": [4,"Loop track"],
233+
"slopeInverted": [4, "Fully inverted track"],
234+
"slopes8": [4, "Diagonal flat-to-gentle slope track"],
235+
"slopes16": [4, "Diagonal gentle slope track"],
236+
"slopes50": [4, "Diagonal steep track"],
237+
"flatBanked22": [8, "Flat-to-bank transition track"],
238+
"flatBanked45": [32, "Flat banked track"],
239+
"flatBanked67": [4, "Flat steep banked track"],
240+
"flatBanked90": [4, "Flat vertically-banked track"],
241+
"inlineTwists": [4, "Flat inline twists"],
242+
"slopes12Banked22": [32, "Orthogonal flat-to-gentle-and-flat-to-banked transition track"],
243+
"slopes8Banked22": [4, "Diagonal flat-to-gentle-and-flat-to-banked transition track"],
244+
"slopes25Banked22": [4, "Orthogonal gentle slope flat-to-bank transition track"],
245+
"slopes25Banked45": [32, "Gentle sloped banked turns"],
246+
"slopes12Banked45": [4, "Orthogonal flat-to-gentle-slope banked transition track"],
247+
"slopes25Banked67": [4, "Part of small zero-G rolls"],
248+
"slopes25Banked90": [4, "Part of small zero-G rolls"],
249+
"slopes25InlineTwists": [4, "Part of large zero-G roll"],
250+
"slopes42Banked22": [4, "Part of large zero-G roll"],
251+
"slopes42Banked45": [4, "Part of large zero-G roll"],
252+
"slopes42Banked67": [4, "Part of large zero-G roll"],
253+
"slopes42Banked90": [4, "Part of large zero-G roll"],
254+
"slopes60Banked22": [4, "Part of large zero-G roll"],
255+
"corkscrews": [4, "Corkscrew track"],
256+
"restraintAnimation": [4, "Animated restraints"],
257+
"curvedLiftHillUp": [32, "Sprial lifthill up track"],
258+
"curvedLiftHillDown": [32, "Spiral lifthill down track"]
259+
}
260+
261+
legacy_group_names = [
262+
"VEHICLE_SPRITE_FLAG_FLAT",
263+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES",
264+
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES",
265+
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES",
266+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES",
267+
"VEHICLE_SPRITE_FLAG_FLAT_BANKED",
268+
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS",
269+
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS",
270+
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS",
271+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS",
272+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS",
273+
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS",
274+
"VEHICLE_SPRITE_FLAG_CORKSCREWS",
275+
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION",
276+
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL",
277+
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS"
278+
]
279+
280+
# Display name of each sprite group, tooltip for each sprite group, default state of each sprite group
281+
legacy_group_metadata = {
282+
"VEHICLE_SPRITE_FLAG_FLAT": ["Flat", "Render sprites for flat track", True],
283+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES": ["Gentle Slopes", "Render sprites for gentle sloped track", True],
284+
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES": ["Steep Slopes", "Render sprites for steep sloped track", False],
285+
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES": ["Vertical Loops", "Render sprites for vertical slopes and loops", False],
286+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES": ["Diagonal Slopes", "Render sprites for diagonal slopes", True],
287+
"VEHICLE_SPRITE_FLAG_FLAT_BANKED": ["Flat Banked","Render sprites for flat banked track", False],
288+
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS": ["Inline Twist", "Render sprites for the inline twist element", False],
289+
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
290+
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
291+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
292+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS": ["Sloped Banked Turns","Render sprites for sloped banked turns", False],
293+
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS": ["", "", False],
294+
"VEHICLE_SPRITE_FLAG_CORKSCREWS": ["Corkscrew", "Render sprites for corkscrews", False],
295+
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION": ["Animated Restraints", "Render animated restraints", False],
296+
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL": ["Spiral Lifthill", "Render sprites for spiral lifthills", False],
297+
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS": ["Zero-G Rolls", "Render sprites for zero-G rolls", False]
298+
}
299+
300+
# What full sprite groups each legacy group maps to
301+
legacy_group_map = {
302+
'VEHICLE_SPRITE_FLAG_FLAT': [ 'slopeFlat' ],
303+
'VEHICLE_SPRITE_FLAG_GENTLE_SLOPES': ['slopes12', 'slopes25'],
304+
'VEHICLE_SPRITE_FLAG_STEEP_SLOPES': ['slopes42', 'slopes60'],
305+
'VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES': ['slopes75', 'slopes90', 'slopesLoop','slopeInverted'],
306+
'VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES': ['slopes8', 'slopes16','slopes50'],
307+
'VEHICLE_SPRITE_FLAG_FLAT_BANKED': ['flatBanked22','flatBanked45'],
308+
'VEHICLE_SPRITE_FLAG_INLINE_TWISTS': ['flatBanked67', 'flatBanked90', 'inlineTwists'],
309+
'VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS': ['slopes12Banked22'],
310+
'VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS': ['slopes8Banked22'],
311+
'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS': ['slopes25Banked22'],
312+
'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS': ['slopes25Banked45'],
313+
'VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS': ['slopes12Banked45'],
314+
'VEHICLE_SPRITE_FLAG_CORKSCREWS': ['corkscrews'],
315+
'VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION': ['restraintAnimation'],
316+
'VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL': ['curvedLiftHillUp', 'curvedLiftHillDown'],
317+
'VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS': ["slopes60Banked22", "slopes42Banked22","slopes42Banked45","slopes42Banked67","slopes42Banked90", "slopes25InlineTwists", "slopes25Banked67","slopes25Banked90"]
318+
}
319+
320+
# What legacy groups are implied by combinations of other legacy sprite groups
321+
legacy_group_implications = {
322+
frozenset({'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS'}): frozenset({'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS','VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS','VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS'}),
323+
frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED','VEHICLE_SPRITE_FLAG_GENTLE_SLOPES'}): frozenset({'VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS'}),
324+
frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED','VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES'}): frozenset({'VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS'}),
325+
frozenset({'VEHICLE_SPRITE_FLAG_INLINE_TWISTS'}): frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED', 'VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES'}),
326+
frozenset({'VEHICLE_SPRITE_FLAG_CORKSCREWS'}): frozenset({'VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES'}),
327+
frozenset({'VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS'}): frozenset({'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS', 'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS', 'VEHICLE_SPRITE_FLAG_GENTLE_SLOPES', 'VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES'})
328+
}

0 commit comments

Comments
 (0)