2
0
David Rose 17 жил өмнө
parent
commit
8a180e8d09

+ 4 - 1
panda/src/configfiles/panda.prc.pp

@@ -62,9 +62,12 @@ egg-object-type-indexed         <Scalar> 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           <Model> { 1 }
 egg-object-type-dcs             <DCS> { 1 }
+egg-object-type-notouch         <DCS> { no_touch }
 
 # The following define various kinds of collision geometry.  These
 # mark the geometry at this level and below as invisible collision

+ 4 - 0
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";
   }

+ 2 - 1
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.

+ 4 - 0
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);