shadmar Posted April 23, 2012 Share Posted April 23, 2012 This is my current cluttered script for the ocean object, but I see no trace of wavescale, wfreq or wlength in my sbx, so the ocean is always default between loads. (im a totally newbie on this so any help is appreciated ) How can I persist my settings in the sbx ? Say if I cange wfreq in the dialog require("scripts/class") require("scripts/math/math") local class=CreateClass(...) function class:InitDialog(grid) self.super:InitDialog(grid) group=grid:AddGroup("Ocean") group:AddProperty("wavescale",PROPERTY_FLOAT,"0,20,2","Wave Scale") group:AddProperty("wlength",PROPERTY_FLOAT,"0,2,2","Wave Length") group:AddProperty("wspeed",PROPERTY_FLOAT,"0,1,2","Wave Speed") group:AddProperty("wfreq",PROPERTY_FLOAT,"0,10,2","Wave Frequency") group:AddProperty("bumpscale",PROPERTY_FLOAT,"0,10,2","Surface Bump") --group:AddProperty("camerarange",PROPERTY_VEC2,"","Camera range") --group:AddProperty("backgroundmode",PROPERTY_CHOICE,"None,Solid,Skybox","Background") --group:AddProperty("backgroundcolor",PROPERTY_COLOR,"","Background color") --group:AddProperty("skymaterial",PROPERTY_FILE,"Material Files (*.mat):mat","Skybox") --group:AddProperty("fogmode",PROPERTY_BOOL,"","Distance fog") --group:AddProperty("fogcolor",PROPERTY_COLOR,"1","Fog color") --group:AddProperty("fogrange",PROPERTY_VEC2,"","Fog range") --group:AddProperty("fogangle",PROPERTY_VEC2,"","Fog angle") --group:AddProperty("gravityforce",PROPERTY_VEC3,"","Gravity") --group:AddProperty("Saturation",PROPERTY_FLOAT,"0,2,1") --group:AddProperty("Brightness",PROPERTY_FLOAT,"0,2,1") --group:AddProperty("Contrast",PROPERTY_FLOAT,"0,2,1") --group:AddProperty("cullrange",PROPERTY_VEC3,"","Cull range") --group:Expand(1) end function class:CreateObject(model) local object=self.super:CreateObject(model) object.model = model object.wavescale =1 object.wlength = 0.75 object.wspeed = 0.025 object.wfreq= 1 object.bumpscale = 1 function object:SetKey(key,value) if key=="wavescale" then self.wavescale = tonumber(value) elseif key=="wlength" then self.wlength = tonumber(value) elseif key=="wspeed" then self.wspeed = tonumber(value) elseif key=="wfreq" then self.wfreq = tonumber(value) elseif key=="bumpscale" then self.bumpscale = tonumber(value) end end function object:GetKey(key,value) if key=='wavescale' then return tonumber(self.wavescale) elseif key=="wlength" then return tonumber(self.wlength) elseif key=="wspeed" then --Notify(tonumber(self.wspeed)) return tonumber(self.wspeed) elseif key=="wfreq" then return tonumber(self.wfreq) elseif key=="bumpscale" then --Notify(tonumber(self.bumpscale)) return tonumber(self.bumpscale) end end function object:UnlockKeys(model) self:Refresh() end function object:Init() --self:Refresh() end function object:Refresh() if fw~=nil then local mat=LoadMaterial("abstract::rock1.mat") local shader=GetMaterialShader(mat) SetShaderFloat(shader,"wscale",self.wavescale) SetShaderFloat(shader,"wlength",self.wlength) SetShaderFloat(shader,"wspeed",self.wspeed) SetShaderFloat(shader,"wfreq",self.wfreq) SetShaderFloat(shader,"bumpscale",0.1) object:SetKey( "wavescale", self.wavescale ) end end function object:needsUpdate() self:Refresh() end function object:Reset() self:Refresh() end function object:Free(model) self.super:Free() end object:Init() end Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
shadmar Posted April 23, 2012 Author Share Posted April 23, 2012 Got it SetKey in CreateObject() I missed the return self.super:SetKey(key,value) in SetKey function, that was actually it Quote HP Omen - 16GB - i7 - Nvidia GTX 1060 6GB Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.