Skip to content

Commit 5cc069f

Browse files
temp: caching rendered movie clips
1 parent d5cf704 commit 5cc069f

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

system/lib/features/cut_sprites.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def render_objects(swf: SupercellSWF, output_folder: Path):
2020
# rendered_movie_clip = movie_clip.render(swf)
2121
# if sum(rendered_movie_clip.size) >= 2:
2222
# clip_name = movie_clip.export_name or movie_clip.id
23-
# rendered_movie_clip.save(f"{export_folder}/movie_clips/{clip_name}.png")
23+
# rendered_movie_clip.save(f"{output_folder}/movie_clips/{clip_name}.png")
2424
# else:
2525
# # For debug:
2626
# # logger.warning(f'MovieClip {movie_clip.id} cannot be rendered.')

system/lib/objects/movie_clip.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
from system.lib.swf import SupercellSWF
1313

1414

15+
CACHE = {}
16+
17+
1518
class MovieClipFrame:
1619
def __init__(self):
1720
self._elements_count: int = 0
@@ -110,6 +113,9 @@ def load(self, swf: "SupercellSWF", tag: int):
110113
swf.reader.read(frame_length)
111114

112115
def render(self, swf: "SupercellSWF", matrix=None) -> Image.Image:
116+
if self in CACHE:
117+
return CACHE[self].copy()
118+
113119
matrix_bank = swf.get_matrix_bank(self.matrix_bank_index)
114120

115121
# TODO: make it faster
@@ -137,6 +143,8 @@ def render(self, swf: "SupercellSWF", matrix=None) -> Image.Image:
137143

138144
image.paste(rendered_shape, (x, y), rendered_shape)
139145

146+
CACHE[self] = image
147+
140148
return image
141149

142150
def get_sides(self, swf: "SupercellSWF") -> Tuple[float, float, float, float]:
@@ -171,3 +179,7 @@ def get_sides(self, swf: "SupercellSWF") -> Tuple[float, float, float, float]:
171179
bottom = max(bottom, shape_bottom)
172180

173181
return left, top, right, bottom
182+
183+
def get_position(self) -> Tuple[float, float]:
184+
left, top, _, _ = self.get_sides()
185+
return left, top

0 commit comments

Comments
 (0)