/*
 * CollisionApp.h
 *
 *  Created on: Feb 12, 2011
 *      Author: cpresser
 */

#ifndef BASICTUTORIAL05_H_
#define BASICTUTORIAL05_H_

#include "BaseApplication.h"
#include "GameObject.h"
#include <map>

class CollisionApp : public BaseApplication {
public:
        static const int LENGTH = 1000;
        static const int SPEED = 100;

        CollisionApp(void);
        virtual ~CollisionApp(void);

protected:
        virtual bool configure();
        virtual void createScene(void);
        virtual void createFrameListener(void);

        // Ogre::FrameListener
        virtual bool frameRenderingQueued(const Ogre::FrameEvent& evt );
        // OIS::KeyListener
        virtual bool keyPressed( const OIS::KeyEvent& evt );
        virtual bool keyReleased( const OIS::KeyEvent& evt );
        // OIS::MouseListener
        virtual bool mouseMoved( const OIS::MouseEvent& evt );
        virtual bool mousePressed( const OIS::MouseEvent& evt, OIS::MouseButtonID id );
        virtual bool mouseReleased( const OIS::MouseEvent& evt, OIS::MouseButtonID id );

        Ogre::Real mRotate;          // The rotate constant
        Ogre::Real mMove;            // The movement constant


        Ogre::Vector3 mDirection;     // Value to move in the correct direction

        std::map<Ogre::String, GameObject> mMap; //map of GameObjects

        //keep a pointer to the selected object
        GameObject *mSelected;


        //SceneQuery objects - use these when we add collision
        Ogre::RaySceneQuery *mRayQuery;
        Ogre::AxisAlignedBoxSceneQuery *mBoxQuery;
};

#endif /* BASICTUTORIAL05_H_ */