Wenn ich dieses eingebe : colli = FirstWorldCollisionEntity()
kommt die Fehlermeldung : Invalid memory acces. (read error at address
 .
.mfg
Code: Alles auswählen
#CameraSpeed=10
#EntitySpeed=5
#Camera=0
Dim Node(5)
global colli
Define.f KeyX,KeyY,MouseX,MouseY
  InitEngine3D()
  Add3DArchive("Data\", #PB_3DArchive_FileSystem)
 
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  hWnd = OpenWindow(0,0,0,800,600,"Nodes",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  OpenWindowedScreen(hWnd,220,10,500,400,0,0,0)
  
    Add3DArchive("Data\", #PB_3DArchive_FileSystem) 
    EnableWorldPhysics(#True)
    EnableWorldCollisions(#True)
     
    CreateMaterial(0, LoadTexture(0, "gruen.jpg"))
    CreateMaterial(1, LoadTexture(1, "hintergr.jpg"))
    CreateMaterial(2, LoadTexture(2, "gelb.jpg"))
   
    Restore NumericalData
    Read.l Vert
    Read.l Tria
    Read.l Max
 
    CreateMesh(0, vert)
    SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color  | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
    SetMeshData(0, #PB_Mesh_Face, ?Triangle, Tria); 1)
   
    CreateMesh(1, vert)
    SetMeshData(1, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color  | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
    SetMeshData(1, #PB_Mesh_Face, ?Triangle, Tria); 1)
   
    CreateMesh(2, vert) 
    SetMeshData(2, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color  | #PB_Mesh_UVCoordinate, ?Vertice, Vert);3)
    SetMeshData(2, #PB_Mesh_Face, ?Triangle, Tria); 1)
   
    LoadMesh   (3,"test1.mesh")
    CreateMaterial(3,LoadTexture(0,"gruen.jpg"))
    MaterialAmbientColor(3,#PB_Material_AmbientColors)
    LoadMesh   (4,"test1.mesh")
    CreateMaterial(4,LoadTexture(4,"rot.jpg"))
    MaterialAmbientColor(4,#PB_Material_AmbientColors)
    LoadMesh   (5,"test1.mesh")
    CreateMaterial(5,LoadTexture(5,"blau.jpg"))
    MaterialAmbientColor(5,#PB_Material_AmbientColors)
     
    CreateCamera(#Camera,0,0,100,100)
    CameraLocate(#Camera,0,200,300)
    CameraLookAt(#Camera,0,0,0)
    CreateLight(0,RGB(255,255,255),0,500,0)
    AmbientColor(RGB(200,200,200))
 
       CreateEntity(20,MeshID(0),MaterialID(1),0,-45,0)
       ScaleEntity(20,300,1,300)
       EntityPhysicBody(20,#PB_Entity_StaticBody)
       
       anzahl=9
       For x=-2 To 2 Step 2
        For z=-2 To 2 Step 2
          anzahl=anzahl+1
          CreateEntity(anzahl,MeshID(0),MaterialID(0),x*80,0,z*80)
          ScaleEntity(anzahl,30,30,30)
          EntityPhysicBody(anzahl,#PB_Entity_StaticBody)
        Next
       Next
     
      Node(0) = CreateNode(#PB_Any,0,0,0)
      CreateEntity(0,MeshID(2),MaterialID(2))
      ScaleEntity(0,25,5,12)  
      AttachNodeObject(Node(0),EntityID(0),#PB_Node_Entity)
      
      ;-------------------------------
      Node(1) = CreateNode(#PB_Any,0,10,0)
      AttachNodeObject(Node(0),NodeID(Node(1)),#PB_Node_Entity)
      CreateEntity(1,MeshID(3),MaterialID(3))
      ScaleEntity(1,8,8,8) 
      AttachNodeObject(Node(1),EntityID(1),#PB_Node_Entity)
      ;---------------------------------
      Node(2) = CreateNode(#PB_Any,0,33,0)
      AttachNodeObject(Node(1),NodeID(Node(2)),#PB_Node_Entity)
      CreateEntity(2,MeshID(4),MaterialID(4))
      ScaleEntity(2,8,8,8)   
      AttachNodeObject(Node(2),EntityID(2),#PB_Node_Entity)
      
      ;----------------------------------
      
      Node(3) = CreateNode(#PB_Any,0,33,0)
      AttachNodeObject(Node(2),NodeID(Node(3)),#PB_Node_Entity)
      CreateEntity(3,MeshID(5),MaterialID(5))
      ScaleEntity(3,8,8,8)   
      AttachNodeObject(Node(3),EntityID(3),#PB_Node_Entity)
     
      ;-----------------------------------
        
      CreateEntity(9,MeshID(2),MaterialID(2)) ; Bounding Box
      EntityLocate(9, 50,0,0)
      EntityPhysicBody(9,#PB_Entity_BoxBody, #PB_Entity_AbsoluteBodyMove)
      SetEntityMass(9,10)
      ScaleEntity(9,1.0, 0.25, 0.5)
     
      WorldDebug(#PB_World_DebugBody)
     
      Repeat
     
        ExamineKeyboard()
        
        Active=0
        
        If KeyboardPushed(#PB_Key_Q)
          RotateNode(Node(1),1,0,0,#PB_Relative) 
        ElseIf KeyboardPushed(#PB_Key_W)
          RotateNode(Node(1),-1,0,0,#PB_Relative) 
        EndIf
        
        If KeyboardPushed(#PB_Key_E)
          RotateNode(Node(2),1,0,0,#PB_Relative) 
        ElseIf KeyboardPushed(#PB_Key_R)
          RotateNode(Node(2),-1,0,0,#PB_Relative) 
        EndIf
        
        If KeyboardPushed(#PB_Key_T)
          RotateNode(Node(3),1,0,0,#PB_Relative) 
        ElseIf KeyboardPushed(#PB_Key_Y)
          RotateNode(Node(3),-1,0,0,#PB_Relative) 
        EndIf
         
        If KeyboardPushed(#PB_Key_PageUp)
          Speed=-#CameraSpeed
        ElseIf KeyboardPushed(#PB_Key_PageDown)
          Speed=#CameraSpeed
        Else
          Speed=0
        EndIf
       
        If KeyboardPushed(#PB_Key_Left)
          Turn_X+1
          RotateNode(Node(0),0,Turn_x,0,#PB_Absolute)
          RotateEntity(9,0,Turn_x,0,#PB_Absolute)
        ElseIf KeyboardPushed(#PB_Key_Right)
          Turn_X-1
          RotateNode(Node(0),0,Turn_x,0,#PB_Absolute)
          RotateEntity(9,0,Turn_x,0,#PB_Absolute)
        EndIf
       
        If KeyboardPushed(#PB_Key_X)
          Move_X=-#EntitySpeed
          Active=1
        ElseIf  KeyboardPushed(#PB_Key_C)
          Move_X=#EntitySpeed
          Active=1
        EndIf
                 
        If KeyboardPushed(#PB_Key_A)
           Move_Y=#EntitySpeed*5
           Active=2
        ElseIf  KeyboardPushed(#PB_Key_Z)
           Move_Y=-#EntitySpeed*5
           Active=2
        EndIf
       
        If KeyboardPushed(#PB_Key_Up)
           Move_Z=#EntitySpeed
           Active=3
        ElseIf KeyboardPushed(#PB_Key_Down)
           Move_Z=-#EntitySpeed
           Active=3   
        EndIf
       
        If Turn_X>360
          Turn_X-360
        ElseIf Turn_X<0
          Turn_X+360
        EndIf
       
        Deg_X=Turn_X+90
        If Deg_X>360
          Deg_X-360
        ElseIf Deg_X<0
          Deg_X+360
        EndIf
                           
       Select Active
          Case 1
            deg.f=(#PI/180)*Turn_X
             MoveEntity(9,Sin(deg)*Move_X * 10.0,0,Cos(deg)*Move_X * 10.0)
          Case 2
             MoveEntity(9,0,Move_Y,0)
          Case 3
            deg.f=(#PI/180)*Deg_X
            MoveEntity(9,Sin(deg)*Move_Z * 10.0,0,Cos(deg)*Move_Z * 10.0)
           Default
            MoveEntity(9,0,0,0)
       EndSelect
     
      If ExamineMouse()
        MouseX=-(MouseDeltaX()/30)*#CameraSpeed/2
        MouseY=-(MouseDeltaY()/30)*#CameraSpeed/2
      EndIf
     
      RotateCamera(0,MouseY/2,MouseX/2,RollZ,#PB_Relative)
      MoveCamera(0,0,0,Speed)
     
      NodeLocate(Node(0), EntityX(9), EntityY(9), EntityZ(9))
      
      ExamineWorldCollisions()
      NextWorldCollision()
      colli = FirstWorldCollisionEntity()
      
      RenderWorld()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit=1
 
End
DataSection
   StringSect:
      Data.s ""
   NumericalData:
   Data.l 24,12,2
   Vertice:  ;x,y,z,nx,ny,nz,col,u,v = Vertex + Normal + Col + UV Koordinaten
   Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
   Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
   Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
   Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
   Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
   Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
   Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
   Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
   Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
   Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
   Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
   Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
   Data.f 1,-1,1,0.57735,-0.57735,0.57735,0,0,0
   Data.f 1,-1,-1,0.57735,-0.57735,-0.57735,0,0,0
   Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
   Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
   Data.f -1,-1,1,-0.57735,-0.57735,0.57735,0,0,0
   Data.f -1,-1,-1,-0.57735,-0.57735,-0.57735,0,0,0
   Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
   Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
   Data.f 1,1,-1,0.57735,0.57735,-0.57735,0,0,0
   Data.f 1,1,1,0.57735,0.57735,0.57735,0,0,0
   Data.f -1,1,1,-0.57735,0.57735,0.57735,0,0,0
   Data.f -1,1,-1,-0.57735,0.57735,-0.57735,0,0,0
   Triangle: ; Vertice x,y,z verbinden/Create Triangle
   Data.w 2,0,3
   Data.w 1,0,2
   Data.w 6,4,7
   Data.w 5,4,6
   Data.w 10,8,11
   Data.w 9,8,10
   Data.w 14,12,15
   Data.w 13,12,14
   Data.w 18,16,19
   Data.w 17,16,18
   Data.w 22,20,23
   Data.w 21,20,22
EndDataSection