@@ -31,6 +31,8 @@ def create_task(self, context):
31
31
# Add vehicle frames
32
32
self .task_builder .set_recolorables (
33
33
general_props .number_of_recolorables )
34
+ self .task_builder .set_cast_shadows (
35
+ general_props .cast_shadows )
34
36
self .task_builder .set_palette (self .palette_manager .get_base_palette (
35
37
general_props .palette , general_props .number_of_recolorables , "FULL" ))
36
38
@@ -39,10 +41,15 @@ def create_task(self, context):
39
41
for car_object in cars :
40
42
self .add_render_angles (car_object )
41
43
42
- bogies = [x for x in context .scene .objects if x .loco_graphics_helper_object_properties .object_type == "BOGIE" ]
43
- bogies = sorted (bogies , key = lambda x : x .loco_graphics_helper_vehicle_properties .index )
44
- for bogie_object in bogies :
45
- self .add_render_angles (bogie_object )
44
+ if cars [0 ].loco_graphics_helper_vehicle_properties .is_airplane :
45
+ self .task_builder .set_cast_shadows (
46
+ True )
47
+ self .add_airplane_shadow_render_angles (cars [0 ])
48
+ else :
49
+ bogies = [x for x in context .scene .objects if x .loco_graphics_helper_object_properties .object_type == "BOGIE" ]
50
+ bogies = sorted (bogies , key = lambda x : x .loco_graphics_helper_vehicle_properties .index )
51
+ for bogie_object in bogies :
52
+ self .add_render_angles (bogie_object )
46
53
47
54
return self .task_builder .create_task (context )
48
55
@@ -122,3 +129,31 @@ def add_render_angles(self, car_object):
122
129
self .task_builder .add_frame (
123
130
frame_index , num_viewing_angles , i , 0 , rotation_range , car_object )
124
131
self .task_builder .set_layer ("Editor" )
132
+
133
+ def add_airplane_shadow_render_angles (self , car_object ):
134
+ props = car_object .loco_graphics_helper_vehicle_properties
135
+
136
+ track_sections = track_angle_sections ["VEHICLE_SPRITE_FLAG_FLAT" ]
137
+ for track_section in track_sections :
138
+
139
+ base_view_angle = 0
140
+ self .task_builder .set_rotation (
141
+ base_view_angle , 0 , vertical_angle = track_section [2 ])
142
+
143
+ num_viewing_angles = int (props .flat_viewing_angles )
144
+
145
+ rotational_symmetry = props .rotational_symmetry
146
+
147
+ if rotational_symmetry :
148
+ num_viewing_angles = int (num_viewing_angles / 2 )
149
+
150
+ rotation_range = 180 if rotational_symmetry else 360
151
+
152
+ start_output_index = self .task_builder .output_index
153
+
154
+ for i in range (num_viewing_angles ):
155
+ self .task_builder .set_layer ("Top Down Shadow" )
156
+ frame_index = start_output_index + i
157
+ self .task_builder .add_frame (
158
+ frame_index , num_viewing_angles , i , 0 , rotation_range , car_object )
159
+ self .task_builder .set_layer ("Editor" )
0 commit comments