[3D|Irrlicht] AutoIt Picture viewer

  • Hallöchen, heute darf ich euch meinen AutoIt Picture viewer vorstellen:
    Ich vermute mal, alle wissen was en picture viewer sein könnte :)
    Hab das ganze mit Irrlicht umgesetzt,
    das Skript ist jedoch relativ einfach gehalten:

    Spoiler anzeigen
    [autoit]

    #include "au3Irrlicht2.au3"
    #include<misc.au3>
    #include<array.au3>
    #include<file.au3>
    #include<sound.au3>
    HotKeySet("{ESC}", "_close")
    hotkeyset("p", "_play")

    [/autoit] [autoit][/autoit] [autoit]

    Local $x = 20
    Local $z = -15
    Local $text[1000]
    Local $node[1000]
    local $music=true
    Local $current = 1

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists(@ScriptDir & "\bg.bmp") Then
    MsgBox(0, "ERROR", "'\ParticleBlue.bmp' does not exist")
    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $path = FileSelectFolder("Chose your folder", "") & "\"
    $pics = _FileListToArrayMultiSelect($path, "*.jpg;*.bmp;*.tga;*.png;*.gif", ";", 1)
    Until ubound($pics)-1 < 1000 and ubound($pics)-1>0
    _IrrStart($IRR_EDT_OPENGL, @DesktopWidth, @DesktopHeight, $IRR_BITS_PER_PIXEL_32, _
    $IRR_WINDOWED, $IRR_SHADOWS, $IRR_capture_EVENTS, $IRR_VERTICAL_SYNC_ON)
    $camera = _irraddcamera($x, 0, -15, $x, 0, -10)
    _IrrSetWindowCaption("Autoit Picture Viewer")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($pics) - 1

    [/autoit] [autoit][/autoit] [autoit]

    $node[$i] = _IrrAddTestSceneNode()
    _irrsetnodeposition($node[$i], $i * 20, 0, 0)
    $text[$i] = _irrgettexture($path & $pics[$i])
    _IrrSetNodeMaterialTexture($node[$i], $text[$i], 0)
    _IrrSetNodeMaterialFlag($node[$i], $IRR_EMF_LIGHTING, $IRR_Off)
    ToolTip($i & "/" & UBound($pics) - 1 & " loaded", 0, 0)
    Next
    $particleSystem = _IrrAddParticleSystemToScene($IRR_NO_EMITTER)
    $SmokeEmitter = __CreateParticleSettings( _
    - 50, -4, 4, _
    50.0, 50.0, 50.0, _
    0, 0, 0, _
    10, 20, _
    100, 100, 0, _
    50, 255, 200, _
    2000, 5000, _
    1.0, 1.0, _
    10.0, 10.0, _
    1)
    _IrrAddParticleEmitter($particleSystem, $SmokeEmitter)
    _IrrAddParticleAttractionAffector($particleSystem, 2.0, 0.0, 2.0, 2.0, $IRR_ATTRACT)
    $ParticleTexture = _IrrGetTexture(@ScriptDir & "\bg.bmp")
    _IrrSetNodeMaterialTexture($particleSystem, $ParticleTexture, 0)
    _IrrSetNodeMaterialFlag($particleSystem, $IRR_EMF_LIGHTING, $IRR_Off)
    _IrrSetNodeMaterialType($particleSystem, $IRR_EMT_TRANSPARENT_VERTEX_ALPHA)
    _irrsetnodeposition($particleSystem, $x, -10, 10)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
    $soundopen= _soundopen(@scriptdir&"\bgmusic.mp3")
    $sound= _soundplay($soundopen)
    $music=true
    While _IrrRunning()
    If _IsPressed(27) And $x < ($i - 1) * 20 Then
    Sleep(50)
    $xold = $x
    Do
    $x += 1
    _IrrSetNodePosition($camera, $x, 0, $z)
    _IrrSetCameraTarget($camera, $x, 0, 0)
    _irrsetnodeposition($particleSystem, $x, -10, 10)
    _drawscene()
    Until $x = $xold + 20
    $current += 1
    SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
    ElseIf _IsPressed(25) And $x > 20 Then
    Sleep(50)
    $xold = $x
    Do
    $x -= 1
    _IrrSetNodePosition($camera, $x, 0, $z)
    _IrrSetCameraTarget($camera, $x, 0, 0)
    _irrsetnodeposition($particleSystem, $x, -10, 10)
    _drawscene()
    Until $x = $xold - 20
    $current -= 1
    SplashTextOn("", $pics[$current], @DesktopWidth, 70, 0, 0, 1, "", 24)
    ElseIf _IsPressed(28) And $z > -30 Then
    sleep(50)
    $z -= 1
    _IrrSetNodePosition($camera, $x, 0, $z)
    _IrrSetCameraTarget($camera, $x, 0, 0)
    _irrsetnodeposition($particleSystem, $x, -10, 10)
    ElseIf _IsPressed(26) And $z < -7 Then
    sleep(50)
    $z += 1
    _IrrSetNodePosition($camera, $x, 0, $z)
    _IrrSetCameraTarget($camera, $x, 0, 0)
    _irrsetnodeposition($particleSystem, $x, -10, 10)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    else
    _drawscene()
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd
    Func _drawscene()
    _IrrBeginScene(0, 10, 0)
    _IrrDrawScene()
    _IrrEndScene()
    EndFunc ;==>_drawscene
    Func _FileListToArrayMultiSelect($dir, $searchlist, $Separator, $iFlag = 0)
    Local $FileList[1] = [0], $Filelist1, $iN, $Num, $search

    [/autoit] [autoit][/autoit] [autoit]

    $search = StringSplit($searchlist, $Separator)
    If $search[0] > 0 Then
    For $iN = 1 To $search[0]
    $Filelist1 = _FileListToArray($dir, $search[$iN], $iFlag)
    If Not @error Then
    $Num = UBound($FileList)
    _ArrayConcatenate($FileList, $Filelist1)
    $FileList[0] = $FileList[0] + $FileList[$Num]
    _ArrayDelete($FileList, $Num)
    EndIf
    Next
    EndIf
    Return $FileList
    EndFunc ;==>_FileListToArrayMultiSelect
    Func _close()
    Exit
    EndFunc ;==>_close
    func _play()
    If $music=true then
    sleep(100)
    $music=false
    _SoundStop($soundopen)
    elseif $music=false then
    sleep(100)
    $music=True
    $sound= _soundplay($soundopen)
    endif
    endfunc

    [/autoit]


    Dafür ist das Programm an sich, vom Style her :rofl::rofl: , um so besser geworden.
    [Blockierte Grafik: http://www.mediafire.com/imgbnc.php/780…729ff501e5g.jpg
    Den AutoIt Picture Viewer mit allen Dateien, die zur korrekten Darstellung (Partikelsystem+Hintergrundmusik) benötigt werden, liegt hier zum download bereit. Steuerung mit Pfeiltasten, Musik an/aus mit "P".
    Viel Spaß beim Testen...
    gruß billie
    Edit: ganz wichtig: je mehr dateien ausgewählt werden/ je größer die dateien sind, desto länger ladet das programm am anfang

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

  • hm... finds besser, wenns einmal richtig lädt, und das programm dann flüssig, ohne unterbrechung läuft.
    bei itunes dauerts ja meistens auch länger, bis zb die cover geladen sind...
    Edit: habs jetzt mal in der whileschleife und mitm adlibregister probiert: wenn, während das programm schon läuft und bilder geswitcht werden, immer neue objekte hinzugefügt werden, hängt alles....

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble

    2 Mal editiert, zuletzt von Twodollarbillie (22. August 2011 um 16:45)

  • die dll's sind drin...skript is hier drin, die include, welche du nur zum bearbeiten meines skriptes brauchst ( :thumbdown: ), kannst ja wohl selber suchen...

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble