forked from bartvdbraak/blender
de86d89a9f
.............................................. svn merge ^/branches/soc-2011-cucumber -r 38968,38970,38973,39045,40845 Notes: ====== * we replaced fullscreen by playerflag in DNA_scene.types.h. So no doversion here, I think this is a small reversion can't see any potential problem in forcuing users to re-check fullscreen. If the file is really old (<250) it will doversion though; * (for after commit) it would be nice to gray out the width/height when desktop=True * for a rainy day: it would be nice to have other ghost modes (e.g. screensaver) to support desktop + MSAA as well. It's not a huge deal given that I don't even know if anything else work (apart from windowed, fullscreen and embed) but it doesn't hurt to have it updated as well. * there is something strange with outliner. I think space_outliner merge-info is not in sync with the ^/ folder. It's probably a wrong merge early in cucumber. Commit Logs: =========== # 40845 by dfelinto remove desktop and fullscreen properties. They are both part of playerflag now also I removed the fullscreen from the DNA completely. I don't think we need doversion that.. #39045 by kupoman The Desktop option is now greyed out when fullscreen is not checked rather than disappearing from the UI completely. #38973 by kupoman Adding a checkbox to the UI to allow the full screen Blender Player to use the current desktop resolution instead of the resolution setting. #38970 by kupoman Multisampling now works in a fullscreen Blender Player. #38968 by moguri Committing a patch from Mitchell Stokes (Moguri) to include a setting in the UI for the Blenderplayer multisampling.
168 lines
4.9 KiB
C++
168 lines
4.9 KiB
C++
/*
|
|
* ***** BEGIN GPL LICENSE BLOCK *****
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
|
|
* All rights reserved.
|
|
*
|
|
* The Original Code is: all of this file.
|
|
*
|
|
* Contributor(s): none yet.
|
|
*
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
*/
|
|
|
|
/** \file GPG_Application.h
|
|
* \ingroup player
|
|
* \brief GHOST Blender Player application declaration file.
|
|
*/
|
|
|
|
#include "GHOST_IEventConsumer.h"
|
|
#include "STR_String.h"
|
|
|
|
#ifdef WIN32
|
|
#include <wtypes.h>
|
|
#endif
|
|
|
|
#include "KX_KetsjiEngine.h"
|
|
|
|
class KX_KetsjiEngine;
|
|
class KX_ISceneConverter;
|
|
class NG_LoopBackNetworkDeviceInterface;
|
|
class RAS_IRasterizer;
|
|
class GHOST_IEvent;
|
|
class GHOST_ISystem;
|
|
class GHOST_ITimerTask;
|
|
class GHOST_IWindow;
|
|
class GPC_MouseDevice;
|
|
class GPC_RenderTools;
|
|
class GPG_Canvas;
|
|
class GPG_KeyboardDevice;
|
|
class GPG_System;
|
|
struct Main;
|
|
struct Scene;
|
|
|
|
class GPG_Application : public GHOST_IEventConsumer
|
|
{
|
|
public:
|
|
GPG_Application(GHOST_ISystem* system);
|
|
~GPG_Application(void);
|
|
|
|
bool SetGameEngineData(struct Main* maggie, struct Scene* scene, GlobalSettings* gs, int argc, char** argv);
|
|
bool startWindow(STR_String& title, int windowLeft, int windowTop, int windowWidth, int windowHeight,
|
|
const bool stereoVisual, const int stereoMode, const GHOST_TUns16 samples=0);
|
|
bool startFullScreen(int width, int height, int bpp, int frequency, const bool stereoVisual, const int stereoMode, const GHOST_TUns16 samples=0, bool useDesktop=false);
|
|
bool startEmbeddedWindow(STR_String& title, const GHOST_TEmbedderWindowID parent_window, const bool stereoVisual, const int stereoMode, const GHOST_TUns16 samples=0);
|
|
#ifdef WIN32
|
|
bool startScreenSaverFullScreen(int width, int height, int bpp, int frequency, const bool stereoVisual, const int stereoMode, const GHOST_TUns16 samples=0);
|
|
bool startScreenSaverPreview(HWND parentWindow, const bool stereoVisual, const int stereoMode, const GHOST_TUns16 samples=0);
|
|
#endif
|
|
|
|
virtual bool processEvent(GHOST_IEvent* event);
|
|
int getExitRequested(void);
|
|
const STR_String& getExitString(void);
|
|
GlobalSettings* getGlobalSettings(void);
|
|
bool StartGameEngine(int stereoMode);
|
|
void StopGameEngine();
|
|
|
|
protected:
|
|
bool handleWheel(GHOST_IEvent* event);
|
|
bool handleButton(GHOST_IEvent* event, bool isDown);
|
|
bool handleCursorMove(GHOST_IEvent* event);
|
|
bool handleKey(GHOST_IEvent* event, bool isDown);
|
|
|
|
/**
|
|
* Initializes the game engine.
|
|
*/
|
|
bool initEngine(GHOST_IWindow* window, int stereoMode);
|
|
|
|
/**
|
|
* Starts the game engine.
|
|
*/
|
|
bool startEngine(void);
|
|
|
|
/**
|
|
* Stop the game engine.
|
|
*/
|
|
void stopEngine(void);
|
|
|
|
/**
|
|
* Shuts the game engine down.
|
|
*/
|
|
void exitEngine(void);
|
|
short m_exitkey;
|
|
|
|
/* The game data */
|
|
STR_String m_startSceneName;
|
|
struct Scene* m_startScene;
|
|
struct Main* m_maggie;
|
|
|
|
/* Exit state. */
|
|
int m_exitRequested;
|
|
STR_String m_exitString;
|
|
GlobalSettings* m_globalSettings;
|
|
|
|
/* GHOST system abstraction. */
|
|
GHOST_ISystem* m_system;
|
|
/* Main window. */
|
|
GHOST_IWindow* m_mainWindow;
|
|
/* Timer to advance frames. */
|
|
GHOST_ITimerTask* m_frameTimer;
|
|
/* The cursor shape displayed. */
|
|
GHOST_TStandardCursor m_cursor;
|
|
|
|
/** Engine construction state. */
|
|
bool m_engineInitialized;
|
|
/** Engine state. */
|
|
bool m_engineRunning;
|
|
/** Running on embedded window */
|
|
bool m_isEmbedded;
|
|
|
|
/** the gameengine itself */
|
|
KX_KetsjiEngine* m_ketsjiengine;
|
|
/** The game engine's system abstraction. */
|
|
GPG_System* m_kxsystem;
|
|
/** The game engine's keyboard abstraction. */
|
|
GPG_KeyboardDevice* m_keyboard;
|
|
/** The game engine's mouse abstraction. */
|
|
GPC_MouseDevice* m_mouse;
|
|
/** The game engine's canvas abstraction. */
|
|
GPG_Canvas* m_canvas;
|
|
/** The game engine's platform dependent render tools. */
|
|
GPC_RenderTools* m_rendertools;
|
|
/** the rasterizer */
|
|
RAS_IRasterizer* m_rasterizer;
|
|
/** Converts Blender data files. */
|
|
KX_ISceneConverter* m_sceneconverter;
|
|
/** Network interface. */
|
|
NG_LoopBackNetworkDeviceInterface* m_networkdevice;
|
|
|
|
bool m_blendermat;
|
|
bool m_blenderglslmat;
|
|
|
|
/*
|
|
* GameLogic.globalDict as a string so that loading new blend files can use the same dict.
|
|
* Do this because python starts/stops when loading blend files.
|
|
*/
|
|
char* m_pyGlobalDictString;
|
|
int m_pyGlobalDictString_Length;
|
|
|
|
/* argc and argv need to be passed on to python */
|
|
int m_argc;
|
|
char** m_argv;
|
|
};
|
|
|