void entity::gravitate (struct entity object) { //calculates gravitational forces, and accelerates, between two entities float theta = atan2l (object.y - y, object.x - x); //finds angle at which hab is from earth float gravity = G * ( (object.mass * mass) / (distance (object.x, object.y) * distance (object.x, object.y) ) ); //finds total gravitational force between hab and earth, in the formula G (m1 * m2) / r^2 accX (theta, gravity); accY (theta, gravity); }
void CCommandParser::RunL() { RDebug::Print(_L("CCommandParser::RunL report: %X"),iState); switch(iState) { case TControllerDataTypes::EWiiMoteReportButton: { TUint16 btn(0); btn = iDataPtr[2]; btn = iDataPtr[2] << 8; btn |= iDataPtr[3]; HandleButtonReport(btn); }break; case TControllerDataTypes::EWiiMoteReportButtonAcc: { TUint16 btn(0); TUint16 accX(0); TUint16 accY(0); TUint16 accZ(0); btn = iDataPtr[2]; btn = btn << 8; btn |= iDataPtr[3]; HandleButtonReport(btn); accX = iDataPtr[4]; accY = iDataPtr[5]; accZ = iDataPtr[6]; TUint8 lsb1(0); TUint8 lsb2(0); TUint8 lsb3(0); TUint8 lsb4(0); lsb1 = iDataPtr[2] & 0x40; lsb2 = iDataPtr[2] & 0x20; lsb3 = iDataPtr[3] & 0x40; lsb4 = iDataPtr[3] & 0x20; RDebug::Print(_L("XLRLSB: %X , %d - XLRLSB: %X , %d"),lsb1,lsb1,lsb2,lsb2); RDebug::Print(_L("XLRLSB: %X , %d - XLRLSB: %X , %d"),lsb3,lsb3,lsb4,lsb4); RDebug::Print(_L("AccX: %X , %d - AccY: %X , %d - AccZ: %X , %d"),accX,accX,accY,accY,accZ,accZ); HandleAccReport(accX,accY,accZ); }break; case TControllerDataTypes::EWiiMoteReportControlStatus: { TUint8 data(0); data = iDataPtr[7]; TRemoteInfo info; info = iObserver.RemoteInfo(); info.iCommand = (TControllerDataTypes::TWiiMoteCommands)iState; TReal32 d(data); TReal32 b(TControllerDataTypes::EWiiMoteControlStatusBattery); TInt16 bat=0; TReal calc( (d/b)*100); Math::Int(bat,calc); info.iBattery = bat; iObserver.UpdateRemoteInfo(info); }break; case TControllerDataTypes::EWiiMoteReportWrite: { TUint8 data1(0); TUint8 data2(0); TUint8 data3(0); TUint8 data4(0); data1 = iDataPtr[0]; data2 = iDataPtr[1]; data3 = iDataPtr[2]; data4 = iDataPtr[3]; TRemoteInfo info; info = iObserver.RemoteInfo(); info.iCommand = (TControllerDataTypes::TWiiMoteCommands)data3; switch(data3) { case TControllerDataTypes::EWiiMoteCommandAudioEnable: case TControllerDataTypes::EWiiMoteCommandAudioMute: { if(data1 || data2 || data4) { info.iWiiSpeakerEnabled = TControllerDataTypes::EWiiSpeakerError; } }break; } iObserver.UpdateRemoteInfo(info); }break; default: break; } }
void ship::fireEngine() { accX (turnRadians, engine); accY (turnRadians, engine); }