Changes the Renderer to expose global functions to scripts instead of using CJSObject.
Fixes #2137 Refs #1886 This was SVN commit r13877.
This commit is contained in:
parent
c0b84fb41f
commit
12e2428495
@ -28,22 +28,22 @@
|
|||||||
<!-- Settings / shadows -->
|
<!-- Settings / shadows -->
|
||||||
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
|
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
|
||||||
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.shadows) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetShadowsEnabled();</action>
|
||||||
<action on="Press">renderer.shadows = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetShadowsEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Shadow PCF -->
|
<!-- Settings / Shadow PCF -->
|
||||||
<object size="0 35 100%-80 60" type="text" style="RightLabelText" ghost="true">Enable Shadow Filtering</object>
|
<object size="0 35 100%-80 60" type="text" style="RightLabelText" ghost="true">Enable Shadow Filtering</object>
|
||||||
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.shadowPCF) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetShadowPCFEnabled();</action>
|
||||||
<action on="Press">renderer.shadowPCF = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetShadowPCFEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Water -->
|
<!-- Settings / Water -->
|
||||||
<!-- <object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Enable Water Reflections</object>
|
<!-- <object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Enable Water Reflections</object>
|
||||||
<object name="fancyWaterCheckbox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="fancyWaterCheckbox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.fancyWater) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterNormalEnabled();</action>
|
||||||
<action on="Press">renderer.fancyWater = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetWaterNormalEnabled(this.checked);</action>
|
||||||
</object>-->
|
</object>-->
|
||||||
|
|
||||||
<!-- Settings / Music-->
|
<!-- Settings / Music-->
|
||||||
|
@ -162,7 +162,7 @@ function onTick()
|
|||||||
Engine.PushGuiPage("page_splashscreen.xml", { "page": "splashscreen" } );
|
Engine.PushGuiPage("page_splashscreen.xml", { "page": "splashscreen" } );
|
||||||
|
|
||||||
// Warn about removing fixed render path
|
// Warn about removing fixed render path
|
||||||
if (renderer.renderpath == "fixed")
|
if (Engine.Renderer_GetRenderPath() == "fixed")
|
||||||
messageBox(
|
messageBox(
|
||||||
600,
|
600,
|
||||||
300,
|
300,
|
||||||
|
@ -64,14 +64,18 @@
|
|||||||
<!-- Unit silhouettes -->
|
<!-- Unit silhouettes -->
|
||||||
<object hotkey="silhouettes">
|
<object hotkey="silhouettes">
|
||||||
<action on="Press">
|
<action on="Press">
|
||||||
renderer.silhouettes = !renderer.silhouettes;
|
var newSetting = !Engine.Renderer_GetSilhouettesEnabled();
|
||||||
getGUIObjectByName("silhouettesCheckbox").checked = renderer.silhouettes;
|
Engine.Renderer_SetSilhouettesEnabled(newSetting);
|
||||||
|
getGUIObjectByName("silhouettesCheckbox").checked = newSetting;
|
||||||
</action>
|
</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Sky -->
|
<!-- Sky -->
|
||||||
<object hotkey="showsky">
|
<object hotkey="showsky">
|
||||||
<action on="Press">renderer.showsky = !renderer.showsky;</action>
|
<action on="Press">
|
||||||
|
var newSetting = !Engine.Renderer_GetShowSkyEnabled();
|
||||||
|
Engine.Renderer_SetShowSkyEnabled(newSetting);
|
||||||
|
</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Pause -->
|
<!-- Pause -->
|
||||||
@ -450,78 +454,78 @@
|
|||||||
<!-- Settings / shadows -->
|
<!-- Settings / shadows -->
|
||||||
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
|
<object size="0 10 100%-80 35" type="text" style="RightLabelText" ghost="true">Enable Shadows</object>
|
||||||
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="shadowsCheckbox" size="100%-56 15 100%-30 40" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.shadows) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetShadowsEnabled();</action>
|
||||||
<action on="Press">renderer.shadows = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetShadowsEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Shadow PCF -->
|
<!-- Settings / Shadow PCF -->
|
||||||
<object size="0 35 100%-80 60" type="text" style="RightLabelText" ghost="true">Enable Shadow Filtering</object>
|
<object size="0 35 100%-80 60" type="text" style="RightLabelText" ghost="true">Enable Shadow Filtering</object>
|
||||||
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="shadowPCFCheckbox" size="100%-56 40 100%-30 65" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.shadowPCF) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetShadowPCFEnabled();</action>
|
||||||
<action on="Press">renderer.shadowPCF = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetShadowPCFEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Water Normals -->
|
<!-- Settings / Water Normals -->
|
||||||
<object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Water - HQ Waviness</object>
|
<object size="0 60 100%-80 85" type="text" style="RightLabelText" ghost="true">Water - HQ Waviness</object>
|
||||||
<object name="waterNormalCheckox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterNormalCheckox" size="100%-56 65 100%-30 90" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.waternormal) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterNormalEnabled();</action>
|
||||||
<action on="Press">renderer.waternormal = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetWaterNormalEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Real Depth -->
|
<!-- Settings / Real Depth -->
|
||||||
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Water - Use Actual Depth</object>
|
<object size="0 85 100%-80 110" type="text" style="RightLabelText" ghost="true">Water - Use Actual Depth</object>
|
||||||
<object name="waterRealDepthCheckbox" size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterRealDepthCheckbox" size="100%-56 90 100%-30 115" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.waterrealdepth) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterRealDepthEnabled();</action>
|
||||||
<action on="Press">renderer.waterrealdepth = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterRealDepthEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Reflection -->
|
<!-- Settings / Reflection -->
|
||||||
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Water - Enable Reflections</object>
|
<object size="0 110 100%-80 135" type="text" style="RightLabelText" ghost="true">Water - Enable Reflections</object>
|
||||||
<object name="waterReflectionCheckbox" size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterReflectionCheckbox" size="100%-56 115 100%-30 140" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.waterreflection) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterReflectionEnabled();</action>
|
||||||
<action on="Press">renderer.waterreflection = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterReflectionEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Refraction -->
|
<!-- Settings / Refraction -->
|
||||||
<object size="0 135 100%-80 160" type="text" style="RightLabelText" ghost="true">Water - Enable Refraction</object>
|
<object size="0 135 100%-80 160" type="text" style="RightLabelText" ghost="true">Water - Enable Refraction</object>
|
||||||
<object name="waterRefractionCheckbox" size="100%-56 140 100%-30 165" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterRefractionCheckbox" size="100%-56 140 100%-30 165" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.waterrefraction) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterRefractionEnabled();</action>
|
||||||
<action on="Press">renderer.waterrefraction = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterRefractionEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Foam -->
|
<!-- Settings / Foam -->
|
||||||
<object size="0 160 100%-80 185" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Foam</object>
|
<object size="0 160 100%-80 185" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Foam</object>
|
||||||
<object name="waterFoamCheckbox" size="100%-56 165 100%-30 190" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterFoamCheckbox" size="100%-56 165 100%-30 190" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.waterfoam) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterFoamEnabled();</action>
|
||||||
<action on="Press">renderer.waterfoam = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterFoamEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Waves -->
|
<!-- Settings / Waves -->
|
||||||
<object size="0 185 100%-80 210" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Waves</object>
|
<object size="0 185 100%-80 210" type="text" style="RightLabelText" ghost="true">Water - Enable Shore Waves</object>
|
||||||
<object name="waterCoastalWavesCheckbox" size="100%-56 190 100%-30 215" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterCoastalWavesCheckbox" size="100%-56 190 100%-30 215" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.watercoastalwaves) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetWaterCoastalWavesEnabled();</action>
|
||||||
<action on="Press">renderer.watercoastalwaves = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterCoastalWavesEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Shadows -->
|
<!-- Settings / Shadows -->
|
||||||
<object size="0 210 100%-80 235" type="text" style="RightLabelText" ghost="true">Water - Use Surface Shadows</object>
|
<object size="0 210 100%-80 235" type="text" style="RightLabelText" ghost="true">Water - Use Surface Shadows</object>
|
||||||
<object name="waterShadowsCheckbox" size="100%-56 215 100%-30 240" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="waterShadowsCheckbox" size="100%-56 215 100%-30 240" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.watershadow) this.checked = true; else this.checked = false;</action>
|
<action on="Load">if (Engine.Renderer_GetWaterShadowEnabled()) this.checked = true; else this.checked = false;</action>
|
||||||
<action on="Press">renderer.watershadow = this.checked; </action>
|
<action on="Press">Engine.Renderer_SetWaterShadowEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Particles -->
|
<!-- Settings / Particles -->
|
||||||
<object size="0 235 100%-80 260" type="text" style="RightLabelText" ghost="true">Enable Particles</object>
|
<object size="0 235 100%-80 260" type="text" style="RightLabelText" ghost="true">Enable Particles</object>
|
||||||
<object name="particlesCheckbox" size="100%-56 240 100%-30 265" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="particlesCheckbox" size="100%-56 240 100%-30 265" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.particles) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetParticlesEnabled();</action>
|
||||||
<action on="Press">renderer.particles = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetParticlesEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Unit Silhouettes -->
|
<!-- Settings / Unit Silhouettes -->
|
||||||
<object size="0 260 100%-80 285" type="text" style="RightLabelText" ghost="true">Enable Unit Silhouettes</object>
|
<object size="0 260 100%-80 285" type="text" style="RightLabelText" ghost="true">Enable Unit Silhouettes</object>
|
||||||
<object name="silhouettesCheckbox" size="100%-56 265 100%-30 290" type="checkbox" style="StoneCrossBox" checked="true">
|
<object name="silhouettesCheckbox" size="100%-56 265 100%-30 290" type="checkbox" style="StoneCrossBox" checked="true">
|
||||||
<action on="Load">if (renderer.silhouettes) this.checked = true; else this.checked = false;</action>
|
<action on="Load">this.checked = Engine.Renderer_GetSilhouettesEnabled();</action>
|
||||||
<action on="Press">renderer.silhouettes = this.checked;</action>
|
<action on="Press">Engine.Renderer_SetSilhouettesEnabled(this.checked);</action>
|
||||||
</object>
|
</object>
|
||||||
|
|
||||||
<!-- Settings / Music-->
|
<!-- Settings / Music-->
|
||||||
|
@ -600,6 +600,7 @@ function setup_all_libs ()
|
|||||||
"graphics",
|
"graphics",
|
||||||
"graphics/scripting",
|
"graphics/scripting",
|
||||||
"renderer",
|
"renderer",
|
||||||
|
"renderer/scripting",
|
||||||
"third_party/mikktspace"
|
"third_party/mikktspace"
|
||||||
}
|
}
|
||||||
extern_libs = {
|
extern_libs = {
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include "ps/GameSetup/Atlas.h"
|
#include "ps/GameSetup/Atlas.h"
|
||||||
#include "ps/GameSetup/Config.h"
|
#include "ps/GameSetup/Config.h"
|
||||||
#include "ps/ConfigDB.h"
|
#include "ps/ConfigDB.h"
|
||||||
|
#include "renderer/scripting/JSInterface_Renderer.h"
|
||||||
#include "tools/atlas/GameInterface/GameLoop.h"
|
#include "tools/atlas/GameInterface/GameLoop.h"
|
||||||
|
|
||||||
#include "simulation2/Simulation2.h"
|
#include "simulation2/Simulation2.h"
|
||||||
@ -652,6 +653,7 @@ void SetBoundingBoxDebugOverlay(void* UNUSED(cbdata), bool enabled)
|
|||||||
void GuiScriptingInit(ScriptInterface& scriptInterface)
|
void GuiScriptingInit(ScriptInterface& scriptInterface)
|
||||||
{
|
{
|
||||||
JSI_GameView::RegisterScriptFunctions(scriptInterface);
|
JSI_GameView::RegisterScriptFunctions(scriptInterface);
|
||||||
|
JSI_Renderer::RegisterScriptFunctions(scriptInterface);
|
||||||
|
|
||||||
// GUI manager functions:
|
// GUI manager functions:
|
||||||
scriptInterface.RegisterFunction<CScriptVal, &GetActiveGui>("GetActiveGui");
|
scriptInterface.RegisterFunction<CScriptVal, &GetActiveGui>("GetActiveGui");
|
||||||
|
@ -321,9 +321,6 @@ static void RegisterJavascriptInterfaces()
|
|||||||
// maths
|
// maths
|
||||||
JSI_Vector3D::init();
|
JSI_Vector3D::init();
|
||||||
|
|
||||||
// renderer
|
|
||||||
CRenderer::ScriptingInit();
|
|
||||||
|
|
||||||
// ps
|
// ps
|
||||||
JSI_Console::init();
|
JSI_Console::init();
|
||||||
|
|
||||||
@ -1344,7 +1341,7 @@ void CancelLoad(const CStrW& message)
|
|||||||
JSBool ok = JS_GetProperty(cx, g_GUI->GetScriptObject(), "cancelOnError", &fval);
|
JSBool ok = JS_GetProperty(cx, g_GUI->GetScriptObject(), "cancelOnError", &fval);
|
||||||
ENSURE(ok);
|
ENSURE(ok);
|
||||||
|
|
||||||
jsval msgval = ToJSVal(message);
|
jsval msgval = ScriptInterface::ToJSVal(cx, message);
|
||||||
|
|
||||||
if (ok && !JSVAL_IS_VOID(fval))
|
if (ok && !JSVAL_IS_VOID(fval))
|
||||||
JS_CallFunctionValue(cx, g_GUI->GetScriptObject(), fval, 1, &msgval, &rval);
|
JS_CallFunctionValue(cx, g_GUI->GetScriptObject(), fval, 1, &msgval, &rval);
|
||||||
|
@ -472,25 +472,6 @@ CRenderer::CRenderer()
|
|||||||
m_hCompositeAlphaMap = 0;
|
m_hCompositeAlphaMap = 0;
|
||||||
|
|
||||||
m_Stats.Reset();
|
m_Stats.Reset();
|
||||||
AddLocalProperty(L"particles", &m_Options.m_Particles, false);
|
|
||||||
|
|
||||||
AddLocalProperty(L"waternormal", &m_Options.m_WaterNormal, false);
|
|
||||||
AddLocalProperty(L"waterrealdepth", &m_Options.m_WaterRealDepth, false);
|
|
||||||
AddLocalProperty(L"waterreflection", &m_Options.m_WaterReflection, false);
|
|
||||||
AddLocalProperty(L"waterrefraction", &m_Options.m_WaterRefraction, false);
|
|
||||||
AddLocalProperty(L"waterfoam", &m_Options.m_WaterFoam, false);
|
|
||||||
AddLocalProperty(L"watercoastalwaves", &m_Options.m_WaterCoastalWaves, false);
|
|
||||||
AddLocalProperty(L"watershadow", &m_Options.m_WaterShadow, false);
|
|
||||||
|
|
||||||
AddLocalProperty(L"horizonHeight", &m->skyManager.m_HorizonHeight, false);
|
|
||||||
AddLocalProperty(L"waterMurkiness", &m->waterManager.m_Murkiness, false);
|
|
||||||
AddLocalProperty(L"waterReflTintStrength", &m->waterManager.m_ReflectionTintStrength, false);
|
|
||||||
AddLocalProperty(L"waterRepeatPeriod", &m->waterManager.m_RepeatPeriod, false);
|
|
||||||
AddLocalProperty(L"waterShininess", &m->waterManager.m_Shininess, false);
|
|
||||||
AddLocalProperty(L"waterSpecularStrength", &m->waterManager.m_SpecularStrength, false);
|
|
||||||
AddLocalProperty(L"waterWaviness", &m->waterManager.m_Waviness, false);
|
|
||||||
AddLocalProperty(L"silhouettes", &m_Options.m_Silhouettes, false);
|
|
||||||
AddLocalProperty(L"showsky", &m_Options.m_ShowSky, false);
|
|
||||||
|
|
||||||
RegisterFileReloadFunc(ReloadChangedFileCB, this);
|
RegisterFileReloadFunc(ReloadChangedFileCB, this);
|
||||||
}
|
}
|
||||||
@ -721,6 +702,10 @@ void CRenderer::SetOptionBool(enum Option opt,bool value)
|
|||||||
case OPT_PARTICLES:
|
case OPT_PARTICLES:
|
||||||
m_Options.m_Particles = value;
|
m_Options.m_Particles = value;
|
||||||
break;
|
break;
|
||||||
|
case OPT_PREFERGLSL:
|
||||||
|
m_Options.m_PreferGLSL = value;
|
||||||
|
MakeShadersDirty();
|
||||||
|
break;
|
||||||
case OPT_SILHOUETTES:
|
case OPT_SILHOUETTES:
|
||||||
m_Options.m_Silhouettes = value;
|
m_Options.m_Silhouettes = value;
|
||||||
break;
|
break;
|
||||||
@ -760,6 +745,8 @@ bool CRenderer::GetOptionBool(enum Option opt) const
|
|||||||
return m_Options.m_ShadowPCF;
|
return m_Options.m_ShadowPCF;
|
||||||
case OPT_PARTICLES:
|
case OPT_PARTICLES:
|
||||||
return m_Options.m_Particles;
|
return m_Options.m_Particles;
|
||||||
|
case OPT_PREFERGLSL:
|
||||||
|
return m_Options.m_PreferGLSL;
|
||||||
case OPT_SILHOUETTES:
|
case OPT_SILHOUETTES:
|
||||||
return m_Options.m_Silhouettes;
|
return m_Options.m_Silhouettes;
|
||||||
case OPT_SHOWSKY:
|
case OPT_SHOWSKY:
|
||||||
@ -1983,115 +1970,6 @@ void CRenderer::MakeShadersDirty()
|
|||||||
m->ShadersDirty = true;
|
m->ShadersDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Scripting Interface
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetRenderPath(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(GetRenderPathName(m_Options.m_RenderPath));
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetRenderPath(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
CStr name;
|
|
||||||
|
|
||||||
if (!ToPrimitive(ctx, newval, name))
|
|
||||||
return;
|
|
||||||
|
|
||||||
SetRenderPath(GetRenderPathByName(name));
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetDepthTextureBits(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m->shadow.GetDepthTextureBits());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetDepthTextureBits(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
int depthTextureBits;
|
|
||||||
|
|
||||||
if (!ToPrimitive(ctx, newval, depthTextureBits))
|
|
||||||
return;
|
|
||||||
|
|
||||||
m->shadow.SetDepthTextureBits(depthTextureBits);
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetShadows(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m_Options.m_Shadows);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetShadows(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
ToPrimitive(ctx, newval, m_Options.m_Shadows);
|
|
||||||
ReloadShaders();
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetShadowAlphaFix(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m_Options.m_ShadowAlphaFix);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetShadowAlphaFix(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
if (!ToPrimitive(ctx, newval, m_Options.m_ShadowAlphaFix))
|
|
||||||
return;
|
|
||||||
|
|
||||||
m->shadow.RecreateTexture();
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetShadowPCF(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m_Options.m_ShadowPCF);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetShadowPCF(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
ToPrimitive(ctx, newval, m_Options.m_ShadowPCF);
|
|
||||||
ReloadShaders();
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetPreferGLSL(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m_Options.m_PreferGLSL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetPreferGLSL(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
ToPrimitive(ctx, newval, m_Options.m_PreferGLSL);
|
|
||||||
ReloadShaders();
|
|
||||||
}
|
|
||||||
|
|
||||||
jsval CRenderer::JSI_GetSky(JSContext*)
|
|
||||||
{
|
|
||||||
return ToJSVal(m->skyManager.GetSkySet());
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::JSI_SetSky(JSContext* ctx, jsval newval)
|
|
||||||
{
|
|
||||||
CStrW skySet;
|
|
||||||
if (!ToPrimitive<CStrW>(ctx, newval, skySet)) return;
|
|
||||||
m->skyManager.SetSkySet(skySet);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRenderer::ScriptingInit()
|
|
||||||
{
|
|
||||||
AddProperty(L"renderpath", &CRenderer::JSI_GetRenderPath, &CRenderer::JSI_SetRenderPath);
|
|
||||||
AddProperty(L"displayFrustum", &CRenderer::m_DisplayFrustum);
|
|
||||||
AddProperty(L"shadowZBias", &CRenderer::m_ShadowZBias);
|
|
||||||
AddProperty(L"shadowMapSize", &CRenderer::m_ShadowMapSize);
|
|
||||||
AddProperty(L"shadows", &CRenderer::JSI_GetShadows, &CRenderer::JSI_SetShadows);
|
|
||||||
AddProperty(L"depthTextureBits", &CRenderer::JSI_GetDepthTextureBits, &CRenderer::JSI_SetDepthTextureBits);
|
|
||||||
AddProperty(L"shadowAlphaFix", &CRenderer::JSI_GetShadowAlphaFix, &CRenderer::JSI_SetShadowAlphaFix);
|
|
||||||
AddProperty(L"shadowPCF", &CRenderer::JSI_GetShadowPCF, &CRenderer::JSI_SetShadowPCF);
|
|
||||||
AddProperty(L"preferGLSL", &CRenderer::JSI_GetPreferGLSL, &CRenderer::JSI_SetPreferGLSL);
|
|
||||||
AddProperty(L"skipSubmit", &CRenderer::m_SkipSubmit);
|
|
||||||
AddProperty(L"skySet", &CRenderer::JSI_GetSky, &CRenderer::JSI_SetSky);
|
|
||||||
|
|
||||||
CJSObject<CRenderer>::ScriptingInit("Renderer");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CTextureManager& CRenderer::GetTextureManager()
|
CTextureManager& CRenderer::GetTextureManager()
|
||||||
{
|
{
|
||||||
return m->textureManager;
|
return m->textureManager;
|
||||||
|
@ -28,11 +28,11 @@
|
|||||||
#include "graphics/ShaderProgram.h"
|
#include "graphics/ShaderProgram.h"
|
||||||
#include "lib/res/handle.h"
|
#include "lib/res/handle.h"
|
||||||
#include "ps/Singleton.h"
|
#include "ps/Singleton.h"
|
||||||
#include "scripting/ScriptableObject.h"
|
|
||||||
|
|
||||||
#include "renderer/PostprocManager.h"
|
#include "renderer/PostprocManager.h"
|
||||||
#include "renderer/Scene.h"
|
#include "renderer/Scene.h"
|
||||||
#include "renderer/TimeManager.h"
|
#include "renderer/TimeManager.h"
|
||||||
|
#include "scriptinterface/ScriptInterface.h"
|
||||||
|
|
||||||
// necessary declarations
|
// necessary declarations
|
||||||
class CLightEnv;
|
class CLightEnv;
|
||||||
@ -71,7 +71,6 @@ struct CRendererInternals;
|
|||||||
|
|
||||||
class CRenderer :
|
class CRenderer :
|
||||||
public Singleton<CRenderer>,
|
public Singleton<CRenderer>,
|
||||||
public CJSObject<CRenderer>,
|
|
||||||
private SceneCollector
|
private SceneCollector
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -89,6 +88,7 @@ public:
|
|||||||
OPT_WATERSHADOW,
|
OPT_WATERSHADOW,
|
||||||
OPT_SHADOWPCF,
|
OPT_SHADOWPCF,
|
||||||
OPT_PARTICLES,
|
OPT_PARTICLES,
|
||||||
|
OPT_PREFERGLSL,
|
||||||
OPT_SILHOUETTES,
|
OPT_SILHOUETTES,
|
||||||
OPT_SHOWSKY
|
OPT_SHOWSKY
|
||||||
};
|
};
|
||||||
@ -317,7 +317,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
const Caps& GetCapabilities() const { return m_Caps; }
|
const Caps& GetCapabilities() const { return m_Caps; }
|
||||||
|
|
||||||
static void ScriptingInit();
|
static void RegisterScriptFunctions(ScriptInterface& scriptInterface);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend struct CRendererInternals;
|
friend struct CRendererInternals;
|
||||||
@ -335,24 +335,6 @@ protected:
|
|||||||
friend class ShaderInstancingModelRenderer;
|
friend class ShaderInstancingModelRenderer;
|
||||||
friend class TerrainRenderer;
|
friend class TerrainRenderer;
|
||||||
|
|
||||||
// scripting
|
|
||||||
// TODO: Perhaps we could have a version of AddLocalProperty for function-driven
|
|
||||||
// properties? Then we could hide these function in the private implementation class.
|
|
||||||
jsval JSI_GetRenderPath(JSContext*);
|
|
||||||
void JSI_SetRenderPath(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetDepthTextureBits(JSContext*);
|
|
||||||
void JSI_SetDepthTextureBits(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetShadows(JSContext*);
|
|
||||||
void JSI_SetShadows(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetShadowAlphaFix(JSContext*);
|
|
||||||
void JSI_SetShadowAlphaFix(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetShadowPCF(JSContext*);
|
|
||||||
void JSI_SetShadowPCF(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetPreferGLSL(JSContext*);
|
|
||||||
void JSI_SetPreferGLSL(JSContext* ctx, jsval newval);
|
|
||||||
jsval JSI_GetSky(JSContext*);
|
|
||||||
void JSI_SetSky(JSContext* ctx, jsval newval);
|
|
||||||
|
|
||||||
//BEGIN: Implementation of SceneCollector
|
//BEGIN: Implementation of SceneCollector
|
||||||
void Submit(CPatch* patch);
|
void Submit(CPatch* patch);
|
||||||
void Submit(SOverlayLine* overlay);
|
void Submit(SOverlayLine* overlay);
|
||||||
|
85
source/renderer/scripting/JSInterface_Renderer.cpp
Normal file
85
source/renderer/scripting/JSInterface_Renderer.cpp
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
/* Copyright (C) 2013 Wildfire Games.
|
||||||
|
* This file is part of 0 A.D.
|
||||||
|
*
|
||||||
|
* 0 A.D. 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.
|
||||||
|
*
|
||||||
|
* 0 A.D. 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 0 A.D. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "precompiled.h"
|
||||||
|
|
||||||
|
#include "JSInterface_Renderer.h"
|
||||||
|
#include "renderer/Renderer.h"
|
||||||
|
|
||||||
|
#define IMPLEMENT_BOOLEAN_SCRIPT_SETTING(NAME, SCRIPTNAME) \
|
||||||
|
bool JSI_Renderer::Get##SCRIPTNAME##Enabled(void* UNUSED(cbdata)) \
|
||||||
|
{ \
|
||||||
|
return g_Renderer.GetOptionBool(CRenderer::OPT_##NAME); \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
void JSI_Renderer::Set##SCRIPTNAME##Enabled(void* UNUSED(cbdata), bool Enabled) \
|
||||||
|
{ \
|
||||||
|
g_Renderer.SetOptionBool(CRenderer::OPT_##NAME, Enabled); \
|
||||||
|
}
|
||||||
|
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(PARTICLES, Particles);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(PREFERGLSL, PreferGLSL);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERNORMAL, WaterNormal);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHADOWPCF, ShadowPCF);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHADOWS, Shadows);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREALDEPTH, WaterRealDepth);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFLECTION, WaterReflection);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFRACTION, WaterRefraction);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERFOAM, WaterFoam);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERCOASTALWAVES, WaterCoastalWaves);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERSHADOW, WaterShadow);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SILHOUETTES, Silhouettes);
|
||||||
|
IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHOWSKY, ShowSky);
|
||||||
|
|
||||||
|
#undef IMPLEMENT_BOOLEAN_SCRIPT_SETTING
|
||||||
|
|
||||||
|
std::string JSI_Renderer::GetRenderPath(void* UNUSED(cbdata))
|
||||||
|
{
|
||||||
|
return CRenderer::GetRenderPathName(g_Renderer.GetRenderPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
void JSI_Renderer::SetRenderPath(void* UNUSED(cbdata), std::string name)
|
||||||
|
{
|
||||||
|
g_Renderer.SetRenderPath(CRenderer::GetRenderPathByName(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define REGISTER_BOOLEAN_SCRIPT_SETTING(NAME) \
|
||||||
|
scriptInterface.RegisterFunction<bool, &JSI_Renderer::Get##NAME##Enabled>("Renderer_Get" #NAME "Enabled"); \
|
||||||
|
scriptInterface.RegisterFunction<void, bool, &JSI_Renderer::Set##NAME##Enabled>("Renderer_Set" #NAME "Enabled");
|
||||||
|
|
||||||
|
void JSI_Renderer::RegisterScriptFunctions(ScriptInterface& scriptInterface)
|
||||||
|
{
|
||||||
|
scriptInterface.RegisterFunction<std::string, &JSI_Renderer::GetRenderPath>("Renderer_GetRenderPath");
|
||||||
|
scriptInterface.RegisterFunction<void, std::string, &JSI_Renderer::SetRenderPath>("Renderer_SetRenderPath");
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(Shadows);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(ShadowPCF);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(Particles);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(PreferGLSL);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterNormal);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterRealDepth);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterReflection);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterRefraction);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterFoam);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterCoastalWaves);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(WaterShadow);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(Silhouettes);
|
||||||
|
REGISTER_BOOLEAN_SCRIPT_SETTING(ShowSky);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef REGISTER_BOOLEAN_SCRIPT_SETTING
|
||||||
|
|
52
source/renderer/scripting/JSInterface_Renderer.h
Normal file
52
source/renderer/scripting/JSInterface_Renderer.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* Copyright (C) 2013 Wildfire Games.
|
||||||
|
* This file is part of 0 A.D.
|
||||||
|
*
|
||||||
|
* 0 A.D. 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.
|
||||||
|
*
|
||||||
|
* 0 A.D. 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 0 A.D. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef INCLUDED_JSINTERFACE_RENDERER
|
||||||
|
#define INCLUDED_JSINTERFACE_RENDERER
|
||||||
|
|
||||||
|
class ScriptInterface;
|
||||||
|
|
||||||
|
#define DECLARE_BOOLEAN_SCRIPT_SETTING(NAME) \
|
||||||
|
bool Get##NAME##Enabled(void* cbdata); \
|
||||||
|
void Set##NAME##Enabled(void* cbdata, bool Enabled);
|
||||||
|
|
||||||
|
namespace JSI_Renderer
|
||||||
|
{
|
||||||
|
std::string GetRenderPath(void* cbdata);
|
||||||
|
void SetRenderPath(void* cbdata, std::string name);
|
||||||
|
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(Shadows);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(ShadowPCF);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(Particles);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(PreferGLSL);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterNormal);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterRealDepth);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterReflection);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterRefraction);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterFoam);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterCoastalWaves);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(WaterShadow);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(Silhouettes);
|
||||||
|
DECLARE_BOOLEAN_SCRIPT_SETTING(ShowSky);
|
||||||
|
|
||||||
|
void RegisterScriptFunctions(ScriptInterface& scriptInterface);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef DECLARE_BOOLEAN_SCRIPT_SETTING
|
||||||
|
|
||||||
|
#endif
|
@ -408,15 +408,6 @@ JSFunctionSpec ScriptFunctionTable[] =
|
|||||||
// property accessors
|
// property accessors
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
JSBool GetRenderer(JSContext* UNUSED(cx), JSObject* UNUSED(obj), jsid UNUSED(id), jsval* vp)
|
|
||||||
{
|
|
||||||
if (CRenderer::IsInitialised())
|
|
||||||
*vp = OBJECT_TO_JSVAL(g_Renderer.GetScript());
|
|
||||||
else
|
|
||||||
*vp = JSVAL_NULL;
|
|
||||||
return JS_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
enum ScriptGlobalTinyIDs
|
enum ScriptGlobalTinyIDs
|
||||||
{
|
{
|
||||||
@ -430,7 +421,6 @@ enum ScriptGlobalTinyIDs
|
|||||||
JSPropertySpec ScriptGlobalTable[] =
|
JSPropertySpec ScriptGlobalTable[] =
|
||||||
{
|
{
|
||||||
{ "console" , GLOBAL_CONSOLE, JSPROP_PERMANENT|JSPROP_READONLY, JSI_Console::getConsole, 0 },
|
{ "console" , GLOBAL_CONSOLE, JSPROP_PERMANENT|JSPROP_READONLY, JSI_Console::getConsole, 0 },
|
||||||
{ "renderer" , 0, JSPROP_PERMANENT|JSPROP_READONLY, GetRenderer, 0 },
|
|
||||||
|
|
||||||
// end of table marker
|
// end of table marker
|
||||||
{ 0, 0, 0, 0, 0 },
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "ps/GameSetup/Config.h"
|
#include "ps/GameSetup/Config.h"
|
||||||
#include "ps/GameSetup/GameSetup.h"
|
#include "ps/GameSetup/GameSetup.h"
|
||||||
#include "renderer/Renderer.h"
|
#include "renderer/Renderer.h"
|
||||||
|
#include "scripting/ScriptingHost.h"
|
||||||
|
|
||||||
extern void (*Atlas_GLSwapBuffers)(void* context);
|
extern void (*Atlas_GLSwapBuffers)(void* context);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user