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