00001 /* 00002 Sheep - A Rigid Body Dynamics Engine 00003 Copyright (C) 2001-2004 Francois Beaune 00004 Contact: http://toxicengine.sourceforge.net/ 00005 00006 This file is part of Sheep. 00007 00008 Sheep is free software; you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation; either version 2 of the License, or 00011 (at your option) any later version. 00012 00013 Sheep is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with Sheep; if not, write to the Free Software 00020 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00021 */ 00022 00023 #include "rigidmodelbuilder.h" // include first 00024 00025 #include "rigidmodel.h" 00026 00027 #include <cassert> 00028 00029 using namespace sheep; 00030 00031 // IMeshBuilder interface. 00032 00033 RigidModelBuilder::RigidModelBuilder() : 00034 m_model(new RigidModel()) 00035 { 00036 } 00037 00038 RigidModelBuilder::~RigidModelBuilder() { 00039 } 00040 00041 IMeshBuilder::IGeometryBuilder *RigidModelBuilder::GeometryBuilder() { 00042 return this; 00043 } 00044 00045 IMeshBuilder::IMaterialBuilder *RigidModelBuilder::MaterialBuilder() { 00046 return 0; 00047 } 00048 00049 std::auto_ptr<RigidModel> RigidModelBuilder::GetMesh() { 00050 return m_model; 00051 } 00052 00053 // IGeometryBuilder interface. 00054 00055 IMeshBuilder::FeatureId RigidModelBuilder::AppendVertex(const Vector3 &v) { 00056 m_model->m_vertices.push_back(v); 00057 00058 return static_cast<FeatureId>(m_model->m_vertices.size() - 1); 00059 } 00060 00061 IMeshBuilder::FeatureId RigidModelBuilder::AppendFace(int n, const FeatureId *v) { 00062 assert(n == 3); 00063 assert(v); 00064 00065 RigidModel::Face f; 00066 00067 f.m_v0 = v[0]; 00068 f.m_v1 = v[1]; 00069 f.m_v2 = v[2]; 00070 00071 m_model->m_faces.push_back(f); 00072 00073 return static_cast<FeatureId>(m_model->m_faces.size() - 1); 00074 }
1.3.6