Sky value script assistance please
by Ronald J Nelson · in Torque Game Engine Advanced · 05/31/2008 (11:33 am) · 4 replies
I am trying to make a weather system that changes the sky but I want it to be able to restore the original map sky values as well. Here are my functions:
I have tried without the eval and I get the same results, parse errors and no restoration of values. Can someone tell me what I am doing wrong here?
function SaveSkyValues()
{
$OldSkyMaterialList = Sky.getFieldValue(materialList);
$OldSkySunsetList = Sky.getFieldValue(sunsetList);
$OldSkyNightList = Sky.getFieldValue(nightList);
$OldSkyFogDistance = Sky.getFieldValue(fogDistance);
$OldSkyFogColor = Sky.getFieldValue(fogColor);
$OldSkyFogStorm1 = Sky.getFieldValue(fogStorm1);
$OldSkyFogVolume1 = Sky.getFieldValue(fogVolume1);
$OldSkyFogVolumeColor1 = Sky.getFieldValue(fogVolumeColor1);
$OldSkyFogVolumeColor2 = Sky.getFieldValue(fogVolumeColor2);
$OldSkyFogVolumeColor3 = Sky.getFieldValue(fogVolumeColor3);
$OldSkyUseSkyTextures = Sky.getFieldValue(useSkyTextures);
$OldSkySkySolidColor = Sky.getFieldValue(SkySolidColor);
$OldSkyWindVelocity = Sky.getFieldValue(WindVelocity);
$OldSkyVisibleDistance = Sky.getFieldValue(VisibleDistance);
}
function RestoreSkyValues()
{
eval("Sky.setFieldValue(materialList, " @ $OldSkyMaterial @ ");");
eval("Sky.setFieldValue(sunsetList, " @ $OldSkySunsetList @ ");");
eval("Sky.setFieldValue(nightList, " @ $OldSkyNightList @ ");");
eval("Sky.setFieldValue(fogDistance, " @ $OldSkyFogDistance @ ");");
eval("Sky.setFieldValue(fogColor, " @ $OldSkyFogColor @ ");");
eval("Sky.setFieldValue(fogStorm1, " @ $OldSkyFogStorm1 @ ");");
eval("Sky.setFieldValue(fogVolume1, " @ $OldSkyFogVolume1 @ ");");
eval("Sky.setFieldValue(fogVolumeColor1, " @ $OldSkyFogVolumeColor1 @ ");");
eval("Sky.setFieldValue(fogVolumeColor2, " @ $OldSkyFogVolumeColor2 @ ");");
eval("Sky.setFieldValue(fogVolumeColor3, " @ $OldSkyFogVolumeColor3 @ ");");
eval("Sky.setFieldValue(useSkyTextures, " @ $OldSkyUseSkyTextures @ ");");
eval("Sky.setFieldValue(SkySolidColor, " @ $OldSkySkySolidColor @ ");");
eval("Sky.setFieldValue(WindVelocity, " @ $OldSkyWindVelocity @ ");");
eval("Sky.setFieldValue(VisibleDistance, " @ $OldSkyVisibleDistance @ ");");
Sky.applySkyChanges();
}I have tried without the eval and I get the same results, parse errors and no restoration of values. Can someone tell me what I am doing wrong here?
#2
05/31/2008 (9:23 pm)
Nevermind I mispelled the first value for materialList in restoreskyvalues. It was $OldSkyMaterial and should have been $OldSkyMaterialList.
#3
06/02/2008 (3:09 pm)
I was reading through this, please be kind i have opted to ignore Torque script until ihave a better grasp on C++, so i don't confuse myself like I did with C#....Does this change the sky's skybox? That is what id like to do is do a fade between them. i tried a resource around here that had a shader, but it wouldn't work right , but everything seemed in order code wise. So lost..., i was trying to find a solution that would be beter to work with, and it had always seemed to me that you should be able to control the DML(sky file) through Tscript...or am I off base?
#4
06/02/2008 (3:26 pm)
No I am just backing up the original settings with this. I actually change my settings for a random weather system I put together. It could use a smoother transition between weather modes but it works for me.
Torque Owner Ronald J Nelson
Code Hammer Games
function SaveSkyValues() { $OldSkyMaterialList = Sky.materialList; $OldSkySunsetList = Sky.sunsetList; $OldSkyNightList = Sky.nightList; $OldSkyFogDistance = Sky.fogDistance; $OldSkyFogColor = Sky.fogColor; $OldSkyFogStorm1 = Sky.fogStorm1; $OldSkyFogVolume1 = Sky.fogVolume1; $OldSkyFogVolumeColor1 = Sky.fogVolumeColor1; $OldSkyFogVolumeColor2 = Sky.fogVolumeColor2; $OldSkyFogVolumeColor3 = Sky.fogVolumeColor3; $OldSkyUseSkyTextures = Sky.useSkyTextures; $OldSkySkySolidColor = Sky.SkySolidColor; $OldSkyWindVelocity = Sky.WindVelocity; $OldSkyVisibleDistance = Sky.VisibleDistance; } function RestoreSkyValues() { Sky.materialList = $OldSkyMaterial; Sky.sunsetList = $OldSkySunsetList; Sky.nightList = $OldSkyNightList; Sky.fogDistance = $OldSkyFogDistance; Sky.fogColor = $OldSkyFogColor; Sky.fogStorm1 = $OldSkyFogStorm1; Sky.fogVolume1 = $OldSkyFogVolume1; Sky.fogVolumeColor1 = $OldSkyFogVolumeColor1; Sky.fogVolumeColor2 = $OldSkyFogVolumeColor2; Sky.fogVolumeColor3 = $OldSkyFogVolumeColor3; Sky.useSkyTextures = $OldSkyUseSkyTextures; Sky.SkySolidColor = $OldSkySkySolidColor; Sky.WindVelocity = $OldSkyWindVelocity; Sky.VisibleDistance = $OldSkyVisibleDistance; Sky.applySkyChanges(); }Can someone explain why?