home *** CD-ROM | disk | FTP | other *** search
- /* CMD: ½CreateLightning */
- /* By Brett Evan Hester 13032 Copenhill Rd. Dallas, Tx. 75240-5302 */
- MacrosName = "CreateLightning"
- /* Macro Type: */
- /* CREATES * LAYOUT * OBJECTS * LAYER NEEDED * REMEMBERS */
- /* Description: */
-
- Info1A = "!Create Lightning © Information 1 of 3"
- Info1B = ""
- Info1C = "@This macro creates and saves multiple objects & "
- Info1D = "@a scene file to go with them. The goal is to add"
- Info1E = "@some spark and flare to a scene. "
- Info1F = ""
- Info1G = "STYLE is the high & low points of the lightning."
- Info1H = ' __/\__ - "Spike" (100% at the mid-point)'
- Info1I = ' _/¯¯\_ - "Transitional"(100% third of the way)'
- Info1J = ' _|¯¯|_ - "Constant" (100% from beg. to end)'
- Info1K = " ( Style is the size of the parenting object. )"
- Info1L = "START is the origination point of the lightning."
- Info1M = "HEADING & PITCH is the approx. direction to head"
- Info1N = "@- -- --- More Information to follow... --- -- - "
-
- Info2A = "!Create Lightning © Information 2 of 3"
- Info2B = ""
- Info2C = "OFFSET MIN-MAX is the amount of freedom for the "
- Info2D = " Heading and Pitch in degrees and for the "
- Info2E = " Distance in whatever unit selected. "
- Info2F = "# OF OBJS. determines how many objs. to create, "
- Info2G = " save, and pull from to get the final effect. "
- Info2H = "# OF BOLTS is the number of bolts that appear to"
- Info2I = " be present in the lightning effect. "
- Info2J = "# OF SEGS. is how many segments or polygons in "
- Info2K = " each and every lightning bolt. "
- Info2L = "1st & LAST FRM. determine the life of the effect"
- Info2M = '@To add the effect to a scene: Select "Objects" '
- Info2N = '@in layout and then choose "Load From Scene". '
-
- Info3A = "!Create Lightning © Information 3 of 3"
- Info3B = "@ Plug-Ins and Go! © "
- Info3C = " Hester and associates"
- Info3D = " 13032 Copenhill Road "
- Info3E = " Dallas, Texas 75240 "
- Info3F = "@Special Thanks to: "
- Info3G = "Arnie Cachelin Henry Ribron Mark J. Holland "
- Info3H = "J. Phil Kelso Terry Wester Steven K. Simms "
- Info3I = "Kevin DeRita Greg Glaser William S. Hawes"
- Info3J = "NewTek © Commodore © INOVAtronics © "
- Info3K = ""
- Info3L = "@This macro represents a lot of time & hard work."
- Info3M = "@Encourage people to create new ones and not kill"
- Info3N = "@that possibility by stealing those that are out."
-
- /* -------------------------------------------------------------------- */
- /* Start Error Detection (See End) */
- SIGNAL ON ERROR
- SIGNAL ON SYNTAX
- /* Address LightWave */
- VT3DLib = ADDLIB("LWModelerARexx.port",0)
- ADDRESS "LWModelerARexx.port"
- /* Add Math Functions */
- MATHLIB= "rexxmathlib.library"
- IF POS(MATHLIB , SHOW('L')) = 0 THEN
- IF ~ADDLIB(MATHLIB , 0 , -30 , 0) THEN DO
- CALL Notify(1,"!Sorry,","@Cannot find "||MATHLIB)
- CALL Exiting
- END
- /* Add Support Functions */
- SupportLib = "rexxsupport.library"
- IF POS(SupportLib , SHOW('L')) = 0 THEN
- IF ~ADDLIB(SupportLib , 0 , -30 , 0) THEN DO
- CALL Notify(1,"!Cannot find "SupportLib)
- CALL Exiting
- END
-
- /* -------------------------------------------------------------------- */
- /* Empty Layer Setup */
- CL = CurLayer()
- Empty = EmptyLayers()
- IF (WORDS(Empty) < 1) THEN DO
- CALL Notify(1,"Sorry!","!Need an empty layer","for this operation.")
- CALL Exiting
- END
- EL = WORD(Empty, 1)
-
- /* -------------------------------------------------------------------- */
- /* Reading Global Macro Preferences */
- BEHDefaultFilePath = "Sys:"
- BEHSettingsSavedTo = "T:"
- BEHSpeechAndSound = "1"
-
- IF (EXISTS("S:PlugInPrefs")) THEN DO
- IF (~OPEN(PlugInPrefs, "S:PlugInPrefs", 'R')) THEN BREAK
- IF (READLN(PlugInPrefs) ~= "PlugInPrefs") THEN BREAK
- BEHDefaultFilePath = READLN(PlugInPrefs)
- BEHSettingsSavedTo = READLN(PlugInPrefs)
- BEHSpeechAndSound = READLN(PlugInPrefs)
- CALL CLOSE(PlugInPrefs)
- END
-
- /* -------------------------------------------------------------------- */
- /* Fixed Variables */
- PI = 3.141592653589793238462643
- RadToDeg = 180/PI ; DegToRad = PI/180
-
- /* -------------------------------------------------------------------- */
- /* Recalling Macro Settings */
- ReqStyle = 3
- ReqX = 0 ; ReqY = 0 ; ReqZ = 0
- ReqHeading = 30 ; ReqAngMinH = -45 ; ReqAngMaxH = 45
- ReqPitch = 60 ; ReqAngMinP = -45 ; ReqAngMaxP = 45
- ReqDistance = 10 ; ReqLngMin = -2.5 ; ReqLngMax = 2.5
- ReqObjs = 30 ; ReqBolts = 3 ; ReqSegs = 15
- ReqBegFrm = 0
- ReqEndFrm = 90
- FilePathObj = "Objects"
- FilePathScn = "Scenes"
- FileName = ""
-
- PrefsFileName = BEHSettingsSavedTo||MacrosName||".PLUG"
-
- IF (EXISTS(PrefsFileName)) THEN DO
- IF (~OPEN(PrefsFile, PrefsFileName, 'R')) THEN BREAK
- IF (READLN(PrefsFile) ~= MacrosName) THEN BREAK
-
- ReqStyle = READLN(PrefsFile)
- PARSE VALUE READLN(PrefsFile) WITH ReqX ReqY ReqZ
- PARSE VALUE READLN(PrefsFile) WITH ReqHeading ReqAngMinH ReqAngMaxH
- PARSE VALUE READLN(PrefsFile) WITH ReqPitch ReqAngMinP ReqAngMaxP
- PARSE VALUE READLN(PrefsFile) WITH ReqDistance ReqLngMin ReqLngMax
- PARSE VALUE READLN(PrefsFile) WITH ReqObjs ReqBolts ReqSegs
- ReqBegFrm = READLN(PrefsFile)
- ReqEndFrm = READLN(PrefsFile)
- FilePathObj = READLN(PrefsFile)
- FilePathScn = READLN(PrefsFile)
- FileName = READLN(PrefsFile)
-
- CALL CLOSE(PrefsFile)
- END
-
- /* ******************************************************************** */
- /* Main Body Of Code */
- CALL MenuRequester
- CALL SaveScnReq
- CALL SaveObjReq
- CALL DefineStyle
- CALL SaveSettings
- CALL CreationStage
- CALL CreateScene
- CALL Exiting
-
- /* ******************************************************************** */
- /* User Interface */
- MenuRequester:
-
- OKtoContinue = 0
- DO UNTIL OKtoContinue = 1
-
- CALL Req_Begin("Create Lightning © by Brett Hester")
-
- ReqA = Req_AddControl("Style ",'CH'," __/\__ _/¯¯\_ _|¯¯|_ ")
- ReqB = Req_AddControl("Start At",'V',"1")
- CALL Req_AddControl("",'T'," | Min -- Offset -- Max |")
- ReqC = Req_AddControl("Heading ",'V',"0")
- ReqD = Req_AddControl("Pitch ",'V',"0")
- ReqE = Req_AddControl("Distance",'V',"1")
- CALL Req_AddControl("",'T',"# of Objs. # of Bolts # of Segs.")
- ReqF = Req_AddControl("",'V',"0")
- CALL Req_AddControl("",'T',"")
- ReqG = Req_AddControl("First Frm.",'N',"0")
- ReqH = Req_AddControl("Last Frame",'N',"0")
- ReqI = Req_AddControl("",'CH',"Information")
-
- CALL Req_SetVal(ReqA, ReqStyle)
- CALL Req_SetVal(ReqB, ReqX ReqY ReqZ)
- CALL Req_SetVal(ReqC, ReqHeading ReqAngMinH ReqAngMaxH)
- CALL Req_SetVal(ReqD, ReqPitch ReqAngMinP ReqAngMaxP)
- CALL Req_SetVal(ReqE, ReqDistance ReqLngMin ReqLngMax)
- CALL Req_SetVal(ReqF, ReqObjs ReqBolts ReqSegs)
- CALL Req_SetVal(ReqG, ReqBegFrm)
- CALL Req_SetVal(ReqH, ReqEndFrm)
- CALL Req_SetVal(ReqI, 0)
-
- IF Req_Post() = 0 THEN CALL Exiting
-
- ReqStyle = Req_GetVal(ReqA)
- PARSE VALUE Req_GetVal(ReqB) WITH ReqX ReqY ReqZ
- PARSE VALUE Req_GetVal(ReqC) WITH ReqHeading ReqAngMinH ReqAngMaxH
- PARSE VALUE Req_GetVal(ReqD) WITH ReqPitch ReqAngMinP ReqAngMaxP
- PARSE VALUE Req_GetVal(ReqE) WITH ReqDistance ReqLngMin ReqLngMax
- PARSE VALUE Req_GetVal(ReqF) WITH ReqObjs ReqBolts ReqSegs
- ReqBegFrm = Req_GetVal(ReqG)
- ReqEndFrm = Req_GetVal(ReqH)
- BEHInfo = Req_GetVal(ReqI)
-
- CALL Req_End()
-
- OKtoContinue = 1
-
- ReqAngMinH = TRUNC(ReqAngMinH) ; ReqAngMaxH = TRUNC(ReqAngMaxH)
- IF ReqAngMinH > ReqAngMaxH THEN DO
- Temp = ReqAngMaxH
- ReqAngMaxH = ReqAngMinH
- ReqAngMinH = Temp
- END
-
- ReqAngMinP = TRUNC(ReqAngMinP) ; ReqAngMaxP = TRUNC(ReqAngMaxP)
- IF ReqAngMinP > ReqAngMaxP THEN DO
- Temp = ReqAngMaxP
- ReqAngMaxP = ReqAngMinP
- ReqAngMinP = Temp
- END
-
- ReqDistance = ABS(ReqDistance) ; IF ReqDistance = 0 THEN ReqDistance = 1
- IF ReqLngMin > ReqLngMax THEN DO
- Temp = ReqLngMax
- ReqLngMax = ReqLngMin
- ReqLngMin = Temp
- END
-
- SegDistance = ReqDistance/ReqSegs
- SegLngMin = ReqLngMin/ReqSegs
- SegLngMax = ReqLngMax/ReqSegs
-
- ReqObjs = TRUNC(ReqObjs) ; IF ReqObjs < 1 THEN ReqObjs = 1
- ReqBolts = TRUNC(ReqBolts) ; IF ReqBolts < 1 THEN ReqBolts = 1
- ReqSegs = TRUNC(ReqSegs) ; IF ReqSegs < 1 THEN ReqSegs = 1
-
- ReqBegFrm = ABS(TRUNC(ReqBegFrm)) ; ReqEndFrm = ABS(TRUNC(ReqEndFrm))
- IF ReqBegFrm > ReqEndFrm THEN DO
- Temp = ReqEndFrm
- ReqEndFrm = ReqBegFrm
- ReqBegFrm = Temp
- END
-
- IF BEHInfo = 1 THEN CALL InformationWindows
-
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* File Requester for saving the Scene */
- SaveScnReq:
-
- OKtoContinue = 0
- DO UNTIL OKtoContinue = 1
- OKtoContinue = 1
- FileReqScn = GetFileName("-- Save Scene --", FilePathScn, FileName)
- IF FileReq = "(none)" THEN CALL Exiting
- FileType = "Scn"
- PARSE VALUE ExtractName(FileReqScn) WITH FilePathScn FileNameScn
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* File Requester for saving Objects */
- SaveObjReq:
-
- OKtoContinue = 0
- DO UNTIL OKtoContinue = 1
- OKtoContinue = 1
- FileReqObj = GetFileName("-- Save Objects --", FilePathObj, FileName)
- IF FileReq = "(none)" THEN CALL Exiting
- FileType = "Obj"
- PARSE VALUE ExtractName(FileReqObj) WITH FilePathObj FileNameObj
- END
-
- RETURN
-
- /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- /* Extract Name, Path, and Verify */
- ExtractName:
-
- PARSE ARG FileReq
-
- FileReqLength = LENGTH(FileReq)
- FileDivider = LASTPOS("/",FileReq)
- IF FileDivider = 0 THEN FileDivider = LASTPOS(":",FileReq)
- FileNameLength = FileReqLength - FileDivider
-
- FilePath = STRIP(LEFT(FileReq, FileDivider),"T","/")
- FileName = RIGHT(FileReq, FileNameLength)
-
- IF EXISTS(FilePath) = 0 THEN DO
- OKtoContinue = Notify(3,"!Sorry!",'Directory "'||FilePath||'" not found.',"@Create NEW directory?")
- IF OKtoContinue = 1 THEN CALL MAKEDIR(FilePath)
- END
-
- IF FileType = "Scn" THEN DO
- IF EXISTS(FileReq) = 1 THEN DO
- PARSE VALUE STATEF(FileReq) WITH DirOrFile .
- IF DirOrFile = "DIR" THEN DO
- CALL Notify(1,"!Sorry!",'@"'||FileReq||'" is not a valid filename.')
- OKtoContinue = 0
- END
- IF DirOrFile = "FILE" THEN OKtoContinue = Notify(3,"!Warning!","A file with that name already exists.",'@Overwrite "'||FileReq||'" ?')
- END
- END
-
- IF FileType = "Obj" THEN DO
- VerifyA = 1 ; VerifyB = 1
- DO i=1 TO ReqObjs
- IF EXISTS(FileReq||i) = 1 THEN DO
- PARSE VALUE STATEF(FileReq||i) WITH DirOrFile .
- IF DirOrFile = "DIR" THEN VerifyA = 0
- IF DirOrFile = "FILE" THEN VerifyB = 0
- END
- END
- IF VerifyA = 0 THEN DO
- CALL Notify(1,"!Sorry!",'@"'||FileReq||'" is not a valid filename.')
- OKtoContinue = 0
- END
- IF VerifyB = 0 THEN OKtoContinue = Notify(3,"!Warning!","File(s) will be overwritten.","@Overwrite ?")
- END
-
- RETURN FilePath FileName
-
- /* -------------------------------------------------------------------- */
- /* Define Lightning Length */
- DefineStyle:
-
- FrmDiff = (ReqEndFrm-ReqBegFrm)+1
- /* Spike __/\__ */
- IF ReqStyle = 1 THEN DO
- MidPoint = TRUNC(ReqBegFrm+(FrmDiff/2))
- IF ReqBegFrm = 0 THEN DO
- Keys = 3
- Key.1 = ReqBegFrm ; Lng.1 = 0.0
- Key.2 = MidPoint ; Lng.2 = 1.0
- Key.3 = ReqEndFrm ; Lng.3 = 0.0
- END
- IF ReqBegFrm ~= 0 THEN DO
- Keys = 4
- Key.1 = 0 ; Lng.1 = 0.0
- Key.2 = ReqBegFrm ; Lng.2 = 0.0
- Key.3 = MidPoint ; Lng.3 = 1.0
- Key.4 = ReqEndFrm ; Lng.4 = 0.0
- END
- END
- /* Transitional _/¯¯\_ */
- IF ReqStyle = 2 THEN DO
- OneThirds = TRUNC(ReqBegFrm+(FrmDiff/3))
- TwoThirds = TRUNC(ReqEndFrm-(FrmDiff/3))
- IF ReqBegFrm = 0 THEN DO
- Keys = 4
- Key.1 = ReqBegFrm ; Lng.1 = 0.0
- Key.2 = OneThirds ; Lng.2 = 1.0
- Key.3 = TwoThirds ; Lng.3 = 1.0
- Key.4 = ReqEndFrm ; Lng.4 = 0.0
- END
- IF ReqBegFrm ~= 0 THEN DO
- Keys = 5
- Key.1 = 0 ; Lng.1 = 0.0
- Key.2 = ReqBegFrm ; Lng.2 = 0.0
- Key.3 = OneThirds ; Lng.3 = 1.0
- Key.4 = TwoThirds ; Lng.4 = 1.0
- Key.5 = ReqEndFrm ; Lng.5 = 0.0
- END
- END
- /* Constant _|¯¯|_ */
- IF ReqStyle = 3 THEN DO
- IF ReqBegFrm <= 1 THEN DO
- Keys = 3
- Key.1 = ReqBegFrm ; Lng.1 = 1.0
- Key.2 = ReqEndFrm ; Lng.2 = 1.0
- Key.3 = ReqEndFrm+1 ; Lng.3 = 0.0
- END
- IF ReqBegFrm > 1 THEN DO
- Keys = 5
- Key.1 = 0 ; Lng.1 = 0.0
- Key.2 = ReqBegFrm-1 ; Lng.2 = 0.0
- Key.3 = ReqBegFrm ; Lng.3 = 1.0
- Key.4 = ReqEndFrm ; Lng.4 = 1.0
- Key.5 = ReqEndFrm+1 ; Lng.5 = 0.0
- END
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Creation Hub */
- CreationStage:
-
- CALL SetLayer(EL)
- /* Loading Surface */
- OrigSurf = CurSurface()
- IF EXISTS("Objects/PlugInLightning") = 1 THEN DO
- CALL Load("Objects/PlugInLightning")
- CALL Cut()
- END
- CALL Surface("Lightning")
- /* Creating Random Factor */
- Seed = TIME("S")
-
- DO Obj=1 TO ReqObjs
- CALL Meter_Begin(ReqSegs,"Creating Lightning Bolt" Obj "of" ReqObjs, " Please Wait...")
- CALL Add_Begin()
-
- NewPnt = Add_Point(ReqX ReqY ReqZ)
- CALL MakeBolt(0 NewPnt ReqX ReqY ReqZ ReqHeading ReqPitch)
-
- CALL Add_End()
- CALL Meter_End()
-
- CALL Save(FileReqObj||Obj)
- CALL Cut()
- END
- /* Restoring Settings */
- CALL Surface(OrigSurf)
- CALL SetLayer(CL)
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Creating Bolt */
- MakeBolt: PROCEDURE EXPOSE ReqHeading ReqPitch SegDistance SegLngMin SegLngMax ReqAngMinH ReqAngMaxH ReqAngMinP ReqAngMaxP ReqSegs Seed DegToRad MacrosName
-
- PARSE ARG Gen OldPnt X Y Z H P .
-
- IF Gen < ReqSegs THEN DO
- CALL Meter_Step()
-
- PARSE VALUE Calculations(X Y Z H P) WITH X Y Z H P
- NewPnt = Add_Point(X Y Z)
- CALL Add_Polygon(OldPnt NewPnt)
-
- CALL MakeBolt(Gen+1 NewPnt X Y Z H P)
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Calculations */
- Calculations:
-
- PARSE ARG X Y Z H P .
- /**********************************/
- OrigAngH = 25 ; LastAngH = 75 /* These four percentages allow */
- OrigAngP = 25 ; LastAngP = 75 /* for more customized lightning. */
- /**********************************/
-
- H = ((ReqAngMaxH-ReqAngMinH) * RANDU(Seed)) + ReqAngMinH + ((ReqHeading*(OrigAngH*0.01))+(H*(LastAngH*0.01)))
- P = ((ReqAngMaxP-ReqAngMinP) * RANDU(Seed)) + ReqAngMinP + ((ReqPitch*(OrigAngP*0.01))+(P*(LastAngP*0.01)))
- D = SegDistance + (SegLngMin+((SegLngMax-SegLngMin) * RANDU(Seed)))
-
- Skew = D * COS((P * DegToRad))
-
- X = (Skew * SIN((H * DegToRad))) + X
- Y = ((D * SIN((P * DegToRad))) * -1) + Y
- Z = (Skew * COS((H * DegToRad))) + Z
-
- RETURN X Y Z H P
-
- /* -------------------------------------------------------------------- */
- /* Creating / Saving Scene File */
- CreateScene:
-
- OKtoContinue = 0
- DO UNTIL OKtoContinue = 1
- OKtoContinue = OPEN(NewFile, FileReqScn, 'W')
- IF OKtoContinue = 0 THEN DO
- CALL Notify(1,"!Sorry!",'@Unable to save "'||FileReqScn||'"')
- CALL SaveScnReq
- END
- END
-
- ObjNumber = 0
- ObjLimit = ReqObjs
- MorphStep = 1
- IF ReqObjs > FrmDiff THEN ObjLimit = FrmDiff
- IF ReqObjs > 1 THEN MorphStep = (FrmDiff-1)/(ObjLimit-1)
-
- CALL Meter_Begin((ObjLimit*ReqBolts)+ReqObjs,"Saving Scene File", " Please Wait...")
-
- MainObjList = ""
- DO Obj = 1 TO ReqObjs
- MainObjList = MainObjList Obj
- CALL Meter_Step()
- END
-
- CALL WRITELN(NewFile, "LWSC")
- CALL WRITELN(NewFile, "1")
- CALL WRITELN(NewFile, "")
- CALL WRITELN(NewFile, "FirstFrame" ReqBegFrm)
- CALL WRITELN(NewFile, "LastFrame" ReqEndFrm)
- CALL WRITELN(NewFile, "FrameStep 1")
- CALL WRITELN(NewFile, "")
- IF EXISTS("Objects/PlugInLightning") = 1 THEN DO
- CALL WRITELN(NewFile, "LoadObject Objects/PlugInLightning")
- CALL WRITELN(NewFile, "ObjectMotion (unnamed)")
- CALL WRITELN(NewFile, " 9")
- CALL WRITELN(NewFile, " "||Keys)
- DO i=1 TO Keys
- CALL WRITELN(NewFile, " 0.0 0.0 0.0 0.0 0.0 0.0" Lng.i Lng.i Lng.i)
- CALL WRITELN(NewFile, " "||Key.i||" 0 0.0 0.0 0.0")
- END
- CALL WRITELN(NewFile, "EndBehavior 1")
- CALL WRITELN(NewFile, "ShadowOptions 7")
- CALL WRITELN(NewFile, "")
- ObjNumber = 1
- END
- DO Bolt = 1 TO ReqBolts
- ObjList = MainObjList
- DO Obj = 1 TO ObjLimit
- ObjNumber = ObjNumber + 1
- RndNum = RANDOM(1,WORDS(ObjList),Seed)
- RndObj = WORD(ObjList,RndNum)
- ObjList = DELWORD(ObjList,RndNum,1)
- CALL Meter_Step()
-
- CALL WRITELN(NewFile, "LoadObject" FileReqObj||RndObj)
- CALL WRITELN(NewFile, "ObjectMotion (unnamed)")
- CALL WRITELN(NewFile, " 9")
- IF ObjNumber = 1 THEN DO
- CALL WRITELN(NewFile, " "||Keys)
- DO i = 1 TO Keys
- CALL WRITELN(NewFile, " 0.0 0.0 0.0 0.0 0.0 0.0" Lng.i Lng.i Lng.i)
- CALL WRITELN(NewFile, " "||Key.i||" 0 0.0 0.0 0.0")
- END
- END
- IF ObjNumber ~= 0 THEN DO
- CALL WRITELN(NewFile, " 1")
- CALL WRITELN(NewFile, " 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0")
- CALL WRITELN(NewFile, " 0 0 0.0 0.0 0.0")
- END
- CALL WRITELN(NewFile, "EndBehavior 1")
- IF ObjNumber ~= 1 THEN CALL WRITELN(NewFile, "ParentObject 1")
- CALL WRITELN(NewFile, "Metamorph (envelope)")
- CALL WRITELN(NewFile, " 1")
- IF Obj = 1 THEN DO
- CALL WRITELN(NewFile, " 2")
- END
- IF Obj ~= 1 THEN DO
- CALL WRITELN(NewFile, " 3")
- CALL WRITELN(NewFile, " 0.0")
- CALL WRITELN(NewFile, " 0 1 0.0 0.0 0.0")
- END
- CALL WRITELN(NewFile, " 0.0")
- CALL WRITELN(NewFile, " "||TRUNC(MorphStep*(Obj-1))||" 1 0.0 0.0 0.0")
- CALL WRITELN(NewFile, " 1.0")
- CALL WRITELN(NewFile, " "||TRUNC(MorphStep*Obj)||" 1 0.0 0.0 0.0")
- CALL WRITELN(NewFile, "EndBehavior 1")
- CALL WRITELN(NewFile, "MorphTarget" ObjNumber+1)
- CALL WRITELN(NewFile, "MorphSurfaces 0")
- IF Obj ~= 1 THEN CALL WRITELN(NewFile, "ObjDissolve 1.000000")
- CALL WRITELN(NewFile, "ShadowOptions 7")
- CALL WRITELN(NewFile, "")
- END
- END
- CALL WRITELN(NewFile, "AmbientColor 255 255 255")
- CALL WRITELN(NewFile, "AmbIntensity 0.250000")
- CALL WRITELN(NewFile, "")
- CALL WRITELN(NewFile, "CameraMotion (unnamed)")
- CALL WRITELN(NewFile, " 9")
- CALL WRITELN(NewFile, " 1")
- CALL WRITELN(NewFile, " 0.0 0.0 -1.0 0.0 0.0 0.0 1.0 1.0 1.0")
- CALL WRITELN(NewFile, " 0 0 0.0 0.0 0.0")
- CALL WRITELN(NewFile, "EndBehavior 1")
- CALL WRITELN(NewFile, "ZoomFactor 3.200000")
- CALL WRITELN(NewFile, "RenderMode 2")
- CALL WRITELN(NewFile, "RayTraceEffects 0")
- CALL WRITELN(NewFile, "Resolution 1")
- CALL WRITELN(NewFile, "Overscan 1")
- CALL WRITELN(NewFile, "Antialiasing 0")
- CALL WRITELN(NewFile, "AdaptiveSampling 1")
- CALL WRITELN(NewFile, "AdaptiveThreshold 8")
- CALL WRITELN(NewFile, "FilmSize 2")
- CALL WRITELN(NewFile, "FieldRendering 0")
- CALL WRITELN(NewFile, "MotionBlur 0")
- CALL WRITELN(NewFile, "DepthOfField 0")
- CALL WRITELN(NewFile, "")
- CALL WRITELN(NewFile, "SolidBackdrop 1")
- CALL WRITELN(NewFile, "BackdropColor 0 0 0")
- CALL WRITELN(NewFile, "ZenithColor 0 40 80")
- CALL WRITELN(NewFile, "SkyColor 120 180 240")
- CALL WRITELN(NewFile, "GroundColor 50 40 30")
- CALL WRITELN(NewFile, "NadirColor 100 80 60")
- CALL WRITELN(NewFile, "FogType 0")
- CALL WRITELN(NewFile, "DitherIntensity 1")
- CALL WRITELN(NewFile, "AnimatedDither 0")
- CALL WRITELN(NewFile, "")
- CALL WRITELN(NewFile, "ViewMode 3")
- CALL WRITELN(NewFile, "ViewAimpoint 0.000000 0.000000 0.000000")
- CALL WRITELN(NewFile, "ViewDirection 0.000000 0.000000 0.000000")
- CALL WRITELN(NewFile, "ViewZoomFactor 3.200000")
- CALL WRITELN(NewFile, "LayoutGrid 3")
- CALL WRITELN(NewFile, "GridSize 1.000000")
- CALL WRITELN(NewFile, "ShowObjects 1")
- CALL WRITELN(NewFile, "ShowBones 1")
- CALL WRITELN(NewFile, "ShowLights 0")
- CALL WRITELN(NewFile, "ShowCamera 1")
- CALL WRITELN(NewFile, "ShowMotionPath 1")
- CALL WRITELN(NewFile, "ShowSafeAreas 0")
- CALL WRITELN(NewFile, "ShowBGImage 0")
- CALL WRITELN(NewFile, "ShowFogRadius 0")
- CALL WRITELN(NewFile, "ShowRedraw 0")
-
- CALL CLOSE(NewFile)
-
- CALL Meter_End()
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Recording Macro Settings */
- SaveSettings:
-
- IF (OPEN(PrefsFile, PrefsFileName, 'W')) THEN DO
- CALL WRITELN(PrefsFile, MacrosName)
-
- CALL WRITELN(PrefsFile, ReqStyle)
- CALL WRITELN(PrefsFile, ReqX ReqY ReqZ)
- CALL WRITELN(PrefsFile, ReqHeading ReqAngMinH ReqAngMaxH)
- CALL WRITELN(PrefsFile, ReqPitch ReqAngMinP ReqAngMaxP)
- CALL WRITELN(PrefsFile, ReqDistance ReqLngMin ReqLngMax)
- CALL WRITELN(PrefsFile, ReqObjs ReqBolts ReqSegs)
- CALL WRITELN(PrefsFile, ReqBegFrm)
- CALL WRITELN(PrefsFile, ReqEndFrm)
- CALL WRITELN(PrefsFile, FilePathObj)
- CALL WRITELN(PrefsFile, FilePathScn)
- CALL WRITELN(PrefsFile, FileName)
-
- CALL CLOSE(PrefsFile)
- END
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Ending */
- Exiting:
-
- IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
- EXIT
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Information Windows */
- InformationWindows:
-
- OKtoContinue = 0
- OKorCancel = Notify(2, Info1A, Info1B, Info1C, Info1D, Info1E, Info1F, Info1G, Info1H, Info1I, Info1J, Info1K, Info1L, Info1M, Info1N)
- IF OKorCancel = 1 THEN OKorCancel = Notify(2, Info2A, Info2B, Info2C, Info2D, Info2E, Info2F, Info2G, Info2H, Info2I, Info2J, Info2K, Info2L, Info2M, Info2N)
- IF OKorCancel = 1 THEN CALL Notify(1, Info3A, Info3B, Info3C, Info3D, Info3E, Info3F, Info3G, Info3H, Info3I, Info3J, Info3K, Info3L, Info3M, Info3N)
-
- RETURN
-
- /* -------------------------------------------------------------------- */
- /* Error Handling */
- SYNTAX:
- ERROR:
-
- ErrCode = RC
- ErrLine = SIGL
- ErrInfo = ERRORTEXT(ErrCode)
-
- Err1 = "!Sorry!"
- Err2 = "An Error has been detected"
- Err3 = "@þ Macro - "
- Err4 = "@þ Line Number - "
- Err5 = "@þ Error Code - "
- Err6 = "@þ Error Description -"
- Err7 = "@¤ Please Inform - "
- Err8 = ' "Error Notice" '
- Err9 = " 13032 Copenhill Rd."
- Err10 = " Dallas, TX. 75240 "
-
- Call Notify(1,Err1,Err2,Err3,MacrosName,Err4,ErrLine,Err5,ErrCode,Err6,ErrInfo,Err7,Err8,Err9,Err10)
-
- /* -------------------------------------------------------------------- */
- /* Advanced Error Handling */
- CALL SETCLIP("ErrorMacro",MacrosName)
- CALL SETCLIP("ErrorLine",ErrLine)
- CALL SETCLIP("ErrorCode",ErrCode)
- CALL SETCLIP("ErrorDesc",ErrInfo)
-
- PARSE SOURCE TempA TempB ErrFile TempC TempD TempE
-
- CALL SETCLIP("ErrorFile",ErrFile)
-
- /* -------------------------------------------------------------------- */
-
- IF (VT3DLib) THEN CALL REMLIB("LWModelerARexx.port")
- EXIT
-