Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

RigidMesh.cpp

00001 /*************************************************************************** 00002 * This file is part of OpenCAL: Open Computer Animation Library * 00003 * I created OpenCAL as my master's thesis Computer Science (multimedia) * 00004 * at the tUL university in Diepenbeek, Belgium * 00005 * * 00006 * Copyright (C) 2003-2004 by Jeroen Dierckx * 00007 * jeroen.dierckx@student.luc.ac.be * 00008 * * 00009 ***************************************************************************/ 00010 00011 // Includes 00012 #include "RigidMesh.h" 00013 #include <OpenCAL/TriangleMesh.h> 00014 #include <OpenCAL/System.h> 00015 #include <OpenCAL/Renderer.h> 00016 using namespace OpenCAL; 00017 00018 using namespace std; 00019 00020 00021 /****************************** 00022 * Constructors and destructor * 00023 ******************************/ 00024 00025 RigidMesh::RigidMesh(System *parent, const string &filename, float mass) 00026 : RigidBody(parent, mass), m_filename(filename) 00027 { 00028 m_surface = new TriangleMesh(filename, true); 00029 } 00030 00031 RigidMesh::~RigidMesh() 00032 { 00033 delete m_surface; 00034 } 00035 00036 00037 /************************ 00038 * Get and set functions * 00039 ************************/ 00040 00041 00042 /****************** 00043 * Other functions * 00044 ******************/ 00045 00046 void RigidMesh::initialize() 00047 { 00048 Renderer *renderer = m_parent->getRenderer(); 00049 if(!renderer) return; 00050 00051 renderer->initializeMesh(m_surface); 00052 } 00053 00054 void RigidMesh::render() 00055 { 00056 Renderer *renderer = m_parent->getRenderer(); 00057 if(!renderer) return; 00058 00059 // Push the current transformation on the stack 00060 renderer->pushTransformation(); 00061 00062 renderer->translate(m_position); 00063 renderer->rotate(m_rotation); 00064 renderer->renderMesh(m_surface); 00065 00066 // Pop the transformation stack 00067 renderer->popTransformation(); 00068 } 00069 00070 void RigidMesh::calculateVolume() 00071 { 00073 m_volume = 1.0f; 00074 } 00075 00076 void RigidMesh::calculateInversedInertia() 00077 { 00079 m_invInertia.identity(); 00080 } 00081 00082 /* 00083 #ifdef USE_OPENGL 00084 void RigidMesh::initializeGL() 00085 { 00086 Rigid::initializeGL(); 00087 00088 TriangleMesh mesh(m_filename); 00089 mesh.initialize(); 00090 00091 // Compile the triangle mesh 00092 glNewList(m_displayList, GL_COMPILE); 00093 mesh.drawGL(); 00094 glEndList(); 00095 } 00096 #endif // USE_OPENGL 00097 */ 00098 00099 00100 /********************** 00101 * Protected functions * 00102 **********************/

Generated on Sun Aug 15 19:19:23 2004 for OpenCAL: Open Computer Animation Library by doxygen 1.3.8