32#ifndef __SO3_PREREQUISITES_H__
33#define __SO3_PREREQUISITES_H__
41#ifdef SO3_PLUGIN_WEBNAVIGATOR_NON_CLIENT_BUILD
42 #define SO3_WEB_NAVIGATOR_BUILD 1
44 #define SO3_WEB_NAVIGATOR_BUILD 0
47#include <scolPlugin.h>
61#include <unordered_map>
65#include <OgreTagPoint.h>
66#include <OgreOverlay.h>
67#include <OgreOverlayManager.h>
68#include <OgreOverlayElement.h>
69#include <OgreOverlayContainer.h>
70#include <OgreTextAreaOverlayElement.h>
71#include <OgreWireBoundingBox.h>
72#include <OgreArchiveFactory.h>
75#include <OgreParticleFXPlugin.h>
76#include <OgreOctreePlugin.h>
78#if !defined(ANDROID) && !defined(APPLE_IOS) && !defined(SO3_USE_METAL) && !defined(RPI)
79 #include "OgreCgPlugin.h"
82#ifdef SO3_FLASH_ENABLE
88#ifdef SO3_DEVELOPPER_BUILD
91 # include "OgreD3D9Plugin.h"
93 # include "OgreD3D11Plugin.h"
97# ifndef SO3_USE_OPENGLES2
99# include "OgreGL3PlusPlugin.h"
100# elif !defined(SO3_USE_METAL)
101# include "OgreGLPlugin.h"
103# elif !defined(SO3_USE_METAL)
104# include "OgreGLES2Plugin.h"
107#if defined(__APPLE__) && defined(SO3_USE_METAL)
108 # include "OgreMetalPlugin.h"
114 # include "OgreVulkanPlugin.h"
115 # include "OgreGLSLangProgramManager.h"
120#include <unordered_map>
121#include <unordered_set>
124#define SO3_PROFILER 0
130#define CONST_COLOR 255.0f
131#define CONST_COLOR_ALPHA 127.0f
132#define SO3_PI 3.14159265358979323846f
133#define SO3_SAFE_DELETE(p) {if(p){delete(p);(p)=NULL;}}
134#define SO3_SAFE_DELETE_ARRAY(p) {if(p){delete[](p);(p)=NULL;}}
135#define SO3_MAX_PATH MAX_PATH
138#define SO3_INTERNAL_RESOURCE_GROUP "SO3/Internal"
139#define SO3_INTERNAL_DYNAMIC_RESOURCE_GROUP "SO3/Internal/DynResource"
140#define SO3_INTERNAL_DYNAMIC_READABLE_RESOURCE_GROUP "SO3/Internal/GlobalPool"
141#define SO3_INTERNAL_HYDRAX_RESOURCE_GROUP "Hydrax"
142#define SO3_INTERNAL_SKYX_RESOURCE_GROUP "SkyX"
143#define SO3_INTERNAL_SUBENTITY_SELECTOR_RESOURCE_GROUP "SO3/Internal/EntitySelector"
145#ifdef SO3_BUILD_DEFERRED
146#define SO3_INTERNAL_DEFERRED_RESOURCE_GROUP "SO3/Internal/DeferredSystem"
150#define SO3_CONFIG_RENDERER_KEYWORD "SO3Renderer"
151#define SO3_CONFIG_RENDERER_OPENGL "OpenGL"
152#define SO3_CONFIG_RENDERER_DIRECTX "DirectX"
153#define SO3_CONFIG_RENDERER_DIRECTX9 "DirectX9"
154#define SO3_CONFIG_RENDERER_DIRECTX11 "DirectX11"
155#define SO3_CONFIG_RENDERER_VULKAN "Vulkan"
156#define SO3_CONFIG_RENDERER_TINY "Tiny"
157#define SO3_CONFIG_RENDERER_METAL "Metal"
158#define SO3_CONFIG_FSAA_KEYWORD "3DFSAA"
159#define SO3_CONFIG_QUAD_BUFFER_KEYWORD "QuadBuffer"
160#define SO3_CONFIG_FOCAL_LENGTH_KEYWORD "FocalLength"
161#define SO3_CONFIG_EYES_SEPARATION_KEYWORD "EyeSeparation"
162#define SO3_CONFIG_VSYNC_KEYWORD "VSYNC"
170class SAnimationFrameListener;
173class SBitmapWidgetFactory;
176class SColourGradient;
179class SCompositorPass;
180class SCompositorTarget;
181class SCompositorTechnique;
182class SCompositorMaterialListener;
183class SContactCallback;
186#ifdef SO3_BUILD_DEFERRED
187class SDeferredShading;
190class SDynamicCubeMap;
191class SDynamicReflectionMap;
195class SEnvironmentComponent;
198#ifdef SO3_FLASH_ENABLE
201class SFlashWidgetFactory;
215class SObjWindowWidget;
216class SObjWindowWidgetFactory;
217class SO3ScolFileSystemArchiveFactory;
218class SParticleSystem;
224template <
typename NUMERIC_TYPE>
class SPoint;
226class SRenderToTexture;
228class SResourceLoader;
232class SScriptFunction;
233class SSequenceAnimation;
234class SSequenceAnimationTrack;
235class SSequenceAnimationKey;
243class SSkyAstronomicalModel;
245class SSubEntitySelectorBuffer;
246class SSubEntitySelectorMaterialSwitcher;
250class SUniversalClock;
252class SVertexAnimation;
254class SWebNavigatorWidget;
255class SWebNavigatorWidgetFactory;
262typedef std::unordered_map<std::string, SAnim*>
SAnimMap;
265typedef std::unordered_map<std::string, SBone*>
SBoneMap;
273typedef std::unordered_map<std::string, SNode*>
SNodeMap;
275typedef std::unordered_map<std::string, SScene*>
SSceneMap;
Abstract class defining a shadow rendering technique. .
Manage Physics Contraint. .
Abstract class defining a shadow rendering technique. .
Manage Box physics shape .
std::unordered_map< std::string, STexture * > STextureMap
std::unordered_map< unsigned short, SBone * > SBoneIndexMap
std::vector< SAnimTrack * > SAnimTrackList
std::unordered_map< std::string, SMaterial * > SMaterialMap
std::unordered_map< std::string, SCompositor * > SCompositorMap
std::unordered_map< SEntity *, std::string > SEntityMap
std::unordered_map< int, SViewPort * > SViewPortList
std::unordered_set< SMaterialPair * > SMaterialPairMap
std::unordered_map< std::string, STextureMap * > SGroupTextureMap
std::unordered_map< std::string, SBone * > SBoneMap
std::unordered_map< unsigned short, SAnim * > SAnimIndexMap
std::unordered_set< SSequenceAnimationKey * > SAnimSequenceKeyMap
std::unordered_map< std::string, STerrain * > STerrainMap
std::unordered_map< std::string, SNode * > SNodeMap
std::unordered_map< std::string, SScene * > SSceneMap
std::vector< SSequenceAnimationKey * > SAnimSequenceKeyList
std::unordered_map< std::string, SWindow * > SWindowMap
std::unordered_map< std::string, SAnim * > SAnimMap
std::unordered_map< std::string, SMaterialID * > SMaterialIDMap
std::unordered_map< std::string, SMaterialMap * > SGroupMaterialMap