here´s a small snippet for testing. I want to move my camera near to (0, 0, 0) or away from it... But this doesn´t work.
What I´ve done wrong?
Code: Select all
EnableExplicit
Structure Vektor2
x.d
y.d
EndStructure
;Für jeden Punkt in der Welt ein Typ
Structure Vektor3 Extends Vektor2
z.d
EndStructure
Define.i Quit, event
Define.Vektor3 cam
#kam_0 = 0
#window = 0
#plane = 0
#light = 0
#tex_0 = 0
#mat_0 = 0
#node_0 = 0
Enumeration Entities
#planent
EndEnumeration
Procedure.w MouseWheelDelta() ;By Danilo
Protected x.w
x.w = ((EventwParam()>>16)&$FFFF)
ProcedureReturn -(x / 120)
EndProcedure
Procedure Debugger(title.s, x.d, y.d, z.d)
Debug title
Debug StrD(x)
Debug StrD(y)
Debug StrD(z)
Debug "-----------------"
EndProcedure
If InitEngine3D()
InitSprite()
InitKeyboard()
OpenWindow(#window, 0, 0, 1000, 500, "TOM-Calculator", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#window), 10, 10, 980, 480, 0, 10, 10, #PB_Screen_SmartSynchronization)
;-Licht
CreateLight(#light, RGB(255, 255, 255), 30, 20, 30)
WorldShadows(#PB_Shadow_TextureAdditive, 200, RGB(255 * 0.2, 255 * 0.2, 255 * 0.2), 4096)
AmbientColor(RGB(255 * 0.2, 255 * 0.2, 255 * 0.2))
CreatePlane(#plane, 100, 100, 100, 100, 100, 100)
CreateTexture(#tex_0, 128, 128)
StartDrawing(TextureOutput(#tex_0))
Box(0, 0, 128, 128, RGB(255, 255, 255))
Box(64, 0, 64, 64, RGB(0, 0, 255))
Box(0, 64, 64, 64, RGB(0, 0, 255))
StopDrawing()
CreateMaterial(#mat_0, TextureID(#tex_0))
CreateEntity(#planent, MeshID(#plane), MaterialID(#mat_0), 0, 0, 0)
;-Node
CreateNode(#node_0, 0, 0, 0)
;-Camera
CreateCamera(#kam_0, 0, 0, 100, 100)
cam\x = 100
cam\y = 100
cam\z = 100
MoveCamera(#kam_0, cam\x, cam\y, cam\z, #PB_Absolute)
CameraLookAt(#kam_0, 0, 0, 0)
CameraBackColor(#kam_0, RGB(50, 50, 250))
AttachNodeObject(#node_0, CameraID(#kam_0))
Repeat
Repeat
event = WindowEvent()
Select event
Case #WM_MOUSEWHEEL ;Es liegt ein Mausradevent vor.
; cam\x = CameraX(#kam_0)
; cam\y = CameraY(#kam_0)
; cam\z = CameraZ(#kam_0)
Debugger("Old Position", CameraX(#kam_0), CameraY(#kam_0), CameraZ(#kam_0))
;Debugger("Old Position", cam\x, cam\y, cam\z)
If MouseWheelDelta() > 0
cam\x / 0.75
cam\y / 0.75
cam\z / 0.75
;MoveCamera(#kam_0, cam\x / 0.75, cam\y / 0.75, cam\z / 0.75, #PB_Absolute)
Debugger("Position it should be (>0)", cam\x / 0.75, cam\y / 0.75, cam\z / 0.75)
Else
cam\x * 0.75
cam\y * 0.75
cam\z * 0.75
;MoveCamera(#kam_0, cam\x * 0.75, cam\y * 0.75, cam\z * 0.75, #PB_Absolute)
Debugger("Position it should be (<0)", cam\x * 0.75, cam\y * 0.75, cam\z * 0.75)
EndIf
MoveCamera(#kam_0, cam\x, cam\y, cam\z, #PB_Absolute)
Debugger("New Position", CameraX(#kam_0), CameraY(#kam_0), CameraZ(#kam_0))
;CameraLookAt(#kam_0, 0, 0, 0)
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until event = 0
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
RotateNode(#node_0, 0, -5, 0, #PB_Relative)
ElseIf KeyboardPushed(#PB_Key_Right)
RotateNode(#node_0, 0, 5, 0, #PB_Relative)
EndIf
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
Else
MessageRequester("Error", "The 3D Engine can't be initialized", 0)
EndIf
End
