I grab the skyname with this:
[lua]
hook.Add("EntityKeyValue", "JSSkybox:KeyValue",
function (ent,key,val)
if (ent:GetClass() == "worldspawn" && key == "skyname") then
SetGlobalString("JSSkybox:SkyName", val)
end
end
)
[/lua]
So therefore the skybox textures are the following:
[lua]
local skyname = GetGlobalString("JSSkybox:SkyName")
JSSkybox.Materials[1] = Material("skybox/" .. skyname .. "up")
JSSkybox.Materials[2] = Material("skybox/" .. skyname .. "dn")
JSSkybox.Materials[3] = Material("skybox/" .. skyname .. "lf")
JSSkybox.Materials[4] = Material("skybox/" .. skyname .. "rt")
JSSkybox.Materials[5] = Material("skybox/" .. skyname .. "bk")
JSSkybox.Materials[6] = Material("skybox/" .. skyname .. "ft")
[/lua]
I then try to change them with:
[lua]
JSSkybox.Materials[1]:SetMaterialString( "$basetexture", "skybox/" .. customsky .. "up" )
[/lua]
However I always get purple and black squares, even if I set it to the same skybox textures.
I used to be able to do it using this method, did I miss anything?
Setting the colour with this works however:
[lua]
JSSkybox.Materials[1]:SetMaterialVector("$color", Vector(CurrentSkyboxR, CurrentSkyboxG, CurrentSkyboxB))
[/lua]
Thanks!
EDIT:
Also, are the functions PostDrawSkybox and PreDrawSkybox broken?
EDIT:
It seems using:
[lua]
v:SetMaterialTexture("$basetexture",Material("skybox/" .. customsky .. skybox_suffix[k]):GetMaterialTexture("$basetexture"))
[/lua]
Works instead.
[img]http://img210.imageshack.us/img210/9200/rpdowntownv20009.jpg[/img]
Thanks! I've been having trouble finding a solution.
I've reported the malfunctioning hooks:
[url]http://getsatisfaction.com/facepunch/topics/predrawskybox_and_postdrawskybox_are_never_called[/url]
Be sure to vote it up, if you want Garry to consider this feature. Facebook or Google accounts will work.
[editline]01:47PM[/editline]
Also, I've implemented your method in my gamemode and I thought I'd share the module:
Note that you can get the sky name from the sv_skyname cvar.
[lua]
local SkyBoxName = nil
local SkyBoxMaterials = {}
local SkyBoxSuffixes = { "up", "dn", "lf", "rt", "bk", "ft" }
// Change the skybox texture
function GM:SetSkyBox( Name )
for Suffix, SkyMat in pairs( SkyBoxMaterials ) do
SkyMat:SetMaterialTexture( "$basetexture", Material( "skybox/" .. Name .. Suffix ):GetMaterialTexture("$basetexture") )
end
end
// Cache the skybox materials
local function InitPostEntity()
SkyBoxName = GetConVarString( "sv_skyname" )
for _, Suffix in ipairs( SkyBoxSuffixes ) do
SkyBoxMaterials[ Suffix ] = Material("skybox/" .. SkyBoxName .. Suffix)
end
GAMEMODE:SetSkyBox( "starbox_" )
end
hook.Add( "InitPostEntity", "SkyBox.InitPostEntity", InitPostEntity )
[/lua]
Sorry, you need to Log In to post a reply to this thread.