class World( Entity ): drawable = collidable = updatable = True server_sendable = True client_sendable = batchable = False def __init__( self ): self.bstate = BlockWorldState() self.bstate.random( 10 ) self.batch = None self.coll = CollGeometry() def update( self, dt ): if not self.bstate.dirty: return self.coll = CollGeometry() self.bstate.dirty = False self.ground = Block( -50., -100., -50., 100. ) self.ground.set_color( (100, 0, 0, 0) ) self.coll.add_geometry( CollAABB( Vector3f( -50., -100., -50. ), Vector3f( 50., 0., 50. ) ) ) self.blocks = [ self.ground ] for b in self.bstate.blocks: minx, minz, c = b b = Block( minx, 0., minz, 5. ) b.set_color( (0, 100, c, 0) ) self.coll.add_geometry( CollAABB( Vector3f( minx, 0., minz ), Vector3f( minx+5., 5, minz+5. ) ) ) self.blocks.append( b ) self.batch = Batch( self.blocks ) def collision_geometry( self ): return self.coll def resolve( self, other, coll ): return other.resolve( self, coll ) def state( self ): return self.bstate def draw( self ): if self.batch: self.batch.draw()
def __init__( self, renderer ): self.noise = Brownian() self.noise.add_component( 2., 3. ) self.noise.add_component( 0.5, 15. ) self.noise.add_component( 0.1, 30. ) self.patches = [ SphericalROAM( None, self.noise.noise ) ] self.patches = [ SphericalROAM2( 50000, 100000, self.noise.noise ) ] self.batch = Batch( self.patches )
class Planet: def __init__( self, renderer ): self.noise = Brownian() self.noise.add_component( 2., 3. ) self.noise.add_component( 0.5, 15. ) self.noise.add_component( 0.1, 30. ) self.patches = [ SphericalROAM( None, self.noise.noise ) ] self.patches = [ SphericalROAM2( 50000, 100000, self.noise.noise ) ] self.batch = Batch( self.patches ) def draw( self, renderer, camera ): camera.update( renderer ) c_float_p = POINTER(c_float) pos = camera.position.astype(numpy.float32) look = camera.look.astype(numpy.float32) self.batch.update( ( pos.ctypes.data_as(c_float_p), look.ctypes.data_as(c_float_p) ) ) self.batch.draw()
def update( self, dt ): if not self.bstate.dirty: return self.coll = CollGeometry() self.bstate.dirty = False self.ground = Block( -50., -100., -50., 100. ) self.ground.set_color( (100, 0, 0, 0) ) self.coll.add_geometry( CollAABB( Vector3f( -50., -100., -50. ), Vector3f( 50., 0., 50. ) ) ) self.blocks = [ self.ground ] for b in self.bstate.blocks: minx, minz, c = b b = Block( minx, 0., minz, 5. ) b.set_color( (0, 100, c, 0) ) self.coll.add_geometry( CollAABB( Vector3f( minx, 0., minz ), Vector3f( minx+5., 5, minz+5. ) ) ) self.blocks.append( b ) self.batch = Batch( self.blocks )