15 #include "physxCcdSkeletonDesc.h" 16 #include "physxManager.h" 18 #include "nodePathCollection.h" 20 #include "geomVertexReader.h" 39 _vertices =
new NxVec3[numVertices];
41 _desc.numVertices = numVertices;
42 _desc.points = _vertices;
54 nassertv(_desc.numVertices > idx);
70 if (_desc.triangles) {
74 _triangles =
new NxU32[3 * numTriangles];
76 _desc.numTriangles = numTriangles;
77 _desc.triangles = _triangles;
88 unsigned int i1,
unsigned int i2,
unsigned int i3) {
90 nassertv(_desc.numTriangles > idx);
94 _triangles[idx + 1] = i2;
95 _triangles[idx + 2] = i3;
103 const NxSimpleTriangleMesh &PhysxCcdSkeletonDesc::
137 CPT(
Geom) geom = gnode->get_geom(j);
148 for (
int k=0; k<geom->get_num_primitives(); k++) {
151 prim = prim->decompose();
153 for (
int l=0; l<prim->get_num_primitives(); l++) {
155 int s = prim->get_primitive_start(l);
156 int e = prim->get_primitive_end(l);
158 for (
int l=s; l<e; l++) {
159 dataIndices.push_back(prim->get_vertex(l));
169 NxU32 numVertices = dataVertices.size();
170 NxU32 numTriangles = dataIndices.size() / 3;
172 _vertices =
new NxVec3[numVertices];
173 _triangles =
new NxU32[3 * numTriangles];
177 for (vit=dataVertices.begin(); vit!=dataVertices.end(); vit++) {
180 _vertices[i].x = v.get_x();
181 _vertices[i].y = v.get_y();
182 _vertices[i].z = v.get_z();
188 for(iit=dataIndices.begin(); iit!=dataIndices.end(); iit++) {
195 _desc.numVertices = numVertices;
196 _desc.points = _vertices;
197 _desc.numTriangles = numTriangles;
198 _desc.triangles = _triangles;
void set_num_triangles(unsigned int n)
Sets the number of triangles to be stored in this triangle mesh.
void set_from_node_path(const NodePath &np)
A convenience method to set the mesh data from a NodePath in a single call.
static NxVec3 point3_to_nxVec3(const LPoint3f &p)
Converts from LPoint3f to NxVec3.
This is an abstract base class for a family of classes that represent the fundamental geometry primit...
const LVecBase3f & get_data3f()
Returns the data associated with the read row, expressed as a 3-component value, and advances the rea...
This is a three-component point in space (as opposed to a three-component vector, which represents a ...
int get_num_geoms() const
Returns the number of geoms in the node.
This is our own Panda specialization on the default STL vector.
This defines the actual numeric vertex data stored in a Geom, in the structure defined by a particula...
A container for geometry primitives.
void set_triangle(unsigned int idx, unsigned int i1, unsigned int i2, unsigned int i3)
Sets a single triangle, by providing the three indices i1, i2, i3.
NodePath get_path(int index) const
Returns the nth NodePath in the collection.
int get_num_paths() const
Returns the number of NodePaths in the collection.
PandaNode * node() const
Returns the referenced node of the path.
void set_num_vertices(unsigned int n)
Sets the number of vertices to be stored within this triangle mesh.
This object provides a high-level interface for quickly reading a sequence of numeric values from a v...
bool is_at_end() const
Returns true if the reader is currently at the end of the list of vertices, false otherwise...
void set_vertex(unsigned int idx, const LPoint3f &vert)
Sets a single vertex.
NodePathCollection find_all_matches(const string &path) const
Returns the complete set of all NodePaths that begin with this NodePath and can be extended by path...
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...
A node that holds Geom objects, renderable pieces of geometry.
This is a set of zero or more NodePaths.