示例#1
0
    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)