batframework 1.0.9a10__py3-none-any.whl → 1.0.9a12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- batFramework/__init__.py +2 -0
- batFramework/action.py +280 -279
- batFramework/actionContainer.py +105 -82
- batFramework/animatedSprite.py +80 -58
- batFramework/animation.py +91 -77
- batFramework/audioManager.py +156 -131
- batFramework/baseScene.py +249 -240
- batFramework/camera.py +245 -317
- batFramework/constants.py +57 -51
- batFramework/cutscene.py +239 -253
- batFramework/cutsceneManager.py +34 -34
- batFramework/drawable.py +107 -77
- batFramework/dynamicEntity.py +30 -30
- batFramework/easingController.py +58 -58
- batFramework/entity.py +130 -130
- batFramework/enums.py +171 -135
- batFramework/fontManager.py +65 -65
- batFramework/gui/__init__.py +28 -25
- batFramework/gui/animatedLabel.py +90 -89
- batFramework/gui/button.py +17 -17
- batFramework/gui/clickableWidget.py +244 -245
- batFramework/gui/collapseContainer.py +98 -0
- batFramework/gui/constraints/__init__.py +1 -1
- batFramework/gui/constraints/constraints.py +1066 -980
- batFramework/gui/container.py +220 -201
- batFramework/gui/debugger.py +140 -130
- batFramework/gui/draggableWidget.py +63 -44
- batFramework/gui/image.py +61 -58
- batFramework/gui/indicator.py +116 -113
- batFramework/gui/interactiveWidget.py +243 -239
- batFramework/gui/label.py +147 -344
- batFramework/gui/layout.py +442 -426
- batFramework/gui/meter.py +155 -96
- batFramework/gui/radioButton.py +43 -35
- batFramework/gui/root.py +228 -228
- batFramework/gui/scrollingContainer.py +282 -0
- batFramework/gui/selector.py +232 -250
- batFramework/gui/shape.py +286 -276
- batFramework/gui/slider.py +353 -397
- batFramework/gui/style.py +10 -10
- batFramework/gui/styleManager.py +49 -54
- batFramework/gui/syncedVar.py +43 -49
- batFramework/gui/textInput.py +331 -306
- batFramework/gui/textWidget.py +308 -0
- batFramework/gui/toggle.py +140 -128
- batFramework/gui/tooltip.py +35 -30
- batFramework/gui/widget.py +546 -521
- batFramework/manager.py +131 -134
- batFramework/particle.py +118 -118
- batFramework/propertyEaser.py +79 -79
- batFramework/renderGroup.py +34 -34
- batFramework/resourceManager.py +130 -130
- batFramework/scene.py +31 -31
- batFramework/sceneLayer.py +134 -138
- batFramework/sceneManager.py +200 -197
- batFramework/scrollingSprite.py +115 -115
- batFramework/sprite.py +46 -51
- batFramework/stateMachine.py +49 -54
- batFramework/templates/__init__.py +2 -1
- batFramework/templates/character.py +15 -0
- batFramework/templates/controller.py +158 -97
- batFramework/templates/stateMachine.py +39 -0
- batFramework/tileset.py +46 -46
- batFramework/timeManager.py +213 -213
- batFramework/transition.py +162 -162
- batFramework/triggerZone.py +22 -22
- batFramework/utils.py +306 -306
- {batframework-1.0.9a10.dist-info → batframework-1.0.9a12.dist-info}/LICENSE +20 -20
- {batframework-1.0.9a10.dist-info → batframework-1.0.9a12.dist-info}/METADATA +24 -17
- batframework-1.0.9a12.dist-info/RECORD +72 -0
- batframework-1.0.9a10.dist-info/RECORD +0 -67
- {batframework-1.0.9a10.dist-info → batframework-1.0.9a12.dist-info}/WHEEL +0 -0
- {batframework-1.0.9a10.dist-info → batframework-1.0.9a12.dist-info}/top_level.txt +0 -0
batFramework/constants.py
CHANGED
@@ -1,51 +1,57 @@
|
|
1
|
-
import pygame
|
2
|
-
|
3
|
-
|
4
|
-
class Constants:
|
5
|
-
SCREEN: pygame.Surface = None
|
6
|
-
RESOLUTION: tuple[int, int] = (1280, 720)
|
7
|
-
WIDTH = 1280
|
8
|
-
HEIGHT = 720
|
9
|
-
VSYNC = 0
|
10
|
-
FLAGS: int = pygame.SCALED | pygame.RESIZABLE
|
11
|
-
FPS: int = 60
|
12
|
-
MUSIC_END_EVENT = pygame.event.custom_type()
|
13
|
-
|
14
|
-
DEFAULT_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
15
|
-
DEFAULT_HOVER_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
16
|
-
DEFAULT_CLICK_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
17
|
-
|
18
|
-
BF_INITIALIZED: bool = False
|
19
|
-
ALLOW_DEBUG : bool = True
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
Constants.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
1
|
+
import pygame
|
2
|
+
|
3
|
+
|
4
|
+
class Constants:
|
5
|
+
SCREEN: pygame.Surface = None
|
6
|
+
RESOLUTION: tuple[int, int] = (1280, 720)
|
7
|
+
WIDTH = 1280
|
8
|
+
HEIGHT = 720
|
9
|
+
VSYNC = 0
|
10
|
+
FLAGS: int = pygame.SCALED | pygame.RESIZABLE
|
11
|
+
FPS: int = 60
|
12
|
+
MUSIC_END_EVENT = pygame.event.custom_type()
|
13
|
+
|
14
|
+
DEFAULT_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
15
|
+
DEFAULT_HOVER_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
16
|
+
DEFAULT_CLICK_CURSOR = pygame.cursors.Cursor(pygame.SYSTEM_CURSOR_ARROW)
|
17
|
+
|
18
|
+
BF_INITIALIZED: bool = False
|
19
|
+
ALLOW_DEBUG : bool = True
|
20
|
+
|
21
|
+
WIDGET_KEY_REPEAT_DELAY = 200
|
22
|
+
WIDGET_KEY_REPEAT_INTERVAL = 50
|
23
|
+
GLOBAL_KEY_REPEAT_DELAY = 200
|
24
|
+
GLOBAL_KEY_REPEAT_INTERVAL = 50
|
25
|
+
|
26
|
+
|
27
|
+
@staticmethod
|
28
|
+
def set_allow_debug(allow_debug:bool):
|
29
|
+
Constants.ALLOW_DEBUG = allow_debug
|
30
|
+
|
31
|
+
@staticmethod
|
32
|
+
def set_resolution(resolution: tuple[int, int]):
|
33
|
+
Constants.RESOLUTION = resolution
|
34
|
+
Constants.WIDTH = resolution[0]
|
35
|
+
Constants.HEIGHT = resolution[1]
|
36
|
+
Constants.update_screen()
|
37
|
+
|
38
|
+
@staticmethod
|
39
|
+
def update_screen():
|
40
|
+
if Constants.BF_INITIALIZED:
|
41
|
+
Constants.SCREEN = pygame.display.set_mode(Constants.RESOLUTION,Constants.FLAGS,vsync=Constants.VSYNC)
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def set_default_cursor(cursor: pygame.Cursor):
|
45
|
+
Constants.DEFAULT_CURSOR = cursor
|
46
|
+
|
47
|
+
@staticmethod
|
48
|
+
def set_default_hover_cursor(cursor: pygame.Cursor):
|
49
|
+
Constants.DEFAULT_HOVER_CURSOR = cursor
|
50
|
+
|
51
|
+
@staticmethod
|
52
|
+
def set_default_click_cursor(cursor: pygame.Cursor):
|
53
|
+
Constants.DEFAULT_CLICK_CURSOR = cursor
|
54
|
+
|
55
|
+
@staticmethod
|
56
|
+
def set_fps_limit(value: int):
|
57
|
+
Constants.FPS = value
|
batFramework/cutscene.py
CHANGED
@@ -1,253 +1,239 @@
|
|
1
|
-
import batFramework as bf
|
2
|
-
from .transition import Transition
|
3
|
-
from typing import Callable,Any
|
4
|
-
|
5
|
-
class Cutscene:
|
6
|
-
def __init__(self):
|
7
|
-
"""
|
8
|
-
Create a base Cutscene (ends immediately)
|
9
|
-
"""
|
10
|
-
|
11
|
-
def start(self):
|
12
|
-
"""
|
13
|
-
Called by the manager or the parent cutscene
|
14
|
-
Has to return to blank init state
|
15
|
-
"""
|
16
|
-
self.end()
|
17
|
-
|
18
|
-
def process_event(self,event):
|
19
|
-
pass
|
20
|
-
|
21
|
-
def update(self,dt):
|
22
|
-
pass
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
"""
|
29
|
-
self
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
self.
|
34
|
-
|
35
|
-
|
36
|
-
def
|
37
|
-
self.
|
38
|
-
self.index = 0
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
"""
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
self.
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
for s in self.sub_cutscenes:
|
80
|
-
s.
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
self.
|
91
|
-
self.
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
def
|
101
|
-
self.
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
self.
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
self.
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
self.
|
126
|
-
self.
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
self.
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
self.
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
)
|
177
|
-
|
178
|
-
|
179
|
-
self.
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
self.start_pos[
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
delta
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
duration: float = 1,
|
241
|
-
easing: bf.easing = bf.easing.EASE_IN_OUT,
|
242
|
-
scene_name: str | None = None,
|
243
|
-
layer_name: str = "world",
|
244
|
-
):
|
245
|
-
super().__init__(
|
246
|
-
start=None,
|
247
|
-
stop=None,
|
248
|
-
delta=delta,
|
249
|
-
duration=duration,
|
250
|
-
easing=easing,
|
251
|
-
scene_name=scene_name,
|
252
|
-
layer_name=layer_name,
|
253
|
-
)
|
1
|
+
import batFramework as bf
|
2
|
+
from .transition import Transition
|
3
|
+
from typing import Callable,Any
|
4
|
+
|
5
|
+
class Cutscene:
|
6
|
+
def __init__(self):
|
7
|
+
"""
|
8
|
+
Create a base Cutscene (ends immediately)
|
9
|
+
"""
|
10
|
+
|
11
|
+
def start(self):
|
12
|
+
"""
|
13
|
+
Called by the manager or the parent cutscene
|
14
|
+
Has to return to blank init state
|
15
|
+
"""
|
16
|
+
self.end()
|
17
|
+
|
18
|
+
def process_event(self,event):
|
19
|
+
pass
|
20
|
+
|
21
|
+
def update(self,dt):
|
22
|
+
pass
|
23
|
+
|
24
|
+
def __str__(self)->str:
|
25
|
+
return self.__class__.__name__
|
26
|
+
|
27
|
+
def end(self):
|
28
|
+
"""
|
29
|
+
Mark self as over
|
30
|
+
"""
|
31
|
+
print("Start ",self)
|
32
|
+
|
33
|
+
self.is_over = True
|
34
|
+
|
35
|
+
class Sequence(Cutscene):
|
36
|
+
def __init__(self,*cutscenes):
|
37
|
+
self.sub_cutscenes :list[Cutscene] = list(cutscenes)
|
38
|
+
self.index = 0
|
39
|
+
|
40
|
+
def start(self):
|
41
|
+
self.is_over = False
|
42
|
+
self.index = 0
|
43
|
+
if self.sub_cutscenes:
|
44
|
+
self.sub_cutscenes[0].start()
|
45
|
+
|
46
|
+
def process_event(self,event):
|
47
|
+
"""
|
48
|
+
propagate process event for current sub cutscene
|
49
|
+
"""
|
50
|
+
if self.index >0 and not self.is_over:
|
51
|
+
self.sub_cutscenes[self.index].process_event(event)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
def update(self,dt):
|
56
|
+
"""
|
57
|
+
Update current sub cutscene (if any)
|
58
|
+
if current is over, start next one
|
59
|
+
if current was last, then end self
|
60
|
+
"""
|
61
|
+
if self.index < len(self.sub_cutscenes):
|
62
|
+
self.sub_cutscenes[self.index].update(dt)
|
63
|
+
if self.sub_cutscenes[self.index].is_over:
|
64
|
+
self.index += 1
|
65
|
+
if self.index == len(self.sub_cutscenes):
|
66
|
+
self.end()
|
67
|
+
return
|
68
|
+
self.sub_cutscenes[self.index].start()
|
69
|
+
|
70
|
+
|
71
|
+
class Parallel(Cutscene):
|
72
|
+
def __init__(self,*cutscenes:Cutscene):
|
73
|
+
self.sub_cutscenes : list[Cutscene] = list(cutscenes)
|
74
|
+
|
75
|
+
def start(self):
|
76
|
+
self.is_over = False
|
77
|
+
if not self.sub_cutscenes:
|
78
|
+
self.end()
|
79
|
+
for s in self.sub_cutscenes:
|
80
|
+
s.start()
|
81
|
+
|
82
|
+
def update(self,dt):
|
83
|
+
for s in self.sub_cutscenes:
|
84
|
+
s.update(dt)
|
85
|
+
if all(s.is_over for s in self.sub_cutscenes):
|
86
|
+
self.end()
|
87
|
+
|
88
|
+
class Wait(Cutscene):
|
89
|
+
def __init__(self,duration:float,scene_name:str="global"):
|
90
|
+
self.duration = duration
|
91
|
+
self.scene_name = scene_name
|
92
|
+
def start(self):
|
93
|
+
self.is_over = False
|
94
|
+
self.timer = bf.SceneTimer(duration=self.duration,end_callback=self.end,scene_name=self.scene_name)
|
95
|
+
self.timer.start()
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
class TransitionToScene(Cutscene):
|
100
|
+
def __init__(self,scene_name:str,transition:Transition):
|
101
|
+
self.scene_name = scene_name
|
102
|
+
self.transition: Transition = transition
|
103
|
+
|
104
|
+
def start(self):
|
105
|
+
self.is_over = False
|
106
|
+
bf.CutsceneManager().manager.transition_to_scene(self.scene_name,self.transition)
|
107
|
+
bf.Timer(self.transition.duration,end_callback=self.end).start()
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
class GlideWorldCameraFromTo(Cutscene):
|
115
|
+
def __init__(self,start:tuple[float,float], stop:tuple[float,float],duration:float=1,easing:bf.easing=bf.easing.EASE_IN_OUT,scene_name:str=None):
|
116
|
+
super().__init__()
|
117
|
+
self.scene = None
|
118
|
+
self.scene_name = scene_name
|
119
|
+
self.start_pos = start
|
120
|
+
self.stop_pos = stop
|
121
|
+
self.controller = bf.EasingController(duration,easing,update_callback=self.internal,end_callback=self.end)
|
122
|
+
|
123
|
+
|
124
|
+
def start(self):
|
125
|
+
self.is_over = False
|
126
|
+
if self.scene_name is None:
|
127
|
+
self.scene_name = bf.CutsceneManager().manager.get_scene_at(0).name
|
128
|
+
|
129
|
+
self.scene = bf.CutsceneManager().manager.get_scene(self.scene_name)
|
130
|
+
self.controller.start()
|
131
|
+
|
132
|
+
|
133
|
+
def internal(self,progression:float):
|
134
|
+
if not self.scene:
|
135
|
+
self.end()
|
136
|
+
return
|
137
|
+
self.scene.camera.set_center(
|
138
|
+
self.start_pos[0]+progression*(self.stop_pos[0]-self.start_pos[0]),
|
139
|
+
self.start_pos[1]+progression*(self.stop_pos[1]-self.start_pos[1])
|
140
|
+
)
|
141
|
+
|
142
|
+
def end(self):
|
143
|
+
if self.scene:
|
144
|
+
self.scene.camera.set_center(self.stop_pos[0],self.stop_pos[1])
|
145
|
+
|
146
|
+
super().end()
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
class Function(Cutscene):
|
151
|
+
def __init__(self, function:Callable[[],Any],*args,**kwargs):
|
152
|
+
super().__init__()
|
153
|
+
self.function:Callable[[],Any] = function
|
154
|
+
self.args = args
|
155
|
+
self.kwargs = kwargs
|
156
|
+
|
157
|
+
def start(self):
|
158
|
+
self.is_over = False
|
159
|
+
self.function(*self.args,**self.kwargs)
|
160
|
+
self.end()
|
161
|
+
|
162
|
+
class GlideCamera(Cutscene):
|
163
|
+
def __init__(
|
164
|
+
self,
|
165
|
+
start: tuple[float, float] | None,
|
166
|
+
stop: tuple[float, float] | None,
|
167
|
+
duration: float = 1,
|
168
|
+
easing: bf.easing = bf.easing.EASE_IN_OUT,
|
169
|
+
scene_name: str | None = None,
|
170
|
+
layer_name: str = "world",
|
171
|
+
):
|
172
|
+
"""
|
173
|
+
If start is None, it will be defaulted to the current camera center position.
|
174
|
+
Stop must be provided
|
175
|
+
"""
|
176
|
+
super().__init__()
|
177
|
+
self.scene = None
|
178
|
+
self.layer = None
|
179
|
+
self.scene_name = scene_name
|
180
|
+
self.layer_name = layer_name
|
181
|
+
self.start_pos = start
|
182
|
+
self.stop_pos = stop
|
183
|
+
self.controller = bf.EasingController(
|
184
|
+
duration, easing, update_callback=self.internal, end_callback=self.end
|
185
|
+
)
|
186
|
+
|
187
|
+
def start(self):
|
188
|
+
self.is_over = False
|
189
|
+
|
190
|
+
if self.scene_name is None:
|
191
|
+
self.scene_name = bf.CutsceneManager().manager.get_scene_at(0).name
|
192
|
+
|
193
|
+
self.scene = bf.CutsceneManager().manager.get_scene(self.scene_name)
|
194
|
+
self.layer = self.scene.get_layer(self.layer_name)
|
195
|
+
|
196
|
+
if not self.layer:
|
197
|
+
raise ValueError(f"Layer '{self.layer_name}' not found in scene '{self.scene_name}'.")
|
198
|
+
|
199
|
+
# Fallback to current camera position
|
200
|
+
if self.start_pos is None:
|
201
|
+
self.start_pos = self.layer.camera.get_center()
|
202
|
+
|
203
|
+
self.controller.start()
|
204
|
+
|
205
|
+
def internal(self, progression: float):
|
206
|
+
self.layer.camera.set_center(
|
207
|
+
self.start_pos[0] + progression * (self.stop_pos[0] - self.start_pos[0]),
|
208
|
+
self.start_pos[1] + progression * (self.stop_pos[1] - self.start_pos[1]),
|
209
|
+
)
|
210
|
+
|
211
|
+
def end(self):
|
212
|
+
if self.layer:
|
213
|
+
self.layer.camera.set_center(*self.stop_pos)
|
214
|
+
super().end()
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
class GlideCameraBy(GlideCamera):
|
219
|
+
def __init__(
|
220
|
+
self,
|
221
|
+
delta: tuple[float, float],
|
222
|
+
duration: float = 1,
|
223
|
+
easing: bf.easing = bf.easing.EASE_IN_OUT,
|
224
|
+
scene_name: str | None = None,
|
225
|
+
layer_name: str = "world",
|
226
|
+
):
|
227
|
+
stop_pos = (
|
228
|
+
start_pos[0] + self.delta[0],
|
229
|
+
start_pos[1] + self.delta[1],
|
230
|
+
)
|
231
|
+
super().__init__(
|
232
|
+
start=None,
|
233
|
+
stop=None,
|
234
|
+
delta=delta,
|
235
|
+
duration=duration,
|
236
|
+
easing=easing,
|
237
|
+
scene_name=scene_name,
|
238
|
+
layer_name=layer_name,
|
239
|
+
)
|