Aby dynamické akcie fungovali vo všetkých úrovniach detailu, bolo potrebné
implementáciu prototypu snehuliaka z minulej úlohy úplne prepracovať
do jediného prototypu SNOWMAN
s priamo vloženými LOD uzlami
pre jednotlivé časti tela. Súčasne boli do tohoto prototypu zjednotené
mužské aj ženské prvky a prototypy SNOWMALE
a
SNOWFEMALE
len zavolajú SNOWMAN
a s príslušnými
prepínačmi.
PROTO SNOWMAN [ field SFInt32 lod 1 # lod ON/OFF field SFInt32 pot 0 # none/cylindrical/conical pot field SFInt32 dmb 0 # dumb-bells OFF/ON field SFInt32 but 0 # buttons OFF/ON field SFInt32 brs 0 # breast OFF/ON exposedField SFColor pot_color .1 .15 .5 exposedField MFString pot_texture "img/granitetex.png" ] {...}Snehuliak-muž má na hlave modrý valcový hrniec, v rukách činky a na bruchu gombíky.
PROTO SNOWMALE [ field SFInt32 lod 1 exposedField SFColor pot_color .1 .15 .5 exposedField MFString pot_texture "img/granitetex.png" ] { SNOWMAN { lod IS lod, dmb 1, but 1, brs 0, pot 1, pot_color IS pot_color, pot_texture IS pot_texture } }Snehuliačka žena je menšia, má fialový kužeľový hrniec a prsia. Navyše má v bruchu maličkého snehuliaka (ktorý je v dôsledku prototypu tiež interaktívny). Ten však už nemôže byť tiež prvkom v prototype
SNOWMAN
, pretože
by sa odvolával sám na seba.
PROTO SNOWFEMALE [ field SFInt32 lod 1 exposedField SFColor pot_color .62 .23 .5 exposedField MFString pot_texture "img/granitetex.png" ] { ... SNOWMAN { lod IS lod, dmb 0, but 0, brs 1, pot 2, pot_color IS pot_color, pot_texture IS pot_texture } # baby Transform { ... children SNOWMAN { but 1 } } }Použitím priamo prototypu
SNOWMAN
sa dá priamo prepínačmi
dosiahnuť akákoľvek kombinácia mužských a ženských prvkov (viď. malý
snehuliak).
Tieto tri prototypy sú vytvorené v pomocnom súbore
snowman_proto.wrl
a používané v aplikačnom súbore
snowman.wrl
popisujúceho už časť sveta, pomocou
EXTERNPROTO
.