Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JSInterface_Renderer.cpp
Go to the documentation of this file.
1 /* Copyright (C) 2013 Wildfire Games.
2  * This file is part of 0 A.D.
3  *
4  * 0 A.D. is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * 0 A.D. is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #include "precompiled.h"
19 
20 #include "JSInterface_Renderer.h"
21 #include "renderer/Renderer.h"
22 
23 #define IMPLEMENT_BOOLEAN_SCRIPT_SETTING(NAME, SCRIPTNAME) \
24 bool JSI_Renderer::Get##SCRIPTNAME##Enabled(void* UNUSED(cbdata)) \
25 { \
26  return g_Renderer.GetOptionBool(CRenderer::OPT_##NAME); \
27 } \
28 \
29 void JSI_Renderer::Set##SCRIPTNAME##Enabled(void* UNUSED(cbdata), bool Enabled) \
30 { \
31  g_Renderer.SetOptionBool(CRenderer::OPT_##NAME, Enabled); \
32 }
33 
34 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(PARTICLES, Particles);
35 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(PREFERGLSL, PreferGLSL);
36 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERNORMAL, WaterNormal);
37 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHADOWPCF, ShadowPCF);
38 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHADOWS, Shadows);
39 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREALDEPTH, WaterRealDepth);
40 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFLECTION, WaterReflection);
41 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFRACTION, WaterRefraction);
42 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERFOAM, WaterFoam);
43 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERCOASTALWAVES, WaterCoastalWaves);
44 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERSHADOW, WaterShadow);
45 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SILHOUETTES, Silhouettes);
46 IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHOWSKY, ShowSky);
47 
48 #undef IMPLEMENT_BOOLEAN_SCRIPT_SETTING
49 
50 std::string JSI_Renderer::GetRenderPath(void* UNUSED(cbdata))
51 {
52  return CRenderer::GetRenderPathName(g_Renderer.GetRenderPath());
53 }
54 
55 void JSI_Renderer::SetRenderPath(void* UNUSED(cbdata), std::string name)
56 {
57  g_Renderer.SetRenderPath(CRenderer::GetRenderPathByName(name));
58 }
59 
60 
61 #define REGISTER_BOOLEAN_SCRIPT_SETTING(NAME) \
62 scriptInterface.RegisterFunction<bool, &JSI_Renderer::Get##NAME##Enabled>("Renderer_Get" #NAME "Enabled"); \
63 scriptInterface.RegisterFunction<void, bool, &JSI_Renderer::Set##NAME##Enabled>("Renderer_Set" #NAME "Enabled");
64 
66 {
67  scriptInterface.RegisterFunction<std::string, &JSI_Renderer::GetRenderPath>("Renderer_GetRenderPath");
68  scriptInterface.RegisterFunction<void, std::string, &JSI_Renderer::SetRenderPath>("Renderer_SetRenderPath");
74  REGISTER_BOOLEAN_SCRIPT_SETTING(WaterRealDepth);
75  REGISTER_BOOLEAN_SCRIPT_SETTING(WaterReflection);
76  REGISTER_BOOLEAN_SCRIPT_SETTING(WaterRefraction);
78  REGISTER_BOOLEAN_SCRIPT_SETTING(WaterCoastalWaves);
82 }
83 
84 #undef REGISTER_BOOLEAN_SCRIPT_SETTING
85 
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
void RegisterScriptFunctions(ScriptInterface &scriptInterface)
#define IMPLEMENT_BOOLEAN_SCRIPT_SETTING(NAME)
static RenderPath GetRenderPathByName(const CStr &name)
Definition: Renderer.cpp:817
void SetRenderPath(void *cbdata, std::string name)
static CStr GetRenderPathName(RenderPath rp)
Definition: Renderer.cpp:807
#define g_Renderer
Definition: Renderer.h:61
#define REGISTER_BOOLEAN_SCRIPT_SETTING(NAME)
std::string GetRenderPath(void *cbdata)
Abstraction around a SpiderMonkey JSContext.