def __init__(self, window, camera, options): ''' Constructor ''' # Options self.options = options # Register the renderer for control input self.keys = key.KeyStateHandler() self.pressedKeys = {} self.window = window self.window.push_handlers(self.on_key_press) self.window.push_handlers(self.on_key_release) self.window.push_handlers(self.on_mouse_motion) self.window.push_handlers(self.keys) # Window size (szx, szy) = self.window.get_size() self.windowWidth = szx self.windowHeight = szy self.camera = camera self.time = 0.0 # Ocean Render Parameters self.wireframe = False self.oceanDepth = self.options.getfloat('Scene', 'oceandepth') self.enableUpdates = True self.oceanWind = Vector2(self.options.getfloat('Scene', 'oceanwindx'), self.options.getfloat('Scene', 'oceanwindy')) self.oceanWaveHeight = self.options.getfloat('Scene', 'oceanwaveheight') self.oceanTileSize = self.options.getint('Scene', 'oceantilesize') self.oceanTiles = Vector2(self.options.getint('Scene', 'oceantilesx'), self.options.getint('Scene', 'oceantilesy')) self.period = self.options.getfloat('Scene', 'period') self.env_path = self.options.get('Scene', 'env_path') self.frame = 0 self.skyboxScale = 640.0 self.skyboxOffset = Vector3(0.0, 0.0, 0.0) # Compile the shader self.skyboxShader = shader.openfiles('shaders/skybox.vertex', 'shaders/skybox.fragment') # Renderables self.scene = [] self.skybox = Skybox( self.skyboxShader, self.camera, self.skyboxScale, self.skyboxOffset, xpos_path=self.env_path + '/xpos.tga', ypos_path=self.env_path + '/ypos.tga', zpos_path=self.env_path + '/zpos.tga', xneg_path=self.env_path + '/xneg.tga', yneg_path=self.env_path + '/yneg.tga', zneg_path=self.env_path + '/zneg.tga', ) self.scene.append(self.skybox) self.ocean = Ocean(self.camera, cubemap=self.skybox, depth=self.oceanDepth, waveHeight=self.oceanWaveHeight, wind=self.oceanWind, tileSize=self.oceanTileSize, tilesX=self.oceanTiles.x, tilesZ=self.oceanTiles.y, period=self.period) self.scene.append(self.ocean)