Esempio n. 1
0
	//retrieves the first 512 characters from the temp_buffer and removes them from the buffer.
	std::string Packetizer::buildPacket () {
		std::string tmp;
		while (packet_list.size () < PACKET_LIST_MAX && temp_buffer.length() < BUFFER_CHAR_SIZE && currentLine < getLines (&RreadFrom)) {//&& outOfData ()) {
			populateBuffer ();
		}
		tmp = temp_buffer.substr(0, BUFFER_CHAR_SIZE);
		temp_buffer.erase (0, BUFFER_CHAR_SIZE);
		return tmp;
	}
    // OpenGL methods
    void AtomRenderable::render(Ambrosia::RenderPass renderPass, unsigned int elements)
    {
//              qDebug() << "AtomRenderable::render";
        if (!(visible && display))
            return;

        if (buffer == 0)
            populateBuffer();

        if (elements & Buffer::COLOUR) {
            switch (renderPass) {
            case Ambrosia::DRAW_OUTLINE_PASS:
                if (renderPass == Ambrosia::DRAW_OUTLINE_PASS && highlightColour) {
                    elements &= ~Buffer::COLOUR;
                    glColor3f(highlightColour->r, highlightColour->g, highlightColour->b);
                }
            case Ambrosia::SHADOW_MAP_PASS:
            case Ambrosia::STENCIL_PASS:
                // set shaders
                if (renderableManager->specularShader) renderableManager->specularShader->disable();
                break;
            case Ambrosia::DEPTH_SHADE_PASS:
            case Ambrosia::DEPTH_TRANSPARENT_PASS:
            case Ambrosia::DRAW_SHADE_PASS:
            case Ambrosia::DRAW_TRANSPARENT_PASS:
            case Ambrosia::DRAW_PASS:
            case Ambrosia::NAME_PASS:
                // set shaders
                if (renderableManager->specularShader) renderableManager->specularShader->enable();
                break;
            default:
                break;
            }
        }

        // Render buffer
        if (renderFormat == renderableManager->BALLSANDSTICKS || renderFormat == renderableManager->SPACEFILL) {
            // Draw buffer
            if (renderPass == Ambrosia::NAME_PASS)
            {
                glPushName(this->_v2_renderable_name);
            }
            buffer->enable(elements);
            buffer->render(GL_TRIANGLE_STRIP, bufferIndex, vertexCount());
            buffer->disable();
            if (renderPass == Ambrosia::NAME_PASS)
            {
                glPopName();
            }
        }

        // disable shaders
        if (renderableManager->specularShader) renderableManager->specularShader->disable();
    }
    void AtomRenderable::setTintColour(Colour * colour)
    {
        if (colour == this->tintColour)
            return;
        this->tintColour = colour;

        // reload buffer
        if (buffer && visible && display) {
            populateBuffer();
            buffer->load(bufferIndex, vertexCount());
        }
    }
    void AtomRenderable::setAlpha(unsigned char alpha)
    {
        if (alpha == this->alpha)
            return;
        this->alpha = alpha;

        // reload buffer
        if (buffer && visible && display) {
            populateBuffer();
            buffer->load(bufferIndex, vertexCount());
        }
    }