Thread: [Gcblue-commits] gcb_wx/src/sim tcAeroAirObject.cpp, 1.25, 1.26 tcSensorMap.cpp, 1.28, 1.29 tcSenso
Status: Alpha
Brought to you by:
ddcforge
From: Dewitt C. <ddc...@us...> - 2006-11-30 04:11:16
|
Update of /cvsroot/gcblue/gcb_wx/src/sim In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv6798/src/sim Modified Files: tcAeroAirObject.cpp tcSensorMap.cpp tcSensorMapTrack.cpp tcSimState.cpp Log Message: Index: tcSimState.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcSimState.cpp,v retrieving revision 1.102 retrieving revision 1.103 diff -C2 -d -r1.102 -r1.103 *** tcSimState.cpp 28 Nov 2006 01:57:37 -0000 1.102 --- tcSimState.cpp 30 Nov 2006 04:11:13 -0000 1.103 *************** *** 217,220 **** --- 217,222 ---- tcGameObject* reference, float sensorAz, long fcID, unsigned fcIdx) { + if (target == 0) return false; + tcDatabaseObject* databaseObj = mpDatabase->GetObject(sensorKey); if (databaseObj == 0) Index: tcSensorMap.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcSensorMap.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** tcSensorMap.cpp 29 Nov 2006 02:51:44 -0000 1.28 --- tcSensorMap.cpp 30 Nov 2006 04:11:13 -0000 1.29 *************** *** 43,50 **** tcUpdateStream& tcAllianceSensorMap::operator<<(tcUpdateStream& stream) { ! long nTrackID; ! ! while ((stream >> nTrackID).eof() == false) { long nIdx = maTrackToSensorTrack[nTrackID]; if (nIdx == NULL_INDEX) --- 43,54 ---- tcUpdateStream& tcAllianceSensorMap::operator<<(tcUpdateStream& stream) { ! unsigned int nUpdates; ! stream >> nUpdates; ! ! for (unsigned int n=0; n<nUpdates; n++) { + long nTrackID; + stream >> nTrackID; + long nIdx = maTrackToSensorTrack[nTrackID]; if (nIdx == NULL_INDEX) *************** *** 80,99 **** tcUpdateStream& tcAllianceSensorMap::operator>>(tcUpdateStream& stream) { ! long pos = maTrack.GetStartPosition(); ! long nSize = maTrack.GetCount(); ! tcSensorMapTrack* sensorMapTrack; ! for (long i=0; i<nSize; i++) { ! long key; ! maTrack.GetNextAssoc(pos, key, sensorMapTrack); double dt = mfPreviousStatusTime - sensorMapTrack->mfTimestamp; if (dt < 2.0) { ! stream << sensorMapTrack->mnID; ! *sensorMapTrack >> stream; } } return stream; } --- 84,163 ---- tcUpdateStream& tcAllianceSensorMap::operator>>(tcUpdateStream& stream) { ! long freeSpace = stream.GetMaxSize() - stream.size() - sizeof(unsigned int); // unsigned int for update count header ! // if freeSpace < 0, the message should be rejected anyway so don't worry about special case ! // for this ! ! tcUpdateStream tempStream1; ! tcUpdateStream tempStream2; ! unsigned int nUpdates = 0; ! ! long pos; ! if (nextUpdateKey == -1) { ! pos = maTrack.GetStartPosition(); ! updatesRemaining = maTrack.GetCount(); ! } ! else ! { ! pos = nextUpdateKey; ! } ! ! ! tcSensorMapTrack* sensorMapTrack = 0; ! ! while ((updatesRemaining > 0) && (freeSpace > 0)) ! { ! tempStream1.clear(); ! ! maTrack.GetNextAssoc(pos, nextUpdateKey, sensorMapTrack); ! updatesRemaining--; double dt = mfPreviousStatusTime - sensorMapTrack->mfTimestamp; if (dt < 2.0) { ! tempStream1 << sensorMapTrack->mnID; ! *sensorMapTrack >> tempStream1; ! ! if ((long)tempStream1.size() <= freeSpace) ! { ! tempStream2 << tempStream1; ! freeSpace -= tempStream1.size(); ! nUpdates++; ! } ! else ! { ! freeSpace = 0; ! updatesRemaining++; // have to redo this update ! } ! } + } + if (nUpdates == 0) + { + nextUpdateKey = -1; + updatesRemaining = 0; + stream.SetDoneFlag(true); + return stream; + } + + stream << nUpdates; + stream << tempStream2; + + if (updatesRemaining < 0) + { + wxASSERT(updatesRemaining == 0); + nextUpdateKey = -1; + updatesRemaining = 0; + stream.SetDoneFlag(true); + } + else + { + stream.SetDoneFlag(false); + } + + + return stream; } *************** *** 245,253 **** } ! void tcAllianceSensorMap::Update(double afStatusTime) { #ifdef _DEBUG wxASSERT(maTrack.CheckForCorruption()==false); #endif tnPoolIndex cmappos = maTrack.GetStartPosition(); --- 309,375 ---- } ! ! void tcAllianceSensorMap::UpdateMultiplayerClient(double statusTime) { + tnPoolIndex cmappos = maTrack.GetStartPosition(); + tnPoolIndex nSize = maTrack.GetCount(); + tnPoolIndex nKey; + tcSensorMapTrack *psmtrack; + + for (tnPoolIndex i=0;i<nSize;i++) + { + maTrack.GetNextAssoc(cmappos,nKey,psmtrack); + + double timeSinceUpdate = statusTime - psmtrack->mfTimestamp; + + // updated to never drop ground tracks + bool dropTrack = false; + if (psmtrack->IsSurface()) + { + dropTrack = (timeSinceUpdate > 90.0f); + } + else if (psmtrack->IsGround()) + { + dropTrack = false; + } + else + { + dropTrack = (timeSinceUpdate > 40.0f); + } + + if (dropTrack) + { + if (psmtrack->mnID >= 0) + { + maTrackToSensorTrack[psmtrack->mnID] = NULL_INDEX; // used to be = maTrack.GetPoolSize(); + } + char zBuff[128]; + sprintf(zBuff,"Dropped track %d at time %.1f",psmtrack->mnID,statusTime); + WTL(zBuff); + + maTrack.RemoveKey(nKey); + } + else + { + // check for new data and update + psmtrack->UpdateTrack(); + } + } + #ifdef _DEBUG wxASSERT(maTrack.CheckForCorruption()==false); #endif + } + + void tcAllianceSensorMap::Update(double statusTime) + { + if ((statusTime - mfPreviousStatusTime) < 1.0f) {return;} + mfPreviousStatusTime = statusTime; + + if (tcSimState::Get()->IsMultiplayerClient()) + { + UpdateMultiplayerClient(statusTime); + return; + } tnPoolIndex cmappos = maTrack.GetStartPosition(); *************** *** 256,267 **** tcSensorMapTrack *psmtrack; - if ((afStatusTime - mfPreviousStatusTime) < 1.0f) {return;} - mfPreviousStatusTime = afStatusTime; bool updateEngagements = false; ! if (afStatusTime - lastEngagementsUpdate > 8.0f) { updateEngagements = true; ! lastEngagementsUpdate = afStatusTime; } --- 378,387 ---- tcSensorMapTrack *psmtrack; bool updateEngagements = false; ! if (statusTime - lastEngagementsUpdate > 8.0f) { updateEngagements = true; ! lastEngagementsUpdate = statusTime; } *************** *** 277,281 **** float adjustedStaleTime = (psmtrack->IsMissile()) ? 0.5f * staleTime : staleTime; ! double timeSinceUpdate = afStatusTime - psmtrack->maSensorReport[n].mfTimestamp; if (timeSinceUpdate >= ageOutTime) { --- 397,401 ---- float adjustedStaleTime = (psmtrack->IsMissile()) ? 0.5f * staleTime : staleTime; ! double timeSinceUpdate = statusTime - psmtrack->maSensorReport[n].mfTimestamp; if (timeSinceUpdate >= ageOutTime) { *************** *** 310,323 **** } char zBuff[128]; ! sprintf(zBuff,"Dropped track %d at time %.1f",psmtrack->mnID,afStatusTime); WTL(zBuff); - #ifdef _DEBUG - wxASSERT(maTrack.CheckForCorruption()==false); - #endif - maTrack.RemoveKey(nKey); - #ifdef _DEBUG - wxASSERT(maTrack.CheckForCorruption()==false); - #endif } else --- 430,437 ---- } char zBuff[128]; ! sprintf(zBuff,"Dropped track %d at time %.1f",psmtrack->mnID,statusTime); WTL(zBuff); + maTrack.RemoveKey(nKey); } else *************** *** 378,382 **** // randomize updates so alliances don't all update at once mfPreviousStatusTime = 1.0f*randf(); ! lastEngagementsUpdate = 10.0f*randf(); } /********************************************************************/ --- 492,499 ---- // randomize updates so alliances don't all update at once mfPreviousStatusTime = 1.0f*randf(); ! lastEngagementsUpdate = 10.0f*randf(); ! ! nextUpdateKey = -1; ! updatesRemaining = 0; } /********************************************************************/ *************** *** 421,425 **** : alliance(mapAlliance), ageOutTime(90.0f), ! staleTime(30.0f) { Clear(); --- 538,544 ---- : alliance(mapAlliance), ageOutTime(90.0f), ! staleTime(30.0f), ! nextUpdateKey(-1), ! updatesRemaining(0) { Clear(); Index: tcSensorMapTrack.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcSensorMapTrack.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** tcSensorMapTrack.cpp 20 Nov 2006 00:17:45 -0000 1.9 --- tcSensorMapTrack.cpp 30 Nov 2006 04:11:13 -0000 1.10 *************** *** 63,72 **** tcTrack::operator<<(stream); ! stream >> mnContributors; ! for (int n = 0; n < mnContributors; n++) ! { ! stream >> maSensorReport[n].mfTimestamp; ! stream >> maSensorReport[n].mnSensorPlatformID; ! } long databaseId; --- 63,73 ---- tcTrack::operator<<(stream); ! mnContributors = 0; ! // stream >> mnContributors; ! // for (int n = 0; n < mnContributors; n++) ! // { ! // stream >> maSensorReport[n].mfTimestamp; ! //stream >> maSensorReport[n].mnSensorPlatformID; ! // } long databaseId; *************** *** 86,95 **** tcTrack::operator>>(stream); ! stream << mnContributors; ! for (int n = 0; n < mnContributors; n++) ! { ! stream << maSensorReport[n].mfTimestamp; ! stream << maSensorReport[n].mnSensorPlatformID; ! } stream << mnDatabaseID; --- 87,96 ---- tcTrack::operator>>(stream); ! // stream << mnContributors; ! // for (int n = 0; n < mnContributors; n++) ! // { ! // stream << maSensorReport[n].mfTimestamp; ! //stream << maSensorReport[n].mnSensorPlatformID; ! // } stream << mnDatabaseID; *************** *** 488,493 **** void tcSensorMapTrack::UpdateTrack() { ! if (autoKillAssess && (!simState->IsMultiplayerClient())) { if (!IsNew() && !IsDestroyed()) --- 489,495 ---- void tcSensorMapTrack::UpdateTrack() { + if (simState->IsMultiplayerClient()) return; ! if (autoKillAssess) { if (!IsNew() && !IsDestroyed()) Index: tcAeroAirObject.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/sim/tcAeroAirObject.cpp,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** tcAeroAirObject.cpp 20 Nov 2006 00:17:43 -0000 1.25 --- tcAeroAirObject.cpp 30 Nov 2006 04:11:13 -0000 1.26 *************** *** 53,58 **** stream >> throttleFraction; ! fprintf(stdout, "received aero guidance update, id: %d, HSA %f, %f, %f\n", mnID, ! mcGS.mfGoalHeading_deg, mcGS.mfGoalSpeed_kts, mcGS.mfGoalAltitude_m); return stream; --- 53,58 ---- stream >> throttleFraction; ! //fprintf(stdout, "received aero guidance update, id: %d, HSA %f, %f, %f\n", mnID, ! // mcGS.mfGoalHeading_deg, mcGS.mfGoalSpeed_kts, mcGS.mfGoalAltitude_m); return stream; *************** *** 65,70 **** stream << throttleFraction; ! fprintf(stdout, "sending aero guidance update, id: %d, HSA %f, %f, %f\n", mnID, ! mcGS.mfGoalHeading_deg, mcGS.mfGoalSpeed_kts, mcGS.mfGoalAltitude_m); return stream; } --- 65,70 ---- stream << throttleFraction; ! //fprintf(stdout, "sending aero guidance update, id: %d, HSA %f, %f, %f\n", mnID, ! // mcGS.mfGoalHeading_deg, mcGS.mfGoalSpeed_kts, mcGS.mfGoalAltitude_m); return stream; } |