From fca74b0bf0a0833f5701e9c0de7b3bc15b2233dd Mon Sep 17 00:00:00 2001 From: dan miller Date: Fri, 19 Oct 2007 05:20:07 +0000 Subject: dont ask --- .../GIMPACT/include/GIMPACT/gim_boxpruning.h | 323 ---- .../ode-0.9/GIMPACT/include/GIMPACT/gim_contact.h | 115 -- .../ode-0.9/GIMPACT/include/GIMPACT/gim_geometry.h | 1872 -------------------- .../ode-0.9/GIMPACT/include/GIMPACT/gim_math.h | 147 -- .../ode-0.9/GIMPACT/include/GIMPACT/gim_memory.h | 1040 ----------- .../GIMPACT/include/GIMPACT/gim_radixsort.h | 258 --- .../include/GIMPACT/gim_tri_capsule_collision.h | 111 -- .../GIMPACT/include/GIMPACT/gim_tri_collision.h | 253 --- .../include/GIMPACT/gim_tri_sphere_collision.h | 51 - .../ode-0.9/GIMPACT/include/GIMPACT/gim_trimesh.h | 539 ------ .../ode-0.9/GIMPACT/include/GIMPACT/gimpact.h | 45 - 11 files changed, 4754 deletions(-) delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_boxpruning.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_contact.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_geometry.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_math.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_memory.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_radixsort.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_tri_capsule_collision.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_tri_collision.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_tri_sphere_collision.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_trimesh.h delete mode 100644 libraries/ode-0.9/GIMPACT/include/GIMPACT/gimpact.h (limited to 'libraries/ode-0.9/GIMPACT/include') diff --git a/libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_boxpruning.h b/libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_boxpruning.h deleted file mode 100644 index 68b68d0..0000000 --- a/libraries/ode-0.9/GIMPACT/include/GIMPACT/gim_boxpruning.h +++ /dev/null @@ -1,323 +0,0 @@ -#ifndef GIM_BOXPRUNING_H_INCLUDED -#define GIM_BOXPRUNING_H_INCLUDED - -/*! \file gim_boxpruning.h -\author Francisco León -*/ -/* ------------------------------------------------------------------------------ -This source file is part of GIMPACT Library. - -For the latest info, see http://gimpact.sourceforge.net/ - -Copyright (c) 2006 Francisco Leon. C.C. 80087371. -email: projectileman@yahoo.com - - This library is free software; you can redistribute it and/or - modify it under the terms of EITHER: - (1) The GNU Lesser General Public License as published by the Free - Software Foundation; either version 2.1 of the License, or (at - your option) any later version. The text of the GNU Lesser - General Public License is included with this library in the - file GIMPACT-LICENSE-LGPL.TXT. - (2) The BSD-style license that is included with this library in - the file GIMPACT-LICENSE-BSD.TXT. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files - GIMPACT-LICENSE-LGPL.TXT and GIMPACT-LICENSE-BSD.TXT for more details. - ------------------------------------------------------------------------------ -*/ - - -#include "GIMPACT/gim_radixsort.h" -#include "GIMPACT/gim_geometry.h" - -/*! \defgroup BOX_PRUNNING - -\brief -Tools for find overlapping objects on a scenary. These functions sort boxes for faster collisioin queries, using radix sort or quick sort as convenience. See \ref SORTING . -
CREATING TRIMESHES
-This is an example of how to create a deformable trimesh that shares vertices with the user application:
-\code -//Declaration of vertices -vec3f trimeshvertices[200]; -//Declaration of indices -GUINT trimeshindices[100]; - -... Initializing vertices and triangle indices at beginning - -//Then create trimesh -GIM_TRIMESH mytrimesh; - -//Calling trimesh create function - -gim_trimesh_create_from_data( -&mytrimesh, -trimeshvertices,200, -0 ,//copy_vertices is 0 -trimeshindices, -100, -0, //copy_indices is 0 -0 //transformed_reply is 0 -); -\endcode -Note that parameter transformed_reply is 0, that means that m_transformed_vertex_buffer is a reference to m_source_vertex on the trimesh, and transformations are not avaliable. Use that configuration if you have to simulate a deformable trimesh like cloth or elastic bodies.
-When the trimesh is no longer needed, destroy it safely with gim_trimesh_destroy()
-UPDATING TRIMESHES
-On simulation loops, is needed to update trimeshes every time for update vertices althought updating triangle boxes and planes cache. There is two ways for update trimeshes:
-After updating vertices, you must call \ref gim_trimesh_update()
-TRIMESHES COLLISION
-Before collide trimeshes, you need to update them first.
-Then you must use \ref gim_trimesh_trimesh_collision().
- -*/ -//! @{ - -//! Prototype for updating vertices -typedef void * gim_update_trimesh_function(struct _GIM_TRIMESH *); - -//! Trimesh -struct GIM_TRIMESH -{ - ///Original - //@{ - GBUFFER_ARRAY m_source_vertex_buffer;//!< Buffer of vec3f coordinates - - //! (GUINT) Indices of triangles,groups of three elements. - /*! - Array of GUINT. Triangle indices. Each triple contains indices of the vertices for each triangle. - \invariant must be aligned - */ - GBUFFER_ARRAY m_tri_index_buffer; - //@} - ///Allocated - //@{ - char m_mask;//!< Don't use directly - - //! Allocated transformed vertices vec3f - /*! - Array of vec3f.If gim_trimesh_has_tranformed_reply(this) == 1 then it refers to the m_source_vertex_buffer - \invariant must be aligned - */ - GBUFFER_ARRAY m_transformed_vertex_buffer; - //@} - ///Auxiliary data - //@{ - GIM_AABB_SET m_aabbset; - GDYNAMIC_ARRAY m_planes_cache_buffer;//! Allocated GIM_TRIPLANES_CACHE - GDYNAMIC_ARRAY m_planes_cache_bitset; - gim_update_trimesh_function * m_update_callback;//! If null, then m_transform is applied. - mat4f m_transform; - //@} -}; -//typedef struct _GIM_TRIMESH GIM_TRIMESH; - -/// Info about mesh -//! Return the trimesh triangle count -GUINT gim_trimesh_get_triangle_count(GIM_TRIMESH * trimesh); - -//! Returns 1 if the m_transformed_vertex_buffer is a reply of m_source_vertex_buffer -char gim_trimesh_has_tranformed_reply(GIM_TRIMESH * trimesh); - -//! Returns 1 if the trimesh needs to update their aabbset and the planes cache. -char gim_trimesh_needs_update(GIM_TRIMESH * trimesh); - -//! Change the state of the trimesh for force it to update -/*! -Call it after made changes to the trimesh. -\post gim_trimesh_need_update(trimesh) will return 1 -\sa gim_trimesh_needs_update,gim_trimesh_has_tranformed_reply -*/ -void gim_trimesh_post_update(GIM_TRIMESH * trimesh); - -//! Creates the aabb set and the triangles cache -/*! - -\param trimesh -\param vertex_array -\param triindex_array -\param transformed_reply If 1, then the m_transformed_vertices is a reply of the source vertices. Else it just be a reference to the original array. -\post it copies the arrays by reference, and creates the auxiliary data (m_aabbset,m_planes_cache_buffer) -*/ -void gim_trimesh_create_from_arrays(GIM_TRIMESH * trimesh, GBUFFER_ARRAY * vertex_array, GBUFFER_ARRAY * triindex_array,char transformed_reply); - - - -//! Create a trimesh from vertex array and an index array -/*! -\param trimesh An uninitialized GIM_TRIMESH structure -\param vertex_array A buffer to a vec3f array -\param vertex_count -\param triindex_array -\param index_count -\param copy_vertices If 1, it copies the source vertices in another buffer. Else (0) it constructs a reference to the data. -\param copy_indices If 1, it copies the source vertices in another buffer. Else (0) it constructs a reference to the data. -\param transformed_reply If 1, then the m_transformed_vertices is a reply of the source vertices. Else it just be a reference to the original array. Use 1 if you will apply transformations to the trimesh. See \ref gim_trimesh_set_tranform(). -*/ -void gim_trimesh_create_from_data(GIM_TRIMESH * trimesh, vec3f * vertex_array, GUINT vertex_count,char copy_vertices, GUINT * triindex_array, GUINT index_count,char copy_indices,char transformed_reply); - -//! Clears auxiliary data and releases buffer arrays -void gim_trimesh_destroy(GIM_TRIMESH * trimesh); - -//! Copies two meshes -/*! -\param source_trimesh -\param dest_trimesh -\param copy_by_reference If 1, it attach a reference to the source vertices, else it copies the vertices -\param transformed_reply If 1, transformed vertices are reply of source vertives. 1 Is recommended -*/ -void gim_trimesh_copy(GIM_TRIMESH * source_trimesh,GIM_TRIMESH * dest_trimesh, char copy_by_reference, char transformed_reply); - - -//! Locks the trimesh for working with it -/*! -\post locks m_tri_index_buffer and m_transformed_vertex_buffer. -\param trimesh -*/ -void gim_trimesh_locks_work_data(GIM_TRIMESH * trimesh); - - -//! unlocks the trimesh -/*! -\post unlocks m_tri_index_buffer and m_transformed_vertex_buffer. -\param trimesh -*/ -void gim_trimesh_unlocks_work_data(GIM_TRIMESH * trimesh); - -//! Updates m_transformed_vertex_buffer -/*! -\pre m_transformed_vertex_buffer must be unlocked -*/ -void gim_trimesh_update_vertices(GIM_TRIMESH * trimesh); - -//! Updates m_aabbset and m_planes_cache_bitset -/*! -\pre gim_trimesh_locks_work_data must be called before -*/ -void gim_trimesh_update_aabbset(GIM_TRIMESH * trimesh); - -//! Calls before perfom collisions. Updates the trimesh if needed -/*! -\post If gim_trimesh_needs_update returns 1, then it calls gim_trimesh_update_vertices and gim_trimesh_update_aabbset -*/ -void gim_trimesh_update(GIM_TRIMESH * trimesh); - -//! Set the transform of a trimesh -/*! -\post This function calls to gim_trimesh_post_update -*/ -void gim_trimesh_set_tranform(GIM_TRIMESH * trimesh, mat4f transform); - -//! Fetch triangle data -/*! -\pre gim_trimesh_locks_work_data must be called before -*/ -void gim_trimesh_get_triangle_data(GIM_TRIMESH * trimesh, GUINT triangle_index, GIM_TRIANGLE_DATA * tri_data); - -//! Fetch triangle vertices -/*! -\pre gim_trimesh_locks_work_data must be called before -*/ -void gim_trimesh_get_triangle_vertices(GIM_TRIMESH * trimesh, GUINT triangle_index, vec3f v1,vec3f v2,vec3f v3); - -//! Trimesh Trimesh Collisions -/*! -Before use this function you must update each trimesh: -\code -gim_trimesh_update(TriMesh1); -gim_trimesh_update(TriMesh2); -\endcode -Then you must use the trimesh collision in this way: -\code -int collide_trimeshes(GIM_TRIMESH * TriMesh1, GIM_TRIMESH * TriMesh2) -{ - //Create contact list - GDYNAMIC_ARRAY trimeshcontacts; - GIM_CREATE_CONTACT_LIST(trimeshcontacts); - - //Collide trimeshes - gim_trimesh_trimesh_collision(TriMesh1,TriMesh2,&trimeshcontacts); - - if(trimeshcontacts.m_size == 0) //do nothing - { - GIM_DYNARRAY_DESTROY(trimeshcontacts);//clean contact array - return 0; - } - - //Getting a pointer to the contact array - GIM_CONTACT * ptrimeshcontacts = GIM_DYNARRAY_POINTER(GIM_CONTACT,trimeshcontacts); - - int contactcount = trimeshcontacts.m_size; - int i; - //Process contacts - for (i=0;i