VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtObserverEventProcessor.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile:  $ $Revision:  $ $State:  $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 
00015 #include <vrvCore/vrvCore.h>
00016 #include <vrvCore/DtEventProcessorInterface.h>
00017 #include <vrvCore/DtElementEntry.h>
00018 
00019 namespace makVrv
00020 {
00021    class DtDe;
00022    class DtInputDriver;
00023    class DtObserver;
00024    class DtIntersectorResult;
00025 
00029    class DT_DLL_VRVCORE DtObserverEventProcessor : public DtEventProcessorInterface
00030    {
00031    public:
00032 
00034       DtObserverEventProcessor(DtInputDriver& inputDriver, DtDe& de);
00035 
00037       virtual ~DtObserverEventProcessor();
00038 
00039       bool isMouseLooking() const;
00040       bool isTerrainDragging() const;
00041       bool isTerrainOrbitDragging() const;
00042       bool isViewDragging() const;
00043 
00049       void getHiddenMousePosition( int& mouseX, int& mouseY );
00050 
00054       virtual bool processMouseEvent( const DtMouseEvent& ev, DtChannel& channel);      
00055       
00059       virtual bool processKeyboardEvent( const DtKeyEvent& ev, DtChannel& channel);
00060 
00063       virtual const std::string& className();
00064 
00066       void processRightClickOnSelection( DtChannel& channel,
00067          const DtUniqueID& objectId, const DtMouseState& mouseState );
00068 
00071       static bool isJumpToEvent( DtMouseEvent::EventType mouseEventType,
00072          DtMouseState::MouseModifier mouseModifiers, DtElementEntry::ObjectType type );
00073 
00076       static bool isAttachToEvent( DtMouseEvent::EventType mouseEventType,
00077          DtMouseState::MouseModifier mouseModifiers, DtElementEntry::ObjectType type );
00078     
00079    protected:
00080 
00081       void processObjectMousedOn( DtObserver& observer, DtChannel& channel, 
00082          const DtMouseEvent&  mouseEvent, const DtIntersectorResult& isectResult);
00083 
00084       void processTerrainMousedOn( DtObserver& observer, DtChannel& channel, 
00085          const DtMouseEvent& mouseEvent, const DtIntersectorResult& isectResult);
00086 
00087       void showMouse( DtChannel& channel );
00088       void hideMouse( DtChannel& channel, const DtMouseEvent& mouseEvent );
00089 
00090       //View drag behavior
00091       void viewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
00092       void startViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
00093       void continueViewDrag(DtObserver&, DtChannel&, const DtMouseEvent&  );
00094       void stopViewDrag(DtObserver&, DtChannel&, const DtMouseEvent& );
00095 
00096       //Mouse look behavior
00097       void mouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
00098       void startMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
00099       void continueMouseLook( DtObserver&, DtChannel&, const DtMouseEvent& );
00100       void stopMouseLook(DtObserver&, DtChannel&, const DtMouseEvent& );
00101 
00102       //Terrain drag behavior
00103       void dragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
00104       void startDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
00105       void continueDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);      
00106       void stopDragTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
00107 
00108       void scrollLevelObserverByWheel( DtObserver& observer, DtChannel& channel,
00109          const DtMouseEvent& mouseEvent);
00110       void moveObserverByWheel( DtObserver&, DtChannel&, const DtMouseEvent&);      
00111       void changeViewMagnificationByWheel(  DtObserver&, DtChannel&,
00112          const DtMouseEvent&);
00113       void changeViewResolutionByWheel( DtObserver& observer, 
00114          DtChannel& channel, const DtMouseEvent& mouseEvent );
00115       void resetMagnification(  DtObserver&, DtChannel&, const DtMouseEvent&);
00116 
00117       void changeObserverSpeedByWheel(DtObserver& observer, DtChannel& channel,
00118          const DtMouseEvent& me);
00119 
00120       void moveObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent& );
00121       void orbitObserverOverTerrain( DtObserver&, DtChannel&, const DtMouseEvent&);
00122 
00123       void pickIntoScene(DtObserver&, DtChannel&, const DtMouseEvent&);                
00124       void rotate2DObserver(DtObserver&, double xDelta, double yDelta);     
00125 
00127       DtElementEntry::ObjectType typeFromId( const DtUniqueID& id );           
00128 
00129    protected:
00130 
00131       DtDe& myDe;
00132       DtInputDriver& myInputDriver;
00133       std::string myName;
00134 
00135       bool myIsMouseLooking;     
00136       double myLastMouseLookX;
00137       double myLastMouseLookY;
00138 
00140       bool myIsTerrainDragging;
00141       bool myIsTerrainOrbitDragging;
00142       DtMouseEvent myLastTerrainDragMouseEvent;
00143 
00144       bool myIsViewDragging;
00145       double myLastViewDragX;
00146       double myLastViewDragY;
00147 
00148       int myHiddenMouseX;
00149       int myHiddenMouseY;
00150 
00151       double myDragStartX;
00152       double myDragStartY;
00153       double myDragStartZ;
00154 
00157       char myQuadrant;
00158 
00161       double myVirtualMouseX;
00162       double myVirtualMouseY;
00163       double myHalfWindowWidth;
00164       double myHalfWindowHeight;
00165    };
00166 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)