[ create a new paste ] login | about

Link: http://codepad.org/QspAJs73    [ raw code | output | fork ]

Lua, pasted on Oct 15:
--/ -----------------------------------------------------------------------------------------------
class "CDynamicMusic" --/ Динамическая музыка
--/ -----------------------------------------------------------------------------------------------
--/ CONSTRUCTION
--/ ---------------------------------------------
function CDynamicMusic:__init()
	self.snd_obj_r = nil
	self.snd_obj_l = nil
	self.time_end  = nil
end

function CDynamicMusic:initialize(sSound,iVol)
--	log("dm:initialize:sound=[%s]:[%s]", sSound, ">") --/#~#
	self.snd_obj_r = sound_object(sSound.."_r")
	self.snd_obj_l = sound_object(sSound.."_l")
	if not (self.snd_obj_r and self.snd_obj_l) then
		log("initialize:Cannot open sound file=[%s],r=[%s],l=[%s]:<%s>", sSound, self.snd_obj_r == nil, self.snd_obj_l == nil, "Error!")
		abort("%s:initialize:Cannot open sound file=[%s]", sModule, sSound)
	end
	self.time_end = nil
	if iVol then
		self:Set_Volume(iVol)
	end
end

function CDynamicMusic:Play(iTimePlay,iVol)
	self:Stop()
	local oActor = db.actor
	if not (oActor and self.snd_obj_r and self.snd_obj_l) then return end --/>
	local iTimeOut = 0
	if iTimePlay then
		iTimeOut = (math.min(0,iTimePlay - time_global()))*0.001
	end
	local vDir = device().cam_right:set_length(0.1)
	vDir.y = 0
	self.snd_obj_r:play_at_pos(oActor,vDir,iTimeOut,sound_object.s2d)
	vDir.x = -vDir.x
	vDir.z = -vDir.z
	self.snd_obj_l:play_at_pos(oActor,vDir,iTimeOut,sound_object.s2d)
	if iVol then
		self:Set_Volume(iVol)
	else
		self:Set_Volume(iAmbientVol)
	end
	local iTimeLength = self:Get_Length() or 1
	self.time_end = (iTimePlay or time_global()) + iTimeLength
	return self.time_end
end

function CDynamicMusic:Update()
	if self:Get_Playing() then
		local vDir = device().cam_right:set_length(0.1)
		vDir.y = 0
		self.snd_obj_r:set_position(vDir)
		vDir.x = -vDir.x
		vDir.z = -vDir.z
		self.snd_obj_l:set_position(vDir)
		self:Set_Volume(iAmbientVol)
	end
end

function CDynamicMusic:Stop()
	if self.snd_obj_r and self.snd_obj_r:playing() then self.snd_obj_r:stop() end
	if self.snd_obj_l and self.snd_obj_l:playing() then self.snd_obj_l:stop() end
end

function CDynamicMusic:Get_Playing()
	return (self.snd_obj_l ~= nil and self.snd_obj_l:playing() and self.snd_obj_r ~= nil and self.snd_obj_r:playing())
end

function CDynamicMusic:Get_Length()
	if self.snd_obj_r then
		return self.snd_obj_r:length()
	elseif self.snd_obj_l then
		return self.snd_obj_l:length()
	end
	return nil
end

function CDynamicMusic:Set_Volume(iVol)
	if self.snd_obj_r then self.snd_obj_r.volume = iVol end
	if self.snd_obj_l then self.snd_obj_l.volume = iVol end
end

function CDynamicMusic:__finalize()
--	log("dm:finalize:[%s]", "x") --/#~#
end


Output:
1
2
3
4
line 2: attempt to call global 'class' (a nil value)
stack traceback:
	t.lua:2: in main chunk
	[C]: ?


Create a new paste based on this one


Comments: