def <=>(other)
unless other.kind_of? self.class
raise TypeError, "#{self.class} required (#{other.class} given)"
end
size = [self.length, other.length].min
size.times do |x|
r = self[x] <=> other[x]
return r unless r == 0
end
if @scene.nil? && other.scene.nil?
return 0
elsif @scene.nil? && ! other.scene.nil?
raise TypeError, "cannot convert nil into #{other.scene.class}"
elsif ! @scene.nil? && other.scene.nil?
raise TypeError, "cannot convert nil into #{self.scene.class}"
end
r = self.scene <=> other.scene
return r unless r == 0
return self.length <=> other.length
end