mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
Fix bug: bam2egg ignores non-GeomNodes directly under Character node
This result in some animated models only properly exporting the skeleton without geometry if the geometry is under non-GeomNodes. Fixes LP https://bugs.launchpad.net/panda3d/+bug/1617834
This commit is contained in:
parent
4ec5b77678
commit
a9345ad633
@ -92,7 +92,7 @@ add_node(PandaNode *node) {
|
|||||||
_data->add_child(_vpool);
|
_data->add_child(_vpool);
|
||||||
|
|
||||||
NodePath root(node);
|
NodePath root(node);
|
||||||
convert_node(WorkingNodePath(root), _data, false);
|
convert_node(WorkingNodePath(root), _data, false, NULL);
|
||||||
|
|
||||||
// Remove the vertex pool if it has no vertices.
|
// Remove the vertex pool if it has no vertices.
|
||||||
if (_vpool->empty()) {
|
if (_vpool->empty()) {
|
||||||
@ -107,22 +107,22 @@ add_node(PandaNode *node) {
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
||||||
bool has_decal) {
|
bool has_decal, CharacterJointMap *joint_map) {
|
||||||
PandaNode *node = node_path.node();
|
PandaNode *node = node_path.node();
|
||||||
if (node->is_geom_node()) {
|
if (node->is_geom_node()) {
|
||||||
convert_geom_node(DCAST(GeomNode, node), node_path, egg_parent, has_decal);
|
convert_geom_node(DCAST(GeomNode, node), node_path, egg_parent, has_decal, joint_map);
|
||||||
|
|
||||||
} else if (node->is_of_type(LODNode::get_class_type())) {
|
} else if (node->is_of_type(LODNode::get_class_type())) {
|
||||||
convert_lod_node(DCAST(LODNode, node), node_path, egg_parent, has_decal);
|
convert_lod_node(DCAST(LODNode, node), node_path, egg_parent, has_decal, joint_map);
|
||||||
|
|
||||||
} else if (node->is_of_type(SequenceNode::get_class_type())) {
|
} else if (node->is_of_type(SequenceNode::get_class_type())) {
|
||||||
convert_sequence_node(DCAST(SequenceNode, node), node_path, egg_parent, has_decal);
|
convert_sequence_node(DCAST(SequenceNode, node), node_path, egg_parent, has_decal, joint_map);
|
||||||
|
|
||||||
} else if (node->is_of_type(SwitchNode::get_class_type())) {
|
} else if (node->is_of_type(SwitchNode::get_class_type())) {
|
||||||
convert_switch_node(DCAST(SwitchNode, node), node_path, egg_parent, has_decal);
|
convert_switch_node(DCAST(SwitchNode, node), node_path, egg_parent, has_decal, joint_map);
|
||||||
|
|
||||||
} else if (node->is_of_type(CollisionNode::get_class_type())) {
|
} else if (node->is_of_type(CollisionNode::get_class_type())) {
|
||||||
convert_collision_node(DCAST(CollisionNode, node), node_path, egg_parent, has_decal);
|
convert_collision_node(DCAST(CollisionNode, node), node_path, egg_parent, has_decal, joint_map);
|
||||||
|
|
||||||
} else if (node->is_of_type(AnimBundleNode::get_class_type())) {
|
} else if (node->is_of_type(AnimBundleNode::get_class_type())) {
|
||||||
convert_anim_node(DCAST(AnimBundleNode, node), node_path, egg_parent, has_decal);
|
convert_anim_node(DCAST(AnimBundleNode, node), node_path, egg_parent, has_decal);
|
||||||
@ -136,7 +136,7 @@ convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
|||||||
egg_parent->add_child(egg_group);
|
egg_parent->add_child(egg_group);
|
||||||
apply_node_properties(egg_group, node);
|
apply_node_properties(egg_group, node);
|
||||||
|
|
||||||
recurse_nodes(node_path, egg_group, has_decal);
|
recurse_nodes(node_path, egg_group, has_decal, joint_map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,7 +145,8 @@ convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal) {
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map) {
|
||||||
// An LOD node gets converted to an ordinary EggGroup, but we apply the
|
// An LOD node gets converted to an ordinary EggGroup, but we apply the
|
||||||
// appropriate switch conditions to each of our children.
|
// appropriate switch conditions to each of our children.
|
||||||
EggGroup *egg_group = new EggGroup(node->get_name());
|
EggGroup *egg_group = new EggGroup(node->get_name());
|
||||||
@ -162,7 +163,7 @@ convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
|||||||
|
|
||||||
// Convert just this one node to an EggGroup.
|
// Convert just this one node to an EggGroup.
|
||||||
PT(EggGroup) next_group = new EggGroup;
|
PT(EggGroup) next_group = new EggGroup;
|
||||||
convert_node(WorkingNodePath(node_path, child), next_group, has_decal);
|
convert_node(WorkingNodePath(node_path, child), next_group, has_decal, joint_map);
|
||||||
|
|
||||||
if (next_group->size() == 1) {
|
if (next_group->size() == 1) {
|
||||||
// If we have exactly one child, and that child is an EggGroup,
|
// If we have exactly one child, and that child is an EggGroup,
|
||||||
@ -190,7 +191,8 @@ convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal) {
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map) {
|
||||||
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
||||||
// appropriate switch attributes to turn it into a sequence
|
// appropriate switch attributes to turn it into a sequence
|
||||||
EggGroup *egg_group = new EggGroup(node->get_name());
|
EggGroup *egg_group = new EggGroup(node->get_name());
|
||||||
@ -208,7 +210,7 @@ convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
|||||||
|
|
||||||
// Convert just this one node to an EggGroup.
|
// Convert just this one node to an EggGroup.
|
||||||
PT(EggGroup) next_group = new EggGroup;
|
PT(EggGroup) next_group = new EggGroup;
|
||||||
convert_node(WorkingNodePath(node_path, child), next_group, has_decal);
|
convert_node(WorkingNodePath(node_path, child), next_group, has_decal, joint_map);
|
||||||
|
|
||||||
egg_group->add_child(next_group.p());
|
egg_group->add_child(next_group.p());
|
||||||
}
|
}
|
||||||
@ -220,7 +222,8 @@ convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_switch_node(SwitchNode *node, const WorkingNodePath &node_path,
|
convert_switch_node(SwitchNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal) {
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map) {
|
||||||
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
||||||
// appropriate switch attributes to turn it into a sequence
|
// appropriate switch attributes to turn it into a sequence
|
||||||
EggGroup *egg_group = new EggGroup(node->get_name());
|
EggGroup *egg_group = new EggGroup(node->get_name());
|
||||||
@ -237,7 +240,7 @@ convert_switch_node(SwitchNode *node, const WorkingNodePath &node_path,
|
|||||||
|
|
||||||
// Convert just this one node to an EggGroup.
|
// Convert just this one node to an EggGroup.
|
||||||
PT(EggGroup) next_group = new EggGroup;
|
PT(EggGroup) next_group = new EggGroup;
|
||||||
convert_node(WorkingNodePath(node_path, child), next_group, has_decal);
|
convert_node(WorkingNodePath(node_path, child), next_group, has_decal, joint_map);
|
||||||
|
|
||||||
egg_group->add_child(next_group.p());
|
egg_group->add_child(next_group.p());
|
||||||
}
|
}
|
||||||
@ -314,7 +317,7 @@ convert_anim_node(AnimBundleNode *node, const WorkingNodePath &node_path,
|
|||||||
* structure.
|
* structure.
|
||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, CharacterJointMap *jointMap) {
|
convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, CharacterJointMap *joint_map) {
|
||||||
int num_children = bundleNode->get_num_children();
|
int num_children = bundleNode->get_num_children();
|
||||||
|
|
||||||
EggGroupNode *joint_group = egg_parent;
|
EggGroupNode *joint_group = egg_parent;
|
||||||
@ -329,9 +332,9 @@ convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, Charac
|
|||||||
joint->set_group_type(EggGroup::GT_joint);
|
joint->set_group_type(EggGroup::GT_joint);
|
||||||
joint_group = joint;
|
joint_group = joint;
|
||||||
egg_parent->add_child(joint_group);
|
egg_parent->add_child(joint_group);
|
||||||
if (jointMap!=NULL) {
|
if (joint_map != NULL) {
|
||||||
CharacterJointMap::iterator mi = jointMap->find(character_joint);
|
CharacterJointMap::iterator mi = joint_map->find(character_joint);
|
||||||
if (mi != jointMap->end()) {
|
if (mi != joint_map->end()) {
|
||||||
pvector<pair<EggVertex*,PN_stdfloat> > &joint_vertices = (*mi).second;
|
pvector<pair<EggVertex*,PN_stdfloat> > &joint_vertices = (*mi).second;
|
||||||
pvector<pair<EggVertex*,PN_stdfloat> >::const_iterator vi;
|
pvector<pair<EggVertex*,PN_stdfloat> >::const_iterator vi;
|
||||||
for (vi = joint_vertices.begin(); vi != joint_vertices.end(); ++vi) {
|
for (vi = joint_vertices.begin(); vi != joint_vertices.end(); ++vi) {
|
||||||
@ -343,7 +346,7 @@ convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, Charac
|
|||||||
|
|
||||||
for (int i = 0; i < num_children ; i++) {
|
for (int i = 0; i < num_children ; i++) {
|
||||||
PartGroup *partGroup= bundleNode->get_child(i);
|
PartGroup *partGroup= bundleNode->get_child(i);
|
||||||
convert_character_bundle(partGroup, joint_group, jointMap);
|
convert_character_bundle(partGroup, joint_group, joint_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -353,7 +356,7 @@ convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, Charac
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_character_node(Character *node, const WorkingNodePath &node_path,
|
convert_character_node(Character *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal) {
|
EggGroupNode *egg_parent, bool has_decal) {
|
||||||
|
|
||||||
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
||||||
// appropriate switch attributes to turn it into a sequence
|
// appropriate switch attributes to turn it into a sequence
|
||||||
@ -362,26 +365,16 @@ convert_character_node(Character *node, const WorkingNodePath &node_path,
|
|||||||
egg_parent->add_child(egg_group);
|
egg_parent->add_child(egg_group);
|
||||||
apply_node_properties(egg_group, node);
|
apply_node_properties(egg_group, node);
|
||||||
|
|
||||||
CharacterJointMap jointMap;
|
CharacterJointMap joint_map;
|
||||||
|
recurse_nodes(node_path, egg_group, has_decal, &joint_map);
|
||||||
|
|
||||||
// turn it into a switch.. egg_group->set_switch_flag(true);
|
// turn it into a switch.. egg_group->set_switch_flag(true);
|
||||||
|
|
||||||
int num_children = node->get_num_children();
|
|
||||||
int num_bundles = node->get_num_bundles();
|
int num_bundles = node->get_num_bundles();
|
||||||
|
for (int i = 0; i < num_bundles; ++i) {
|
||||||
for (int i = 0; i < num_children; i++) {
|
PartBundle *bundle = node->get_bundle(i);
|
||||||
PandaNode *child = node->get_child(i);
|
convert_character_bundle(bundle, egg_group, &joint_map);
|
||||||
|
|
||||||
if (child->is_geom_node()) {
|
|
||||||
convert_geom_node(DCAST(GeomNode, child), WorkingNodePath(node_path, child), egg_group, has_decal, &jointMap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < num_bundles ; i++) {
|
|
||||||
PartBundle *bundle= node->get_bundle(i);
|
|
||||||
convert_character_bundle(bundle, egg_group, &jointMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -390,7 +383,8 @@ convert_character_node(Character *node, const WorkingNodePath &node_path,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal) {
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map) {
|
||||||
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
// A sequence node gets converted to an ordinary EggGroup, we only apply the
|
||||||
// appropriate switch attributes to turn it into a sequence
|
// appropriate switch attributes to turn it into a sequence
|
||||||
EggGroup *egg_group = new EggGroup(node->get_name());
|
EggGroup *egg_group = new EggGroup(node->get_name());
|
||||||
@ -510,7 +504,7 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// recurse over children - hm. do I need to do this?
|
// recurse over children - hm. do I need to do this?
|
||||||
recurse_nodes(node_path, egg_group, has_decal);
|
recurse_nodes(node_path, egg_group, has_decal, joint_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -518,7 +512,7 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
convert_geom_node(GeomNode *node, const WorkingNodePath &node_path,
|
convert_geom_node(GeomNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal, CharacterJointMap *jointMap) {
|
EggGroupNode *egg_parent, bool has_decal, CharacterJointMap *joint_map) {
|
||||||
PT(EggGroup) egg_group = new EggGroup(node->get_name());
|
PT(EggGroup) egg_group = new EggGroup(node->get_name());
|
||||||
bool fancy_attributes = apply_node_properties(egg_group, node);
|
bool fancy_attributes = apply_node_properties(egg_group, node);
|
||||||
|
|
||||||
@ -558,11 +552,11 @@ convert_geom_node(GeomNode *node, const WorkingNodePath &node_path,
|
|||||||
CPT(GeomVertexData) vdata = geom->get_vertex_data();
|
CPT(GeomVertexData) vdata = geom->get_vertex_data();
|
||||||
// vdata = vdata->animate_vertices(true, Thread::get_current_thread());
|
// vdata = vdata->animate_vertices(true, Thread::get_current_thread());
|
||||||
convert_primitive(vdata, simple, geom_state,
|
convert_primitive(vdata, simple, geom_state,
|
||||||
net_mat, egg_parent, jointMap);
|
net_mat, egg_parent, joint_map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
recurse_nodes(node_path, egg_parent, has_decal);
|
recurse_nodes(node_path, egg_parent, has_decal, joint_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -573,7 +567,7 @@ convert_primitive(const GeomVertexData *vertex_data,
|
|||||||
const GeomPrimitive *primitive,
|
const GeomPrimitive *primitive,
|
||||||
const RenderState *net_state,
|
const RenderState *net_state,
|
||||||
const LMatrix4 &net_mat, EggGroupNode *egg_parent,
|
const LMatrix4 &net_mat, EggGroupNode *egg_parent,
|
||||||
CharacterJointMap *jointMap) {
|
CharacterJointMap *joint_map) {
|
||||||
GeomVertexReader reader(vertex_data);
|
GeomVertexReader reader(vertex_data);
|
||||||
|
|
||||||
// Check for a color scale.
|
// Check for a color scale.
|
||||||
@ -811,8 +805,8 @@ convert_primitive(const GeomVertexData *vertex_data,
|
|||||||
|
|
||||||
EggVertex *new_egg_vert = _vpool->create_unique_vertex(egg_vert);
|
EggVertex *new_egg_vert = _vpool->create_unique_vertex(egg_vert);
|
||||||
|
|
||||||
if ((vertex_data->has_column(InternalName::get_transform_blend())) &&
|
if (vertex_data->has_column(InternalName::get_transform_blend()) &&
|
||||||
(jointMap!=NULL) && (transformBlendTable!=NULL)) {
|
joint_map != NULL && transformBlendTable != NULL) {
|
||||||
reader.set_column(InternalName::get_transform_blend());
|
reader.set_column(InternalName::get_transform_blend());
|
||||||
int idx = reader.get_data1i();
|
int idx = reader.get_data1i();
|
||||||
const TransformBlend &blend = transformBlendTable->get_blend(idx);
|
const TransformBlend &blend = transformBlendTable->get_blend(idx);
|
||||||
@ -824,9 +818,9 @@ convert_primitive(const GeomVertexData *vertex_data,
|
|||||||
if (vertex_transform->is_of_type(JointVertexTransform::get_class_type())) {
|
if (vertex_transform->is_of_type(JointVertexTransform::get_class_type())) {
|
||||||
const JointVertexTransform *joint_vertex_transform = DCAST(const JointVertexTransform, vertex_transform);
|
const JointVertexTransform *joint_vertex_transform = DCAST(const JointVertexTransform, vertex_transform);
|
||||||
|
|
||||||
CharacterJointMap::iterator mi = jointMap->find(joint_vertex_transform->get_joint());
|
CharacterJointMap::iterator mi = joint_map->find(joint_vertex_transform->get_joint());
|
||||||
if (mi == jointMap->end()) {
|
if (mi == joint_map->end()) {
|
||||||
mi = jointMap->insert(CharacterJointMap::value_type(joint_vertex_transform->get_joint(), pvector<pair<EggVertex*,PN_stdfloat> >())).first;
|
mi = joint_map->insert(CharacterJointMap::value_type(joint_vertex_transform->get_joint(), pvector<pair<EggVertex*,PN_stdfloat> >())).first;
|
||||||
}
|
}
|
||||||
pvector<pair<EggVertex*,PN_stdfloat> > &joint_vertices = (*mi).second;
|
pvector<pair<EggVertex*,PN_stdfloat> > &joint_vertices = (*mi).second;
|
||||||
joint_vertices.push_back(pair<EggVertex*,PN_stdfloat>(new_egg_vert, weight));
|
joint_vertices.push_back(pair<EggVertex*,PN_stdfloat>(new_egg_vert, weight));
|
||||||
@ -845,13 +839,13 @@ convert_primitive(const GeomVertexData *vertex_data,
|
|||||||
*/
|
*/
|
||||||
void EggSaver::
|
void EggSaver::
|
||||||
recurse_nodes(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
recurse_nodes(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
||||||
bool has_decal) {
|
bool has_decal, CharacterJointMap *joint_map) {
|
||||||
PandaNode *node = node_path.node();
|
PandaNode *node = node_path.node();
|
||||||
int num_children = node->get_num_children();
|
int num_children = node->get_num_children();
|
||||||
|
|
||||||
for (int i = 0; i < num_children; i++) {
|
for (int i = 0; i < num_children; i++) {
|
||||||
PandaNode *child = node->get_child(i);
|
PandaNode *child = node->get_child(i);
|
||||||
convert_node(WorkingNodePath(node_path, child), egg_parent, has_decal);
|
convert_node(WorkingNodePath(node_path, child), egg_parent, has_decal, joint_map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,13 +61,16 @@ private:
|
|||||||
typedef pmap<const CharacterJoint*, pvector<pair<EggVertex*,PN_stdfloat> > > CharacterJointMap;
|
typedef pmap<const CharacterJoint*, pvector<pair<EggVertex*,PN_stdfloat> > > CharacterJointMap;
|
||||||
|
|
||||||
void convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
void convert_node(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
||||||
bool has_decal);
|
bool has_decal, CharacterJointMap *joint_map);
|
||||||
void convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
void convert_lod_node(LODNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map);
|
||||||
void convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
void convert_sequence_node(SequenceNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map);
|
||||||
void convert_switch_node(SwitchNode *node, const WorkingNodePath &node_path,
|
void convert_switch_node(SwitchNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map);
|
||||||
EggGroupNode *convert_animGroup_node(AnimGroup *animGroup, double fps );
|
EggGroupNode *convert_animGroup_node(AnimGroup *animGroup, double fps );
|
||||||
void convert_anim_node(AnimBundleNode *node, const WorkingNodePath &node_path,
|
void convert_anim_node(AnimBundleNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal);
|
||||||
@ -75,7 +78,8 @@ private:
|
|||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal);
|
||||||
void convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, CharacterJointMap *jointMap);
|
void convert_character_bundle(PartGroup *bundleNode, EggGroupNode *egg_parent, CharacterJointMap *jointMap);
|
||||||
void convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
void convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal);
|
EggGroupNode *egg_parent, bool has_decal,
|
||||||
|
CharacterJointMap *joint_map);
|
||||||
void convert_geom_node(GeomNode *node, const WorkingNodePath &node_path,
|
void convert_geom_node(GeomNode *node, const WorkingNodePath &node_path,
|
||||||
EggGroupNode *egg_parent, bool has_decal, CharacterJointMap *jointMap=NULL);
|
EggGroupNode *egg_parent, bool has_decal, CharacterJointMap *jointMap=NULL);
|
||||||
void convert_primitive(const GeomVertexData *vertex_data,
|
void convert_primitive(const GeomVertexData *vertex_data,
|
||||||
@ -85,7 +89,7 @@ private:
|
|||||||
CharacterJointMap *jointMap);
|
CharacterJointMap *jointMap);
|
||||||
|
|
||||||
void recurse_nodes(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
void recurse_nodes(const WorkingNodePath &node_path, EggGroupNode *egg_parent,
|
||||||
bool has_decal);
|
bool has_decal, CharacterJointMap *joint_map);
|
||||||
bool apply_node_properties(EggGroup *egg_group, PandaNode *node, bool allow_backstage = true);
|
bool apply_node_properties(EggGroup *egg_group, PandaNode *node, bool allow_backstage = true);
|
||||||
bool apply_tags(EggGroup *egg_group, PandaNode *node);
|
bool apply_tags(EggGroup *egg_group, PandaNode *node);
|
||||||
bool apply_tag(EggGroup *egg_group, PandaNode *node, const string &tag);
|
bool apply_tag(EggGroup *egg_group, PandaNode *node, const string &tag);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user