Esempio n. 1
0
    def __init__(self, width=None, 
                       height=None):
        NodeComponent.__init__(self)
        
        if width is None:
            width = Settings.get('DisplaySettings','resolution')[0]

        if height is None:
            height = Settings.get('DisplaySettings','resolution')[1]

        self._width = width
        self._height = height
        
        self._near_dist = 1.0
        self._near_width = 0.0
        self._near_height = 0.0
        self._far_dist = 1000.0
        self._far_width = 0.0
        self._far_height = 0.0
        
        self._aspect = self._width / float(self._height)
        #self._fov = 75.0
        self._fov = 60.0
        
        self._frustum_planes = []
        
        # Build Near/Far Planes
        self._calc_near_far()
        
        # Internal Stats
        self._num_inside = 0
        self._num_outside = 0
        self._num_intersect = 0
        
        # Debug
        self._update_frustum = True
        if Settings.has_option('RenderSettings','update_frustum'):
            self._update_frustum = Settings.get('RenderSettings','update_frustum')
        else:
            Settings.set('RenderSettings','update_frustum', self._update_frustum)
        
        self._top = None
        self._bottom = None
        self._left = None
        self._right = None

        self._verts = []

        self._gizmos = None

        self._projection_matrix = None
Esempio n. 2
0
    def __init__(self):
        WindowRenderer.__init__(self)
        self._meshes = []
        
        self._has_initialised = False
        self._camera = None
        self._scene_root = None
        self._print_font = None
        self._shader_manager = None
        self._ui_manager = None
        
        # Render Settings
        self._rendersettings = RenderSettings.get_instance()

        if not Settings.has_option('RenderSettings','wireframe'):
            Settings.set('RenderSettings','wireframe', False)

        if not Settings.has_option('RenderSettings','grid'):
            Settings.set('RenderSettings','grid', False)

        if not Settings.has_option('RenderSettings','draw_bounds'):
            Settings.set('RenderSettings','draw_bounds', False)
        
        # Render Listener to allow access to settings
        self._listener = RenderListener(self)
        
        # For FPS Calc
        self._last_time = 0.0
        
        self._fatal_error_displayed = False
        
        # Back Colour
        self._back_colour = Preset.lightgrey

        # Nodes queued for rendering.
        self._render_queue = []
Esempio n. 3
0
    def _build_ui(self):
        
        stats_layout = FoldingBox('stats', content=
                        # each box needs a content layout
                        VLayout(children =
                        [
                            Label('0000.0 fps', name='fps_label'),
                            HLayout(children=
                            [
                                Label('MoUI:', hexpand=False),
                                Label('', name='mouse_over')
                            ]),
                            ])
                        )
        
        wf = False
        sg = True
        sb = False
        uf = True
        if Settings.has_option('RenderSettings','wireframe'):
            wf = Settings.get('RenderSettings','wireframe')

        if Settings.has_option('RenderSettings','grid'):
            sg = Settings.get('RenderSettings','grid')

        if Settings.has_option('RenderSettings','draw_bounds'):
            sb = Settings.get('RenderSettings','draw_bounds')

        if Settings.has_option('RenderSettings','update_frustum'):
            uf = Settings.get('RenderSettings','update_frustum')
        
        settings_layout = FoldingBox('settings', content=
                                VLayout(children=
                                [
                                    # a checkbox, note the action function is provided directly
                                    Checkbox('Show wireframe', h=100, action=self.show_wireframe_action, value=wf),
                                    Checkbox('Show Grid', h=100, action=self.show_grid_action,value=sg),
                                    Checkbox('Show Bounds', h=100, action=self.show_bounds_action,value=sb),
                                    Checkbox('Update Frustum', h=100, action=self.update_frustum_action,value=uf),
                                    Button('Quit', action=self.quit_action),
                                ])
                            )
        
        self._dialog = Dialogue('Inspector',
                                x=20,
                                y=550, 
                                content=
                                VLayout(autosizex=True, 
                                        hpadding=0, 
                                        children=
                                        [
                                         stats_layout,
                                         settings_layout
                                        ])
                                )
        
        # self._console = Dialogue('Python console', 
        self._console = Console('Python Console',
                                 x=20, 
                                 y=50,
                                 # content=VLayout(autosizex=True,
                                 #                 hpadding=0,
                                 #                 children=
                                 #                 [
                                 #                    Label('text\nsome\nthing',w=390, h=300),
                                 #                    TextInput(text=">>>", w=390)
                                 #                 ])
                                )
        
        
        self._frame.add(self._dialog)

        # Setup the UI console logger
        self._ui_log_listener = LogListener()
        self._ui_log_listener.set_log_func(self._console.new_line)
        self._frame.add(self._console)
        
        self._mouse_over_label = self._frame.get_element_by_name('mouse_over')
        self._fps_label = self._frame.get_element_by_name('fps_label')