200 lines
4.6 KiB
Text
200 lines
4.6 KiB
Text
|
/**
|
||
|
* PANDA 3D SOFTWARE
|
||
|
* Copyright (c) Carnegie Mellon University. All rights reserved.
|
||
|
*
|
||
|
* All use of this software is subject to the terms of the revised BSD
|
||
|
* license. You should have received a copy of this license along
|
||
|
* with this source code in a file named "LICENSE."
|
||
|
*
|
||
|
* @file pandaFramework.I
|
||
|
* @author drose
|
||
|
* @date 2002-04-02
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Returns the GraphicsEngine that is used to render all the windows in the
|
||
|
* framework. Normally there's no reason for user code to mess with this.
|
||
|
*/
|
||
|
INLINE GraphicsEngine *PandaFramework::
|
||
|
get_graphics_engine() {
|
||
|
if (_engine == nullptr) {
|
||
|
_engine = GraphicsEngine::get_global_ptr();
|
||
|
PT(GenericAsyncTask) task = new GenericAsyncTask("igloop", task_igloop, this);
|
||
|
task->set_sort(50);
|
||
|
_task_mgr.add(task);
|
||
|
}
|
||
|
return _engine;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the root of the data graph. This is the graph of nodes that is
|
||
|
* traversed to control the inputs from user devices like the mouse and
|
||
|
* keyboard.
|
||
|
*/
|
||
|
INLINE const NodePath &PandaFramework::
|
||
|
get_data_root() const {
|
||
|
return _data_root;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the EventHandler object that serves events in the framework. This
|
||
|
* is primarily used to dispatch on keypresses and such.
|
||
|
*/
|
||
|
INLINE EventHandler &PandaFramework::
|
||
|
get_event_handler() {
|
||
|
return _event_handler;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the Task Manager object that manages tasks in the framework.
|
||
|
*/
|
||
|
INLINE AsyncTaskManager &PandaFramework::
|
||
|
get_task_mgr() {
|
||
|
return _task_mgr;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Specifies the title that is set for all subsequently created windows.
|
||
|
*/
|
||
|
INLINE void PandaFramework::
|
||
|
set_window_title(const std::string &title) {
|
||
|
_window_title = title;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the number of windows that are currently open.
|
||
|
*/
|
||
|
INLINE int PandaFramework::
|
||
|
get_num_windows() const {
|
||
|
return _windows.size();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the nth window currently open.
|
||
|
*/
|
||
|
INLINE WindowFramework *PandaFramework::
|
||
|
get_window(int n) const {
|
||
|
nassertr(n >= 0 && n < (int)_windows.size(), nullptr);
|
||
|
return _windows[n];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Closes the indicated WindowFramework window and removes it from the list.
|
||
|
*/
|
||
|
INLINE void PandaFramework::
|
||
|
close_window(WindowFramework *wf) {
|
||
|
int n = find_window(wf);
|
||
|
if (n >= 0) {
|
||
|
close_window(n);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current state of the wireframe flag.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
get_wireframe() const {
|
||
|
return _wireframe_enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current state of the texture flag.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
get_texture() const {
|
||
|
return _texture_enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current state of the two_sided flag.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
get_two_sided() const {
|
||
|
return _two_sided_enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current state of the lighting flag.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
get_lighting() const {
|
||
|
return _lighting_enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current state of the perpixel flag.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
get_perpixel() const {
|
||
|
return _perpixel_enabled;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the current background type setting.
|
||
|
*/
|
||
|
INLINE WindowFramework::BackgroundType PandaFramework::
|
||
|
get_background_type() const {
|
||
|
return _background_type;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if any node is highlighted, false otherwise.
|
||
|
*/
|
||
|
INLINE bool PandaFramework::
|
||
|
has_highlight() const {
|
||
|
return !_highlight.is_empty();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the currently highlighted node, if any, or an empty NodePath if no
|
||
|
* node is highlighted.
|
||
|
*/
|
||
|
INLINE const NodePath &PandaFramework::
|
||
|
get_highlight() const {
|
||
|
return _highlight;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the RecorderController that has been associated with the
|
||
|
* PandaFramework, if any, or NULL if none has (the normal case).
|
||
|
*
|
||
|
* If a RecorderController is associated, it will presumably be used for
|
||
|
* recording user input to a session file, or for playing back the user input
|
||
|
* from a previously-recorded session.
|
||
|
*/
|
||
|
INLINE RecorderController *PandaFramework::
|
||
|
get_recorder() const {
|
||
|
return _recorder;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Assigns a RecorderController with the PandaFramework. This should be
|
||
|
* called before any windows are opened. The subsequently opened windows will
|
||
|
* register their user inputs with the recorder.
|
||
|
*
|
||
|
* If a RecorderController is associated, it will presumably be used for
|
||
|
* recording user input to a session file, or for playing back the user input
|
||
|
* from a previously-recorded session.
|
||
|
*/
|
||
|
INLINE void PandaFramework::
|
||
|
set_recorder(RecorderController *recorder) {
|
||
|
_recorder = recorder;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the flag that indicates it is time for the application to exit. The
|
||
|
* application will actually exit at the end of the current frame.
|
||
|
*/
|
||
|
INLINE void PandaFramework::
|
||
|
set_exit_flag() {
|
||
|
_exit_flag = true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Resets the exit flag after it has previously been set.
|
||
|
*/
|
||
|
INLINE void PandaFramework::
|
||
|
clear_exit_flag() {
|
||
|
_exit_flag = false;
|
||
|
}
|