1
0
forked from 0ad/0ad

Use AddLocalProperty in CRenderer.

This gets rid of lots of boiler-plate code in JSI_* functions.

This was SVN commit r4380.
This commit is contained in:
prefect 2006-09-23 12:48:06 +00:00
parent 714e436e3c
commit e0b68b7f9f
2 changed files with 11 additions and 126 deletions

View File

@ -373,6 +373,15 @@ CRenderer::CRenderer()
}
ONCE( ScriptingInit(); );
AddLocalProperty(L"fancyWater", &m_Options.m_FancyWater, 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);
}
///////////////////////////////////////////////////////////////////////////////////
@ -1726,105 +1735,6 @@ void CRenderer::JSI_SetSky(JSContext* ctx, jsval newval)
m->skyManager.SetSkySet(skySet);
}
jsval CRenderer::JSI_GetHorizonHeight(JSContext*)
{
return ToJSVal(m->skyManager.m_HorizonHeight);
}
void CRenderer::JSI_SetHorizonHeight(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->skyManager.m_HorizonHeight = value;
}
jsval CRenderer::JSI_GetFancyWater(JSContext*)
{
return ToJSVal(m_Options.m_FancyWater);
}
void CRenderer::JSI_SetFancyWater(JSContext* ctx, jsval newval)
{
bool fast;
if (!ToPrimitive(ctx, newval, fast))
return;
m_Options.m_FancyWater = fast;
}
jsval CRenderer::JSI_GetWaterShininess(JSContext*)
{
return ToJSVal(m->waterManager.m_Shininess);
}
void CRenderer::JSI_SetWaterShininess(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_Shininess = value;
}
jsval CRenderer::JSI_GetWaterSpecularStrength(JSContext*)
{
return ToJSVal(m->waterManager.m_SpecularStrength);
}
void CRenderer::JSI_SetWaterSpecularStrength(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_SpecularStrength = value;
}
jsval CRenderer::JSI_GetWaterMurkiness(JSContext*)
{
return ToJSVal(m->waterManager.m_Murkiness);
}
void CRenderer::JSI_SetWaterMurkiness(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_Murkiness = value;
}
jsval CRenderer::JSI_GetWaterWaviness(JSContext*)
{
return ToJSVal(m->waterManager.m_Waviness);
}
void CRenderer::JSI_SetWaterWaviness(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_Waviness = value;
}
jsval CRenderer::JSI_GetWaterRepeatPeriod(JSContext*)
{
return ToJSVal(m->waterManager.m_RepeatPeriod);
}
void CRenderer::JSI_SetWaterRepeatPeriod(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_RepeatPeriod = value;
}
void CRenderer::JSI_SetWaterReflectionTintStrength(JSContext* ctx, jsval newval)
{
float value;
if (!ToPrimitive<float>(ctx, newval, value)) return;
m->waterManager.m_ReflectionTintStrength = value;
}
jsval CRenderer::JSI_GetWaterReflectionTintStrength(JSContext*)
{
return ToJSVal(m->waterManager.m_ReflectionTintStrength);
}
void CRenderer::ScriptingInit()
{
AddProperty(L"fastPlayerColor", &CRenderer::JSI_GetFastPlayerColor, &CRenderer::JSI_SetFastPlayerColor);
@ -1837,14 +1747,6 @@ void CRenderer::ScriptingInit()
AddProperty(L"disableCopyShadow", &CRenderer::m_DisableCopyShadow);
AddProperty(L"depthTextureBits", &CRenderer::JSI_GetDepthTextureBits, &CRenderer::JSI_SetDepthTextureBits);
AddProperty(L"skySet", &CRenderer::JSI_GetSky, &CRenderer::JSI_SetSky);
AddProperty(L"horizonHeight", &CRenderer::JSI_GetHorizonHeight, &CRenderer::JSI_SetHorizonHeight);
AddProperty(L"fancyWater", &CRenderer::JSI_GetFancyWater, &CRenderer::JSI_SetFancyWater);
AddProperty(L"waterShininess", &CRenderer::JSI_GetWaterShininess, &CRenderer::JSI_SetWaterShininess);
AddProperty(L"waterSpecularStrength", &CRenderer::JSI_GetWaterSpecularStrength, &CRenderer::JSI_SetWaterSpecularStrength);
AddProperty(L"waterWaviness", &CRenderer::JSI_GetWaterWaviness, &CRenderer::JSI_SetWaterWaviness);
AddProperty(L"waterRepeatPeriod", &CRenderer::JSI_GetWaterRepeatPeriod, &CRenderer::JSI_SetWaterRepeatPeriod);
AddProperty(L"waterMurkiness", &CRenderer::JSI_GetWaterMurkiness, &CRenderer::JSI_SetWaterMurkiness);
AddProperty(L"waterReflTintStrength", &CRenderer::JSI_GetWaterReflectionTintStrength, &CRenderer::JSI_SetWaterReflectionTintStrength);
CJSObject<CRenderer>::ScriptingInit("Renderer");
}

View File

@ -319,9 +319,8 @@ protected:
friend class TerrainRenderer;
// scripting
// TODO: It would be really nice to avoid having to create a function for each of these,
// perhaps using some new kind of property for CJSObject which points to an arbitrary value
// (since some of these are variables in other objects so member pointers won't work).
// TODO: Perhaps we could have a version of AddLocalProperty for function-driven
// properties? Then we could hide these function in the private implementation class.
static void ScriptingInit();
jsval JSI_GetFastPlayerColor(JSContext*);
void JSI_SetFastPlayerColor(JSContext* ctx, jsval newval);
@ -333,22 +332,6 @@ protected:
void JSI_SetDepthTextureBits(JSContext* ctx, jsval newval);
jsval JSI_GetSky(JSContext*);
void JSI_SetSky(JSContext* ctx, jsval newval);
jsval JSI_GetHorizonHeight(JSContext*);
void JSI_SetHorizonHeight(JSContext* ctx, jsval newval);
jsval JSI_GetFancyWater(JSContext*);
void JSI_SetFancyWater(JSContext* ctx, jsval newval);
jsval JSI_GetWaterShininess(JSContext*);
void JSI_SetWaterShininess(JSContext* ctx, jsval newval);
jsval JSI_GetWaterSpecularStrength(JSContext*);
void JSI_SetWaterSpecularStrength(JSContext* ctx, jsval newval);
jsval JSI_GetWaterReflectionTintStrength(JSContext*);
void JSI_SetWaterReflectionTintStrength(JSContext* ctx, jsval newval);
jsval JSI_GetWaterWaviness(JSContext*);
void JSI_SetWaterWaviness(JSContext* ctx, jsval newval);
jsval JSI_GetWaterRepeatPeriod(JSContext*);
void JSI_SetWaterRepeatPeriod(JSContext* ctx, jsval newval);
jsval JSI_GetWaterMurkiness(JSContext*);
void JSI_SetWaterMurkiness(JSContext* ctx, jsval newval);
// patch rendering stuff
void RenderPatches();