@@ -76,6 +76,16 @@ class Effect:
7676 _ctx = None # type: moderngl.Context
7777 _sys_camera = None # type: camera.SystemCamera
7878
79+ def __init__ (self , * args , ** kwargs ):
80+ self .on_resouces_loaded (self .post_load )
81+
82+ def post_load (self ):
83+ """
84+ Called when all resources are loaded before effects start running.
85+ This assumes you have called Effect.__init__()
86+ """
87+ pass
88+
7989 @property
8090 def name (self ) -> str :
8191 """Full python path to the effect"""
@@ -205,6 +215,28 @@ def get_data(self, path, local=False, **kwargs) -> Data:
205215 """
206216 return resources .data .get (path , create = True , ** kwargs )
207217
218+ # Register callbacks
219+
220+ def on_resouces_loaded (self , func ):
221+ """Register callback function when all resources are loaded"""
222+ resources .on_loaded (func )
223+
224+ def on_shaders_loaded (self , func ):
225+ """Register callback function when shaders are loaded"""
226+ resources .shaders .on_loaded (func )
227+
228+ def on_textures_loaded (self , func ):
229+ """Register callback function when textures are loaded"""
230+ resources .textures .on_loaded (func )
231+
232+ def on_scenes_loaded (self , func ):
233+ """Register callback function when scenes are loaded"""
234+ resources .scenes .on_loaded (func )
235+
236+ def on_data_loaded (self , func ):
237+ """Register callback function when data files are loaded"""
238+ resources .data .on_loaded (func )
239+
208240 # Utility methods for matrices
209241
210242 def create_projection (self , fov = 75.0 , near = 1.0 , far = 100.0 , ratio = None ):
0 commit comments