Seite 1 von 1

CreateCamera führt zum Programmabsturz

Verfasst: 03.01.2011 21:35
von felix16
Ich arbeite an einem Programm, bei dem auf Mausklick eine Kamera erstellt wird, die in die gleiche Richtung kuckt, wie meine Hauptkamera, aber sich weiter immer in die selbe Richtung weiterbewegt, also in die, in die meine Hauptkamera zum Zeitpunkt des Erstellens gekuckt hat. Wenn die erstellte Kamera sich über den Rand des Terrains hinausbewegt, soll sie gelöscht werden. Damit die Anzahl der erstellten Kameras variabel ist, benutze ich eine strukturierte Liste.

Der Code zum löschen:

Code: Alles auswählen

  If ListSize(playershot()) > 0  
    ForEach playershot()
      If EntityX(playershot()\EnID) < 0
        FreeCamera(playershot()\CamID)
        FreeEntity(playershot()\EnID)
        DeleteElement(playershot())
        Continue
      ElseIf EntityX(playershot()\EnID) > 60000
        FreeCamera(playershot()\CamID)
        FreeEntity(playershot()\EnID)
        DeleteElement(playershot())
        Continue
      EndIf
      If EntityZ(playershot()\EnID) < 0
        FreeCamera(playershot()\CamID)
        FreeEntity(playershot()\EnID)
        DeleteElement(playershot())
        Continue
      ElseIf EntityZ(playershot()\EnID) > 60000
        FreeCamera(playershot()\CamID)
        FreeEntity(playershot()\EnID)
        DeleteElement(playershot())
        Continue
      EndIf
    Next
  EndIf
Wenn dann eine Kamera gelöscht wurde, stürzt das Programm komplett ab, ohne das PB einen Fehler mitkriegt, und zwar wenn folgerder code ausgeführt wird:

Code: Alles auswählen

    If MouseButton(#PB_MouseButton_Left) And shotdelay = 0
      CamID = CreateCamera(#PB_Any,0,0,1,1)
      CameraLocate(CamID,CameraX(1),CameraY(1),CameraZ(1))
      CameraLookAt(CamID,CameraX(0),CameraY(0),CameraZ(0))
      EnID = CreateEntity(#PB_Any,MeshID(3),MaterialID(2),CameraX(CamID),CameraY(CamID),CameraZ(CamID))
      EntityLookAt(EnID,CameraX(0),CameraY(0),CameraZ(0))
      AddElement(playershot())
      playershot()\CamID = CamID
      playershot()\EnID = EnID
      shotdelay = 15
    ElseIf shotdelay > 0
      shotdelay - 1
    EndIf
Könnt ihr ein Problem erkennen, oder ist das ganze einfach ein Problem mit OGRE?
Vielen Dank im vorraus,

mfG Felix

Re: CreateCamera führt zum Programmabsturz

Verfasst: 04.01.2011 14:15
von super_castle
Hmmm, bei mir klappt es, liegt also an deine Grafikkarte.

Gruss

Re: CreateCamera führt zum Programmabsturz

Verfasst: 04.01.2011 14:23
von DarkDragon
Bekannter Bug, Kameras müssen vor allen Terrains oder so erstellt werden. Ich kenne die Reihenfolge nichtmehr genau, aber bei bestimmten Anordnungen crasht es.