MSCUBES.FRM

VERSION 5.00 
Object = "{34F681D0-3640-11CF-9294-00AA00B8A733}#1.0#0"; "danim.dll"
Begin VB.Form mscubes
BorderStyle = 1 'Fixed Single
Caption = "Mscubes"
ClientHeight = 4080
ClientLeft = 45
ClientTop = 330
ClientWidth = 8505
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4080
ScaleWidth = 8505
StartUpPosition = 3 'Windows Default
Begin DirectAnimationCtl.DAViewerControlWindowed DAViewerControlWindowed
Height = 3855
Left = 120
OleObjectBlob = "mscubes.frx":0000
TabIndex = 0
Top = 120
Width = 8295
End
End
Attribute VB_Name = "mscubes"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Visual Basic verion of Mscubes
Private Sub Form_Load()
Set changingRate = CreateObject("DirectAnimation.DANumber")
changingRate.Init DAStatics.Until(DANumber(0.2), LeftButtonDown, _
DAStatics.Until(DANumber(0), LeftButtonDown, changingRate))

' Set up relative paths for media imports. Does not work in VB
' debug. Create executable.
Dim mediaBase, geoBase, imgBase, midiBase As String
mediaBase = CurDir + "\..\..\..\..\..\Media\"
geoBase = mediaBase + "geometry\"
imgBase = mediaBase + "image\"
midiBase = mediaBase + "midi\"

'Import the needed geometry & images & sound.
Set geo = ImportGeometry(geoBase + "cube.x")
Set importSnd = ImportSound(midiBase + "circus.mid")
Set backgroundSnd = importSnd.Sound.RepeatForever()

Dim IELogos(8)
Set IELogos(0) = ImportImage(imgBase + "clogo1.gif")
Set IELogos(1) = ImportImage(imgBase + "clogo2.gif")
Set IELogos(2) = ImportImage(imgBase + "clogo3.gif")
Set IELogos(3) = ImportImage(imgBase + "clogo4.gif")
Set IELogos(4) = ImportImage(imgBase + "clogo5.gif")
Set IELogos(5) = ImportImage(imgBase + "clogo6.gif")
Set IELogos(6) = ImportImage(imgBase + "clogo7.gif")
Set IELogos(7) = ImportImage(imgBase + "clogo8.gif")
Set IELogos(8) = ImportImage(imgBase + "clogo9.gif")

'Call the Movie(), which cycles through the IELogos images every second.
Set imageCube = Movie(IELogos)

'Set lights.
Set pLight = PointLight.Transform(Translate3(0, 0, 4))
Set dLight = DirectionalLight.Transform(Rotate3(YVector3, 0.5))

'Manipulate the geometry.
Set geo = geo.Transform(Scale3Uniform(0.5)).Texture(imageCube.MapToUnitSquare())

'Create the four cubes and set them to rotate.
Set srate = Mul(LocalTime, DANumber(9))
Set cube1 = geo.Transform(Compose3(Translate3(0, 0, 2), _
Rotate3Anim(Vector3(0, 1, 0), Mul(DANumber(0.04), srate))))
Set cube2 = geo.Transform(Compose3(Translate3(0, 0, -2), _
Rotate3Anim(Vector3(0, 1, 1), Mul(DANumber(0.03), srate))))
Set cube3 = geo.Transform(Compose3(Translate3(2, 0, 0), _
Rotate3Anim(Vector3(0, 0, 1), Mul(DANumber(0.02), srate))))
Set cube4 = geo.Transform(Compose3(Translate3(-2, 0, 0), _
Rotate3Anim(Vector3(1, 1, 1), Mul(DANumber(0.03), srate))))

'Do the final prep work on the model.
Set finalgeo = UnionGeometry(cube1, UnionGeometry(cube2, UnionGeometry(cube3, cube4)))
Set Camera = PerspectiveCamera(5.5, 4.5).Transform(Scale3(45, 45, 1))

'Make the complete image rotate.
Set finalgeo = finalgeo.Transform(Rotate3Anim(YVector3, Integral(changingRate)))
Set finalgeo = UnionGeometry(finalgeo, pLight)

'Render and display the image.
Set rendered_geo = finalgeo.Render(Camera)

DAViewerControlWindowed.UpdateInterval = 0.2

'Set the image.
DAViewerControlWindowed.Image = Overlay(rendered_geo, DAStatics.SolidColorImage(White))

'Set the sound.
DAViewerControlWindowed.Sound = backgroundSnd

'Start the animation.
DAViewerControlWindowed.Start
End Sub

Function Movie(IELogos)
Set movieArray = DAStatics.DAArray(IELogos)
Set Movie = movieArray.NthAnim(DAStatics.Mod(LocalTime, DANumber(9)))
End Function