Skip to content

Commit

Permalink
touch class use added
Browse files Browse the repository at this point in the history
  • Loading branch information
soniccat committed Jan 31, 2010
1 parent 081f5d1 commit b57b4e8
Show file tree
Hide file tree
Showing 10 changed files with 142 additions and 49 deletions.
50 changes: 26 additions & 24 deletions src/Tools/SEMain.h
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@

#ifndef SEMainDEF
#define SEMainDEF

#include "SEIncludeLibrary.h"

#include "SEDefinition.h"
#include "SETools.h"

#include "SEError.h"
#include "SEPathBase.h"
#include "SEFileReaderBase.h"
#include "SEFileLineReader.h"

#include "SEMesh.h"
#include "SEObjectStore.h"
#include "SESceneLoader.h"

#include "SEImageLoader.h"
#include "SETexture.h"

#include "SEPhysicWorld.h"
#include "SEPhysicObject.h"


#ifndef SEMainDEF
#define SEMainDEF

#include "SEIncludeLibrary.h"

#include "SEDefinition.h"
#include "SETools.h"

#include "SEError.h"
#include "SEPathBase.h"
#include "SEFileReaderBase.h"
#include "SEFileLineReader.h"

#include "SEMesh.h"
#include "SEObjectStore.h"
#include "SESceneLoader.h"

#include "SEImageLoader.h"
#include "SETexture.h"

#include "SEPhysicWorld.h"
#include "SEPhysicObject.h"

#include "SETouchController.h"

#endif //SEMainDEF
32 changes: 32 additions & 0 deletions src/Tools/SETouch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,44 @@

SETouch::SETouch(void)
{
SetX(0);
SetY(0);
mIdObj = NULL;
}

SETouch::SETouch( float x, float y )
{
SetX(x);
SetY(y);
mIdObj = NULL;
}

SETouch::SETouch(float x, float y, void* obj)
{
SetX(x);
SetY(y);
mIdObj = obj;
}

SETouch::~SETouch(void)
{
}

void SETouch::SetX( float x )
{
mX = x;
}

void SETouch::SetY( float y )
{
mY = y;
}

void* SETouch::idObj()
{
return mIdObj;
}

float SETouch::x()
{
return mX;
Expand Down
9 changes: 9 additions & 0 deletions src/Tools/SETouch.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,21 @@ class SETouch
float mX;
float mY;

//object to identificate touch: UITouch in iPhone
void* mIdObj;

public:
SETouch(void);
SETouch(float x, float y);
SETouch(float x, float y, void* obj);
~SETouch(void);

float x();
float y();
void* idObj();

void SetX( float x );
void SetY( float y );
};


Expand Down
27 changes: 20 additions & 7 deletions src/Tools/SETouchController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ SETouchControllerPtr SETouchController::mInstance;

SETouchController::SETouchController(void)
{
mPressedTouchCount = 0;
}

SETouchController::~SETouchController(void)
Expand Down Expand Up @@ -36,7 +37,7 @@ void SETouchController::AddTouch( SETouch touch )
mModifyTouchArray.push_back( touch );
}

void SETouchController::EndTouching( SETouchingType type )
void SETouchController::EndTouching( SETouchType type, SETouchButton button )
{
SEAssert( mModifyTouchArray.size(), "End not begin touch" );

Expand All @@ -47,21 +48,33 @@ void SETouchController::EndTouching( SETouchingType type )
{
switch( type )
{
case SETouchingAddTouches:
(*start)->TouchesBegin( mModifyTouchArray.begin(), mModifyTouchArray.size() );
case SETouchBegin:
mPressedTouchCount += mModifyTouchArray.size();
(*start)->TouchesBegin( mModifyTouchArray.begin(), mModifyTouchArray.size(), button );
break;

case SETouchingMoveTouches:
(*start)->TouchesMove( mModifyTouchArray.begin(), mModifyTouchArray.size() );
case SETouchMove:
(*start)->TouchesMove( mModifyTouchArray.begin(), mModifyTouchArray.size(), button );
break;

case SETouchingEndTouches:
(*start)->TouchesEnd( mModifyTouchArray.begin(), mModifyTouchArray.size() );
case SETouchEnd:
mPressedTouchCount -= mModifyTouchArray.size();
(*start)->TouchesEnd( mModifyTouchArray.begin(), mModifyTouchArray.size(), button );
break;
}

++start;
}

mModifyTouchArray.clear();
}

void SETouchController::EndTouching( SETouchType type )
{
EndTouching( type, SETouchButtonNone );
}

int SETouchController::pressedTouchCount()
{
return mPressedTouchCount;
}
24 changes: 17 additions & 7 deletions src/Tools/SETouchController.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,20 @@ class SETouchController;

typedef shared_ptr<SETouchController> SETouchControllerPtr;

enum SETouchingType
enum SETouchType
{
SETouchingAddTouches,
SETouchingMoveTouches,
SETouchingEndTouches
SETouchNone,
SETouchBegin,
SETouchMove,
SETouchEnd
};

enum SETouchButton
{
SETouchButtonNone,
SETouchButtonLeft,
SETouchButtonMiddle,
SETouchButtonRight
};


Expand All @@ -25,7 +34,7 @@ class SETouchController
static SETouchControllerPtr mInstance;

SETouchControllerDelegateArray mDelegateArray;
int mPressedTouch;
int mPressedTouchCount;

//touch buffer
SETouchArray mModifyTouchArray;
Expand All @@ -36,13 +45,14 @@ class SETouchController

static SETouchControllerPtr sharedInstance();

int pressedTouch();
int pressedTouchCount();

void AddHandler( SETouchControllerDelegatePtr obj );

void BeginTouching();
void AddTouch( SETouch touch );
void EndTouching(SETouchingType type);
void EndTouching(SETouchType type, SETouchButton button);
void EndTouching( SETouchType type );
};


Expand Down
6 changes: 3 additions & 3 deletions src/Tools/SETouchControllerDelegate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ SETouchControllerDelegate::~SETouchControllerDelegate(void)
{
}

void SETouchControllerDelegate::TouchesBegin( SETouchArray::iterator touch, size_t count )
void SETouchControllerDelegate::TouchesBegin( SETouchArray::iterator touch, size_t count, SETouchButton button )
{
}

void SETouchControllerDelegate::TouchesMove( SETouchArray::iterator touch, size_t count )
void SETouchControllerDelegate::TouchesMove( SETouchArray::iterator touch, size_t count, SETouchButton button )
{
}

void SETouchControllerDelegate::TouchesEnd( SETouchArray::iterator touch, size_t count )
void SETouchControllerDelegate::TouchesEnd( SETouchArray::iterator touch, size_t count, SETouchButton button )
{
}
8 changes: 5 additions & 3 deletions src/Tools/SETouchControllerDelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#ifndef SETouchControllerDelegate_H
#define SETouchControllerDelegate_H


#include "SEIncludeLibrary.h"
#include "SETouch.h"

Expand All @@ -10,16 +11,17 @@ class SETouchControllerDelegate;
typedef shared_ptr<SETouchControllerDelegate> SETouchControllerDelegatePtr;
typedef vector<SETouchControllerDelegatePtr> SETouchControllerDelegateArray;

enum SETouchButton;

class SETouchControllerDelegate
{
public:
SETouchControllerDelegate(void);
~SETouchControllerDelegate(void);

virtual void TouchesBegin( SETouchArray::iterator touch, size_t count );
virtual void TouchesMove( SETouchArray::iterator touch, size_t count );
virtual void TouchesEnd( SETouchArray::iterator touch, size_t count );
virtual void TouchesBegin( SETouchArray::iterator touch, size_t count, SETouchButton button );
virtual void TouchesMove( SETouchArray::iterator touch, size_t count, SETouchButton button );
virtual void TouchesEnd( SETouchArray::iterator touch, size_t count, SETouchButton button );
};


Expand Down
35 changes: 30 additions & 5 deletions vs/GLUT_Window_Template.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ using namespace std;
#define DEGREES_TO_RADIANS(__ANGLE__) ((__ANGLE__) / 180.0 * 3.14f)
#include <cmath>

vector<int, SEAllocator<int>> mass;

// Initialization
void init ();

Expand Down Expand Up @@ -248,11 +246,19 @@ void mouse (int button, int state, int x, int y)
// Pressed
case GLUT_DOWN:
printf ("Mouse Left Button Pressed (Down)...\n");
mass.push_back(100);

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchBegin, SETouchButtonLeft );
break;

// Released
case GLUT_UP:
printf ("Mouse Left Button Released (Up)...\n");

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchEnd, SETouchButtonLeft );
break;
}

Expand All @@ -266,10 +272,18 @@ void mouse (int button, int state, int x, int y)
// Pressed
case GLUT_DOWN:
printf ("Mouse Middle Button Pressed (Down)...\n");

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchBegin, SETouchButtonMiddle );
break;
// Released
case GLUT_UP:
printf ("Mouse Middle Button Released (Up)...\n");

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchEnd, SETouchButtonMiddle );
break;
}

Expand All @@ -283,10 +297,19 @@ void mouse (int button, int state, int x, int y)
// Pressed
case GLUT_DOWN:
printf ("Mouse Right Button Pressed (Down)...\n");

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchBegin, SETouchButtonRight );
break;
// Released

case GLUT_UP:
printf ("Mouse Right Button Released (Up)...\n");

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchEnd, SETouchButtonRight );
break;
}

Expand All @@ -303,6 +326,10 @@ void motion (int x, int y)
{
// Print the mouse drag position
printf ("Mouse Drag Position: %d, %d.\n", x, y);

SETouchController::sharedInstance()->BeginTouching();
SETouchController::sharedInstance()->AddTouch( SETouch( x,y ) );
SETouchController::sharedInstance()->EndTouching( SETouchMove );
}

//-------------------------------------------------------------------------
Expand Down Expand Up @@ -457,8 +484,6 @@ SETexturePtr objectTexture;

void main (int argc, sechar **argv)
{
mass.reserve(8);

btCollisionConfigurationPtr collisionConfiguration = btCollisionConfigurationPtr( SENewObject<btDefaultCollisionConfiguration>() );
btDispatcherPtr dispatcher = btDispatcherPtr ( SENewObject<btCollisionDispatcher>(collisionConfiguration.get()) );
btBroadphaseInterfacePtr overlappingPairCache = btBroadphaseInterfacePtr( SENewObject<btDbvtBroadphase>() );
Expand Down
Binary file modified vs/GLUT_Window_Template.ncb
Binary file not shown.
Binary file modified vs/GLUT_Window_Template.suo
Binary file not shown.

0 comments on commit b57b4e8

Please sign in to comment.