/* CMD:Reverse Scene
*/
/* Reverse Scene */
/* Doesn't do envelopes (yet) */
/* By GLYPH July 1996 */
/* E-Mail: y82s1@unb.ca */

JUNK:
	mxx="LWModelerARexx.port"
	signal on error
	signal on syntax
	mxx_add = addlib(mxx,0)
	call main
	if (mxx_add) then call remlib(mxx)
	exit
	syntax:
	error:
	t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
	if (mxx_add) then call remlib(mxx)
	exit
return

main:
Address 'LWModelerARexx.port'
scenename = getfilename('Scene File','toaster:3d/scenes')
if scenename = '(none)' then exit(0)
newname = getfilename('New Scene File','toaster:3d/scenes')
if newname = '(none)' then exit(0)
call open(for,scenename,'R')
call open(rev,newname,'W')
firstframe = 1
lastframe = 30
do while eof(for)=0
 stuff = readln(for)
 call writeln rev, stuff
 fram1 = pos('FirstFrame',stuff)
 fram2 = pos('LastFrame',stuff)
 mot1 = pos('ObjectMotion',stuff)
 mot2 = pos('LightMotion',stuff)
 mot3 = pos('CameraMotion',stuff)
 if fram1 = 1 then parse var stuff dud firstframe
 if fram2 = 1 then parse var stuff dud lastframe
 if mot1 = 1 then call Motion
 if mot2 = 1 then call Motion
 if mot3 = 1 then call Motion
end
call close for
call close rev
return

Motion:
stuff = readln(for)
call writeln rev, stuff
keys = readln(for)
call writeln rev, keys

do k = 1 to keys
 stuff = readln(for)
 keya.k = stuff
 stuff = readln(for)
 parse var stuff frame l t c b
 newframe = trunc(lastframe-frame)
 keyb.k = '  '||newframe||' '||l||' '||t||' '||c||' '||b
end
do k = 1 to keys
 newk = keys-k+1
 call writeln rev, keya.newk
 call writeln rev, keyb.newk
end
return

    Source: geocities.com/g_fyffe/lw

               ( geocities.com/g_fyffe)