void CurveEditInstance::renderComponents(RenderableCollector& collector,
	const VolumeTest& volume, const Matrix4& localToWorld) const
{
    collector.SetState(_shaders.controlsShader, RenderableCollector::eWireframeOnly);
    collector.SetState(_shaders.controlsShader, RenderableCollector::eFullMaterials);
    collector.addRenderable(m_controlsRender, localToWorld);
}
void MD5Surface::render(RenderableCollector& collector, const Matrix4& localToWorld, 
						const ShaderPtr& shader, const IRenderEntity& entity) const
{
	assert(shader); // shader must be captured at this point

	collector.SetState(shader, RenderableCollector::eFullMaterials);
	collector.addRenderable(*this, localToWorld, entity);
}
// Front-end renderable submission
void RenderablePicoSurface::submitRenderables(RenderableCollector& rend,
											  const Matrix4& localToWorld,
											  const ShaderPtr& shader,
											  const IRenderEntity& entity)
{
	// Submit geometry
	rend.SetState(shader, RenderableCollector::eFullMaterials);
    rend.addRenderable(*this, localToWorld, entity);
}
/* greebo: Renders the currently active manipulator by setting the render state and
 * calling the manipulator's render method
 */
void RadiantSelectionSystem::renderSolid(RenderableCollector& collector, const VolumeTest& volume) const {
    if (!nothingSelected()) {
        collector.highlightFaces(false);
        collector.highlightPrimitives(false);

        collector.SetState(_state, RenderableCollector::eWireframeOnly);
        collector.SetState(_state, RenderableCollector::eFullMaterials);

        _manipulator->render(collector, volume, GetPivot2World());
    }
}
void CurveEditInstance::renderComponentsSelected(RenderableCollector& collector,
	const VolumeTest& volume, const Matrix4& localToWorld) const
{
    updateSelected();
    if(!m_selectedRender.empty())
    {
      collector.highlightPrimitives(false);
      collector.SetState(_shaders.selectedShader, RenderableCollector::eWireframeOnly);
      collector.SetState(_shaders.selectedShader, RenderableCollector::eFullMaterials);
      collector.addRenderable(m_selectedRender, localToWorld);
    }
}
void MD5ModelNode::render(RenderableCollector& collector, const VolumeTest& volume,
		const Matrix4& localToWorld, const IRenderEntity& entity) const
{
	// Do some rough culling (per model, not per surface)
	if (volume.TestAABB(localAABB(), localToWorld) == VOLUME_OUTSIDE)
	{
		return;
	}

	SurfaceLightLists::const_iterator j = _surfaceLightLists.begin();

	// greebo: Iterate over all MD5 surfaces and render them
	for (MD5Model::const_iterator i = _model->begin();
		 i != _model->end();
		 ++i, ++j)
	{
		assert(i->shader);

		// Get the Material to test the shader name against the filter system
		const MaterialPtr& surfaceShader = i->shader->getMaterial();

		if (surfaceShader->isVisible())
		{
			collector.setLights(*j);
			i->surface->render(collector, localToWorld, i->shader, entity);
		}
	}

	// Uncomment to render the skeleton
	//collector.SetState(entity.getWireShader(), RenderableCollector::eFullMaterials);
	//collector.addRenderable(_model->getRenderableSkeleton(), localToWorld, entity);
}
// Submit renderable geometry
void FaceInstance::submitRenderables(RenderableCollector& collector,
                                     const VolumeTest& volume,
									 const IRenderEntity& entity) const
{
	if (m_face->intersectVolume(volume))
	{
		collector.PushState();

		if (selectedComponents())
		{
			collector.highlightFaces(true);
		}

		m_face->submitRenderables(collector, Matrix4::getIdentity(), entity);
		collector.PopState();
	}
}
Exemple #8
0
void EclassModel::renderSolid(RenderableCollector& collector, 
	const VolumeTest& volume, const Matrix4& localToWorld, bool selected) const
{
	if(selected) {
		m_renderOrigin.render(collector, volume, localToWorld);
	}

	collector.SetState(m_entity.getEntityClass()->getWireShader(), RenderableCollector::eWireframeOnly);
}
void TranslateManipulator::render(RenderableCollector& collector, const VolumeTest& volume, const Matrix4& pivot2world) {
    _pivot.update(pivot2world, volume.GetModelview(), volume.GetProjection(), volume.GetViewport());

    // temp hack
    UpdateColours();

    Vector3 x = _pivot._worldSpace.x().getVector3().getNormalised();
    bool show_x = manipulator_show_axis(_pivot, x);

    Vector3 y = _pivot._worldSpace.y().getVector3().getNormalised();
    bool show_y = manipulator_show_axis(_pivot, y);

    Vector3 z = _pivot._worldSpace.z().getVector3().getNormalised();
    bool show_z = manipulator_show_axis(_pivot, z);

    collector.SetState(_stateWire, RenderableCollector::eWireframeOnly);
    collector.SetState(_stateWire, RenderableCollector::eFullMaterials);

    if(show_x)
    {
      collector.addRenderable(_arrowX, _pivot._worldSpace);
    }
    if(show_y)
    {
      collector.addRenderable(_arrowY, _pivot._worldSpace);
    }
    if(show_z)
    {
      collector.addRenderable(_arrowZ, _pivot._worldSpace);
    }

    collector.addRenderable(_quadScreen, _pivot._viewplaneSpace);

    collector.SetState(_stateFill, RenderableCollector::eWireframeOnly);
    collector.SetState(_stateFill, RenderableCollector::eFullMaterials);

    if(show_x)
    {
      collector.addRenderable(_arrowHeadX, _pivot._worldSpace);
    }
    if(show_y)
    {
      collector.addRenderable(_arrowHeadY, _pivot._worldSpace);
    }
    if(show_z)
    {
      collector.addRenderable(_arrowHeadZ, _pivot._worldSpace);
    }
}
// Renderable submission
void PicoModelNode::submitRenderables(RenderableCollector& collector,
                                      const VolumeTest& volume,
                                      const Matrix4& localToWorld,
                                      const IRenderEntity& entity) const
{
    // Test the model's intersection volume, if it intersects pass on the
    // render call
    if (volume.TestAABB(_picoModel->localAABB(), localToWorld) != VOLUME_OUTSIDE)
    {
        // Submit the lights
        collector.setLights(_lights);

        // Submit the model's geometry
        _picoModel->submitRenderables(collector, localToWorld, entity);
    }
}
Exemple #11
0
void MD5ModelNode::render(RenderableCollector& collector, const VolumeTest& volume,
		const Matrix4& localToWorld) const
{
	// Do some rough culling (per model, not per surface)
	if (volume.TestAABB(localAABB(), localToWorld) == VOLUME_OUTSIDE)
	{
		return;
	}

	SurfaceLightLists::const_iterator j = _surfaceLightLists.begin();
	SurfaceRemaps::const_iterator k = _surfaceRemaps.begin();

	// greebo: Iterate over all MD5 surfaces and render them
	for (MD5Model::const_iterator i = _model->begin(); 
		 i != _model->end(); 
		 ++i, ++j, ++k)
	{
		collector.setLights(*j);
		(*i)->render(collector, localToWorld, k->shader != NULL ? k->shader : (*i)->getState());
	}
}
Exemple #12
0
void Doom3Group::renderSolid(RenderableCollector& collector, const VolumeTest& volume, 
	const Matrix4& localToWorld, bool selected) const 
{
	if (selected) {
		m_renderOrigin.render(collector, volume, localToWorld);
	}

	collector.SetState(_entity.getEntityClass()->getWireShader(), RenderableCollector::eWireframeOnly);
	collector.SetState(_entity.getEntityClass()->getWireShader(), RenderableCollector::eFullMaterials);

	if (!m_curveNURBS.isEmpty())
	{
		// Always render curves relative to map origin
		m_curveNURBS.renderSolid(collector, volume, Matrix4::getIdentity());
	}
	
	if (!m_curveCatmullRom.isEmpty())
	{
		// Always render curves relative to map origin
		m_curveCatmullRom.renderSolid(collector, volume, Matrix4::getIdentity());
	}
}
Exemple #13
0
void NullModel::renderWireframe(RenderableCollector& collector,
	const VolumeTest& volume, const Matrix4& localToWorld) const
{
	collector.SetState(_state, RenderableCollector::eWireframeOnly);
	collector.addRenderable(_aabbWire, localToWorld);
}
Exemple #14
0
void NullModel::renderSolid(RenderableCollector& collector,
	const VolumeTest& volume, const Matrix4& localToWorld) const
{
	collector.SetState(_state, RenderableCollector::eFullMaterials);
	collector.addRenderable(_aabbSolid, localToWorld);
}