00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
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
00039
00040
00041
00042
00043
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
00060 renderer->
pushTransformation();
00061
00062 renderer->
translate(m_position);
00063 renderer->
rotate(m_rotation);
00064 renderer->
renderMesh(m_surface);
00065
00066
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
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102