Example #1
0
void CCApplication::ccAccelerationUpdate()
{
	CCAcceleration AccValue;
	AccValue.x = (double)s3eAccelerometerGetX()/200;
	AccValue.y = (double)s3eAccelerometerGetY()/200;
	AccValue.z = (double)s3eAccelerometerGetZ()/200;
	AccValue.timestamp = (double) 50/ 100;
	
	// call delegates' didAccelerate function
	CCAccelerometer::sharedAccelerometer()->didAccelerate(&AccValue);
}
void EggDropGameEngine::Update(uint64 remainingTime, float* pfScore, char szUnits[100])
{
	s3eLocation curLoc;
	Utils::GetLocation(&curLoc);

	int requiredDistance = 50;

	double distance = LiveMaps::CalculateDistance(g_startLocation, curLoc);

	// Get the accelerometer values here...
	int32 x = s3eAccelerometerGetX();
	int32 y = s3eAccelerometerGetY();
	int32 z = s3eAccelerometerGetZ();

	if (g_finalScore != 0)
	{
		*pfScore = 0;
	}
	else if (g_bBroken)
	{
		*pfScore = 0;
		g_finalScore = -1;
	}
	else if (ABS(x) > 450)
	{
		*pfScore = 0;

		// we break;
		g_bBroken = true;
		g_iCrackIter = 0;
		fallingRot = rot;

		g_finalScore = (distance - requiredDistance);
	}
	else if (distance > requiredDistance)
	{
		g_finalScore = (GetGameLength() - remainingTime);
		*pfScore = 0;
	}
	else
	{
		*pfScore = (requiredDistance - distance);
		rot = -(x / 1000.0) / 2;
	}

	strcpy(szUnits, "meters remaining");
}
void AccelerometerHandler::Start(float minShakeMagnitude, int shakeCount, uint64 maxShakeDuration)
{
	s3eAccelerometerStart();
	g_minShakeMagnitude = minShakeMagnitude;
	g_shakeCount = shakeCount;
	g_maxShakeDuration = maxShakeDuration;
	
	g_prevX = s3eAccelerometerGetX();
	g_prevY = s3eAccelerometerGetY();
	g_prevZ = s3eAccelerometerGetZ();

	g_prevDirX = 0;
	g_prevDirY = 0;
	g_prevDirZ = 0;

	g_bIsInit = true;
}
void AccelerometerHandler::Update()
{
	if (g_bIsInit)
	{
		uint64 timerMs = s3eTimerGetMs();

		int32 x = s3eAccelerometerGetX();
		int32 y = s3eAccelerometerGetY();
		int32 z = s3eAccelerometerGetZ();

		int32 diffX = (x - g_prevX);
		int32 diffY = (y - g_prevY);
		int32 diffZ = (z - g_prevZ);

		// Get the change in magnitude
		float magnitude = (float)sqrt((diffX*diffX) + (diffY*diffY) + (diffZ*diffZ));

		// Clear out old events
		std::list<ShakeEvent*>::iterator shakeIter = g_shakeTimes.begin();
		std::list<ShakeEvent*> oldEvents;

		while (shakeIter != g_shakeTimes.end())
		{
			if ((timerMs-(*shakeIter)->timerMs) > g_maxShakeDuration)
			{
				oldEvents.push_back(*shakeIter);
			}
			shakeIter++;
		}

		shakeIter = oldEvents.begin();

		while (shakeIter != oldEvents.end())
		{
			g_shakeTimes.remove(*shakeIter);
			delete *shakeIter;
			shakeIter++;
		}

		int32 dirX = SIGN(x);
		int32 dirY = SIGN(y);
		int32 dirZ = SIGN(z);

		bool hasDirChange = false;
		if ( (dirX != g_prevDirX) || (dirY != g_prevDirY) || (dirZ != g_prevDirZ) )
		{
			hasDirChange = true;

			g_prevDirX = dirX;
			g_prevDirY = dirY;
			g_prevDirZ = dirZ;
		}

		if (hasDirChange && magnitude > g_minShakeMagnitude)
		{
			ShakeEvent* pEvent = new ShakeEvent;
			pEvent->timerMs = timerMs;
			pEvent->shakeMag = magnitude;

			g_shakeTimes.push_back(pEvent);
		}

		g_prevX = x;
		g_prevY = y;
		g_prevZ = z;
	}
}
Example #5
0
void CCApplication::ccAccelerationUpdate()
{
// Accelerometer doesn't work on Marmalade X86 MacOS-X simulator
#if !(defined(__APPLE__) && defined(I3D_ARCH_X86))
	CCDirector* pDirector = CCDirector::sharedDirector();
	pDirector->getAccelerometer()->update((float)s3eAccelerometerGetX(), (float)s3eAccelerometerGetY(), (float)s3eAccelerometerGetZ(), s3eTimerGetMs());	// MH: Added casting to float
#endif
}
Example #6
0
void CIwGameInput::Update()
{
	// Update the pointer if it is available
	if (PointerAvailable)
		s3ePointerUpdate();

	// Update key system if it is available
	s3eKeyboardUpdate();

	Tapped = false;

	int num_touches = getTouchCount();
	DragDelta.x = 0;
	DragDelta.y = 0;

	if (num_touches == 0)
		Dragging = false;
	else
		Dragging = true;

	// User has just pressed screen so start timer
	if (PreviousNumTouches == 0 && num_touches == 1)
	{
		TapTimer.setDuration(TAP_TIME_MS);
		TouchedPos.x = getTouch(0)->x;
		TouchedPos.y = getTouch(0)->y;
	}

	// User has stopped pressing screen so check to see if press was a short press (a tap)
	if (PreviousNumTouches == 1 && num_touches == 0)
	{
		// Only check if touch hasnt moved much
		int dx = getTouch(0)->x - TouchedPos.x;
		int dy = getTouch(0)->y - TouchedPos.y;
		int d = dx * dx + dy * dy;
		DragDelta.x = dx;
		DragDelta.y = dy;

		if (d <= TAP_SENSITIVITY)
		{
			if (TapTimer.HasTimedOut())
			{
				TapTimer.Stop();
				Tapped = true;
			}
		}
		else
		{
			TapTimer.Stop();
		}
	}

	PreviousNumTouches = num_touches;

	// Update buttons
	BackPressed = false;
	bool back_released = (s3eKeyboardGetState(s3eKeyBack) & S3E_KEY_STATE_RELEASED) == S3E_KEY_STATE_RELEASED || (s3eKeyboardGetState(s3eKeyAbsBSK) & S3E_KEY_STATE_RELEASED) == S3E_KEY_STATE_RELEASED;
	if (back_released)
		BackPressed = true;

	MenuPressed = false;
	bool menu_released = (s3eKeyboardGetState(s3eKeyMenu) & S3E_KEY_STATE_RELEASED) == S3E_KEY_STATE_RELEASED || (s3eKeyboardGetState(s3eKeyAbsASK) & S3E_KEY_STATE_RELEASED) == S3E_KEY_STATE_RELEASED;
	if (menu_released)
		MenuPressed = true;

	// Update accelerometer
	if (AccelerometerActive)
	{
		AccelerometerPosition.x = s3eAccelerometerGetX();
		AccelerometerPosition.y = s3eAccelerometerGetY();
		AccelerometerPosition.z = s3eAccelerometerGetZ();
	}

	// Update compass
	if (CompassActive)
	{
		CompassDirection = s3eCompassGet();
		s3eCompassHeading heading = { 0, 0, 0 };
		if (s3eCompassGetHeading(&heading) != S3E_RESULT_SUCCESS)
		{
			CompassHeading.x = heading.m_X;
			CompassHeading.y = heading.m_Y;
			CompassHeading.z = heading.m_Z;
		}
	}

}
void CCApplication::ccAccelerationUpdate()
{
	CCAccelerometer::sharedAccelerometer()->update(s3eAccelerometerGetX(),s3eAccelerometerGetY(),s3eAccelerometerGetZ(),s3eTimerGetMs());
}