REFSKRIPT

; $VER: obj2prt.men 1.01 (07.02.98)
;
; Author   : stephan.bielmann@rega-sense.ch
;
; Comments : Converts an object into a particle-object
;            simple by setting on each point of the source
;            a particle.
;

INIT


;Get all needed parameters

GET_GEO_OBJ        Quelle
RETURN_IF_ABBRUCH  AB
GET_RESULT         vsource

GET_JA_NEIN        Nur die Selektierten Punkte ?
GET_RESULT         vresult

IF_STR_EQUAL_GOTO  vresult NEIN allpoints
SET_VAR            vallpoints 0
GEO_N_SELECTED_PTS vsource
GET_RESULT         vnpts
GEO_NPTS           vsource
GET_RESULT         vanpts
IF_NOT_EQUAL_GOTO  vnpts 0 nextparam

MELDUNG            vsource hat keine Punkte selektiert

GOTO               terminate

>allpoints:
SET_VAR            vallpoints 1
GEO_NPTS           vsource
GET_RESULT         vnpts
GEO_NPTS           vsource
GET_RESULT         vanpts
>nextparam:

GET_STRING         Name des Objektes
RETURN_IF_ABBRUCH  AB
GET_RESULT         vname

GET_REAL           Minimale Stärke der Partikel
RETURN_IF_ABBRUCH  AB
GET_RESULT         vstrongmin

GET_REAL           Maximale Stärke der Partikel
RETURN_IF_ABBRUCH  AB
GET_RESULT         vstrongmax

GET_REAL           Minimaler Radius der Partikel
RETURN_IF_ABBRUCH  AB
GET_RESULT         vradiusmin

GET_REAL           Maximaler Radius der Partikel
RETURN_IF_ABBRUCH  AB
GET_RESULT         vradiusmax

GET_REAL           Minimaler Rotanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vrmin

GET_REAL           Maximaler Rotanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vrmax

GET_REAL           Minimaler Grünanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vgmin

GET_REAL           Maximaler Grünanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vgmax

GET_REAL           Minimaler Blauanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vbmin

GET_REAL           Maximaler Blauanteil (0..255)
RETURN_IF_ABBRUCH  AB
GET_RESULT         vbmax

;Get the source object postition

GEO_GET_POS vsource
GET_RESULT  vxyz
COPY_WORD   vxyz 1
GET_RESULT  vx
COPY_WORD   vxyz 2
GET_RESULT  vy
COPY_WORD   vxyz 3
GET_RESULT  vz


;Creating the particle object

OBJ_NEW       vname 27
GET_RESULT    vprtobj
GEO_SET       vprtobj vx vy vz

PRT_NEW_PTS   vprtobj vnpts
PRT_SET_RANGE vprtobj 0
PRT_SET_SIZE  vprtobj vstrongmin vradiusmin vstrongmax vradiusmax


;Setting the postitions of the particles

SET_VAR i 0
SET_VAR j 0
>forschleifei:

IF_EQUAL_GOTO i vanpts endfori

IF_EQUAL_GOTO        vallpoints  1    noselection
GEO_PT_IS_SELECTED   vsource     i
GET_RESULT           visselected
IF_STR_EQUAL_GOTO    visselected NEIN nextparticle

>noselection:

GEO_GET_PT    vsource i
GET_RESULT    vxyz
COPY_WORD     vxyz 1
GET_RESULT    vx
COPY_WORD     vxyz 2
GET_RESULT    vy
COPY_WORD     vxyz 3
GET_RESULT    vz

PRT_SET_RANGE vprtobj 1 i  i
PRT_SET_POS   vprtobj 0 vx vy vz

PRINT j von vnpts Partikeln erstellt

ADD j 1
GET_RESULT j

>nextparticle:

ADD i 1
GET_RESULT i

GOTO forschleifei
>endfori:


;Changing the entered colors to real particle colors

DIV        vrmin 255
GET_RESULT vrmin
DIV        vrmax 255
GET_RESULT vrmax

DIV        vgmin 255
GET_RESULT vgmin
DIV        vgmax 255
GET_RESULT vgmax

DIV        vbmin 255
GET_RESULT vbmin
DIV        vbmax 255
GET_RESULT vbmax


;Setting the color of the particles

PRT_SET_RANGE vprtobj 0
PRT_SET_COL   vprtobj vrmin vgmin vbmin vrmax vgmax vbmax


;Add the object to the PKL

PKL_ADD vprtobj


;Informing the user

PRINT Objekt vname erstellt

;Terminating

>terminate:
RETURN OK
