bam2egg: support collision masks, UvScrollNode

This commit is contained in:
rdb 2016-10-24 17:20:21 +02:00
parent 1bd96685bc
commit df998fb24c

View File

@ -32,6 +32,7 @@
#include "lodNode.h"
#include "switchNode.h"
#include "sequenceNode.h"
#include "uvScrollNode.h"
#include "collisionNode.h"
#include "collisionPolygon.h"
#include "collisionPlane.h"
@ -417,6 +418,19 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
egg_parent->add_child(egg_group);
apply_node_properties(egg_group, node, false);
// Set the collision masks, if present.
CollideMask from_mask = node->get_from_collide_mask();
CollideMask into_mask = node->get_into_collide_mask();
if (from_mask != CollisionNode::get_default_collide_mask() ||
into_mask != CollisionNode::get_default_collide_mask()) {
if (from_mask == into_mask) {
egg_group->set_collide_mask(into_mask);
} else {
egg_group->set_from_collide_mask(from_mask);
egg_group->set_into_collide_mask(into_mask);
}
}
// turn it into a collision node
egg_group->set_collide_flags(EggGroup::CF_descend);
@ -939,6 +953,14 @@ apply_node_properties(EggGroup *egg_group, PandaNode *node, bool allow_backstage
}
}
if (node->is_of_type(UvScrollNode::get_class_type())) {
const UvScrollNode *scroll_node = (const UvScrollNode *)node;
egg_group->set_scroll_u(scroll_node->get_u_speed());
egg_group->set_scroll_v(scroll_node->get_v_speed());
egg_group->set_scroll_w(scroll_node->get_w_speed());
egg_group->set_scroll_r(scroll_node->get_r_speed());
}
const RenderEffects *effects = node->get_effects();
const RenderEffect *effect = effects->get_effect(BillboardEffect::get_class_type());
if (effect != (RenderEffect *)NULL) {