direct.dc 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // This is a sample dc file for some of the classes defined within the
  2. // direct source tree. It is suggested that you copy this file into
  3. // your own project (or load it from the direct source tree) and build
  4. // on it with your own dc file for your own classes.
  5. keyword broadcast;
  6. keyword ram;
  7. keyword p2p;
  8. from direct.distributed import DistributedObject/AI
  9. from direct.distributed import TimeManager/AI
  10. from direct.distributed import DistributedNode/AI
  11. from direct.distributed import DistributedSmoothNode/AI
  12. struct BarrierData {
  13. uint16 context;
  14. string name;
  15. uint32 avIds[];
  16. };
  17. // The most fundamental class
  18. dclass DistributedObject {
  19. // These are used to support DistributedObjectAI.beginBarrier() and
  20. // the matching DistributedObject.doneBarrier(). If you don't call
  21. // these functions, you don't care about these distributed methods.
  22. // (Actually, you probably don't care anyway.)
  23. setBarrierData(BarrierData data[]) broadcast ram;
  24. setBarrierReady(uint16 context);
  25. setLocation(uint32 parentId, uint32 zoneId) broadcast ram;
  26. };
  27. dclass TimeManager: DistributedObject {
  28. requestServerTime(uint8 context) p2p;
  29. serverTime(uint8 context, int32 timestamp);
  30. };
  31. dclass DistributedNode: DistributedObject {
  32. setX(int16 / 10) broadcast ram;
  33. setY(int16 / 10) broadcast ram;
  34. setZ(int16 / 10) broadcast ram;
  35. setH(int16 % 360 / 10) broadcast ram;
  36. setP(int16 % 360 / 10) broadcast ram;
  37. setR(int16 % 360 / 10) broadcast ram;
  38. setPos: setX, setY, setZ;
  39. setHpr: setH, setP, setR;
  40. setPosHpr: setX, setY, setZ, setH, setP, setR;
  41. setXY: setX, setY;
  42. setXZ: setX, setZ;
  43. setXYH: setX, setY, setH;
  44. setXYZH: setX, setY, setZ, setH;
  45. };
  46. dclass DistributedSmoothNode: DistributedNode {
  47. // Component set pos and hpr functions.
  48. setComponentL(uint64) broadcast ram;
  49. setComponentX(int16 / 10) broadcast ram;
  50. setComponentY(int16 / 10) broadcast ram;
  51. setComponentZ(int16 / 10) broadcast ram;
  52. setComponentH(int16 % 360 / 10) broadcast ram;
  53. setComponentP(int16 % 360 / 10) broadcast ram;
  54. setComponentR(int16 % 360 / 10) broadcast ram;
  55. setComponentT(int16 timestamp) broadcast ram;
  56. // Composite set pos and hpr functions. These map to combinations
  57. // of one or more of the above components. They all include
  58. // setComponentT(), which must be called last.
  59. setSmStop: setComponentT;
  60. setSmH: setComponentH, setComponentT;
  61. setSmZ: setComponentZ, setComponentT;
  62. setSmXY: setComponentX, setComponentY, setComponentT;
  63. setSmXZ: setComponentX, setComponentZ, setComponentT;
  64. setSmPos: setComponentX, setComponentY, setComponentZ, setComponentT;
  65. setSmHpr: setComponentH, setComponentP, setComponentR, setComponentT;
  66. setSmXYH: setComponentX, setComponentY, setComponentH, setComponentT;
  67. setSmXYZH: setComponentX, setComponentY, setComponentZ, setComponentH, setComponentT;
  68. setSmPosHpr: setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT;
  69. // special update if L (being location, such as zoneId) changes, send everything, intended to
  70. // keep position and 'location' in sync
  71. setSmPosHprL: setComponentL, setComponentX, setComponentY, setComponentZ, setComponentH, setComponentP, setComponentR, setComponentT;
  72. clearSmoothing(int8 bogus) broadcast;
  73. suggestResync(uint32 avId, int16 timestampA, int16 timestampB,
  74. int32 serverTimeSec, uint16 serverTimeUSec,
  75. uint16 / 100 uncertainty);
  76. returnResync(uint32 avId, int16 timestampB,
  77. int32 serverTimeSec, uint16 serverTimeUSec,
  78. uint16 / 100 uncertainty);
  79. };