//------------------------------------------------------------------- vec3f Node::getWorldPosition() const { mat4f trans = getWorldTransformation(); return vec3f( trans[12], trans[13], trans[14] ); }
void Mouth::draw(RenderContext const& ctx) { if (committed_) { // nothing to draw, physics will draw for us #ifdef DEBUG_DRAW_MOUTH float ratio = sqrt((getFoodValue() / density_) / size_); float widthLeft = width_ * ratio; float lengthLeft = length_ * ratio; glm::vec3 worldTransform = getWorldTransformation(); Shape3D::get()->drawRectangleXOYCentered(glm::vec3(vec3xy(worldTransform), 0), glm::vec2(lengthLeft, widthLeft), worldTransform.z, glm::vec3(0.5f,0,1)); #endif } else { glm::vec3 worldTransform = getWorldTransformation(); Shape3D::get()->drawRectangleXOYCentered(glm::vec3(vec3xy(worldTransform), 0), glm::vec2(length_, width_), worldTransform.z, debug_color); Shape3D::get()->drawLine(glm::vec3(vec3xy(worldTransform), 0), glm::vec3(vec3xy(worldTransform), 0) + glm::vec3(glm::rotate(getChildAttachmentPoint(0), worldTransform.z), 0), debug_color); } }
//------------------------------------------------------------------- void Object::render() { matStackf modelStack; modelStack.applyMatrix( getWorldTransformation() ); NamedProperties params; params.set( "modelMatrix", modelStack.top() ); params.set( "mesh", m_mesh ); fireEvent( "renderMesh", params ); }
//------------------------------------------------------------------- void Object::renderDebug( Renderer* renderer ) { matStackf& modelStack = renderer->getModelStack(); modelStack.push(); modelStack.loadIdentity(); modelStack.applyMatrix( getWorldTransformation() ); if( m_mesh ) { renderer->renderDebugMesh( m_mesh ); renderer->renderAxis( 5.0f ); } modelStack.pop(); }