The CCS source code includes a demo project where you can find how it should be used. If you want to use the Visual Studio (VS) debugger to launch the demo you should set the option

Project -> Properties -> Configuration Properties -> debugging 
-> Working Directory 

to

$(OGRE_HOME)\bin\$(ConfigurationName)

In the demo project configuration options.

Anyway, here is the steps needed in order to incorporate the CCS plugin to any Ogre project using VS.
1) Download the CCS source code.
2) Configure your project to use the CCS plugin:

Project -> Properties -> Configuration Properties -> C/C++ 
-> General -> Aditional Include Directories : 

add the path to CCS includes directory (e.g. C:\CameraControlSystem\include).

Project -> Properties -> Configuration Properties -> Linker 
-> General -> Aditional Library Directories : 

add the path to CCS lib directory (e.g. C:\CameraControlSystem\lib).


Project -> Properties -> Configuration Properties -> Linker 
-> Input -> Additional Dependencies : 

add CameraControlSystem.lib
3) Add the CCS headers declaration in your application.

#include <CCSCameraControlSystem.h>

#include "CCSBasicCameraModes.h"
#include "CCSFreeCameraMode.h"
#include "CCSOrbitalCameraMode.h"

4) In the scene creation routine create a CCS instance...

CCS::CameraControlSystem* mCameraCS = new CCS::CameraControlSystem(mSceneMgr, "CameraControlSystem", mCamera);

4b) ... and register some camera modes.

// Create an instance of the "orbital" camera mode
CCS::OrbitalCameraMode* camMode12 = new CCS::OrbitalCameraMode(mCameraCS, 200);
camMode12->setZoomFactor(100);
camMode12->setRotationFactor(5);

// Register the instance in the camera control system
mCameraCS->registerCameraMode("Orbit test",camMode12);

// Create an instance of the "ThroughTarget" camera mode
CCS::ThroughTargetCameraMode* camMode6 = new CCS::ThroughTargetCameraMode(mCameraCS, 400);
camMode6->setCameraFocusPosition(
atheneNode->_getDerivedPosition() - Ogre::Vector3(0,100,0));

// Register the instance in the camera control system
mCameraCS->registerCameraMode("ThroughTarget",camMode6);

...
// Register as many camera mode instances in the camera control system as you need
...

5) Set the scene focus and the initial camera mode.

mCameraCS->setCameraTarget(headNode);
mCameraCS->setCurrentCameraMode(camMode12);

6) Update the camera in the frameListener or the main application loop.

mCameraCS->update(e.timeSinceLastFrame);

7) To change between registerded camera modes you have two options.


mCameraCS->setCurrentCameraMode(mCameraCS->getNextCameraMode());

or

mCameraCS->setCurrentCameraMode(
  mCameraCS->getCameraMode("Orbit test"));

8) Is that all? Well... Yes for the basic camera modes but some camera modes require user inputs (free and orbital camera modes at the moment). If using one of them they should be notified of user inputs.