Advertisement
Guest User

Untitled

a guest
Nov 18th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. vector OFFSET = <-0.0, 0.0, 4.0>; // Directional offset for moving the door in x,y,z coordinates
  2. float OPENTIME = 3.5; // Time taken to open door
  3. float CLOSETIME = 3.5; // Time taken to close door
  4.  
  5.  
  6. // ********************************************************************
  7. // Variables
  8. // ********************************************************************
  9.  
  10. vector vPosition;
  11. rotation rRot;
  12. float omega=0.0;
  13. vector vTargetPos;
  14. integer bOpen = FALSE;
  15. integer bMoving = FALSE;
  16.  
  17.  
  18. // ********************************************************************
  19. // Functions
  20. // ********************************************************************
  21.  
  22.  
  23. MoveDoor()
  24. {
  25. if(!bOpen)
  26. { // Initial conditions
  27. bOpen = TRUE;
  28. rRot = llGetRot();
  29. vPosition = llGetPos();
  30.  
  31. // Target Position
  32. omega=OPENTIME/llVecDist(<0,0,0>,OFFSET);
  33. vTargetPos = vPosition+OFFSET*rRot;
  34.  
  35. // Set the timer to cleanup position
  36. llSetTimerEvent(OPENTIME);
  37. }else
  38. {
  39. bOpen = FALSE;
  40.  
  41. // Target Position
  42. omega=CLOSETIME/llVecDist(<0,0,0>,OFFSET);
  43. vTargetPos = vPosition;
  44.  
  45. // Set the timer to cleanup position
  46. llSetTimerEvent(CLOSETIME);
  47. }
  48.  
  49. // Set Door Physical and move it
  50. bMoving = TRUE;
  51. llSetStatus(STATUS_PHANTOM, TRUE);
  52. llSetStatus(STATUS_PHYSICS, TRUE);
  53. llMoveToTarget(vTargetPos,omega);
  54. }
  55.  
  56.  
  57. default
  58. {
  59. state_entry()
  60. { // Initial conditions
  61. rRot = llGetRot();
  62. vPosition = llGetPos();
  63. }
  64.  
  65. touch_start(integer num_detected)
  66. {
  67. MoveDoor();
  68. }
  69.  
  70. timer()
  71. {
  72. // Clean up Position
  73. bMoving = FALSE;
  74. llSetTimerEvent(0.0);
  75. llSetStatus(STATUS_PHYSICS, FALSE);
  76. llSetStatus(STATUS_PHANTOM, FALSE);
  77. llSetPrimitiveParams([ PRIM_POSITION, vTargetPos, PRIM_ROTATION, rRot ]);
  78. }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement