dumbo2007
Crazy about real time sims
Hi,
I have the code below to get an array of vessels and bases :
But somehow I only get vessels, no bases. I am running the default Brighton Beach scenario with the Delta Glider, so at least Brighton Beach should have appeared. Anyone had such an issue before ?
---------- Post added at 01:52 PM ---------- Previous post was at 06:40 AM ----------
ok I solved it using a 2 step process :
I have the code below to get an array of vessels and bases :
Code:
numVessels = 0;
numBases = 0;
int numObj = oapiGetObjectCount();
OBJHANDLE *hObj = new OBJHANDLE[numObj];
int objType = 0;
char strObj[20];
for (int i = 0; i < numObj; i++) {
hObj[i] = oapiGetObjectByIndex (i);
objType = oapiGetObjectType(hObj[i]);
switch(objType){
case OBJTP_CBODY:
break;
case OBJTP_STAR:
break;
case OBJTP_PLANET:
break;
case OBJTP_VESSEL:
oapiGetObjectName(hObj[i], strObj, 20);
sprintf(output, "Bump: Vessel : %s added", strObj);oapiWriteLog(output);
numVessels++;
break;
case OBJTP_SURFBASE:
oapiGetObjectName(hObj[i], strObj, 20);
sprintf(output, "Bump: Base : %s added", strObj);oapiWriteLog(output);
numBases++;
break;
default:
oapiWriteLog("Bump: Object not recognized during counting");
}
}
---------- Post added at 01:52 PM ---------- Previous post was at 06:40 AM ----------
ok I solved it using a 2 step process :
Code:
numVessels = 0;
numBases = 0;
int numObj = oapiGetObjectCount();
OBJHANDLE *hObj = new OBJHANDLE[numObj];
int objType = 0;
char strObj[20], strBase[20];
for (int i = 0; i < numObj; i++) {
hObj[i] = oapiGetObjectByIndex (i);
objType = oapiGetObjectType(hObj[i]);
oapiGetObjectName(hObj[i], strObj, 20);
switch(objType){
case OBJTP_CBODY:
break;
case OBJTP_STAR:
break;
case OBJTP_PLANET:
sprintf(output, "Bump: Planet/Moon/Comet : %s added :", strObj);oapiWriteLog(output);
numBases += oapiGetBaseCount(hObj[i]);
break;
case OBJTP_VESSEL:
sprintf(output, "Bump: Vessel : %s added", strObj);oapiWriteLog(output);
numVessels++;
break;
case OBJTP_SURFBASE:
sprintf(output, "Bump: Base : %s added", strObj);oapiWriteLog(output);
numBases++;
break;
default:
oapiWriteLog("Bump: Object not recognized during counting");
}
}
//Get vessel dimensions
if(numVessels > 0){
hVessel = new OBJHANDLE[numVessels];
vesselRadius = new double[numVessels];
for (int i = 0, j = 0; i < numObj; i++) {
if (oapiGetObjectType(hObj[i]) == OBJTP_VESSEL){
hVessel[j] = hObj[i];
vesselRadius[j] = oapiGetSize(hObj[i]);
sprintf(output, "Bump: Object %d, Vessel %d, Radius: %f", i, j, vesselRadius[j]);oapiWriteLog(output);
j++;
}
}
}
//Get base dimensions
if(numBases > 0){
hBase = new OBJHANDLE[numBases];
baseRadius = new double[numBases];
for (int i = 0, j = 0; i < numObj; i++) {
if (oapiGetObjectType(hObj[i]) == OBJTP_PLANET){
oapiGetObjectName(hObj[i], strObj, 20);
for(int k = 0; k < oapiGetBaseCount(hObj[i]); k++){
hBase[j] = oapiGetBaseByIndex(hObj[i], k);
baseRadius[j] = oapiGetSize(hObj[i]);
oapiGetObjectName(hBase[j], strBase, 20);
sprintf(output, "Bump: %d) Planet %s, Base %s, Radius: %f", j, strObj, strBase, baseRadius[j]);oapiWriteLog(output);
j++;
}
}
}
}