Funzioni
{
   xyz numberToRgb ( number numero, xyz sogliaMinima, xyz sogliaMassima )
   {
      Result = sogliaMinima

      if( numero == 0) { EXITSUB() }
      numero = MODULO(( numero * 2654435761), 255)

      Result.x = sogliaMinima.x + MODULO( numero * 37, sogliaMassima.x - sogliaMinima.x)
      Result.y = sogliaMinima.y + MODULO( numero * 59, sogliaMassima.y - sogliaMinima.y)
      Result.z = sogliaMinima.z + MODULO( numero * 83, sogliaMassima.z - sogliaMinima.z)
   }

   string logEval ( number idx, string params, string prefisso )
   {
      Result = prefisso
      if( params == "")     { EXITSUB() }

      if( idx != -1
        & IS_IDX(idx) != 1) { EXITSUB() }
      if( idx != -1)        { SET_#(idx) }

      param = ""
      paramNum = 0
      while( strSet( param, strTok( params, ";")) != "")
      {
         // Tipologia esplicitata ( "$": variabile globale, "#": variabile locale)
         paramType = LEFT( param, 1)
         if( paramType == "$"
           | paramType == "#") { param = STRMID( 1, STRLEN(param), param) }
         else                  { paramType = "" }

         if( param == "") { continue }
         inc(paramNum)

         // Tipologia ricavata
         paramIdx = SE_NUM( paramType == "$", -1, idx)
         LISTA_VARIABILI( paramIdx, 0, "evals", param)
         if( evals > 0) { paramType = SE_STR( paramIdx == -1, "$", "#") }
         else           { evals[inc(evals)] = param }

         evalNum = 0
         while( inc(evalNum) <= evals)
         {
            e = evals[evalNum]

            $wk_evalResult = ""
            evalStatus = EVAL( FMT( "$wk_evalResult = {}{}", paramType, e))
            if( evalStatus != 0
              & evalStatus != 1) { $wk_evalResult = "ERRORE" }

            $wk_evalResult = strVal( -1, "wk_evalResult")

            Result = STRCAT( Result, SE_STR( paramNum*evalNum > 1, " - ", ""), e, ": ", $wk_evalResult)
         }
      }
   }
}

Elemento Dbg
{
   Descrizione = "Debug"
   Code        = DBG
   Gruppo      = "DBG"
   Tipo        = ""
   Forma       = Blocco

   Variabili
   {
      Z                ""   100
      Y                ""   100
      X                ""   100

      escluso          ""   1
      FLAG_Debug       ""   0 Implicit

      f_rivestimento   ""   "0.9"

      HIDE             ""   1
   }

   Assegnazioni
   {
      VAR_IMPLICITLY_INHERITS( ATTUALE(), 0)

      escluso = SE_NUM( FLAG_Debug > 0, 0, 1)

      if( ACTION() == 0
        | VAR_EXIST( ATTUALE(), "c_rivestimento") == 0)
      {
         c_rivestimento = numberToRgb( ATTUALE(), [120, 120, 120], [255, 255, 255])
      }
   }

   PuntiNotevoli
   {
      GOSUB punti

      base_so = [0, 0, 0]
      alto_ne = [X, Y, Z]
   }
}
