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

  1. -- Isolate Tool Script File
  2. -- Created:          Dec 2 1998
  3. -- Last Updated:     Dec 10 2000
  4. -- Time: 5:28pm
  5. -- Author:   Frank DeLise
  6. -- Isolate Tool Functions
  7. -- This script creates functions for Isolating selected geometery.
  8. --***********************************************************************************************
  9. -- MODIFY THIS AT YOUR OWN RISK
  10. -- Added Localization Setup
  11.  
  12. -- Functions Added
  13. --
  14. -- IsoLate ()
  15. -- UnIsolate ()
  16. -- IsoFloater ()
  17. -- IsAnyIsoLated ()
  18. -- IsIsolated ()
  19. -- SetIsolated ()
  20.  
  21. -- 2/14/99 added the ability to create Object while in isolation
  22. -- 8/28/99 fixed a bug where when a scene is reset, the animate button stayed disabled.
  23.  
  24. MacroScript Isolate 
  25. Category:"Tools" 
  26. internalCategory:"Tools" 
  27. ToolTip:"Isolate Tool" 
  28. buttontext:"Isolate Tool" 
  29. Icon:#("ViewPortNavigationControls",7) 
  30. SilentErrors:(Debug == undefined or Debug != True)
  31. (
  32.     Persistent Global IsoLations, ISORoll, UnIsolate, IsoLate, IsoFloater, IsoHidden, IsoCamera, IOBJDel
  33.     Persistent Global IObj, IsoFrame, IsoAnimStart, IsoAnimEnd, IsoCam, IObjPosX, IObjPosY, IObjPosZ, IObjPivX, IObjPivY, IObjPivZ, IsoView, IsoViewTM, IObjRotX, IObjRotY, IObjRotZ
  34.  
  35.     fn hideXRefs hide:1=
  36.     (
  37.         local numxrefs = xrefs.getXRefFileCount()
  38.          for k = 1 to numxrefs do
  39.         (
  40.             y = xrefs.getXRefFile k
  41.             if (hide == 1) then
  42.             (
  43.                 y.hidden = true
  44.                 y.disabled = true
  45.             )
  46.             else
  47.             (
  48.                 y.hidden = false
  49.                 y.disabled = false
  50.             )
  51.         )
  52.     )    
  53.  
  54.     fn Isolate =
  55.     (
  56.         If Isolations == True then
  57.         (
  58.             /* "Localization on" */  
  59.             
  60.             MessageBox "Please Un-Isolate last object before Isolating Another"
  61.             
  62.             /* "Localization off" */  
  63.         )
  64.     Else
  65.     (
  66.     
  67.         IObj = $
  68.         IObjDel = When IObj deleted obj do
  69.         (
  70.             Isolations = False
  71.             CloseRolloutFloater  IsoFloater
  72.             Max UNhide All
  73.             AnimationRange  = (Interval IsoAnimStart IsoAnimEnd)
  74.             Set Animate ON
  75.             AnimButtonEnabled = True
  76.             DeleteChangeHandler IOBJDEL
  77.             
  78.             /* "Localization on" */
  79.   
  80.             Try (If (viewport.GetType () as string == "view_persp_user") then (Viewport.SetTM IsoView))Catch()
  81.             
  82.             /* "Localization off" */  
  83.         ) 
  84.  
  85.         hideXRefs()
  86.  
  87.         SubObjectLevel = 0
  88.                 
  89.         If  IsoFloater == undefined then
  90.         (
  91.             /* "Localization on" */
  92.   
  93.             IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100            
  94.             AddRollout IsoRoll  IsoFloater
  95.             
  96.             /* "Localization off" */  
  97.         )
  98.         Else
  99.         (
  100.             CloseRolloutFloater  IsoFloater
  101.             
  102.             /* "Localization on" */  
  103.             
  104.             IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100            
  105.             
  106.             /* "Localization off" */  
  107.             
  108.             AddRollout IsoRoll  IsoFloater
  109.         )
  110.         
  111.         -- Set View
  112.         IsoCamera = GetActiveCamera ()
  113.         
  114.         /* "Localization on" */
  115.   
  116.         If (viewport.GetType () as string == "view_persp_user") then (IsoView = Viewport.GetTM ())
  117.     
  118.         /* "Localization off" */
  119.   
  120.         IsoFrame = SliderTime
  121.         IsoAnimStart = AnimationRange.Start
  122.         IsoAnimEnd = AnimationRange.End
  123.         
  124.             IObjPivX = IObj.pivot.x
  125.             IObjPivY = IObj.pivot.y
  126.             IObjPivZ = IObj.pivot.z
  127.                 
  128.             -- Set Pivot to Object Center
  129.     
  130.             IOBJ.pivot = Selection.center    
  131.                         
  132.             IObjPosX = IObj.pos.x
  133.             IObjPosY = IObj.pos.y
  134.             IObjPosZ = IObj.pos.z
  135.                 
  136.             -- Save Which Objects Got hidden        
  137.                      
  138.             Max Select All
  139.             IsoHidden = Selection as Array
  140.             All_Obj = selection 
  141.                         
  142.             -- Move Object to [0,0,0] 
  143.     
  144.             IOBJ.pos = [0,0,0]  
  145.             
  146.         If Selection.count != 1 then Hide All_Obj
  147.         Unhide IOBJ
  148.         Select IOBJ
  149.         V = (viewport.GetType () as string)
  150.         If V == (#view_camera as string) then (Max vpt persp user) 
  151.             
  152.         AnimationRange  = (Interval Slidertime (Slidertime +1))
  153.         Isolations = True
  154.         Max tool zoomextents 
  155.         
  156.         /* "Localization on" */
  157.       
  158.         callbacks.addScript #FilePostOpen "MessageBox \"One or more objects are currently Isolated\" title:\"Isolate\"" ID:#FJDIso Persistent:True
  159.         Format "%\n" "Isolated"
  160.         
  161.         /* "Localization off" */  
  162.     )
  163. )
  164.  
  165. fn UNIsolate = 
  166. (
  167.     Try (SubObjectLevel = 0) Catch ()
  168.     Try (CallBacks.RemoveScripts ID:#FJDIso) Catch ()
  169.                 
  170.     hideXRefs hide:0
  171.     
  172.     AnimButtonEnabled = True
  173.     
  174.     OBJ = $
  175.     Isolations = False
  176.  
  177.     -- Check for other Isolated Objects
  178.     
  179.     If IOBJ == undefined then 
  180.     (
  181.         /* "Localization on" */ 
  182.  
  183.         Format "%\n" "Object has been Hidden or Removed Cannot UN-ISOLATE"
  184.     
  185.         /* "Localization off" */  
  186.     )
  187.     Else
  188.     (
  189.         At time IsoFrame 
  190.         (    
  191.             Try (Hide IsoHidden) Catch ()
  192.             IOBJ.pos.x = 0
  193.             IOBJ.pos.y = 0
  194.             IOBJ.pos.z = 0
  195.             IOBJ.pivot = [0,0,0]
  196.                     
  197.             Max Select All
  198.             Move Selection [IOBJPosX,IOBJPosY,IOBJPosZ]    
  199.             Select IOBJ
  200.                         
  201.                     
  202.             IOBJ.pos.x = IOBJPosX
  203.             IOBJ.pos.y = IOBJPosY
  204.             IOBJ.pos.z = IOBJPosZ
  205.             IOBJ.pivot.x = IOBJPivX
  206.             IOBJ.pivot.y = IOBJPivY
  207.             IOBJ.pivot.z = IOBJPivZ
  208.                         
  209.                 
  210.             Try (Unhide IsoHidden)
  211.             Catch ()
  212.             
  213.             /* "Localization on" */              
  214.             
  215.             Try (If (Viewport.GetType () as string == "view_persp_user") then 
  216.             
  217.             /* "Localization off" */  
  218.             (
  219.                     If IsoCamera != undefined then
  220.                     (
  221.                          max vpt camera 
  222.                     )
  223.                     Else
  224.                     ( 
  225.                         Max tool zoomextents
  226.                         Viewport.SetTM IsoView
  227.                         completeRedraw()
  228.                     )
  229.                 )
  230.                 Else
  231.                 (
  232.                     Max tool zoomextents
  233.                 )
  234.             )
  235.             Catch ()
  236.             )    
  237.             
  238.                 Select IOBJ
  239.                 
  240.                 /* "Localization on" */  
  241.                 
  242.                 Format "%\n" "Object Has been UN_ISOLATED"
  243.                 
  244.                 /* "Localization off" */  
  245.                 
  246.                 AnimationRange  = (Interval IsoAnimStart IsoAnimEnd)
  247.                 Set Animate Off
  248.                 Try (DeleteChangeHandler IOBJDEL) Catch ()
  249.             )
  250.     )
  251.     
  252. fn NewIsoFloater =
  253. (
  254.     Isolations = True
  255.     Rollout IsoRoll ""
  256.     (
  257.         /* "Localization on" */  
  258.         
  259.         CheckButton CIso "UN-ISOLATE" Checked:True 
  260.         
  261.         /* "Localization off" */  
  262.         
  263.         on IsoRoll Close do
  264.         (
  265.             if Isolations == True then
  266.             (
  267.                 UnIsolate ()
  268.                 Isolations = False
  269.             )
  270.             Else
  271.             (
  272.                 IsoLations = False
  273.             )
  274.         )
  275.             
  276.         on CIso changed state do
  277.         (
  278.             If  IsoFloater != undefined then CloseRolloutFloater IsoFloater                    
  279.         )
  280.         
  281.     )
  282.     
  283.     If  IsoFloater == undefined then
  284.     (
  285.         /* "Localization on" */  
  286.         
  287.         IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100            
  288.         AddRollout IsoRoll IsoFloater
  289.         
  290.         /* "Localization off" */  
  291.     )
  292.     Else
  293.     (
  294.         /* "Localization on" */  
  295.         
  296.         IF IsoFloater != undefined then CloseRolloutFloater IsoFloater
  297.         IsoFloater = NewRolloutFloater "ISOLATED" 180 100 50 100            
  298.         AddRollout IsoRoll IsoFloater
  299.     
  300.         /* "Localization off" */  
  301.     )
  302.  
  303.  
  304. )    
  305.  
  306. Fn SetIsolated =
  307. (
  308.     Isolations = True
  309.  
  310.     IOBJ = $
  311.     --IsoFrame = SliderTime
  312.     --IsoAnimStart = AnimationRange.Start
  313.     --IsoAnimEnd = AnimationRange.End
  314. )
  315.  
  316. fn IsIsolated =
  317. (
  318.     /* "Localization on" */  
  319.     
  320.     If GetUserProp $ "Isolated" == True then
  321.     (                    
  322.         DidyouFindOne = True
  323.         SetIsolated ()
  324.         Global IOBJ = $
  325.     )
  326.     Else
  327.     (
  328.         DidyouFindOne = False
  329.     )
  330.     
  331.     
  332. )
  333.  
  334. fn IsAnyIsolated =
  335. (
  336.     Local DidyouFindOne = False
  337.     Global WhichOne
  338.     Select Objects
  339.     
  340.     For I in 1 to selection.count do
  341.     (
  342.         If GetUserProp $ "Isolated" == True then
  343.         (                    
  344.              DidyouFindOne = True
  345.             IOBJ = $
  346.             SetIsolated ()
  347.             IOBJ = $
  348.         )
  349.         Else
  350.         (
  351.         )
  352.     )
  353.     
  354.     If DidYouFindOne == True then 
  355.     (
  356.         MessageBox "Please Un-Isolate last object before Isolating another" Title:"Isolate"
  357.     )                            
  358.      Else 
  359.     (
  360.         UnIsolate ()
  361.     )
  362. )
  363.  
  364. Rollout IsoRoll ""
  365. (
  366.         
  367.     CheckButton CIso "Exit Isolation" Checked:True 
  368.     
  369.     on IsoRoll Close do
  370.         (
  371.         if Isolations == True then
  372.         (
  373.             Isolations = False
  374.             UnIsolate ()
  375.         )
  376.         Else
  377.         (
  378.             Isolations = False
  379.         )
  380. )
  381.  
  382.     on CIso changed state do
  383.     (
  384.     If  IsoFloater != undefined then CloseRolloutFloater IsoFloater                    
  385.     )
  386.         
  387. )
  388.         
  389. -- Test to See if an Object is Selected
  390.  
  391. If (SuperClassof $) != Shape and (SuperClassof $) != geometryClass then
  392. (
  393.     MessageBox "Please select a single object" title:"Isolate"
  394. )
  395. Else
  396. (
  397.     --Try (
  398.         If Isolations == True then
  399.         (
  400.             UnIsolate ()
  401.             IF IsoFloater != undefined then (CloseRolloutFloater IsoFloater)
  402.         )
  403.         Else
  404.         (
  405.             Isolate ()
  406.         )
  407.         --    )
  408.         --    Catch (MessageBox "Error")
  409.         )
  410.         
  411. /* "Localization off" */  
  412. )