home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2002 April / GSSH42002.iso / EDITOREN / DS / gmax / gmaxinst_1-1.exe / gmaxsetup11.cab / Macro_LightList.mcr < prev    next >
Text File  |  2002-02-13  |  27KB  |  496 lines

  1. -- Light Lister Utility System
  2. -- MacroScripts File
  3. -- Created:  Jan 18 1999
  4. -- Modified: Aug 28 2000
  5. -- Time: 2:00pm
  6. -- Author:Frank DeLise 
  7. -- MacroScript for Listing light sources
  8. --***********************************************************************************************
  9. -- MODIFY THIS AT YOUR OWN RISK
  10.  
  11.  
  12. -- Feb 26, Changed script to use Execute function for speed.
  13. -- Aug 28, Added support for Lights in groups
  14. -- Aug 28 2000 Updates Light Lister to support more controls and selection. -FD
  15.  
  16. MacroScript Light_List 
  17. category:"Lights and Cameras" 
  18. internalcategory:"Lights and Cameras" 
  19. ButtonText:"Light Lister..."
  20. tooltip:"Light Lister Tool" 
  21. Icon:#("Lights",7)
  22. SilentErrors:(Debug != True)
  23. (
  24.  
  25. Global LL_PL, GenerateLightRollouts, LL_Update_Controls, StartLightList, LL_Checked = #(), LL_SelectedOnly, LightListFloater, LightListFloaterSize, LightListFloaterPos, LightListerString, LL_Handle, LL_Progress, LL_ProgRoll, LL_ProgressBar, LL_ProgText, LL_ProgTextB
  26. if LightListFloater == undefined then (LightListFloaterSize = [700,405]; LightListFloaterPos = [0, 10]) Else (LightListFloaterSize = LightListFloater.size; LightListFloaterPos = LightListFloater.pos;)
  27. Global LL_On_State, LL_Color_State, LL_Multiplier_State, LL_Shad_State, LL_Type_State, LL_MapSize_State, LL_Bias_State, LL_Samples_State, LL_Decay_State, LL_DStart_State, LL_AttenS_State, LL_AttenE_State, LL_AttenOn, LL_SetGlobalSettings
  28. Global LL_SetDebugOn = False
  29.  
  30. fn GenerateLightRollouts =
  31.     (
  32.         
  33.         If LL_Progress != undefined then CloseRolloutFloater LL_Progress
  34.         LL_Progress = NewRolloutFloater "Generating Light List..." 300 120
  35.         Rollout LL_Progroll "" SilentErrors:LL_SetDebugOn 
  36.         (
  37.         Label LL_ProgText "Starting Light Lister" Align:#Left OffSet:[0,-5]
  38.         Label LL_ProgTextB "Light:" Align:#Left OffSet:[0,-5]
  39.         ProgressBar LL_ProgressBar width:250 Offset:[0,0] Height:15
  40.         )
  41.         AddRollout LL_ProgRoll LL_Progress
  42.         
  43.         LightListerString = "Global LightListFloater, LLShadTypes, LightListRoll \n" +
  44.         "If LightListFloater != undefined then (CloseRolloutFloater LightListFloater) \n" +
  45.         "LightListFloater = NewRolloutFloater \"Light Lister \" LightListFloaterSize.x LightListFloaterSize.y (LightListFloaterPos.x) (LightListFloaterPos.y) \n" +        
  46.         "Rollout GlobalLightListRoll \"Global Settings\" SilentErrors:LL_SetDebugOn \n" +
  47.         "( \n" + 
  48.         "Fn LL_Update = \n" +
  49.         "( \n" 
  50.         LL_ProgRoll.LL_ProgText.Text = "Getting Light Information           " 
  51.         LL_ProgRoll.LL_ProgressBar.color = red
  52.         For i in 1 to LL_PL.count do
  53.         (
  54.             
  55.                 LightListerString += "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_ON" + i as string + ".Checked = " + "LL_PL[" + i as string + "].on \n " +
  56.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_Color" + i as string + ".Color = " + "LL_PL[" + i as string + "].Color \n " +
  57.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_Mult" + i as string + ".Value = " + "LL_PL[" + i as string + "].Multiplier \n " +
  58.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_Cast" + i as string + ".Checked = " + "LL_PL[" + i as string + "].baseobject.Castshadows \n " +
  59.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_Shad" + i as string + ".Checked = " + "(Not LL_PL[" + i as string + "].Raytracedshadows) \n " +
  60.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_Ray" + i as string + ".Checked = " + "(LL_PL[" + i as string + "].Raytracedshadows) \n " +
  61.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then If LL_PL[" + i as string + "].raytracedshadows == false then (LL_PL[" + i as string + "].mapsize = GlobalLightListRoll.LL_MapSizeG.value) \n " +
  62.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_MapSize" + i as string + ".Value = " + "(If LL_PL[" + i as string + "].raytracedshadows == false then (LL_PL[" + i as string + "].mapSize) Else (0)) \n " +
  63.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_MapBias" + i as string + ".Value = " + "(If LL_PL[" + i as string + "].raytracedshadows == false then (LL_PL[" + i as string + "].mapBias) Else (GlobalLightListRoll.LL_MapBiasG.value)) \n " +
  64.                 "If (Classof LL_PL[" + i as string  + "]) != TargetObject then LightListRoll1" + ".LL_MapSize" + i as string + ".Enabled = (Not(LL_PL[" + i as string + "].raytracedshadows)) \n " 
  65.                 
  66.                 LL_ProgRoll.LL_ProgressBar.value = i * 100 /LL_PL.count    
  67.                 LL_ProgRoll.LL_ProgtextB.text = ("Light:" + LL_PL[i].name as string + "                           ")
  68.                 
  69.         ) 
  70.         LightListerString += ") \n" +
  71.         "Group \"\" \n" + 
  72.          "( \n" + 
  73.         "Label LNameG \"Global Settings\" Align:#left \n" + 
  74.         
  75.         "CheckButton LL_Set_On         \"On\"             Height:20 Align:#Left Across:12                 Checked:(If LL_On_State == undefined then True Else LL_On_State)\n" +
  76.         "CheckButton LL_Set_Color     \"Color\"         Height:20 Align:#Left Offset:[-18,0]             Checked:(If LL_Color_State == undefined then True Else LL_Color_State)\n" +
  77.         "CheckButton LL_Set_Mult     \"Multiplier\"    Height:20 Align:#Left Offset:[-30,0]             Checked:(If LL_Multiplier_State == undefined then True Else LL_Multiplier_State) \n" +
  78.         "CheckButton LL_Set_Shad     \"Shad.\"         Height:20 Align:#Left Offset:[-23,0]             Checked:(If LL_Shad_State == undefined then True Else LL_Shad_State) \n" +
  79.         "CheckButton LL_Set_Type     \"Shad. Type\"    Height:20 Align:#Left Offset:[-32,0]             Checked:(If LL_Type_State == undefined then True Else LL_Type_State) \n" +
  80.         "CheckButton LL_Set_MapSize \"MapSize\"     Height:20 Align:#Left Offset:[-12,0]             Checked:(If LL_MapSize_State == undefined then True Else LL_MapSize_State) \n" +
  81.         "CheckButton LL_Set_Bias     \"Bias\"         Height:20 Align:#Left Offset:[-6,0]             Checked:(If LL_Bias_State == undefined then True Else LL_Bias_State) \n" +
  82.         "CheckButton LL_Set_Samples \"Samples\"     Height:20 Align:#Left Offset:[-22,0]             Checked:(If LL_Samples_State == undefined then True Else LL_Samples_State) \n" +
  83.         "CheckButton LL_Set_Decay     \"Decay\"         Height:20 Align:#Left Offset:[-15,0]             Checked:(If LL_Decay_State == undefined then True Else LL_Decay_State) \n" +
  84.         "CheckButton LL_Set_DStart \"Start\"         Height:20 Width:45 Align:#Left Offset:[-15,0]     Checked:(If LL_DStart_State == undefined then True Else LL_DStart_State) \n" +
  85.         "CheckButton LL_Set_AttenS \"Atten. S.\"     Height:20 Align:#Left Offset:[-15,0]             Checked:(If LL_AttenS_State == undefined then True Else LL_Attens_State) \n" +
  86.         "CheckButton LL_Set_AttenE \"Atten. E.\"     Height:20 Align:#Left Offset:[-5,0]             Checked:(If LL_AttenE_State == undefined then True Else LL_AttenE_State) \n" +
  87.         
  88.         "CheckBox         LL_ONG        \"\"    Align:#Left     Offset:[8,0]         Across:12         Checked:True        \n" +
  89.         "ColorPicker     LL_ColorG     \"\"    Align:#Left     Offset:[-18,-2]     Width:40         color:[255,255,255]    \n" +
  90.         "Spinner         LL_MultG     \"\"    Align:#Left     Offset:[-25,0]        Width:50         Range:[-50000,50000,1]     \n" +
  91.         "CheckBox         LL_CastG     \"\"     Align:#Left     Offset:[-10,0]         Checked:True                        \n " +
  92.         "DropDownList    LL_ShadG    \"\"     Items:#(\"Shadow Maps\",\"Raytraced\") Align:#Left Width:75 offset:[-32,-2] Selection:1 \n" +
  93.         
  94.          "Spinner         LL_MapSizeG \"\"     Align:#Left     Offset:[-10,0]     Width:50 Range:[0,50000,512]     \n" +
  95.         "Spinner         LL_MapBiasG \"\"     Align:#Left     Offset:[-10,0]  Width:40 Range:[0,50000,.5]     \n" +
  96.         "Spinner         LL_SampRngG \"\"     Align:#Left     Offset:[-17,0]  Width:40 Range:[0,50000,4]         \n" +
  97.              
  98.         "DropDownList     LL_DecayG     \"\"     Items:#(\"None\",\"Inverse\", \"Inverse Square\") Align:#Left Width:52 offset:[-15,-2] Selection:1 \n" +
  99.         "Spinner         LL_DStartG     \"\"     width:50     Align:#Left     Offset:[-13,0]     Range:[0,50000,0]     \n" +
  100.                 
  101.         "Spinner LL_AttenStartG \"\" width:50 Align:#Left Offset:[-8,0] Range:[0,50000,40] \n" +
  102.         "Spinner LL_AttenEndG \"\" width:50 Align:#Left Offset:[-0,0] Range:[0,50000,80] \n" +
  103.             
  104.         "Button LL_UpdateBut \"Set All Lights\" Align:#left Across:2 \n" + 
  105.         "Button LL_UpdateButSel \"Set Selected Lights\" Align:#left Offset:[-240,0]\n" + 
  106.         ") \n" + 
  107.          "Group \"\" \n" + 
  108.          "( \n" +     
  109.              "ColorPicker LL_TintG \"Global Tint:\" Offset:[0,-2] width:100 Across:3 Color:LightTintColor \n" +
  110.              "Spinner LL_LevelG \"Global Level:\" Offset:[10,0] Range:[0,50000,LightLevel] width:100 \n" +
  111.              "ColorPicker LL_AmbientG \"Ambient:\" Offset:[0,-2] width:100 Color:ambientColor \n" +
  112.         ") \n" +     
  113.  
  114.         "On LL_Set_On Changed State do (LL_On_State = State) \n"+
  115.         "On LL_Set_Color Changed State do (LL_Color_State = State) \n"+
  116.         "On LL_Set_Mult Changed State do (LL_Multiplier_State = State) \n"+        
  117.         "On LL_Set_Shad Changed State do (LL_Shad_State = State) \n"+
  118.         "On LL_Set_Type Changed State do (LL_Type_State = State) \n"+
  119.         "On LL_Set_MapSize Changed State do (LL_MapSize_State = State) \n"+
  120.         "On LL_Set_Bias Changed State do (LL_Bias_State = State) \n"+
  121.         "On LL_Set_Samples Changed State do (LL_Samples_State = State) \n"+    
  122.         "On LL_Set_Decay Changed State do (LL_Decay_State = State) \n"+
  123.         "On LL_Set_DStart Changed State do (LL_DStart_State = State) \n"+    
  124.         "On LL_Set_AttenS Changed State do (LL_AttenS_State = State) \n"+
  125.         "On LL_Set_AttenE Changed State do (LL_AttenE_State = State) \n"+
  126.     
  127.         "On LL_TintG changed Color do (LightTintColor = Color; redrawViews ())\n " +
  128.         "On LL_LevelG changed Value do (LightLevel = Value; redrawViews ()) \n" +
  129.         "On LL_AmbientG changed Color do (ambientColor = Color; redrawViews () ) \n" +
  130.         
  131.         "FN LL_SetGlobalSettings = \n"+
  132.         "( \n"+
  133.             "If LL_Progress2 != undefined then CloseRolloutFloater LL_Progress2 \n"+
  134.                             "LL_Progress2 = NewRolloutFloater \"Setting All Lights to Global Settings..\" 400 120 \n" +
  135.                              
  136.                             "Rollout LL_Progroll2 \"\" SilentErrors:LL_SetDebugOn \n" +
  137.                              "( \n " +
  138.                                          "Label LL_ProgText2 \"\" Align:#Left Across:1 OffSet:[0,-5] \n"+
  139.                                         "Label LL_ProgText3 \"\" Align:#Left OffSet:[0,-5] \n"+
  140.                                          "ProgressBar LL_ProgressBar2 width:350 Offset:[0,0] Height:15 \n" +
  141.                             ") \n" +
  142.         
  143.                             "AddRollout LL_ProgRoll2 LL_Progress2 \n"+
  144.         
  145.                             "For i in 1 to LL_PL.count do \n" +
  146.                             "(\n" +
  147.                 
  148.                                         "LL_ProgRoll2.LL_ProgText2.text = (\"Light:\" + LL_PL[i].name as string + \"           Light:\" + i as string + \" of \" + LL_PL.count as string + \"                             \")\n" +
  149.                                         "LL_ProgRoll2.LL_ProgressBar2.value = i * 100 /LL_PL.count \n"+
  150.             
  151.                                         "If GlobalLightListRoll.LL_Set_Color.checked == True then \n"+
  152.                                         "( \n" +
  153.                                                         "If (Classof LL_PL[i]) != TargetObject then (LL_ProgRoll2.LL_ProgText3.text = \"Setting: Color                     \")\n" +
  154.                                                         "Sleep .05 \n" +
  155.                                                         "LL_PL[i].color = LL_ColorG.color \n" +
  156.                                         ")\n"+
  157.             
  158.                                         "If GlobalLightListRoll.LL_Set_On.checked == True then \n" +
  159.                                         "( \n" +
  160.                                                         "LL_ProgRoll2.LL_ProgText3.text = \"Setting: On                    \"\n"+
  161.                                                         "Sleep .05\n"+
  162.                                                         "LL_PL[i].on = LL_OnG.State \n"+
  163.                                         ")\n"+
  164.             
  165.                                         "If GlobalLightListRoll.LL_Set_Mult.checked == True then \n"+
  166.                                         "( \n" +
  167.                                                         "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Multiplier             \"\n"+
  168.                                                         "Sleep .05 \n"+
  169.                                                         "LL_PL[i].multiplier = LL_MultG.value \n" +
  170.                                         ")\n"+
  171.             
  172.                         
  173.                                         "If GlobalLightListRoll.LL_Set_Shad.Checked == True then \n"+
  174.                                         "( \n" +
  175.             
  176.                                                         "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Shadows             \"\n" +
  177.                                                         "Sleep .05 \n"+
  178.                                                         "LL_PL[i].baseobject.CastShadows = LL_CastG.state \n" +
  179.                                         ") \n" +
  180.                                         
  181.                                         "If GlobalLightListRoll.LL_Set_Type.Checked == True then \n"+
  182.                                         "( \n" +
  183.     
  184.                                                         "LL_ProgRoll2.LL_ProgText3.text = \"Setting: ShadowType                \"\n "+
  185.                                                         "Sleep .05 \n" +
  186.                                                         "LL_PL[i].raytracedShadows = (If LL_ShadG.selection == 1 then False Else True)\n" +
  187.                                         ") \n" +
  188.                                         
  189.                                         "If GlobalLightListRoll.LL_Set_MapSize.Checked == True then \n"+
  190.                                         "( \n" +
  191.                                                     "If LL_ShadG.selection == 1 then \n" +
  192.                                                     "(\n"+
  193.                                                             "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Map Size           \" \n"+
  194.                                                             "Sleep .05 \n" +
  195.                                                             "LL_PL[i].MapSize = GlobalLightListRoll.LL_MapSizeG.value \n"+
  196.                                                     ")\n"+
  197.                                                     "Else \n" +
  198.                                                     "(\n" +    
  199.                                                     ")\n"+
  200.                                         ") \n" +
  201.                                         
  202.                                         "If GlobalLightListRoll.LL_Set_Samples.Checked == True then \n"+
  203.                                         "( \n" +
  204.                                                     "If LL_ShadG.selection == 1 then \n" +
  205.                                                     "(\n"+
  206.                                                             "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Map Sample Range           \" \n"+
  207.                                                             "Sleep .05 \n" +
  208.                                                             "LL_PL[i].SampleRange = GlobalLightListRoll.LL_SamprngG.value \n"+
  209.                                                     ")\n"+
  210.                                                     "Else \n" +
  211.                                                     "(\n" +    
  212.                                                     ")\n"+
  213.                                         ") \n" +
  214.  
  215.                                         "If GlobalLightListRoll.LL_Set_Decay.Checked == True then \n"+
  216.                                         "( \n" +
  217.                                                     "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Decay Type           \" \n"+
  218.                                                     "Sleep .05 \n" +
  219.                                                     "LL_PL[i].attenDecay = GlobalLightListRoll.LL_DecayG.Selection \n"+
  220.                                                     
  221.                                         ") \n" +
  222.                                         
  223.                                         "If GlobalLightListRoll.LL_Set_DStart.Checked == True then \n"+
  224.                                         "( \n" +
  225.                                                     "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Decay Start Range          \" \n"+
  226.                                                     "Sleep .05 \n" +
  227.                                                     "LL_PL[i].DecayRadius = GlobalLightListRoll.LL_DStartG.value \n"+
  228.                                                     
  229.                                         ") \n" +
  230.                                         "If GlobalLightListRoll.LL_Set_AttenS.Checked == True then \n"+
  231.                                         "( \n" +
  232.                                                     "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Attenuation Start          \" \n"+
  233.                                                     "Sleep .05 \n" +
  234.                                                     "LL_PL[i].FarAttenStart = GlobalLightListRoll.LL_AttenStartG.value \n"+
  235.                                                     
  236.                                         ") \n" +
  237.                                         "If GlobalLightListRoll.LL_Set_AttenE.Checked == True then \n"+
  238.                                         "( \n" +
  239.                                                     "LL_ProgRoll2.LL_ProgText3.text = \"Setting: Attenuation End          \" \n"+
  240.                                                     "Sleep .05 \n" +
  241.                                                     "LL_PL[i].FarAttenEnd = GlobalLightListRoll.LL_AttenEndG.value \n"+
  242.                                                     
  243.                                         ") \n" +
  244.                                                                                 
  245.                                         
  246.                                         "If GlobalLightListRoll.LL_Set_Bias.Checked == True then \n"+
  247.                                         "( \n" +
  248.                                                     "If LL_ShadG.selection == 1 then \n" +
  249.                                                     "(\n"+
  250.                                                             "LL_ProgRoll2.LL_ProgText3.text = \"Setting: MapBias           \" \n"+
  251.                                                             "Sleep .05 \n" +
  252.                                                             "LL_PL[i].mapBias = GlobalLightListRoll.LL_MapBiasG.value \n"+
  253.                                                     ")\n"+
  254.                                                     "Else \n" +
  255.                                                     "(\n" +    
  256.                                                             "LL_ProgRoll2.LL_ProgText3.text = \"Setting: RaytraceBias           \" \n"+
  257.                                                             "Sleep .05 \n" +
  258.                                                             "LL_PL[i].bias = GlobalLightListRoll.LL_mapBiasg.value \n"+
  259.                                                      ")\n"+
  260.                                         ") \n" +
  261.                             ") \n" +
  262.                             "If LL_Progress2 != undefined then CloseRolloutFloater LL_Progress2 \n" +
  263.         
  264.         ")\n" +
  265.         
  266.             "On LL_UpdateBut Pressed do \n" + 
  267.             "( \n" +
  268.                         "If QueryBox \"This will set ALL the lights in your scene to the global settings. Continue? \" Title:\" Light Lister \" Beep:no then \n" +
  269.                         "( \n" +
  270.                                          
  271.                                 "LL_SetGlobalSettings ()\n"+
  272.                                 "Execute LightListerString \n" +
  273.                                          
  274.                         ") \n" +
  275.         
  276.  
  277.             
  278.              ")\n"+
  279.             
  280.             "On LL_UpdateButSel Pressed do \n" + 
  281.             "( \n" +
  282.                         "If QueryBox \"This will set ALL the selected lights in your scene to the global settings. Continue? \" Title:\" Light Lister \" Beep:no then \n" +
  283.                         "( \n" +
  284.                                 
  285.                                 "LL_PLPre = Lights as array \n"+
  286.                                 "LL_PL = #() \n" +
  287.     
  288.                                 "For i in 1 to LL_PLPre.count do \n"+
  289.                                     "( \n"+
  290.                                         "if (Isgrouphead LL_PLPre[i]) == false and (LL_PLPre[i].isSelected) == True then (Append LL_PL LL_PLPre[i]) Else ()\n"+
  291.                                     ")\n"+
  292.  
  293.                                  
  294.                                 "LL_SetGlobalSettings ()\n"+
  295.                                 
  296.                                 "If LL_SelectedOnly != True then \n" +
  297.                                 "( \n"+
  298.                                     "LL_PLPre = Lights as array \n"+
  299.                                     "LL_PL = #() \n" +
  300.     
  301.                                     "For i in 1 to LL_PLPre.count do \n"+
  302.                                     "( \n"+
  303.                                             "if (Isgrouphead LL_PLPre[i]) == false then (Append LL_PL LL_PLPre[i]) Else ()\n"+
  304.                                     ")\n"+
  305.                                 ") \n" +
  306.                                 "GenerateLightRollouts () \n" +
  307.                                 "Execute LightListerString \n" +
  308.                                          
  309.                         ") \n" +
  310.         
  311.  
  312.             
  313.              ")\n"+
  314.             
  315.             
  316.         ")\n"+
  317.          
  318.         "Addrollout GlobalLightListRoll LightListFloater Rolledup:True \n" + 
  319.         "Rollout LightListRoll1" + " \"" + "Lights" + "\" SilentErrors:LL_SetDebugOn \n " +
  320.         "(" +
  321.         "Button LL_Refresh \"Refresh\" Across:2 Align:#Left Height:15 \n" +
  322.         "CheckButton LL_SelOnly \"Show Selected Only\" Checked:(If LL_SelectedOnly == undefined then False else LL_SelectedOnly) Align:#Left Offset:[-260,0] Height:15 \n"
  323.         
  324.         LightListerString += "Label L_Legend \" On    Name     Color  Multiplier    Shad.       Shad. Type         MapSize       Bias      Samples       Decay           Start       Attn.S       Attn.E\" align:#Left \n" 
  325.           
  326.         LL_ProgRoll.LL_ProgText.Text = "Generating Dialog UI           "
  327.         LL_ProgRoll.LL_ProgressBar.color = Yellow     
  328.         For i in 1 to LL_PL.count do
  329.         (
  330.             If (Classof LL_PL[i]) != TargetObject then
  331.             (
  332.  
  333.                  LightListerString +=  "CheckButton LL_Modify" + i as string + " \"\"" + " ToolTip:\"Select and Modify\" Align:#Left Width:8 Across:14 offset:[-10,-2] Checked:LL_PL[" + i as string +"].IsSelected \n " +
  334.                  "CheckBox LL_ON" + i as string + " \"\"" + " Align:#Left offset:[-45,0] Checked:LL_PL[" + i as string +"].on \n" +
  335.                  "EditText LL_Name" + i as string + " \"\"" + " Align:#Left Width:50 offset:[-70,0] Text:LL_PL[" + i as string +"].name \n" +    
  336.                  "ColorPicker LL_Color" + i as string + " \"\"" + " Align:#Left Offset:[-60,-2] width:20 color:LL_PL[" + i as string +"].color \n" +
  337.                  "Spinner LL_Mult" + i as string + " \"\" width:50 Align:#Left Offset:[-80,0] Range:[-50000,50000,LL_PL[" + i as string + "].multiplier] \n" +
  338.                  "CheckBox LL_Cast" + i as string + " \"\" Align:#Left Offset:[-70,0] Checked:LL_PL[" + i as string + "].baseobject.castshadows \n " +
  339.                  "DropDownList LL_Shad" + i as string + " \"\" Items:#(\"Shadow Maps\",\"Raytraced\") Align:#Left Width:95 offset:[-90,-2] Selection:(if LL_PL[" + i as string + "].RaytracedShadows == False then 1 else 2) \n" +
  340.                 
  341.                  "Spinner LL_MapSize" + i as string + " \"\" Align:#Left Offset:[-35,0] Width:50 Range:[0,50000,(If LL_PL[" + i as string + "].raytracedShadows == False then (LL_PL[" + i as string + "].mapsize) Else (GlobalLightListRoll.LL_MapSizeG.value))] width:100 Type:#Integer Enabled:(Not LL_PL[" + i as string + "].RaytracedShadows) \n" +
  342.                  "Spinner LL_MapBias" + i as string + " \"\" Align:#Left Offset:[-20,0]  Width:40 Range:[0,50000,(If LL_PL[" + i as string + "].raytracedShadows == False then (LL_PL[" + i as string + "].mapbias) Else (LL_PL[" + i as string + "].bias))] width:100 Type:#Float \n" +
  343.                  "Spinner LL_SampRng" + i as string + " \"\" Align:#Left Offset:[-20,0]  Width:40 Range:[0,50000,(If LL_PL[" + i as string + "].raytracedShadows == False then (LL_PL[" + i as string + "].samplerange) Else (4))] width:100 Type:#Float Enabled:(Not LL_PL[" + i as string + "].RaytracedShadows)\n" +
  344.                   
  345.                  "DropDownList LL_Decay" + i as string + " \"\" Items:#(\"None\",\"Inverse\", \"Inverse Square\") Align:#Left Width:68 offset:[-25,-2] Selection:LL_PL[" + i as string + "].AttenDecay \n" +
  346.                  "Spinner LL_DStart" + i as string + " \"\" width:50 Align:#Left Offset:[-0,0] Range:[0,50000,LL_PL[" + i as string + "].DecayRadius] \n" +
  347.                 
  348.                  "Spinner LL_AttenStart" + i as string + " \"\" width:50 Align:#Left Offset:[-0,0] Range:[0,50000,LL_PL[" + i as string + "].FarAttenStart] \n" +
  349.                  "Spinner LL_AttenEnd" + i as string + " \"\" width:50 Align:#Left Offset:[0,0] Range:[0,50000,LL_PL[" + i as string + "].FarAttenEnd] \n" 
  350.     
  351.                                 
  352.                 LL_ProgRoll.LL_ProgressBar.value = i * 100 /LL_PL.count
  353.                 LL_ProgRoll.LL_ProgtextB.text = ("Light:" + LL_PL[i].name as string + "                           ")        
  354.                                         
  355.             )
  356.         )
  357.         LL_ProgRoll.LL_ProgressBar.color = Green
  358.         LL_ProgRoll.LL_ProgText.Text = "Generating UI Control            " 
  359.         For i in 1 to LL_PL.count do
  360.         (
  361.                 If (Classof LL_PL[i]) != TargetObject then
  362.                 (
  363.         
  364.                 -- Button Changes
  365.                 
  366.                 LightListerString += "On LL_Modify" + i as string + " Changed State do If State == True then(If SubObjectLevel == undefined then (Max Modify Mode); Select LL_PL[" + i as string + "])\n " +
  367.                 "On LL_Color" + i as string + " changed color do (LL_PL[" + i as string + "].color = color) \n" +
  368.                 "On LL_On" + i as string + " changed State do (LL_PL[" + i as string + "].On = State) \n" +
  369.                 "On LL_Mult" + i as string + " changed value do (LL_PL[" + i as string + "].Multiplier = value) \n" +
  370.                 "On LL_Cast" + i as string + " changed State do (LL_PL[" + i as string + "].baseobject.CastShadows = State) \n" +
  371.                 "On LL_Decay" + i as string + " selected i do (LL_PL[" + i as string + "].AttenDecay = i) \n" +
  372.                         
  373.                 "On LL_DStart" + i as string + " Changed value do (LL_PL[" + i as string + "].decayRadius = value) \n" +
  374.             
  375.                 "On LL_AttenStart" + i as string + " ButtonDown do (LL_AttenOn = LL_PL[" + i as string + "].ShowFarAtten; LL_PL[" + i as string + "].ShowFarAtten = True)\n"+
  376.                 "On LL_AttenStart" + i as string + " ButtonUp do (If LL_AttenOn == False then LL_PL[" + i as string + "].ShowFarAtten = False) \n"+
  377.                 "On LL_AttenStart" + i as string + " Changed value do (LL_PL[" + i as string + "].farAttenStart = value) \n" +
  378.             
  379.                 "On LL_AttenEnd" + i as string + " ButtonDown do (LL_AttenOn = LL_PL[" + i as string + "].ShowFarAtten; LL_PL[" + i as string + "].ShowFarAtten = True)\n"+
  380.                 "On LL_AttenEnd" + i as string + " ButtonUp do (If LL_AttenOn == False then LL_PL[" + i as string + "].ShowFarAtten = False) \n"+
  381.                 "On LL_AttenEnd" + i as string + " Changed value do (LL_PL[" + i as string + "].farAttenEnd = value) \n" +
  382.                 
  383.                 "On LL_Shad" + i as string + " selected i do (If i == 1 then (LL_PL[" + i as string + "].RaytracedShadows = False; LL_MapSize" + i as string + ".enabled = True; LL_SampRng" + i as string + ".Enabled = True; LL_PL[" + i as string + "].mapBias = 1; LL_MapBias" + i as string + ".value = 1) Else (LL_PL[" + i as string + "].raytracedshadows = True; LL_MapSize" + i as string + ".enabled = False; LL_SampRng" + i as string + ".Enabled = False; LL_PL[" + i as string + "].Bias = .2; LL_MapBias" + i as string + ".value = .2)) \n"+
  384.             --    "On LL_Ray" + i as string + " changed State do (LL_Shad" + i as string + ".checked = Not State; LL_MapSize" + i as string + ".enabled = Not State; LL_PL[" + i as string + "].RaytracedShadows = State;  (If ll_PL[" + i as string + "].raytracedshadows == True then (LL_MapBias" + i as string + ".value = LL_PL[" + i as string + "].bias))) \n" +
  385.                 "On LL_MapSize" + i as string + " changed value do (LL_PL[" + i as string + "].mapSize = value) \n " +
  386.                 "On LL_MapBias" + i as string + " changed value do (If LL_PL[" + i as string + "].RaytracedShadows == False then LL_PL[" + i as string + "].mapBias = value else LL_PL[" + i as string + "].Bias = value) \n" +
  387.                  "On LL_SampRng" + i as string + " changed value do (Try (LL_PL[" + i as string + "].SampleRange = Value)Catch()) \n" 
  388.                      
  389.     
  390.              
  391.                 -- ("LightListRoll1" + ".LL_ShadowType" + i as string + ".items = LLShadTypes") +
  392.                 LL_ProgRoll.LL_ProgressBar.value = i * 100 /LL_PL.count    
  393.                 LL_ProgRoll.LL_ProgtextB.text = ("Light:" + LL_PL[i].name as string + "                           ")
  394.                 )
  395.         )
  396.         LL_ProgRoll.LL_ProgText.Text = "Displaying Light Lister......   " 
  397.         LL_ProgRoll.LL_ProgtextB.text = ("-------------------------------------")
  398.         
  399.         LightListerString += "On LL_Refresh pressed do (Max Create Mode; Macros.run \"Lights and Cameras\" \"Light_List\" ) \n" +
  400.         "On LL_SelOnly Changed State do (LL_SelectedOnly = State; Macros.run \"Lights and Cameras\" \"Light_List\" )\n" +
  401.          "On LightListFloater Close do (callbacks.RemoveScript #SelectionSetChange  id:#LL_Update)\n" +
  402.          "On LL_Select pressed do Try ((Max Create Mode; Select Lights; Macros.run \"Lights and Cameras\" \"Light_List\" ))Catch () \n" +
  403.          ") \n" +
  404.          "Addrollout " + "LightListRoll1" + " LightListFloater \n" +
  405.          "If LL_Progress != undefined then CLoseRolloutFloater LL_Progress \n" 
  406.         -- "registerViewWindow LightListFloater \n"
  407.     
  408.         
  409.     )
  410.  
  411. -- Start LightLister
  412. If LL_Handle != undefined then Try (DeleteChangeHandeler LL_Handle) Catch ()
  413. If LightListFloater != undefined then (Global LightListFloaterSize = LightListFloater.size)
  414.  
  415. -- Select Lights
  416. Print "Light Lister Started"
  417. If Lights != undefined then
  418. (
  419.     If LL_SelectedOnly == True then
  420.     (
  421.         
  422.         LL_PLPre = Lights as array
  423.         LL_PL = #()
  424.     
  425.         For i in 1 to LL_PLPre.count do
  426.         (
  427.             If (Classof LL_PLPre[i]) == OmniLight or (Classof LL_PLPre[i]) == targetSpot or (Classof LL_PLPre[i]) == TargetDirectionallight or (Classof LL_PLPre[i]) == freeSpot or (Classof LL_PLPre[i]) == Directionallight then
  428.             (
  429.         
  430.                 if (Isgrouphead LL_PLPre[i]) == false and (LL_PLPre[i].isSelected) == True then (Append LL_PL LL_PLPre[i]) Else ()
  431.             )
  432.         )
  433.     
  434.     )
  435.     Else
  436.     (
  437.         LL_PLPre = Lights as array
  438.         LL_PL = #()
  439.     
  440.         For i in 1 to LL_PLPre.count do
  441.         (
  442.             If (Classof LL_PLPre[i]) == OmniLight or (Classof LL_PLPre[i]) == targetSpot or (Classof LL_PLPre[i]) == TargetDirectionallight or (Classof LL_PLPre[i]) == freeSpot or (Classof LL_PLPre[i]) == Directionallight then
  443.             (
  444.                 if (Isgrouphead ll_PLPre[i]) == false then (Append LL_PL LL_PLPre[i]) Else ()
  445.             )
  446.         )
  447.     
  448.     )
  449.     GenerateLightRollouts ()
  450.  
  451.  
  452.     -- Change Handeler
  453.     LL_Handle = When LL_PL Changes handleAt:#redrawViews do (If LightListFloater != undefined then (DeleteChangeHandler LL_Handle; CloseRolloutFloater LightListFloater)) 
  454.  
  455.     fn LL_Update_Controls = 
  456.     (
  457.         For i in 1 to LL_PL.count do
  458.         (
  459.             Try(
  460.                 If LL_SelectedOnly != True then
  461.                 (
  462.                     Execute ("LightListRoll1.LL_Modify" + i as string + ".checked = LL_PL[" + i as string + "].isSelected")
  463.                 )
  464.             )Catch()
  465.             
  466.         )
  467.             If LL_SelectedOnly == True then
  468.             (
  469.                 LL_PLPre = Lights as array
  470.                 LL_PL = #()
  471.     
  472.                 For i in 1 to LL_PLPre.count do
  473.                 (
  474.                     If (Classof LL_PLPre[i]) == OmniLight or (Classof LL_PLPre[i]) == targetSpot or (Classof LL_PLPre[i]) == TargetDirectionallight or (Classof LL_PLPre[i]) == freeSpot or (Classof LL_PLPre[i]) == Directionallight then
  475.                     (    
  476.                         if (Isgrouphead LL_PLPre[i]) == false and (LL_PLPre[i].isSelected) == True then (Append LL_PL LL_PLPre[i]) Else ()
  477.                     )
  478.                 )
  479.             
  480.                 If LL_PL.count != 0 then
  481.                 (
  482.                     GenerateLightRollouts ()
  483.                     Execute LightListerString
  484.                 )
  485.             )
  486.         
  487.     )
  488.     Callbacks.RemoveScripts #selectionSetChanged id:#LL_Update
  489.     Callbacks.addScript #selectionSetChanged  "LL_Update_Controls()" id:#LL_Update     
  490.      Execute LightListerString
  491. )
  492. Else
  493. (
  494. MessageBox "No lights to list." Title:"Light Lister"
  495. )
  496. )