Rem My First Screensaver - (c) TDK_Man Nov 2002
Set display mode 800,600,16
Sync on
Sync rate 0
Hide Mouse
Autocam off
Set camera range 1.0,900000.0
Rem ----- Load Images -----
Load Image "psycodelic.bmp",100
Load Image "water.bmp",101
Load Image "db.bmp",102
Rem ----- World Sphere -----
Make Object Sphere 1,100000
Texture Object 1,100
Set Object 1,1,1,0
YRotate Object 1,90.0
Rem ----- Water Plain -----
Make Object Plain 2,100000,100000
Texture Object 2,101
Scale Object Texture 2,6,8
Scale Limb Texture 2,0,5,2
Ghost Object On 2
XRotate Object 2,90
Rem ----- Main Cube -----
Make Object Cube 3,700
Position Object 3,0,300,0
Rem ----- Main Cube Reflection -----
Make Object Cube 4,700
Position Object 4,0,-1000,0
Rem ----- DB Cube -----
Make Object Cube 5,400
Position Object 5,-1000,300,0
ZRotate Object 5,180
Texture Object 5,102
Rem ----- DB Cube Reflection -----
Make Object Cube 6,400
Position Object 6,-1000,-1000,0
ZRotate Object 6,180
Texture Object 6,102
Rem ----- Camera -----
Position Camera -1000,500,-4000
Point camera 0,0,0
WaterLevel=-500: WaterLevelInc=1
Repeat
YRotate Object 1,Wrapvalue(Object Angle Y(1)+.01): Rem Rotate Psycodelic Sky
Get image 1,1,1,100,100: Rem Grab Bit Of Psycodelic Sky
TEXTURE Object 3,1: TEXTURE Object 4,1: Rem And use it to texture cubes
Water# = wrapValue(Water# + 0.02): Rem Move Water
Position Object 2, newxvalue(0,Water#,10000.0),WaterLevel,newzvalue(0,Water#,10000.0): Rem Move Water
XRotate Object 3,Wrapvalue(Object Angle X(3)+1): Rem X Rotate Main Cube
YRotate Object 3,Wrapvalue(Object Angle Y(3)+1): Rem Y Rotate Main Cube
ZRotate Object 3,Wrapvalue(Object Angle Z(3)+1): Rem Z Rotate Main Cube
XRotate Object 4,Wrapvalue(Object Angle X(4)-1): Rem X Rotate Main Cube Reflection
YRotate Object 4,Wrapvalue(Object Angle Y(4)+1): Rem Y Rotate Main Cube Reflection
ZRotate Object 4,Wrapvalue(Object Angle Z(4)-1): Rem Z Rotate Main Cube Reflection
Position Object 4,0,WaterLevel-600,0: Rem Position Water Level
XRotate Object 5,Wrapvalue(Object Angle X(5)+1): Rem X Rotate DB Cube
YRotate Object 5,Wrapvalue(Object Angle Y(5)+1): Rem Y Rotate DB Cube
ZRotate Object 5,Wrapvalue(Object Angle Z(5)+1): Rem Z Rotate DB Cube
XRotate Object 6,Wrapvalue(Object Angle X(6)-1): Rem X Rotate DB Cube Reflection
YRotate Object 6,Wrapvalue(Object Angle Y(6)+1): Rem Y Rotate DB Cube Reflection
ZRotate Object 6,Wrapvalue(Object Angle Z(6)-1): Rem Z Rotate DB Cube Reflection
DBCube# = wrapValue(DBCube# + .5)
Position Object 5, newxvalue(0,DBCube#,2000.0),300,newzvalue(0,DBCube#,2000.0): Rem Orbit DB Cube
Position Object 6, newxvalue(0,DBCube#,2000.0),WaterLevel-600,newzvalue(0,DBCube#,2000.0): Rem Orbit DB Cube Reflection
Rem ---------- Calculate Rise And Fall Of Water Level ----------
Inc WaterLevel,WaterLevelInc
If WaterLevel=-400 and WaterLevelInc=1 Then WaterLevelInc=-1
If WaterLevel=-700 and WaterLevelInc=-1 Then WaterLevelInc=1
Rem ---------- Watch For Keypress Or Mouse Movement ----------
if scancode() or mousemovex() or mousemovey() then Finished=1
sync: Rem Update Screen
Until Finished=1
End