Skip to content

Commit 8323259

Browse files
committed
add dive loop rendering
1 parent bd8adfa commit 8323259

File tree

4 files changed

+111
-75
lines changed

4 files changed

+111
-75
lines changed

rct-graphics-helper/angle_sections/track.py

Lines changed: 79 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,36 @@
77
RCT Graphics Helper is licensed under the GNU General Public License version 3.
88
'''
99

10-
# This is the order sprite groups are rendered in
11-
sprite_group_names = [
12-
"slopeFlat", "slopes12", "slopes25", "slopes42",
13-
"slopes60", "slopes75", "slopes90", "slopesLoop",
14-
"slopeInverted", "slopes8", "slopes16", "slopes50",
15-
"flatBanked22", "flatBanked45", "flatBanked67", "flatBanked90",
16-
"inlineTwists", "slopes12Banked22", "slopes8Banked22", "slopes25Banked22",
17-
"slopes8Banked45", "slopes16Banked22", "slopes16Banked45", "slopes25Banked45",
18-
"slopes12Banked45", "slopes25Banked67", "slopes25Banked90", "slopes25InlineTwists",
19-
"slopes42Banked22", "slopes42Banked45", "slopes42Banked67", "slopes42Banked90",
20-
"slopes60Banked22", "corkscrews", "restraintAnimation", "curvedLiftHillUp",
21-
"curvedLiftHillDown"
10+
# Order that the modern sprite groups are rendered in and the order they are placed in the menu
11+
sprite_group_display_order = [
12+
"slopeFlat", "slopes12", "slopes25", "slopes42",
13+
"slopes60", "slopes75", "slopes90", "slopesLoop",
14+
"slopeInverted", "slopes8", "slopes16", "slopes50",
15+
"flatBanked22", "flatBanked45", "flatBanked67", "flatBanked90",
16+
"inlineTwists", "slopes12Banked22", "slopes8Banked22", "slopes25Banked22",
17+
"slopes8Banked45", "slopes16Banked22", "slopes16Banked45", "slopes25Banked45",
18+
"slopes12Banked45", "slopes25Banked67", "slopes25Banked90", "slopes25InlineTwists",
19+
"slopes42Banked22", "slopes42Banked45", "slopes42Banked67", "slopes42Banked90",
20+
"slopes60Banked22", "slopes50Banked45", "slopes50Banked67", "slopes50Banked90",
21+
"corkscrews", "restraintAnimation", "curvedLiftHillUp", "curvedLiftHillDown",
22+
]
23+
24+
# Order the legacy sprite groups are placed in the menu
25+
legacy_group_display_order = [
26+
"VEHICLE_SPRITE_FLAG_FLAT",
27+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES",
28+
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES",
29+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES",
30+
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES",
31+
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS",
32+
"VEHICLE_SPRITE_FLAG_CORKSCREWS",
33+
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS",
34+
"VEHICLE_SPRITE_FLAG_DIVE_LOOPS",
35+
"VEHICLE_SPRITE_FLAG_FLAT_BANKED",
36+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS",
37+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED",
38+
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL",
39+
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION"
2240
]
2341

2442
# The sprites to render in each sprite group. The given rotation values are unused
@@ -205,6 +223,24 @@
205223
[False, 32, -58.5148, -22.5, 0],
206224
[False, 32, -58.5148, 22.5, 0]
207225
],
226+
'slopes50Banked45': [
227+
[True, 32, 49.1035, -45.0, 0],
228+
[True, 32, 49.1035, 45.0, 0],
229+
[True, 32, -49.1035, -45.0, 0],
230+
[True, 32, -49.1035, 45.0, 0]
231+
],
232+
'slopes50Banked67': [
233+
[True, 32, 49.1035, -67.5, 0],
234+
[True, 32, 49.1035, 67.5, 0],
235+
[True, 32, -49.1035, -67.5, 0],
236+
[True, 32, -49.1035, 67.5, 0]
237+
],
238+
'slopes50Banked90': [
239+
[True, 32, 49.1035, -90.0, 0],
240+
[True, 32, 49.1035, 90.0, 0],
241+
[True, 32, -49.1035, -90.0, 0],
242+
[True, 32, -49.1035, 90.0, 0]
243+
],
208244
'corkscrews': [
209245
[False, 4, 22.21, 20.7, 4.11],
210246
[False, 4, 50.77, 37.76, 18.43],
@@ -241,7 +277,7 @@
241277
]
242278
}
243279

244-
# 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
280+
# Default sprite precision for full mode and the tooltip for the sprite group
245281
sprite_group_metadata = {
246282
"slopeFlat": [32, "Flat track"],
247283
"slopes12": [4, "Orthogonal flat-to-gentle slope track"],
@@ -275,14 +311,17 @@
275311
"slopes42Banked45": [4, "Part of large zero-G roll"],
276312
"slopes42Banked67": [4, "Part of large zero-G roll"],
277313
"slopes42Banked90": [4, "Part of large zero-G roll"],
278-
"slopes60Banked22": [4, "Part of large zero-G roll"],
314+
"slopes60Banked22": [8, "4 with only zero-G roll, 8 with dive loop"],
315+
"slopes50Banked45": [4, "Part of dive loop"],
316+
"slopes50Banked67": [4, "Part of dive loop"],
317+
"slopes50Banked90": [4, "Part of dive loop"],
279318
"corkscrews": [4, "Corkscrew track"],
280319
"restraintAnimation": [4, "Animated restraints"],
281320
"curvedLiftHillUp": [32, "Sprial lifthill up track"],
282321
"curvedLiftHillDown": [32, "Spiral lifthill down track"]
283322
}
284323

285-
# All legacy groups. See list in rct_graphics_helper_panel.py for which ones are displayed
324+
# All legacy groups
286325
legacy_group_names = [
287326
"VEHICLE_SPRITE_FLAG_FLAT",
288327
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES",
@@ -301,23 +340,8 @@
301340
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL",
302341
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS",
303342
"VEHICLE_SPRITE_FLAG_INVERTED",
304-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED"
305-
]
306-
307-
legacy_group_display_order = [
308-
"VEHICLE_SPRITE_FLAG_FLAT",
309-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES",
310-
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES",
311-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES",
312-
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES",
313-
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS",
314-
"VEHICLE_SPRITE_FLAG_CORKSCREWS",
315-
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS",
316-
"VEHICLE_SPRITE_FLAG_FLAT_BANKED",
317343
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED",
318-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS",
319-
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL",
320-
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION"
344+
"VEHICLE_SPRITE_FLAG_DIVE_LOOPS",
321345
]
322346

323347
# Legacy sprite groups that are reset every time the user makes a selection
@@ -326,30 +350,33 @@
326350
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS",
327351
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS",
328352
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS",
329-
"VEHICLE_SPRITE_FLAG_INVERTED"
353+
"VEHICLE_SPRITE_FLAG_INVERTED",
354+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPED_BANK_TRANSITIONS",
330355
]
331356

332357
# Display name of each sprite group, tooltip for each sprite group, default state of each sprite group
333358
legacy_group_metadata = {
334-
"VEHICLE_SPRITE_FLAG_FLAT": ["Flat", "Render sprites for flat track", True],
335-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES": ["Gentle Slopes", "Render sprites for gentle sloped track", True],
336-
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES": ["Steep Slopes", "Render sprites for steep sloped track", False],
337-
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES": ["Vertical Loops", "Render sprites for vertical slopes and loops", False],
338-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES": ["Diagonal Slopes", "Render sprites for diagonal slopes", True],
339-
"VEHICLE_SPRITE_FLAG_FLAT_BANKED": ["Flat Banked","Render sprites for flat banked track", False],
340-
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS": ["Inline Twist", "Render sprites for the inline twist element", False],
359+
"VEHICLE_SPRITE_FLAG_FLAT": ["Flat", "", True],
360+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPES": ["Gentle Slopes", "", True],
361+
"VEHICLE_SPRITE_FLAG_STEEP_SLOPES": ["Steep Slopes", "", False],
362+
"VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES": ["Vertical Loops", "", False],
363+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES": ["Diagonal Slopes", "", True],
364+
"VEHICLE_SPRITE_FLAG_FLAT_BANKED": ["Flat Banked","", False],
365+
"VEHICLE_SPRITE_FLAG_INLINE_TWISTS": ["Inline Twist", "Depends on Vertical Loops and Flat Banked", False],
341366
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
342367
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
343-
"VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
344368
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS": ["", "", False],
345-
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS": ["Sloped Banked Turns","Render sprites for sloped banked turns", False],
369+
"VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS": ["Sloped Banked Turns","", False],
346370
"VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS": ["", "", False],
347-
"VEHICLE_SPRITE_FLAG_CORKSCREWS": ["Corkscrew", "Render sprites for corkscrews", False],
348-
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION": ["Animated Restraints", "Render animated restraints", False],
349-
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL": ["Spiral Lifthill", "Render sprites for spiral lifthills", False],
350-
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS": ["Zero-G Rolls", "Render sprites for zero-G rolls", False],
371+
"VEHICLE_SPRITE_FLAG_CORKSCREWS": ["Corkscrew", "", False],
372+
"VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION": ["Animated Restraints", "3-sprite restraint opening animation", False],
373+
"VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL": ["Spiral Lifthill", "", False],
374+
"VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS": ["Zero-G Rolls", "Depends on Sloped Banked Turns", False],
351375
"VEHICLE_SPRITE_FLAG_INVERTED": ["", "", False],
352-
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED": ["Diagonal Sloped Banked", "Render sprites for diagonal sloped banked track", False],
376+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED": ["Diagonal Sloped Banked", "", False],
377+
"VEHICLE_SPRITE_FLAG_DIVE_LOOPS": ["Dive loop", "Depends on Zero-G Rolls and Sloped Banked Turns", False],
378+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPED_BANK_TRANSITIONS": ["", "", False],
379+
"VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED_TURNS": ["Diagonal slope banked turns", "Depends on Sloped Banked Turns", False],
353380
}
354381

355382
# What full sprite groups each legacy group maps to
@@ -371,18 +398,20 @@
371398
'VEHICLE_SPRITE_FLAG_CURVED_LIFT_HILL': ['curvedLiftHillUp', 'curvedLiftHillDown'],
372399
'VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS': ["slopes60Banked22", "slopes42Banked22","slopes42Banked45","slopes42Banked67","slopes42Banked90", "slopes25InlineTwists", "slopes25Banked67","slopes25Banked90"],
373400
'VEHICLE_SPRITE_FLAG_INVERTED': ['slopeInverted'],
374-
'VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED': ['slopes8Banked45', 'slopes16Banked22', 'slopes16Banked45']
401+
'VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED': ['slopes8Banked45', 'slopes16Banked22', 'slopes16Banked45'],
375402
}
376403

377-
# What legacy groups are implied by combinations of other legacy sprite groups
404+
# What legacy groups depend on other legacy groups
378405
legacy_group_dependencies = {
379406
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'}),
380407
frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED','VEHICLE_SPRITE_FLAG_GENTLE_SLOPES'}): frozenset({'VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS'}),
381408
frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED','VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES'}): frozenset({'VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS'}),
382409
frozenset({'VEHICLE_SPRITE_FLAG_INLINE_TWISTS'}): frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED', 'VEHICLE_SPRITE_FLAG_INVERTED'}),
410+
frozenset({'VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES'}): frozenset({'VEHICLE_SPRITE_FLAG_FLAT_BANKED', 'VEHICLE_SPRITE_FLAG_INVERTED'}),
383411
frozenset({'VEHICLE_SPRITE_FLAG_CORKSCREWS'}): frozenset({'VEHICLE_SPRITE_FLAG_INVERTED'}),
384-
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_INVERTED'}),
385-
frozenset({'VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED'}): frozenset({'VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS'})
412+
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_FLAT_TO_GENTLE_SLOPE_WHILE_BANKED_TRANSITIONS', 'VEHICLE_SPRITE_FLAG_FLAT_TO_GENTLE_SLOPE_BANKED_TRANSITIONS', 'VEHICLE_SPRITE_FLAG_INVERTED'}),
413+
frozenset({'VEHICLE_SPRITE_FLAG_DIVE_LOOPS'}): frozenset({'VEHICLE_SPRITE_FLAG_ZERO_G_ROLLS','VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS', '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', 'VEHICLE_SPRITE_FLAG_INVERTED'}),
414+
frozenset({'VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPE_BANKED'}): frozenset({'VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TURNS', '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'}),
386415
}
387416

388417

rct-graphics-helper/operators/vehicle_render_operator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import os
1313

1414
from ..operators.render_operator import RCTRender
15-
from ..angle_sections.track import sprite_group_names, sprite_group_manifest
15+
from ..angle_sections.track import sprite_group_display_order, sprite_group_manifest
1616

1717

1818
class RenderVehicle(RCTRender, bpy.types.Operator):
@@ -63,7 +63,7 @@ def add_render_angles(self, context, is_inverted=False, animation_frames=1):
6363
if is_inverted:
6464
extra_roll = 180
6565

66-
for sprite_group_name in sprite_group_names:
66+
for sprite_group_name in sprite_group_display_order:
6767
track_sections = sprite_group_manifest[sprite_group_name]
6868

6969
if sprite_group_name not in properties:

rct-graphics-helper/properties/vehicle_properties.py

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,30 +36,35 @@ def CreateSpriteEnum(defaultValue):
3636
("8", "8" + (defaultValue == 8 and " (Default)" or ""), "8 sprites", 8),
3737
("16", "16" + (defaultValue == 16 and " (Default)" or ""), "16 sprites", 16),
3838
("32", "32" + (defaultValue == 32 and " (Default)" or ""), "32 sprites (RCT2 default)", 32),
39-
("64", "64" + (defaultValue == 64 and " (Default)" or ""), "64 sprites ", 64)
39+
# ("64", "64" + (defaultValue == 64 and " (Default)" or ""), "64 sprites", 64)
4040
)
4141

4242
def set_groups_by_legacy_set(self, set):
4343
for groupname, newgroups in legacy_group_map.items():
4444
for group in newgroups:
4545
self[group] = sprite_group_metadata[group][0] * (groupname in set)
4646

47-
# this is called with self as VehicleProperties
48-
def legacy_groups_set(self, value):
49-
new_with_implied = { legacy_group_names[i] for i in range(len(value)) if value[i] or (legacy_group_names[i] in legacy_groups_implied) }
50-
new = { legacy_group_names[i] for i in range(len(value)) if value[i] and not legacy_group_names[i] in legacy_groups_implied }
51-
for implied, dependencies in legacy_group_dependencies.items():
52-
if implied.issubset(new_with_implied):
47+
# this is called with self as VehicleProperties and bool_array as an array of bools in legacy_group_names order
48+
def legacy_groups_set(self, bool_array):
49+
50+
# convert bool array to set of legacy groups, and disable all implied groups
51+
enabled_groups = { legacy_group_names[i] for i in range(len(bool_array)) if bool_array[i] and not legacy_group_names[i] in legacy_groups_implied }
52+
53+
# include all the groups that are dependent on other groups
54+
for group_with_dependencies, dependencies in legacy_group_dependencies.items():
55+
if group_with_dependencies.issubset(enabled_groups):
5356
for group in dependencies:
54-
new.add(group)
55-
if not implied.issubset(new_with_implied) and len(implied) == 1:
56-
for group in implied:
57-
new.discard(group)
58-
set_groups_by_legacy_set(self, new)
59-
value = [group in new for group in legacy_group_names]
60-
for i in range(len(value)):
61-
self.sprite_track_flags[i] = value[i]
57+
enabled_groups.add(group)
58+
59+
# set the modern groups based on the set of legacy groups
60+
set_groups_by_legacy_set(self, enabled_groups)
6261

62+
# set the internal property to the selected groups
63+
bool_array = [group in enabled_groups for group in legacy_group_names]
64+
for i in range(len(bool_array)):
65+
self.sprite_track_flags[i] = bool_array[i]
66+
67+
# Return bool array of current state
6368
def legacy_flags_get(self):
6469
return [x for x in self.sprite_track_flags]
6570

@@ -73,17 +78,19 @@ class VehicleProperties(bpy.types.PropertyGroup):
7378
legacy_defaults = []
7479
legacy_spritegroups = {}
7580
for legacy_group_name in legacy_group_names:
76-
config = legacy_group_metadata[legacy_group_name]
77-
legacy_spritegroups[legacy_group_name] = SpriteTrackFlag(legacy_group_name, *config)
78-
legacy_defaults.append(config[2])
81+
legacy_group_config = legacy_group_metadata[legacy_group_name]
82+
legacy_spritegroups[legacy_group_name] = SpriteTrackFlag(legacy_group_name, *legacy_group_config)
83+
legacy_defaults.append(legacy_group_config[2])
7984

85+
# The actual property that is saved
8086
sprite_track_flags = bpy.props.BoolVectorProperty(
8187
name="Track Pieces",
8288
default=legacy_defaults,
8389
description="Which track pieces to render sprites for",
8490
size=len(legacy_spritegroups)
8591
)
86-
92+
93+
# Alias property which intercepts user input, to prevent recursive setter calls
8794
legacy_flags = bpy.props.BoolVectorProperty(
8895
name="Track Pieces",
8996
default=legacy_defaults,

rct-graphics-helper/rct_graphics_helper_panel.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from .operators.render_switch_operator import RenderRCTSwitch
1717

1818
from .models.palette import palette_colors, palette_colors_details
19-
from .angle_sections.track import sprite_group_names, legacy_group_names, legacy_group_display_order
19+
from .angle_sections.track import sprite_group_display_order, legacy_group_names, legacy_group_display_order
2020

2121
class RepairConfirmOperator(bpy.types.Operator):
2222
"""This action will clear out the default camera and light. Changes made to the rig object, compositor nodes and recolorable materials will be lost."""
@@ -224,14 +224,14 @@ def draw_vehicle_panel(self, scene, layout):
224224
for legacy_group_name in legacy_group_display_order:
225225
sprite_track_flagset = properties.legacy_spritegroups[legacy_group_name]
226226
index = legacy_group_names.index(legacy_group_name)
227-
columns[i > splitpoint].row().prop(properties, "legacy_flags",
227+
columns[i >= splitpoint].row().prop(properties, "legacy_flags",
228228
index=index, text=sprite_track_flagset.name)
229229
i += 1
230230
else:
231231
columns = [column.split(0.667) for column in columns]
232232
subcolumns = [columns[0].column(), columns[0].column(),columns[1].column(), columns[1].column()]
233-
splitpoint = len(sprite_group_names) // 2
234-
for sprite_group_name in sprite_group_names:
233+
splitpoint = len(sprite_group_display_order) // 2
234+
for sprite_group_name in sprite_group_display_order:
235235
subcolumns[(i > splitpoint) * 2].row().label(sprite_group_name+":")
236236
subcolumns[(i > splitpoint) * 2 + 1].row().prop(properties, sprite_group_name, text = "")
237237
i += 1

0 commit comments

Comments
 (0)