mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 18:03:56 -04:00
bam2egg: generate a sphere from polygon with four vertices instead of two
This commit is contained in:
parent
b113d9db55
commit
6104e75eb0
@ -482,7 +482,7 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
|||||||
} else if (child->is_of_type(CollisionSphere::get_class_type())) {
|
} else if (child->is_of_type(CollisionSphere::get_class_type())) {
|
||||||
CPT(CollisionSphere) sphere = DCAST(CollisionSphere, child);
|
CPT(CollisionSphere) sphere = DCAST(CollisionSphere, child);
|
||||||
LPoint3 center = sphere->get_center();
|
LPoint3 center = sphere->get_center();
|
||||||
LVector3 offset(sphere->get_radius(), 0, 0);
|
PN_stdfloat radius = sphere->get_radius();
|
||||||
|
|
||||||
EggGroup *egg_sphere;
|
EggGroup *egg_sphere;
|
||||||
if (num_solids == 1) {
|
if (num_solids == 1) {
|
||||||
@ -499,15 +499,19 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
|||||||
}
|
}
|
||||||
egg_sphere->set_collide_flags(flags);
|
egg_sphere->set_collide_flags(flags);
|
||||||
|
|
||||||
EggVertex ev1, ev2;
|
EggVertex ev1, ev2, ev3, ev4;
|
||||||
ev1.set_pos(LCAST(double, (center + offset) * net_mat));
|
ev1.set_pos(LCAST(double, (center + LVector3(radius, 0, 0)) * net_mat));
|
||||||
ev2.set_pos(LCAST(double, (center - offset) * net_mat));
|
ev2.set_pos(LCAST(double, (center + LVector3(0, radius, 0)) * net_mat));
|
||||||
|
ev3.set_pos(LCAST(double, (center + LVector3(-radius, 0, 0)) * net_mat));
|
||||||
|
ev4.set_pos(LCAST(double, (center + LVector3(0, -radius, 0)) * net_mat));
|
||||||
|
|
||||||
EggPolygon *egg_poly = new EggPolygon;
|
EggPolygon *egg_poly = new EggPolygon;
|
||||||
egg_sphere->add_child(egg_poly);
|
egg_sphere->add_child(egg_poly);
|
||||||
|
|
||||||
egg_poly->add_vertex(cvpool->create_unique_vertex(ev1));
|
egg_poly->add_vertex(cvpool->create_unique_vertex(ev1));
|
||||||
egg_poly->add_vertex(cvpool->create_unique_vertex(ev2));
|
egg_poly->add_vertex(cvpool->create_unique_vertex(ev2));
|
||||||
|
egg_poly->add_vertex(cvpool->create_unique_vertex(ev3));
|
||||||
|
egg_poly->add_vertex(cvpool->create_unique_vertex(ev4));
|
||||||
|
|
||||||
} else if (child->is_of_type(CollisionPlane::get_class_type())) {
|
} else if (child->is_of_type(CollisionPlane::get_class_type())) {
|
||||||
LPlane plane = DCAST(CollisionPlane, child)->get_plane();
|
LPlane plane = DCAST(CollisionPlane, child)->get_plane();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user