10
10
11
11
class Scene :
12
12
"""Generic scene"""
13
- def __init__ (self , name , loader = None , mesh_shaders = None , ** kwargs ):
13
+ def __init__ (self , name , mesh_shaders = None , ** kwargs ):
14
14
"""
15
15
:param name: Unique name or path for the scene
16
16
:param loader: Loader class for the scene if relevant
17
17
"""
18
18
self .name = name
19
- self .loader = loader
20
19
self .root_nodes = []
21
20
22
21
# References resources in the scene
@@ -31,7 +30,7 @@ def __init__(self, name, loader=None, mesh_shaders=None, **kwargs):
31
30
self .diagonal_size = 1.0
32
31
33
32
self .bbox_vao = geometry .bbox ()
34
- self .bbox_shader = shaders .get ('scene_default/bbox.glsl' , create = True )
33
+ self .bbox_shader = shaders .get ('scene_default/bbox.glsl' )
35
34
36
35
self ._view_matrix = matrix44 .create_identity ()
37
36
@@ -122,17 +121,17 @@ def calc_scene_bbox(self):
122
121
123
122
self .diagonal_size = vector3 .length (self .bbox_max - self .bbox_min )
124
123
125
- def load (self , path ):
124
+ def load (self , loader , path ):
126
125
"""Deferred loading if a loader is specified"""
127
- if not hasattr (self , 'loader' ):
128
- return
129
-
130
- if self .loader :
131
- self .loader .load (self , path = path )
132
-
126
+ loader .load (self , path = path )
133
127
self .apply_mesh_shaders ()
134
128
self .view_matrix = matrix44 .create_identity ()
135
129
130
+ def destroy (self ):
131
+ """Destroy the scene data and deallocate buffers"""
132
+ for mesh in self .meshes :
133
+ mesh .vao .release ()
134
+
136
135
def __str__ (self ):
137
136
return "<Scene: {}>" .format (self .name )
138
137
0 commit comments