void userInput ( void ) { dbControlCameraUsingArrowKeys ( 0, g_fSpeed, g_fTurn ); g_fOldCamAngleY = g_fCameraAngleY; g_fOldCamAngleX = g_fCameraAngleX; g_fCameraAngleY = dbWrapValue ( g_fCameraAngleY + dbMouseMoveX ( ) * 0.4f ); g_fCameraAngleX = dbWrapValue ( g_fCameraAngleX + dbMouseMoveY ( ) * 0.4f ); dbYRotateCamera ( dbCurveAngle ( g_fCameraAngleY, g_fOldCamAngleY, 24 ) ); dbXRotateCamera ( dbCurveAngle ( g_fCameraAngleX, g_fOldCamAngleX, 24 ) ); char* szKey = dbInKey ( ); if ( strcmp ( szKey, "+" ) == 0 ) { if ( g_fSpeed < 1000 ) g_fSpeed = g_fSpeed + 0.01f; } if ( strcmp ( szKey, "-" ) == 0 ) { if ( g_fSpeed > 0.02f ) g_fSpeed = g_fSpeed - 0.01f; } }
void CameraFreeView (int iID, float move, float ystep, float xturn, float yturn) { if (!camera.ACTIVE) return; // Tastatur Steuerung if (dbUpKey()==1) { camera.UPDATE=true; dbMoveCamera( iID, move); } if (dbDownKey()==1) { camera.UPDATE=true; dbMoveCamera( iID, -move); } if (dbLeftKey()==1) { camera.UPDATE=true; dbYRotateCamera( iID, dbWrapValue(camera.b-yturn)); } if (dbRightKey()==1) { camera.UPDATE=true; dbYRotateCamera( iID, dbWrapValue(camera.b+yturn)); } if (dbScanCode()==201) { camera.UPDATE=true; dbXRotateCamera( iID, dbWrapValue(camera.a+xturn)); } if (dbScanCode()==209) { camera.UPDATE=true; dbXRotateCamera( iID, dbWrapValue(camera.a-xturn)); } if (dbShiftKey()==1) { camera.UPDATE=true; dbPositionCamera(iID, camera.x,camera.y+ystep,camera.z);} if (dbControlKey()==1) { camera.UPDATE=true; dbPositionCamera(iID, camera.x,camera.y-ystep,camera.z);} // Maus Steuerung if ( mouse.c == 2) { if ( mouse.mx != 0.0f) { camera.UPDATE=true; dbYRotateCamera(iID,dbCurveAngle(dbWrapValue(camera.b+mouse.mx),camera.b,2.5f)); } if ( mouse.my != 0.0f) { camera.UPDATE=true; dbXRotateCamera(iID,dbCurveAngle(dbWrapValue(camera.a+mouse.my),camera.a,2.5f)); } if ( mouse.mz != 0.0f) { camera.UPDATE=true; dbMoveCamera(iID,mouse.mz);} } }
void CameraCylinder (int iID,float move, float ystep, float yturn) { if (!camera.ACTIVE) return; //Left if (dbLeftKey()==1) { camera.b=dbWrapValue(camera.b+yturn); float distXZ=dbSQRT(camera.x*camera.x+camera.z*camera.z); camera.x=dbNewXValue(camera.point.x,camera.b,-distXZ); camera.z=dbNewZValue(camera.point.z,camera.b,-distXZ); dbPositionCamera(iID,camera.x,camera.y,camera.z); dbPointCamera(iID,camera.point.x,camera.point.y,camera.point.z); camera.UPDATE=true; } //Right if (dbRightKey()==1) { camera.b=dbWrapValue(camera.b-yturn); float distXZ=dbSQRT(camera.x*camera.x+camera.z*camera.z); camera.x=dbNewXValue(camera.point.x,camera.b,-distXZ); camera.z=dbNewZValue(camera.point.z,camera.b,-distXZ); dbPositionCamera(iID,camera.x,camera.y,camera.z); dbPointCamera(iID,camera.point.x,camera.point.y,camera.point.z); camera.UPDATE=true; } //Shift if (dbShiftKey()==1) { camera.y += ystep; dbPositionCamera(iID,camera.x,camera.y,camera.z); dbPointCamera(iID,camera.point.x,camera.point.y,camera.point.z); camera.a=dbCameraAngleX(iID); camera.UPDATE=true; } //Strg if (dbControlKey()==1) { if (camera.y>=ystep) { camera.y -= ystep; dbPositionCamera(iID,camera.x,camera.y,camera.z); dbPointCamera(iID,camera.point.x,camera.point.y,camera.point.z); camera.a=dbCameraAngleX(iID); camera.UPDATE=true; } } //Up if (dbUpKey()==1) { dbMoveCamera(iID,move); camera.x=dbCameraPositionX(iID); camera.y=dbCameraPositionY(iID); camera.z=dbCameraPositionZ(iID); camera.UPDATE=true; } //Down if (dbDownKey()==1) { dbMoveCamera(iID,-move); camera.x=dbCameraPositionX(iID); camera.y=dbCameraPositionY(iID); camera.z=dbCameraPositionZ(iID); camera.UPDATE=true; } //Mouse if (mouse.c==2) { if ( mouse.mx != 0.0f) { dbYRotateCamera(iID,dbCurveAngle(dbWrapValue(dbCameraAngleY(iID)+mouse.mx),dbCameraAngleY(iID),2.5f)); } if ( mouse.my != 0.0f) { dbXRotateCamera(iID,dbCurveAngle(dbWrapValue(dbCameraAngleX(iID)+mouse.my),dbCameraAngleX(iID),2.5f)); } if ( mouse.mz != 0.0f) { dbMoveCamera(iID,mouse.mz);} } }