
function Vector:__tostring()
    return 'X: '..self.x..' Y: '..self.y
end

function GameObject:__tostring()
    local str = 'Name: '..self:GetName()..' X: '..self:GetX()..' Y: '..self:GetY()..' Z: '..self:GetZ()
    if self:GetAnimation():GetFrames() > 0 then
        str = str..' NFrames: '..self:GetAnimation():GetFrames()
    end
    return str
end

function Task:__tostring()
    return 'Text singular: '..self:GetTextSingular()
end

function CompositionElement:__tostring()
	local infoStr = 'Name: '..self:GetName()..' Position: ('..self:GetX()..'; '..self:GetY()..'; '..self:GetZ()..') ';
	if (self:GetParentElement() ~= nil) then
		infoStr = infoStr..' Parent: \''..self:GetParentElement():GetName()..'\'';
    end
	return infoStr;
end

function CompositionSequence:__tostring()
	local infoStr = 'Name: \''..self:GetName()..'\' Position: ('..self:GetX()..'; '..self:GetY()..'; '..self:GetZ()..') ';
	if (self:GetParentElement() ~= nil) then
		infoStr = infoStr..' Parent: \''..self:GetParentElement():GetName()..'\'';
    end
	infoStr = infoStr..' Duration:'..self:GetDuration()..' Cyclic:'..(self:IsCyclic() == true and 'true' or 'false');
	return infoStr;
end
