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; } }
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 }
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()); }