multiNodeTransition.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Filename: multiNodeTransition.h
  2. // Created by: drose (23Mar00)
  3. //
  4. ////////////////////////////////////////////////////////////////////
  5. #ifndef MULTINODETRANSITION_H
  6. #define MULTINODETRANSITION_H
  7. #include <pandabase.h>
  8. #include "multiTransition.h"
  9. #include "pointerNameClass.h"
  10. #include "node.h"
  11. #include "pt_Node.h"
  12. #include <pointerTo.h>
  13. class NodeAttribute;
  14. class NodeRelation;
  15. // We need to define this temporary macro so we can pass a parameter
  16. // containing a comma through the macro.
  17. #define MULTITRANSITION_NODE MultiTransition<PT_Node, PointerNameClass>
  18. EXPORT_TEMPLATE_CLASS(EXPCL_PANDA, EXPTP_PANDA, MULTITRANSITION_NODE);
  19. ////////////////////////////////////////////////////////////////////
  20. // Class : MultiNodeTransition
  21. // Description : This is a particular instantiation of MultiTransition
  22. // on PT_Node. It is its own class in an attempt to
  23. // cut down on code bloat; if a particular transition
  24. // wants to be a MultiTransition on some kind of
  25. // Node, it should inherit from MultiNodeTransition
  26. // (rather than instantiating a whole new kind of
  27. // MultiTransition).
  28. ////////////////////////////////////////////////////////////////////
  29. class EXPCL_PANDA MultiNodeTransition :
  30. public MultiTransition<PT_Node, PointerNameClass> {
  31. protected:
  32. INLINE_GRAPH MultiNodeTransition() {};
  33. INLINE_GRAPH MultiNodeTransition(const MultiNodeTransition &copy) :
  34. MultiTransition<PT_Node, PointerNameClass>(copy) {};
  35. INLINE_GRAPH void operator = (const MultiNodeTransition &copy)
  36. {MultiTransition<PT_Node, PointerNameClass>::operator = (copy);};
  37. public:
  38. virtual TypeHandle get_type() const {
  39. return get_class_type();
  40. }
  41. virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
  42. static TypeHandle get_class_type() {
  43. return _type_handle;
  44. }
  45. static void init_type() {
  46. MultiTransition<PT_Node, PointerNameClass>::init_type();
  47. register_type(_type_handle, "MultiNodeTransition",
  48. MultiTransition<PT_Node, PointerNameClass>::
  49. get_class_type());
  50. }
  51. private:
  52. static TypeHandle _type_handle;
  53. };
  54. #endif