Try this for the firepit script and it will work:
require("scripts/class")
local class=CreateClass(...)
class.sound=LoadSound('abstract::campfire_01_15.wav')
function class:CreateObject(model)
local object=self.super:CreateObject(model)
object.model.aabb.x0=-5
object.model.aabb.x1=5
object.model.aabb.y0=-5
object.model.aabb.y1=5
object.model.aabb.z0=-5
object.model.aabb.z1=5
--Create light
object.light=CreatePointLight(4,model)
object.light:SetColorf(1,0.6,0.25,1,1)
object.light:SetPositionf(0,1.2,0,0)
object.light:SetShadowOffset(0,0.91,0)
--Create emitters
if fw~=nil then
SetWorld(fw.transparency.world)
object.heathaze=CreateEmitter(10,4500,Vec3(0,1,0),0,object.model)
object.heathaze:SetPositionf(-136,52,-662,0)
object.material_heathaze=LoadMaterial('abstract::heathaze.mat',0)
object.heathaze:Paint(object.material_heathaze,0)
object.heathaze:SetRadius(0.25,0.25)
object.heathaze:SetWaver(0)
object.heathaze:SetOrder(1,0)
object.heathaze:SetVelocity(Vec3(0,0.375,0),Vec3(0,0.05,0))
object.heathaze:SetRotationSpeed(0.01)
object.heathaze:SetArea(Vec3(0.2,0.0,0.2))
object.heathaze:SetPositionf(0,0.25,0,0)
object.fire=CreateEmitter(25,750,Vec3(0,1,0),0,object.model)
object.fire:SetPositionf(0,0.25,0,0)
object.fire:Paint(LoadMaterial('abstract::fire.mat'),0)
object.fire:SetRadius(0.4,0.1)
object.fire:SetColorf(0.2,0.2,0.2,1,1)
object.fire:SetWaver(1)
object.fire:SetVelocity(Vec3(0,1.5,0),Vec3(0,0.05,0))
object.fire:SetRotationSpeed(0.01)
object.fire:SetArea(Vec3(0.2,0.1,0.2))
object.sparks=CreateEmitter(5,800,Vec3(0,1,0),0,object.model)
object.sparks:Paint(LoadMaterial('abstract::fire.mat'),0)
object.sparks:SetRadius(0.01,0.01)
object.sparks:SetColorf(1,0.6,0.25,1,1)
object.sparks:SetVelocity(Vec3(0,1.5,0),Vec3(0.05,0.5,0.05))
object.sparks:SetRotationSpeed(0.1)
object.sparks:SetArea(Vec3(0.4,0.0,0.4))
object.sparks:SetWaver(5)
object.sparks:SetPositionf(0,0.25,0,0)
SetWorld(fw.main.world)
end
--Emit fire sound
if class.sound~=nil then object.model:EmitSound(class.sound,10,1,1) end
--Declare initial values
object.fluctuation=1.0
object.smoothedfluctuation=1.0
function object:SetKey(key,value)
if key=="color" then
elseif key=="intensity" then
else
return self.super:SetKey(model,key,value)
end
return 1
end
--Force the bounding box to be bigger
--[[function object:UpdateMatrix()
object.model.aabb.x0=object.model.mat.tx-5
object.model.aabb.x1=object.model.mat.tx+5
object.model.aabb.y0=object.model.mat.ty-5
object.model.aabb.y1=object.model.mat.ty+5
object.model.aabb.z0=object.model.mat.tz-5
object.model.aabb.z1=object.model.mat.tz+5
object.model.aabb:Update()
end]]--
function object:GetKey(key,value)
if key=="color" then
elseif key=="intensity" then
else
return self.super:GetKey(model,key,value)
end
return value
end
function object:Render()
self.fluctuation=self.fluctuation+math.random(-100,100)/1000.0*AppSpeed()
self.fluctuation=math.min(1.8,self.fluctuation)
self.fluctuation=math.max(0.2,self.fluctuation)
self.smoothedfluctuation=Curve(self.fluctuation,self.smoothedfluctuation,5.0/AppSpeed())
self.light:SetColorf(1.0*self.smoothedfluctuation,0.6*self.smoothedfluctuation,0.25*self.smoothedfluctuation,1,0)
end
end