diff --git a/panda/src/configfiles/panda.prc.pp b/panda/src/configfiles/panda.prc.pp index e31d35e9b5..ce69afa11e 100644 --- a/panda/src/configfiles/panda.prc.pp +++ b/panda/src/configfiles/panda.prc.pp @@ -62,9 +62,12 @@ egg-object-type-indexed indexed { 1 } # indicate nodes that should not be flattened out of the hierarchy # during the conversion process. DCS goes one step further and # indicates that the node's transform is important and should be -# preserved (DCS stands for Dynamic Coordinate System). +# preserved (DCS stands for Dynamic Coordinate System). Notouch is +# even stronger, and means not to do any flattening below the node at +# all. egg-object-type-model { 1 } egg-object-type-dcs { 1 } +egg-object-type-notouch { no_touch } # The following define various kinds of collision geometry. These # mark the geometry at this level and below as invisible collision diff --git a/panda/src/egg/eggGroup.cxx b/panda/src/egg/eggGroup.cxx index 7cafcc6dc7..c2eb764cca 100644 --- a/panda/src/egg/eggGroup.cxx +++ b/panda/src/egg/eggGroup.cxx @@ -899,6 +899,8 @@ string_dcs_type(const string &strval) { return DC_local; } else if (cmp_nocase_uh(strval, "net") == 0) { return DC_net; + } else if (cmp_nocase_uh(strval, "no_touch") == 0) { + return DC_no_touch; } else if (cmp_nocase_uh(strval, "default") == 0) { return DC_default; } else { @@ -1369,6 +1371,8 @@ ostream &operator << (ostream &out, EggGroup::DCSType t) { return out << "local"; case EggGroup::DC_net: return out << "net"; + case EggGroup::DC_no_touch: + return out << "no_touch"; case EggGroup::DC_default: return out << "1"; } diff --git a/panda/src/egg/eggGroup.h b/panda/src/egg/eggGroup.h index 4147dcfcc7..0c8803a666 100644 --- a/panda/src/egg/eggGroup.h +++ b/panda/src/egg/eggGroup.h @@ -59,7 +59,8 @@ PUBLISHED: DC_none = 0x00000010, DC_local = 0x00000020, DC_net = 0x00000030, - DC_default = 0x00000040, + DC_no_touch = 0x00000040, + DC_default = 0x00000050, }; enum BillboardType { // The bits here must correspond to those in Flags, below. diff --git a/panda/src/egg2pg/eggLoader.cxx b/panda/src/egg2pg/eggLoader.cxx index 501f54ceb7..05a31fa566 100644 --- a/panda/src/egg2pg/eggLoader.cxx +++ b/panda/src/egg2pg/eggLoader.cxx @@ -1854,6 +1854,10 @@ make_node(EggGroup *egg_group, PandaNode *parent) { DCAST(ModelNode, node)->set_preserve_transform(ModelNode::PT_net); break; + case EggGroup::DC_no_touch: + DCAST(ModelNode, node)->set_preserve_transform(ModelNode::PT_no_touch); + break; + case EggGroup::DC_local: case EggGroup::DC_default: DCAST(ModelNode, node)->set_preserve_transform(ModelNode::PT_local);