home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / gfx / Real3D-Tools / Particle / crepart.rpl next >
Text File  |  1993-11-23  |  3KB  |  126 lines

  1.  
  2. ?& CREPART NOT ?IF
  3. 1 CONSTANT CREPART
  4.  
  5. FVARIABLE Xvel
  6. FVARIABLE Yvel
  7. FVARIABLE Zvel
  8. FVARIABLE Xvel2
  9. FVARIABLE Yvel2
  10. FVARIABLE Zvel2
  11. FVARIABLE Spin
  12. FVARIABLE Quantity
  13. VARIABLE aPARTICLE
  14.  
  15. : GetRand
  16.         Xvel F@ RANDOM F* Xvel2 F@ RANDOM F* F-
  17.         Yvel F@ RANDOM F* Yvel2 F@ RANDOM F* F-
  18.         Zvel F@ RANDOM F* Zvel2 F@ RANDOM F* F-
  19. ;
  20. : GetRand2
  21.         Spin F@ RANDOM F* Spin F@ RANDOM F* F-
  22.         Spin F@ RANDOM F* Spin F@ RANDOM F* F-
  23.         Spin F@ RANDOM F* Spin F@ RANDOM F* F-
  24. ;
  25.  
  26. : .crepart
  27.        O_GETSEL
  28.        "VVEL" O_FINDTAG DUP    ( check VVEL tag isn't already there )
  29.        IF
  30.                "OK" "Please Remove existing VVEL TAG"
  31.                GET_KEY DROP
  32.                EXIT
  33.        ELSE
  34.        DROP
  35.        ENDIF
  36.        O_GETSEL
  37.        "VSPI" O_FINDTAG DUP    ( check VVEL tag isn't already there )
  38.        IF
  39.                "OK" "Please Remove existing VSPI TAG"
  40.                GET_KEY DROP
  41.                EXIT
  42.        ELSE
  43.        DROP
  44.        ENDIF
  45.        O_GETSEL
  46.        0 = IF              ( check for no items selected )
  47.         "OK" "No objects selected" GET_KEY DROP
  48.         EXIT
  49.         ELSE
  50.         DROP
  51.         ENDIF
  52.         O_GETSEL
  53.         2 DEPTH > IF            ( check only one object selected )
  54.                 "Continue" "More than one object selected - Aborted"
  55.                 GET_KEY DROP
  56.                 EXIT
  57.         ELSE
  58.                 DROP
  59.         ENDIF
  60.         1.00 Xvel F!
  61.         Xvel "1st X Velocity?" GET_FLT
  62.         NOT IF
  63.                 EXIT    ( user aborted )
  64.         ENDIF
  65.         1.00 Xvel2 F!
  66.         Xvel2 "2nd X Velocity?" GET_FLT
  67.         NOT IF
  68.                 EXIT    ( user aborted )
  69.         ENDIF
  70.         1.00 Yvel F!
  71.         Yvel "1st Y Velocity?" GET_FLT
  72.         NOT IF
  73.                 EXIT    ( user aborted )
  74.         ENDIF
  75.         1.00 Yvel2 F!
  76.         Yvel2 "2nd Y Velocity?" GET_FLT
  77.         NOT IF
  78.                 EXIT    ( user aborted )
  79.         ENDIF
  80.         1.00 Zvel F!
  81.         Zvel "1st Z Velocity?" GET_FLT
  82.         NOT IF
  83.                 EXIT    ( user aborted )
  84.         ENDIF
  85.         1.00 Zvel2 F!
  86.         Zvel2 "2nd Z Velocity?" GET_FLT
  87.         NOT IF
  88.                 EXIT    ( user aborted )
  89.         ENDIF
  90.         10.00 Spin F!
  91.         Spin "Enter Spin Factor" GET_FLT
  92.         NOT IF
  93.                 EXIT    ( user aborted )
  94.         ENDIF
  95.         50.00 Quantity F!
  96.         Quantity "How many particles?" GET_FLT
  97.         NOT IF
  98.                 EXIT    ( user aborted )
  99.         ENDIF
  100.         Quantity F@ 1 F+ Quantity F!
  101.         O_GETSEL
  102.         aPARTICLE !
  103.         iLOCK_EXCL O_LOCK
  104.         Quantity F@ 1 DO        ( Start loop from 1 to Quantity )
  105.         0 aPARTICLE @
  106.         O_GETCURR
  107.         0
  108.         M_DUPLICATE             ( Duplicate object )
  109.         O_GETSEL
  110.         "CEND"                  ( define TAG )
  111.         GetRand "VVEL" O_CREATAG DROP
  112.         DROP
  113.         O_GETSEL
  114.         "CEND"                  ( define TAG )
  115.         GetRand2 "VSPI" O_CREATAG DROP
  116.         DROP
  117.         LOOP
  118.         0 aPARTICLE @
  119.         O_DELETE
  120.         iLOCK_REMOVE O_LOCK
  121.         DROP
  122.         DROP
  123.         DROP
  124.         lWR_ALL
  125. ;
  126. ?ENDIF