From d46694c91c2bec4eb1e282c0c0101e6dab26e082 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 3 Jul 2013 09:16:03 -0700 Subject: SDK 0.2.3 --- Samples/CommonSrc/Platform/Platform.h | 380 +++++++++++++++++----------------- 1 file changed, 190 insertions(+), 190 deletions(-) (limited to 'Samples/CommonSrc/Platform/Platform.h') diff --git a/Samples/CommonSrc/Platform/Platform.h b/Samples/CommonSrc/Platform/Platform.h index 8ef4593..201aad6 100644 --- a/Samples/CommonSrc/Platform/Platform.h +++ b/Samples/CommonSrc/Platform/Platform.h @@ -1,190 +1,190 @@ -/************************************************************************************ - -Filename : Platform.h -Content : Platform-independent app and rendering framework for Oculus samples -Created : September 6, 2012 -Authors : Andrew Reisse - -Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -************************************************************************************/ - -#ifndef OVR_Platform_h -#define OVR_Platform_h - -#include "OVR.h" - -#include "Kernel/OVR_KeyCodes.h" - -namespace OVR { namespace Render { - class RenderDevice; - struct DisplayId; - struct RendererParams; -}} - -namespace OVR { namespace Platform { - -using Render::RenderDevice; - -class PlatformCore; -class Application; -class GamepadManager; - -// MouseMode configures mouse input behavior of the app. Three states are -// currently supported: -// Normal - Reports absolute coordinates with cursor shown. -// Relative - Reports relative delta coordinates with cursor hidden -// until 'Esc' key is pressed or window loses focus. -// RelativeEscaped - Relative input is desired, but has been escaped until -// mouse is clicked in the window, which will return the state -// to relative. Absolute coordinates are reported. - -enum MouseMode -{ - Mouse_Normal, - Mouse_Relative, // Cursor hidden, mouse grab, OnMouseMove reports relative deltas. - Mouse_RelativeEscaped, // Clicking in window will return to Relative state. -}; - - -enum Modifiers -{ - Mod_Shift = 0x001, - Mod_Control = 0x002, - Mod_Meta = 0x004, - Mod_Alt = 0x008, - - // Set for input Mouse_Relative mode, indicating that x,y are relative deltas. - Mod_MouseRelative = 0x100, -}; - -//------------------------------------------------------------------------------------- -// ***** SetupGraphicsDeviceSet - -typedef RenderDevice* (*RenderDeviceCreateFunc)(const Render::RendererParams&, void*); - -// SetupGraphicsDeviceSet is a PlatformCore::SetupGraphics initialization helper class, -// used to build up a list of RenderDevices that can be used for rendering. -// Specifying a smaller set allows application to avoid linking unused graphics devices. -struct SetupGraphicsDeviceSet -{ - SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc) - : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(0) { } - SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc, - const SetupGraphicsDeviceSet& next) - : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(&next) { } - - // Selects graphics object based on type string; returns 'this' if not found. - const SetupGraphicsDeviceSet* PickSetupDevice(const char* typeArg) const; - - const char* pTypeArg; - RenderDeviceCreateFunc pCreateDevice; - -private: - const SetupGraphicsDeviceSet* pNext; -}; - -//------------------------------------------------------------------------------------- -// ***** PlatformCore - -// PlatformCore defines abstract system window/viewport setup functionality and -// maintains a renderer. This class is separated from Application because it can have -// derived platform-specific implementations. -// Specific implementation classes are hidden within platform-specific versions -// such as Win32::PlatformCore. - -class PlatformCore : public NewOverrideBase -{ -protected: - Application* pApp; - Ptr pRender; - Ptr pGamepadManager; - UInt64 StartupTicks; - -public: - PlatformCore(Application *app); - virtual ~PlatformCore() { } - Application* GetApp() { return pApp; } - RenderDevice* GetRenderer() const { return pRender; } - GamepadManager* GetGamepadManager() const { return pGamepadManager; } - - virtual bool SetupWindow(int w, int h) = 0; - // Destroys window and also releases renderer. - virtual void DestroyWindow() = 0; - virtual void Exit(int exitcode) = 0; - - virtual void ShowWindow(bool visible) = 0; - - virtual bool SetFullscreen(const Render::RendererParams& rp, int fullscreen); - - // Search for a matching graphics renderer based on type argument and initializes it. - virtual RenderDevice* SetupGraphics(const SetupGraphicsDeviceSet& setupGraphicsDesc, - const char* gtype, - const Render::RendererParams& rp) = 0; - - virtual void SetMouseMode(MouseMode mm) { OVR_UNUSED(mm); } - - virtual void GetWindowSize(int* w, int* h) const = 0; - - virtual void SetWindowTitle(const char*title) = 0; - virtual void PlayMusicFile(const char *fileName) { OVR_UNUSED(fileName); } - virtual int GetDisplayCount() { return 0; } - virtual Render::DisplayId GetDisplay(int screen); - - // Get time since start of application in seconds. - double GetAppTime() const; - - virtual String GetContentDirectory() const { return "."; } -}; - -//------------------------------------------------------------------------------------- -// PlatformApp is a base application class from which end-user application -// classes derive. - -class Application : public NewOverrideBase -{ -protected: - class PlatformCore* pPlatform; - -public: - virtual ~Application() { } - - virtual int OnStartup(int argc, const char** argv) = 0; - virtual void OnQuitRequest() { pPlatform->Exit(0); } - - virtual void OnIdle() {} - - virtual void OnKey(KeyCode key, int chr, bool down, int modifiers) - { OVR_UNUSED4(key, chr, down, modifiers); } - virtual void OnMouseMove(int x, int y, int modifiers) - { OVR_UNUSED3(x, y, modifiers); } - - virtual void OnResize(int width, int height) - { OVR_UNUSED2(width, height); } - - void SetPlatformCore(PlatformCore* p) { pPlatform = p; } - PlatformCore* GetPlatformCore() const { return pPlatform; } - - - // Static functions defined by OVR_PLATFORM_APP and used to initialize and - // shut down the application class. - static Application* CreateApplication(); - static void DestroyApplication(Application* app); -}; - - -}} - -#endif +/************************************************************************************ + +Filename : Platform.h +Content : Platform-independent app and rendering framework for Oculus samples +Created : September 6, 2012 +Authors : Andrew Reisse + +Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +************************************************************************************/ + +#ifndef OVR_Platform_h +#define OVR_Platform_h + +#include "OVR.h" + +#include "Kernel/OVR_KeyCodes.h" + +namespace OVR { namespace Render { + class RenderDevice; + struct DisplayId; + struct RendererParams; +}} + +namespace OVR { namespace Platform { + +using Render::RenderDevice; + +class PlatformCore; +class Application; +class GamepadManager; + +// MouseMode configures mouse input behavior of the app. Three states are +// currently supported: +// Normal - Reports absolute coordinates with cursor shown. +// Relative - Reports relative delta coordinates with cursor hidden +// until 'Esc' key is pressed or window loses focus. +// RelativeEscaped - Relative input is desired, but has been escaped until +// mouse is clicked in the window, which will return the state +// to relative. Absolute coordinates are reported. + +enum MouseMode +{ + Mouse_Normal, + Mouse_Relative, // Cursor hidden, mouse grab, OnMouseMove reports relative deltas. + Mouse_RelativeEscaped, // Clicking in window will return to Relative state. +}; + + +enum Modifiers +{ + Mod_Shift = 0x001, + Mod_Control = 0x002, + Mod_Meta = 0x004, + Mod_Alt = 0x008, + + // Set for input Mouse_Relative mode, indicating that x,y are relative deltas. + Mod_MouseRelative = 0x100, +}; + +//------------------------------------------------------------------------------------- +// ***** SetupGraphicsDeviceSet + +typedef RenderDevice* (*RenderDeviceCreateFunc)(const Render::RendererParams&, void*); + +// SetupGraphicsDeviceSet is a PlatformCore::SetupGraphics initialization helper class, +// used to build up a list of RenderDevices that can be used for rendering. +// Specifying a smaller set allows application to avoid linking unused graphics devices. +struct SetupGraphicsDeviceSet +{ + SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc) + : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(0) { } + SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc, + const SetupGraphicsDeviceSet& next) + : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(&next) { } + + // Selects graphics object based on type string; returns 'this' if not found. + const SetupGraphicsDeviceSet* PickSetupDevice(const char* typeArg) const; + + const char* pTypeArg; + RenderDeviceCreateFunc pCreateDevice; + +private: + const SetupGraphicsDeviceSet* pNext; +}; + +//------------------------------------------------------------------------------------- +// ***** PlatformCore + +// PlatformCore defines abstract system window/viewport setup functionality and +// maintains a renderer. This class is separated from Application because it can have +// derived platform-specific implementations. +// Specific implementation classes are hidden within platform-specific versions +// such as Win32::PlatformCore. + +class PlatformCore : public NewOverrideBase +{ +protected: + Application* pApp; + Ptr pRender; + Ptr pGamepadManager; + UInt64 StartupTicks; + +public: + PlatformCore(Application *app); + virtual ~PlatformCore() { } + Application* GetApp() { return pApp; } + RenderDevice* GetRenderer() const { return pRender; } + GamepadManager* GetGamepadManager() const { return pGamepadManager; } + + virtual bool SetupWindow(int w, int h) = 0; + // Destroys window and also releases renderer. + virtual void DestroyWindow() = 0; + virtual void Exit(int exitcode) = 0; + + virtual void ShowWindow(bool visible) = 0; + + virtual bool SetFullscreen(const Render::RendererParams& rp, int fullscreen); + + // Search for a matching graphics renderer based on type argument and initializes it. + virtual RenderDevice* SetupGraphics(const SetupGraphicsDeviceSet& setupGraphicsDesc, + const char* gtype, + const Render::RendererParams& rp) = 0; + + virtual void SetMouseMode(MouseMode mm) { OVR_UNUSED(mm); } + + virtual void GetWindowSize(int* w, int* h) const = 0; + + virtual void SetWindowTitle(const char*title) = 0; + virtual void PlayMusicFile(const char *fileName) { OVR_UNUSED(fileName); } + virtual int GetDisplayCount() { return 0; } + virtual Render::DisplayId GetDisplay(int screen); + + // Get time since start of application in seconds. + double GetAppTime() const; + + virtual String GetContentDirectory() const { return "."; } +}; + +//------------------------------------------------------------------------------------- +// PlatformApp is a base application class from which end-user application +// classes derive. + +class Application : public NewOverrideBase +{ +protected: + class PlatformCore* pPlatform; + +public: + virtual ~Application() { } + + virtual int OnStartup(int argc, const char** argv) = 0; + virtual void OnQuitRequest() { pPlatform->Exit(0); } + + virtual void OnIdle() {} + + virtual void OnKey(KeyCode key, int chr, bool down, int modifiers) + { OVR_UNUSED4(key, chr, down, modifiers); } + virtual void OnMouseMove(int x, int y, int modifiers) + { OVR_UNUSED3(x, y, modifiers); } + + virtual void OnResize(int width, int height) + { OVR_UNUSED2(width, height); } + + void SetPlatformCore(PlatformCore* p) { pPlatform = p; } + PlatformCore* GetPlatformCore() const { return pPlatform; } + + + // Static functions defined by OVR_PLATFORM_APP and used to initialize and + // shut down the application class. + static Application* CreateApplication(); + static void DestroyApplication(Application* app); +}; + + +}} + +#endif -- cgit v1.2.3