removed color; added test_intersection
This commit is contained in:
parent
f105fc0365
commit
162d7a5808
|
|
@ -56,6 +56,16 @@ make_copy() {
|
|||
return new CollisionDSSolid(*this);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: CollisionDSSolid::test_intersection
|
||||
// Access: Public, Virtual
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
PT(CollisionEntry) CollisionDSSolid::
|
||||
test_intersection(const CollisionEntry &entry) const {
|
||||
return entry.get_into()->test_intersection_from_ds_solid(entry);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: CollisionDSSolid::xform
|
||||
// Access: Public, Virtual
|
||||
|
|
@ -219,6 +229,7 @@ PT(CollisionEntry) CollisionDSSolid::
|
|||
test_intersection_from_sphere(const CollisionEntry &entry) const {
|
||||
const CollisionSphere *sphere;
|
||||
DCAST_INTO_R(sphere, entry.get_from(), 0);
|
||||
cerr<<"CollisionDSSolid::test_intersection_from_ds_solid\n";
|
||||
|
||||
CPT(TransformState) wrt_space = entry.get_wrt_space();
|
||||
|
||||
|
|
@ -276,8 +287,8 @@ test_intersection_from_sphere(const CollisionEntry &entry) const {
|
|||
|
||||
LVector3f surface_normal;
|
||||
LPoint3f surface_point;
|
||||
float spheres = sa_distance_squared - sb_distance_squared;
|
||||
float planes = pa_distance * pa_distance - pb_distance * pb_distance;
|
||||
float spheres = sqrtf(sa_distance_squared) - sqrtf(sb_distance_squared);
|
||||
float planes = pa_distance - pb_distance;
|
||||
if (spheres > planes) {
|
||||
if (spheres > 0) {
|
||||
// sphere_a is the furthest
|
||||
|
|
@ -359,7 +370,6 @@ fill_viz_geom() {
|
|||
PT(GeomVertexData) vdata = new GeomVertexData(
|
||||
"collision", GeomVertexFormat::get_v3cp(), Geom::UH_static);
|
||||
GeomVertexWriter vertex(vdata, InternalName::get_vertex());
|
||||
GeomVertexWriter color(vdata, InternalName::get_color());
|
||||
|
||||
PT(GeomTristrips) strip = new GeomTristrips(Geom::UH_static);
|
||||
// Generate the first endcap.
|
||||
|
|
@ -370,38 +380,36 @@ fill_viz_geom() {
|
|||
for (si = 0; si <= num_slices; ++si) {
|
||||
vertex.add_data3f(calc_sphere2_vertex(
|
||||
ri, si, num_rings, num_slices, -half_length, half_arc_angle_a));
|
||||
//color.add_data4f(Colorf(1.0f, 0.0f, 0.0f, 1.0f));
|
||||
color.add_data4f(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
vertex.add_data3f(calc_sphere2_vertex(
|
||||
ri + 1, si, num_rings, num_slices, -half_length, half_arc_angle_a));
|
||||
//color.add_data4f(Colorf(1.0f, 0.0f, 0.0f, 1.0f));
|
||||
color.add_data4f(1.0f, 0.0f, 0.0f, 1.0f);
|
||||
}
|
||||
strip->add_next_vertices((num_slices + 1) * 2);
|
||||
strip->close_primitive();
|
||||
}
|
||||
|
||||
#if 0
|
||||
// Now the planes.
|
||||
for (si = 0; si <= num_slices; ++si) {
|
||||
vertex.add_data3f(calc_sphere1_vertex(
|
||||
num_rings, si, num_rings, num_slices));
|
||||
vertex.add_data3f(calc_sphere2_vertex(
|
||||
num_rings, si, num_rings, num_slices, half_length));
|
||||
}
|
||||
strip->add_next_vertices((num_slices + 1) * 2);
|
||||
// Add plane A
|
||||
vertex.add_data3f(Vertexf(-100, -100, 0));
|
||||
vertex.add_data3f(Vertexf(-100, 100, 0));
|
||||
vertex.add_data3f(Vertexf(100, -100, 0));
|
||||
vertex.add_data3f(Vertexf(100, 100, 0));
|
||||
strip->add_next_vertices(4);
|
||||
strip->close_primitive();
|
||||
|
||||
// Add plane B
|
||||
vertex.add_data3f(Vertexf(-100, -100, 20));
|
||||
vertex.add_data3f(Vertexf(-100, 100, 20));
|
||||
vertex.add_data3f(Vertexf(100, -100, 20));
|
||||
vertex.add_data3f(Vertexf(100, 100, 20));
|
||||
strip->add_next_vertices(4);
|
||||
strip->close_primitive();
|
||||
#endif
|
||||
|
||||
// And the second endcap.
|
||||
for (ri = num_rings - 1; ri >= 0; --ri) {
|
||||
for (si = 0; si <= num_slices; ++si) {
|
||||
vertex.add_data3f(calc_sphere1_vertex(
|
||||
ri + 1, si, num_rings, num_slices, half_length, half_arc_angle_b));
|
||||
color.add_data4f(Colorf(0.0f, 0.0f, 1.0f, 1.0f));
|
||||
vertex.add_data3f(calc_sphere1_vertex(
|
||||
ri, si, num_rings, num_slices, half_length, half_arc_angle_b));
|
||||
color.add_data4f(Colorf(1.0f, 1.0f, 1.0f, 1.0f));
|
||||
}
|
||||
strip->add_next_vertices((num_slices + 1) * 2);
|
||||
strip->close_primitive();
|
||||
|
|
|
|||
Loading…
Reference in New Issue