@@ -35,6 +35,8 @@ def __init__(self, options):
3535 self .rendered_envs_idx = options .rendered_envs_idx
3636 self .env_separate_rigid = options .env_separate_rigid
3737
38+ self .buffer = dict ()
39+
3840 # nodes
3941 self .world_frame_node = None
4042 self .link_frame_nodes = dict ()
@@ -831,31 +833,31 @@ def clear_debug_objects(self):
831833 self .clear_external_nodes ()
832834
833835 def update (self ):
834- buffer_updates = dict ()
836+ # Early return if already updated previously
837+ if self ._t >= self .scene ._t :
838+ return
835839
836- if self ._t >= self .scene ._t : # already updated
837- return buffer_updates
838- else :
839- self ._t = self .scene ._t
840+ self ._t = self .scene ._t
840841
841842 # clear up all dynamic nodes
842843 self .clear_dynamic_nodes ()
843844
844845 # update variables not used in simulation
845846 self .visualizer .update_visual_states ()
846847
848+ # Reset scene bounds to trigger recomputation. They are involved in shadow map
847849 self ._scene ._bounds = None
848- self . update_link_frame ( buffer_updates )
849- self .update_tool ( buffer_updates )
850- self .update_rigid ( buffer_updates )
851- self .update_contact ( buffer_updates )
852- self .update_avatar ( buffer_updates )
853- self .update_mpm ( buffer_updates )
854- self .update_sph ( buffer_updates )
855- self .update_pbd ( buffer_updates )
856- self .update_fem ( buffer_updates )
857-
858- return buffer_updates
850+
851+ self .buffer . clear ( )
852+ self .update_link_frame ( self . buffer )
853+ self .update_tool ( self . buffer )
854+ self .update_rigid ( self . buffer )
855+ self .update_contact ( self . buffer )
856+ self .update_avatar ( self . buffer )
857+ self .update_mpm ( self . buffer )
858+ self .update_sph ( self . buffer )
859+ self . update_pbd ( self . buffer )
860+ self . update_fem ( self . buffer )
859861
860862 def add_light (self , light ):
861863 # light direction is light pose's -z frame
@@ -875,7 +877,7 @@ def create_node_seg(self, seg_key, seg_node):
875877 self .seg_node_map [seg_node ] = self .seg_idxc_to_idxc_rgb (seg_idxc )
876878
877879 def remove_node_seg (self , seg_node ):
878- self .seg_node_map .pop (seg_node )
880+ self .seg_node_map .pop (seg_node , None )
879881
880882 def generate_seg_vars (self ):
881883 # seg_key: same as entity/link/geom's idx
0 commit comments