Prototyp snehuliaka v Úlohe 3

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ú SNOWMANa 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.


Update: J. Semančík, 3. 12. 2002