blender/source/gameengine/GamePlayer/ghost/GPG_Application.h
Dalai Felinto de86d89a9f Cucumber - AA for blenderplayer and fullscreen
..............................................
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.
2012-01-11 20:53:22 +00:00

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;
};