FancyButton = class(CameraButton, function(o, x, y, text, svgName, mult, svgOverlay)
	svgName = svgName or "button_play"
	CameraButton.init(o, x, y, 20, 20)
	o.svg = SvgLoader(svg_root .. "interface/" .. svgName ..".svg", true)
	CameraButton.setScrollFactor(o, Vec2(0,0))
	o.w = o.svg:getMaxX()
	o.h = o.svg:getMaxY()
	o.drawType = 'svg'
	mult = mult or 0.4
	if text and o.svg.id.textarea then
		o.stringY = o.svg.id.textarea.minY
		o.string = StringObject(0,o.svg.id.textarea.minY+o.pos.y, text,nil, mult)
		o.string:setPosition(o.pos.x+o.w/2-o.string.w/2, o.string.pos.y)
		o.string:setColor(0,0,0)
		o.string:setScrollFactor(Vec2(0,0))
	end
	if svgOverlay then
		o.overlay = Object(x, y, o.w, o.h)
		o.overlay.svg = SvgLoader(svg_root .. "interface/" .. svgOverlay ..".svg", true)
		o.overlay.drawType = 'svg'
	end
	o.tinting = false
end)
function FancyButton:centerOverlay()
	-- find the correct x/y
	local midX = (self.overlay.svg:getMaxX()-self.overlay.svg:getMinX())/2
	local midY = (self.overlay.svg:getMaxY()-self.overlay.svg:getMinY())/2
	self.overlay:setPosition(self.pos.x+self.w/2-midX-self.overlay.svg:getMinX(), self.pos.y+self.h/2-midY-self.overlay.svg:getMinY())
	self.setPosition = function(self, x, y)
		Object.setPosition(self, x, y)
		if self.string then
			self.string:setPosition(self.pos.x+self.w/2-self.string.w/2, self.stringY+self.pos.y)
		end
		if self.overlay then
			self.overlay:setPosition(self.pos.x, self.pos.y)
			self:centerOverlay();
		end
	end
end
function FancyButton:setScrollFactor(v)
	if self.string then
		self.string:setScrollFactor(v)
	end
	CameraButton.setScrollFactor(self, v)
end
function FancyButton:mouseOver(x, y)
	self.tinting = true
	self.otint = {r=self.tint.r, g=self.tint.g, b=self.tint.b}
	return false
end
function FancyButton:mouseOut(x, y)
	self.tinting = false
	self.tint = self.otint
	self:setColor(self.tint.r, self.tint.g, self.tint.b)
	return false
end
function FancyButton:update()
	CameraButton.update(self)
	self.otint = {r=self.tint.r, g=self.tint.g, b=self.tint.b}	
	self:setPosition(self.pos.x, self.pos.y)
end
function FancyButton:draw()
	if self.tinting then
		self:setColor(self.otint.r*0.5, self.otint.g*0.5, self.otint.b*0.5)
	end
	Object.draw(self)
	if self.string then
		self.string:draw()
	end
	if self.overlay then
		self.overlay:draw()
	end
	if self.tinting then
		self:setColor(self.otint.r, self.otint.g, self.otint.b)
	end
end
function FancyButton:setPosition(x, y)
	Object.setPosition(self, x, y)
	if self.string then
		self.string:setPosition(self.pos.x+self.w/2-self.string.w/2, self.stringY+self.pos.y)
	end
	if self.overlay then
		self.overlay:setPosition(self.pos.x, self.pos.y)
	end
end