//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	// FeatureControl::CopyName();
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	CFStringRef FeatureControl::CopyName() const
	{
		CFStringRef name = NULL;
		
		switch (GetClassID())
		{
			case kCMIOHueControlClassID:					name = CFSTR("Hue");					break;
			case kCMIOSaturationControlClassID:				name = CFSTR("Saturation");				break;
			case kCMIOContrastControlClassID:				name = CFSTR("Contrast");				break;
			case kCMIOSharpnessControlClassID:				name = CFSTR("Sharpness");				break;
			case kCMIOBrightnessControlClassID:				name = CFSTR("Brightness");				break;
			case kCMIOGainControlClassID:					name = CFSTR("Gain");					break;
			case kCMIOIrisControlClassID:					name = CFSTR("Iris");					break;
			case kCMIOShutterControlClassID:				name = CFSTR("Shutter");				break;
			case kCMIOExposureControlClassID:				name = CFSTR("Exposure");				break;
			case kCMIOWhiteBalanceUControlClassID:			name = CFSTR("White Balance U");		break;
			case kCMIOWhiteBalanceVControlClassID:			name = CFSTR("White Balance V");		break;
			case kCMIOGammaControlClassID:					name = CFSTR("Gamma");					break;
			case kCMIOTemperatureControlClassID:			name = CFSTR("Temperature");			break;
			case kCMIOZoomControlClassID:					name = CFSTR("Zoom");					break;
			case kCMIOFocusControlClassID:					name = CFSTR("Focus");					break;
			case kCMIOPanControlClassID:					name = CFSTR("Pan");					break;
			case kCMIOTiltControlClassID:					name = CFSTR("Tilt");					break;
			case kCMIOOpticalFilterClassID:					name = CFSTR("Optical Filter");			break;
			case kCMIOBacklightCompensationControlClassID:	name = CFSTR("Backlight Compensation");	break;
			case kCMIOPowerLineFrequencyControlClassID:		name = CFSTR("Power Line Frequency");	break;
			case kCMIONoiseReductionControlClassID:			name = CFSTR("Noise Reduction");		break;
			default:										name = CFSTR("Unknown");				break;
		}
		
		return name;
	}
示例#2
0
OSErr TRandom3D::Read(BFPB *bfpb) 
{
	long version;
	ClassID id;
	OSErr err = 0;
	
	if (err = TMover::Read(bfpb)) return err;
	
	StartReadWriteSequence("TRandom3D::Read()");
	if (err = ReadMacValue(bfpb, &id)) return err;
	if (id != GetClassID ()) { TechError("TRandom3D::Read()", "id != GetClassID", 0); return -1; }
	if (err = ReadMacValue(bfpb, &version)) return err;
	if (version > TRandom3D_FileVersion) { printSaveFileVersionError(); return -1; }
	
	if (err = ReadMacValue(bfpb, &fDiffusionCoefficient)) return err;
	if (err = ReadMacValue(bfpb, &fUncertaintyFactor)) return err;
	
	if (gMearnsVersion || version > 1)
	{
		if (err = ReadMacValue(bfpb, &fVerticalDiffusionCoefficient)) return err;
		if (err = ReadMacValue(bfpb, &fHorizontalDiffusionCoefficient)) return err;
		//if (err = ReadMacValue(bfpb, &fVerticalDiffusionCoefficient)) return err;
	}
	if (version>1)
		if (err = ReadMacValue(bfpb, &bUseDepthDependentDiffusion)) return err;
	
	return 0;
}
示例#3
0
OSErr TimeGridWindRect::Read(BFPB *bfpb)
{
	char c, msg[256], fileName[256], newFileName[64];
	long i, version, numTimes, numPoints;
	ClassID id;
	float val;
	Seconds time;
	Boolean bPathIsValid = true;
	OSErr err = 0;
	
	if (err = TimeGridVel::Read(bfpb)) return err;
	
	StartReadWriteSequence("TimeGridWindRect::Read()");
	if (err = ReadMacValue(bfpb, &id)) return err;
	if (id != GetClassID ()) { TechError("TimeGridWindRect::Read()", "id != TYPE_TIMEGRIDWINDRECT", 0); return -1; }
	if (err = ReadMacValue(bfpb, &version)) return err;
	if (version > TimeGridWindRectREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	
	// anything here?	
	
done:
	if(err)
	{
		TechError("TimeGridWindRect::Read(char* path)", " ", 0); 
		if(fTimeHdl) {DisposeHandle((Handle)fTimeHdl); fTimeHdl=0;}
	}
	return err;
}
void AircraftClass::InitCountermeasures (void)
{
	//int type = GetClassID (
		//DOMAIN_AIR, CLASS_VEHICLE, TYPE_BOMB, STYPE_BOMB_IRON, SPTYPE_MK82, VU_ANY, VU_ANY, VU_ANY) + 
		//VU_LAST_ENTITY_TYPE; // JB 010220
	int type = 
		GetClassID(
			DOMAIN_AIR, CLASS_VEHICLE, TYPE_BOMB, STYPE_CHAFF, SPTYPE_CHAFF1, VU_ANY, VU_ANY, VU_ANY
		) + 
		VU_LAST_ENTITY_TYPE
	; // JB 010220
	
	// Add Chaff and flares
	// NOTE:  Since chaff and flares are created upon deployment, the use of a full hardpoint
	// is kinda wasteful.  The debris could probably be created upon need as well to save
	// a bunch of extra "bombs" hanging arround in memory.
	counterMeasureStation[FLARE_STATION].weaponCount = af->auxaeroData->nFlare;
	counterMeasureStation[FLARE_STATION].weaponPointer.reset();
	
	counterMeasureStation[CHAFF_STATION].weaponCount = af->auxaeroData->nChaff;
	counterMeasureStation[CHAFF_STATION].weaponPointer.reset();
	
	counterMeasureStation[DEBRIS_STATION].weaponPointer.reset();
	counterMeasureStation[DEBRIS_STATION].weaponCount = af->auxaeroData->nChaff;
}
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	// FeatureControl::CopyAbsoluteUnitName();
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	CFStringRef FeatureControl::CopyAbsoluteUnitName() const
	{
		CFStringRef name = NULL;
		
		switch (GetClassID())
		{
			case kCMIOHueControlClassID:					name = CFSTR("Degrees");	break;
			case kCMIOSaturationControlClassID:				name = CFSTR("%");			break;
			case kCMIOSharpnessControlClassID:				name = CFSTR("Units");		break;
			case kCMIOBrightnessControlClassID:				name = CFSTR("%");			break;
			case kCMIOGainControlClassID:					name = CFSTR("dB");			break;
			case kCMIOIrisControlClassID:					name = CFSTR("F");			break;
			case kCMIOShutterControlClassID:				name = CFSTR("Seconds");	break;
			case kCMIOExposureControlClassID:				name = CFSTR("EV");			break;
			case kCMIOWhiteBalanceUControlClassID:			name = CFSTR("K");			break;
			case kCMIOWhiteBalanceVControlClassID:			name = CFSTR("K");			break;
			case kCMIOGammaControlClassID:					name = CFSTR("Units");		break;
			case kCMIOTemperatureControlClassID:			name = CFSTR("Units");		break;
			case kCMIOZoomControlClassID:					name = CFSTR("Power");		break;
			case kCMIOFocusControlClassID:					name = CFSTR("Meters");		break;
			case kCMIOPanControlClassID:					name = CFSTR("Degrees");	break;
			case kCMIOTiltControlClassID:					name = CFSTR("Degrees");	break;
			case kCMIOOpticalFilterClassID:					name = CFSTR("Units");		break;
			case kCMIOBacklightCompensationControlClassID:	name = CFSTR("Units");		break;
			case kCMIOPowerLineFrequencyControlClassID:		name = CFSTR("Hertz");		break;
		}
		
		return name;
	}
示例#6
0
OSErr GridCurrentMover::Read(BFPB *bfpb)
{
	long version;
	ClassID id;
	OSErr err = 0;
	
	if (err = TCurrentMover::Read(bfpb)) return err;
	
	StartReadWriteSequence("GridCurrentMover::Read()");
	if (err = ReadMacValue(bfpb,&id)) return err;
	if (id != GetClassID ()) { TechError("GridCurrentMover::Read()", "id != TYPE_GRIDCURRENTMOVER", 0); return -1; }
	if (err = ReadMacValue(bfpb,&version)) return err;
	if (version > GridCurrentMoverREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	////
	// read the type of grid used for the GridCurrent mover
	if (err = ReadMacValue(bfpb,&id)) return err;
	switch(id)
	{
		case TYPE_TIMEGRIDVELRECT: timeGrid = new TimeGridVelRect; break;
		//case TYPE_TIMEGRIDVEL: timeGrid = new TimeGridVel; break;
		case TYPE_TIMEGRIDVELCURV: timeGrid = new TimeGridVelCurv; break;
		case TYPE_TIMEGRIDVELTRI: timeGrid = new TimeGridVelTri; break;
		case TYPE_TIMEGRIDCURRECT: timeGrid = new TimeGridCurRect; break;
		case TYPE_TIMEGRIDCURTRI: timeGrid = new TimeGridCurTri; break;
		default: printError("Unrecognized Grid type in GridCurrentMover::Read()."); return -1;
	}

	// code goes here, should also have a name/path
done:
	if(err)
	{
		TechError("GridCurrentMover::Read(char* path)", " ", 0); 
	}
	return err;
}
/////////////////////////////////////////////////////////////////////////////
// CDataSource::GetObjectDesc
//
/////////////////////////////////////////////////////////////////////////////
WCHAR* CDataSource::GetObjectDesc()
{
	if(!m_strObjectDesc && m_pIPersist)
	{
		CLSID clsid;
		GetClassID(&clsid, &m_strObjectDesc);
	}

	return m_strObjectDesc;
}
示例#8
0
void IFWL_Widget::GetPopupPos(FX_FLOAT fMinHeight,
                              FX_FLOAT fMaxHeight,
                              const CFX_RectF& rtAnchor,
                              CFX_RectF& rtPopup) {
  if (GetClassID() == FWL_Type::ComboBox) {
    if (m_pWidgetMgr->IsFormDisabled()) {
      m_pWidgetMgr->GetAdapterPopupPos(this, fMinHeight, fMaxHeight, rtAnchor,
                                       rtPopup);
      return;
    }
    GetPopupPosComboBox(fMinHeight, fMaxHeight, rtAnchor, rtPopup);
    return;
  }
  if (GetClassID() == FWL_Type::DateTimePicker &&
      m_pWidgetMgr->IsFormDisabled()) {
    m_pWidgetMgr->GetAdapterPopupPos(this, fMinHeight, fMaxHeight, rtAnchor,
                                     rtPopup);
    return;
  }
  GetPopupPosGeneral(fMinHeight, fMaxHeight, rtAnchor, rtPopup);
}
OSErr NetCDFWindMoverCurv::Read(BFPB *bfpb)	
{
	long i, version, index, numPoints;
	ClassID id;
	WorldPointF vertex;
	OSErr err = 0;
	
	if (err = NetCDFWindMover::Read(bfpb)) return err;
	
	StartReadWriteSequence("NetCDFWindMoverCurv::Read()");
	if (err = ReadMacValue(bfpb,&id)) return err;
	if (id != GetClassID ()) { TechError("NetCDFWindMoverCurv::Read()", "id != TYPE_NETCDFWINDMOVERCURV", 0); return -1; }
	if (err = ReadMacValue(bfpb,&version)) return err;
	if (version != NetCDFWindMoverCurvREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	////
	if (err = ReadMacValue(bfpb, &numPoints)) goto done;	
	if (numPoints > 0)
	{
		fVerdatToNetCDFH = (LONGH)_NewHandleClear(sizeof(long)*numPoints);	// for curvilinear
		if(!fVerdatToNetCDFH)
		{TechError("NetCDFWindMoverCurv::Read()", "_NewHandle()", 0); err = memFullErr; goto done;}
		for (i = 0 ; i < numPoints ; i++) {
			if (err = ReadMacValue(bfpb, &index)) goto done;
			INDEXH(fVerdatToNetCDFH, i) = index;
		}
	}
	
	if (err = ReadMacValue(bfpb, &numPoints)) goto done;	
	fVertexPtsH = (WORLDPOINTFH)_NewHandleClear(sizeof(WorldPointF)*numPoints);	// for curvilinear
	if(!fVertexPtsH)
	{TechError("NetCDFWindMoverCurv::Read()", "_NewHandle()", 0); err = memFullErr; goto done;}
	for (i = 0 ; i < numPoints ; i++) {
		if (err = ReadMacValue(bfpb, &vertex.pLat)) goto done;
		if (err = ReadMacValue(bfpb, &vertex.pLong)) goto done;
		INDEXH(fVertexPtsH, i) = vertex;
	}
	
done:
	if(err)
	{
		TechError("NetCDFWindMoverCurv::Read(char* path)", " ", 0); 
		if(fVerdatToNetCDFH) {DisposeHandle((Handle)fVerdatToNetCDFH); fVerdatToNetCDFH=0;}
		if(fVertexPtsH) {DisposeHandle((Handle)fVertexPtsH); fVertexPtsH=0;}
	}
	return err;
}
示例#10
0
OSErr GridWindMover::Read(BFPB *bfpb)
{
	char c, msg[256], fileName[256], newFileName[64];
	long i, version, numTimes, numPoints;
	ClassID id;
	float val;
	Seconds time;
	Boolean bPathIsValid = true;
	OSErr err = 0;
	
	if (err = TWindMover::Read(bfpb)) return err;
	
	StartReadWriteSequence("GridWindMover::Read()");
	if (err = ReadMacValue(bfpb, &id)) return err;
	if (id != GetClassID ()) { TechError("GridWindMover::Read()", "id != TYPE_GRIDWINDMOVER", 0); return -1; }
	if (err = ReadMacValue(bfpb, &version)) return err;
	if (version > GridWindMoverREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	
	// read the type of grid used for the GridWind mover
	if (err = ReadMacValue(bfpb,&id)) return err;
	switch(id)
	{
		case TYPE_TIMEGRIDWINDRECT: timeGrid = new TimeGridVelRect; break;
			//case TYPE_TIMEGRIDVEL: timeGrid = new TimeGridVel; break;
		case TYPE_TIMEGRIDWINDCURV: timeGrid = new TimeGridVelCurv; break;
		default: printError("Unrecognized Grid type in GridWindMover::Read()."); return -1;
	}
	
	//
	if (err = ReadMacValue(bfpb, &bShowGrid)) return err;
	if (err = ReadMacValue(bfpb, &bShowArrows)) return err;
	if (err = ReadMacValue(bfpb, &fUserUnits)) return err;
	if (err = ReadMacValue(bfpb, &fArrowScale)) return err;

	if (err = ReadMacValue(bfpb, &fWindScale)) return err;
	
	/////////////////
	
done:
	if(err)
	{
		TechError("GridWindMover::Read(char* path)", " ", 0); 
	}
	return err;
}
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	// Control::GetVariant()
	//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
	UInt32 Control::GetVariant() const
	{
		// Setup the answer
		CMIOObjectPropertyElement answer = GetClassID();
		
		// Setup the property address
		PropertyAddress address(kCMIOControlPropertyVariant);
		
		// Make sure the property exists
		if (HasProperty(address))
		{
			// Get the property data
			UInt32 dataUsed = 0;
			GetPropertyData(address, 0, NULL, sizeof(UInt32), dataUsed, &answer);
		}
		
		return answer;
	}
示例#12
0
OSErr TClassID::Write(BFPB *bfpb)
{
	long 	version = TClassID_FileVersion;
	ClassID id = GetClassID ();
	OSErr	err = noErr;
	
	StartReadWriteSequence("TClassID::::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	
	//bDirty -- no need to write this to the file
	bDirty = false; // we are writing
	if (err = WriteMacValue(bfpb, bOpen)) return err;
	if (err = WriteMacValue(bfpb, bActive)) return err;
	if (err = WriteMacValue(bfpb, className, kMaxNameLen)) return err;
	if (err = WriteMacValue(bfpb, fUniqueID.ticksAtCreation)) return err;
	if (err = WriteMacValue(bfpb, fUniqueID.counter)) return err;
	
	return err;
}
示例#13
0
int EjectedPilotClass::ClassType()
{
	if(_classTypeFound == FALSE)
	{
		_classType = GetClassID 
		(
			DOMAIN_AIR,
			CLASS_VEHICLE,
			TYPE_EJECT,
			STYPE_EJECT1,
			SPTYPE_ANY,
			VU_ANY,
			VU_ANY,
			VU_ANY
		) + VU_LAST_ENTITY_TYPE;
		_classTypeFound = TRUE;
	}

	return _classType;
}
示例#14
0
void FlareClass::InitTrail (void)
{
	//Falcon4EntityClassType* classPtr;

	//I-Hawk - Removed, old flare graphics stuff
/*
	trailGlow = NULL;
	trailSphere = NULL;	
*/

	flags |= IsFlare;
	displayIndex = GetClassID (DOMAIN_AIR, CLASS_SFX, TYPE_FLARE,
		STYPE_FLARE1, SPTYPE_ANY, VU_ANY, VU_ANY, VU_ANY);

	if (!drawPointer || drawPointer == (DrawableObject*)0xbaadf00d) // FRB
	{
		drawPointer = NULL;
	}
	if (drawPointer)
	{
		//OTWDriver.RemoveObject(drawPointer, TRUE); // FRB - causes CTD
		drawPointer = NULL;
	}

	// I-Hawk - Removed, old flare graphics stuff
/*
	classPtr = &Falcon4ClassTable[displayIndex];

     trail = new DrawableTrail( TRAIL_FLARE );
     trail = (DrawableTrail*)DrawableParticleSys::PS_AddTrail( TRAIL_FLARE, XPos(), YPos(), ZPos());

	if (IsAwake())
	{
		OTWDriver.CreateVisualObject (this, classPtr->visType[0], OTWDriver.Scale());
		displayIndex = -1;
	}
	Tpoint newPoint = {0.0f, 0.0f, 0.0f};
	trailGlow = new Drawable2D( DRAW2D_MISSILE_GLOW, 6.0f, &newPoint );
	trailSphere = new Drawable2D( DRAW2D_EXPLCIRC_GLOW, 8.0f, &newPoint );
*/
}
示例#15
0
OSErr TClassID::Read(BFPB *bfpb)
{
	long 	version;
	ClassID id;
	OSErr	err = noErr;
	
	StartReadWriteSequence("TClassID::::Read()");
	if (err = ReadMacValue(bfpb, &id)) return err;
	if (id != GetClassID ()) { TechError("TClassID::Read()", "id != GetClassID", 0); return -1; }
	if (err = ReadMacValue(bfpb, &version)) return err;
	if (version != TClassID_FileVersion) { printSaveFileVersionError(); return -1; }
	
	bDirty = false; // we are reading
	if (err = ReadMacValue(bfpb, &bOpen)) return err;
	if (err = ReadMacValue(bfpb, &bActive)) return err;
	if (err = ReadMacValue(bfpb, className, kMaxNameLen)) return err;
	if (err = ReadMacValue(bfpb, &fUniqueID.ticksAtCreation)) return err;
	if (err = ReadMacValue(bfpb, &fUniqueID.counter)) return err;
	
	return err;
}
示例#16
0
OSErr TimeGridWindRect::Write(BFPB *bfpb)
{
	long i, version = TimeGridWindRectREADWRITEVERSION;
	ClassID id = GetClassID ();
	Seconds time;
	OSErr err = 0;
	
	if (err = TimeGridVel::Write(bfpb)) return err;
	
	StartReadWriteSequence("TimeGridWindRect::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	
	// anything here?	
	
done:
	if(err)
		TechError("TimeGridWindRect::Write(char* path)", " ", 0); 
	
	return err;
}
ECode CPorterDuffColorFilter::Equals(
    /* [in] */ IInterface* object,
    /* [out] */ Boolean* equals)
{
    VALIDATE_NOT_NULL(equals);
    *equals = TRUE;
    if (TO_IINTERFACE(this) == IInterface::Probe(object)) {
        return NOERROR;
    }
    ClassID id1, id2;
    GetClassID(&id1);
    if (object == NULL || id1 != (IObject::Probe(object)->GetClassID(&id2), id2)) {
        *equals = FALSE;
        return NOERROR;
    }
    AutoPtr<IPorterDuffColorFilter> other = IPorterDuffColorFilter::Probe(object);
    if (mColor != ((CPorterDuffColorFilter*)other.Get())->mColor || mMode != ((CPorterDuffColorFilter*)other.Get())->mMode) {
        *equals = FALSE;
        return NOERROR;
    }
    return NOERROR;
}
示例#18
0
OSErr TimeGridWindCurv::Write (BFPB *bfpb)
{
	long i, version = TimeGridWindCurvREADWRITEVERSION; //JLM
	ClassID id = GetClassID ();
	long numPoints, index;
	WorldPointF vertex;
	OSErr err = 0;
	
	if (err = TimeGridWindRect::Write (bfpb)) return err;
	
	StartReadWriteSequence("TimeGridWindCurv::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	////
	
	numPoints = _GetHandleSize((Handle)fVerdatToNetCDFH)/sizeof(**fVerdatToNetCDFH);
	if (err = WriteMacValue(bfpb, numPoints)) goto done;
	for (i=0;i<numPoints;i++)
	{
		index = INDEXH(fVerdatToNetCDFH,i);
		if (err = WriteMacValue(bfpb, index)) goto done;
	}
	
	numPoints = _GetHandleSize((Handle)fVertexPtsH)/sizeof(**fVertexPtsH);
	if (err = WriteMacValue(bfpb, numPoints)) goto done;
	for (i=0;i<numPoints;i++)
	{
		vertex = INDEXH(fVertexPtsH,i);
		if (err = WriteMacValue(bfpb, vertex.pLat)) goto done;
		if (err = WriteMacValue(bfpb, vertex.pLong)) goto done;
	}
	
done:
	if(err)
		TechError("TimeGridWindCurv::Write(char* path)", " ", 0); 
	
	return err;
}
示例#19
0
//#define TRandom3D_FileVersion 1
OSErr TRandom3D::Write(BFPB *bfpb)
{
	long version = TRandom3D_FileVersion;
	ClassID id = GetClassID ();
	OSErr err = 0;
	
	if (err = TMover::Write(bfpb)) return err;
	
	StartReadWriteSequence("TRandom3D::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	
	if (err = WriteMacValue(bfpb, fDiffusionCoefficient)) return err;
	if (err = WriteMacValue(bfpb, fUncertaintyFactor)) return err;
	
	if (err = WriteMacValue(bfpb, fVerticalDiffusionCoefficient)) return err;
	if (err = WriteMacValue(bfpb, fHorizontalDiffusionCoefficient)) return err;
	
	//if (err = WriteMacValue(bfpb, fVerticalBottomDiffusionCoefficient)) return err;
	if (err = WriteMacValue(bfpb, bUseDepthDependentDiffusion)) return err;
	
	return 0;
}
示例#20
0
OSErr GridCurrentMover::Write (BFPB *bfpb)
{
	long version = GridCurrentMoverREADWRITEVERSION; //JLM
	ClassID id = GetClassID ();
	OSErr err = 0;
	
	if (err = TCurrentMover::Write (bfpb)) return err;
	
	StartReadWriteSequence("GridCurrentMover::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	////
	id = timeGrid -> GetClassID ();
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = timeGrid -> Write (bfpb)) goto done;
	
	// code goes here, may want to add a name/path

done:
	if(err)
		TechError("GridCurrentMover::Write(char* path)", " ", 0); 
	
	return err;
}
示例#21
0
OSErr GridWindMover::Write(BFPB *bfpb)
{
	long i, version = GridWindMoverREADWRITEVERSION;
	ClassID id = GetClassID ();
	long numTimes = timeGrid->GetNumTimesInFile();
	Seconds time;
	OSErr err = 0;
	
	if (err = TWindMover::Write(bfpb)) return err;
	
	StartReadWriteSequence("GridWindMover::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	
	////
	id = timeGrid -> GetClassID ();
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = timeGrid -> Write (bfpb)) goto done;
	
	//if (err = WriteMacValue(bfpb, fPathName, kMaxNameLen)) goto done;
	//if (err = WriteMacValue(bfpb, fFileName, kPtCurUserNameLen)) return err;
	
	if (err = WriteMacValue(bfpb, bShowGrid)) return err;
	if (err = WriteMacValue(bfpb, bShowArrows)) return err;
	if (err = WriteMacValue(bfpb, fUserUnits)) return err;
	if (err = WriteMacValue(bfpb, fArrowScale)) return err;
	if (err = WriteMacValue(bfpb, fWindScale)) return err;
	////////////////
	
	
done:
	if(err)
		TechError("GridWindMover::Write(char* path)", " ", 0); 
	
	return err;
}
示例#22
0
OSErr TShioTimeValue::Write(BFPB *bfpb)
{
	long i, n = 0, version = TShioMoverREADWRITEVERSION;
	ClassID id = GetClassID ();
	TimeValuePair pair;
	OSErr err = 0;
	double fLatitude, fLongitude;	// now the station info is is TOSSMTimeValue...
	
	if (err = TOSSMTimeValue::Write(bfpb)) return err;
	
	StartReadWriteSequence("TShioTimeValue::Write()");
	if (err = WriteMacValue(bfpb, id)) return err;
	if (err = WriteMacValue(bfpb, version)) return err;
	/////////////////////////////////
	
	if (err = WriteMacValue(bfpb, fStationName, MAXSTATIONNAMELEN)) return err; // don't swap !! 
	if (err = WriteMacValue(bfpb,fStationType)) return err;  
	// just to keep save files matched up...
	fLatitude = fStationPosition.p.pLat / 1.e6;
	fLongitude = fStationPosition.p.pLong / 1.e6;
	if (err = WriteMacValue(bfpb,fLatitude)) return err;
	if (err = WriteMacValue(bfpb,fLongitude)) return err;

	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.datum)) return err;
	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.FDir)) return err;
	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.EDir)) return err;
	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.L2Flag)) return err;
	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.HFlag)) return err;
	if (err = WriteMacValue(bfpb,fConstituent.DatumControls.RotFlag)) return err;

	// write the number of elements in the handle, then the handle values
	if(fConstituent.H) n = _GetHandleSize((Handle)fConstituent.H)/sizeof(**fConstituent.H);
	else n = 0;
	if (err = WriteMacValue(bfpb,n)) return err;
	for(i = 0; i<n;i++)	{
		if (err = WriteMacValue(bfpb,INDEXH(fConstituent.H,i))) return err;
	}
	
	// write the number of elements in the handle, then the handle values
	if(fConstituent.kPrime) n = _GetHandleSize((Handle)fConstituent.kPrime)/sizeof(**fConstituent.kPrime);
	else n = 0;
	if (err = WriteMacValue(bfpb,n)) return err;
	for(i = 0; i<n;i++)	{
		if (err = WriteMacValue(bfpb,INDEXH(fConstituent.kPrime,i))) return err;
	}

	if (err = WriteMacValue(bfpb,fHeightOffset.HighTime.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.HighTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowTime.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.HighHeight_Mult.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.HighHeight_Mult.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.HighHeight_Add.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.HighHeight_Add.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowHeight_Mult.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowHeight_Mult.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowHeight_Add.val)) return err;
	if (err = WriteMacValue(bfpb,fHeightOffset.LowHeight_Add.dataAvailFlag)) return err;

	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBefFloodTime.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBefFloodTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.FloodTime.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.FloodTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBefEbbTime.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBefEbbTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.EbbTime.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.EbbTime.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.FloodSpdRatio.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.FloodSpdRatio.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.EbbSpdRatio.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.EbbSpdRatio.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBFloodSpd.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBFloodSpd.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBFloodDir.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBFloodDir.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxFloodSpd.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxFloodSpd.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxFloodDir.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxFloodDir.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBEbbSpd.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBEbbSpd.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBEbbDir.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MinBEbbDir.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxEbbSpd.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxEbbSpd.dataAvailFlag)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxEbbDir.val)) return err;
	if (err = WriteMacValue(bfpb,fCurrentOffset.MaxEbbDir.dataAvailFlag)) return err;

/////////////////////////////////////////////////

	if (fStationType == 'C')	// values to show on list for tidal currents
	{
		long i,numEbbFloods = GetNumEbbFloodValues();
		if (err = WriteMacValue(bfpb,numEbbFloods)) return err;
		for (i=0;i<numEbbFloods;i++)
		{
			if (err = WriteMacValue(bfpb,INDEXH(fEbbFloodDataHdl,i).time)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fEbbFloodDataHdl,i).speedInKnots)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fEbbFloodDataHdl,i).type)) return err;
		}		
	}
	if (fStationType == 'H')	// values to show on list for tidal heights
	{
		long i,numHighLows = GetNumHighLowValues();
		if (err = WriteMacValue(bfpb,numHighLows)) return err;
		for (i=0;i<numHighLows;i++)
		{
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).time)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).height)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).type)) return err;
		}		
		if (err = WriteMacValue(bfpb,fHighLowValuesOpen)) return err;
		if (err = WriteMacValue(bfpb,fEbbFloodValuesOpen)) return err;
	}
	if (fStationType == 'P')	// values to show on list for tidal heights
	{
		long i,numHighLows = GetNumHighLowValues();
		if (err = WriteMacValue(bfpb,numHighLows)) return err;
		for (i=0;i<numHighLows;i++)
		{
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).time)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).height)) return err;
			if (err = WriteMacValue(bfpb,INDEXH(fHighLowDataHdl,i).type)) return err;
		}		
		if (err = WriteMacValue(bfpb,fHighLowValuesOpen)) return err;
		//if (err = WriteMacValue(bfpb,fEbbFloodValuesOpen)) return err;
	}
	
	
	return 0;
}
示例#23
0
BOOL COleControl::GetPropsetData(LPFORMATETC lpFormatEtc,
		LPSTGMEDIUM lpStgMedium, REFCLSID fmtid)
{
	ASSERT_VALID(this);
	ASSERT(AfxIsValidAddress(lpFormatEtc, sizeof(FORMATETC), FALSE));
	ASSERT(AfxIsValidAddress(lpStgMedium, sizeof(STGMEDIUM)));

	BOOL bGetDataHere = (lpStgMedium->tymed != TYMED_NULL);

	// Allow IStream or IStorage as the storage medium.

	if (!(lpFormatEtc->tymed & (TYMED_ISTREAM|TYMED_ISTORAGE)))
	{
		TRACE0("Propset only supported for stream or storage.\n");
		return FALSE;
	}

	LPSTORAGE lpStorage = NULL;
	LPSTREAM lpStream = NULL;

	if (lpFormatEtc->tymed & TYMED_ISTORAGE)
	{
		// Caller wants propset data in a storage object.

		if (bGetDataHere)
		{
			// Use the caller-supplied storage object.
			lpStorage = lpStgMedium->pstg;
		}
		else
		{
			// Create a storage object on a memory ILockBytes implementation.
			LPLOCKBYTES lpLockBytes = NULL;

			if (FAILED(CreateILockBytesOnHGlobal(NULL, TRUE, &lpLockBytes)))
			{
				TRACE0("CreateILockBytesOnHGlobal failed.\n");
				return FALSE;
			}

			ASSERT_POINTER(lpLockBytes, ILockBytes);

			if (FAILED(StgCreateDocfileOnILockBytes(lpLockBytes,
					STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0,
					&lpStorage)))
			{
				TRACE0("StgCreateDocfileOnILockBytes failed.\n");
				lpLockBytes->Release();
				return FALSE;
			}

			// Docfile now has reference to ILockBytes, so release ours.
			lpLockBytes->Release();
		}

		ASSERT_POINTER(lpStorage, IStorage);

		// Create a stream within the storage.
		if (FAILED(lpStorage->CreateStream(OLESTR("Contents"),
				STGM_SHARE_EXCLUSIVE|STGM_CREATE|STGM_READWRITE, 0, 0,
				&lpStream)))
		{
			TRACE0("IStorage::CreateStream failed.\n");
			if (!bGetDataHere)
				lpStorage->Release();
			return FALSE;
		}
	}
	else
	{
		// Caller wants propset data in a stream object.

		if (bGetDataHere)
		{
			// Use the caller-supplied stream object
			lpStream = lpStgMedium->pstm;
		}
		else
		{
			lpStream = _AfxCreateMemoryStream();
			if (lpStream == NULL)
				return FALSE;
		}
	}

	ASSERT_POINTER(lpStream, IStream);

	// Create the property set.

	CLSID clsid;
	GetClassID(&clsid);
	CPropertySet pset(clsid);
	pset.SetOSVersion(MAKELONG(LOWORD(GetVersion()), OSTYPE));
	CPropertySection* ppsec = pset.AddSection(fmtid);
	if (ppsec == NULL)
	{
		TRACE0("CPropertySet::AddSection failed.\n");
		lpStream->Release();
		lpStorage->Release();
		return FALSE;
	}

	// Set the name, based on the ambient display name (from the container).
	ppsec->SetSectionName(AmbientDisplayName());

	CPropsetPropExchange propx(*ppsec, lpStorage, FALSE);

	BOOL bPropExchange = FALSE;
	TRY
	{
		DoPropExchange(&propx);
		bPropExchange = TRUE;
	}
	END_TRY

	if (!bPropExchange)
	{
		TRACE0("DoPropExchange failed.\n");
		lpStream->Release();
		lpStorage->Release();
		return FALSE;
	}

	// Store the property set in the stream.

	if (FAILED(pset.WriteToStream(lpStream)))
	{
		TRACE0("CPropertySet::WriteToStream failed.\n");
		lpStream->Release();
		lpStorage->Release();
		return FALSE;
	}

	// Return the property set in the requested medium.

	if (lpFormatEtc->tymed & TYMED_ISTORAGE)
	{
		// Return as a storage object.

		ASSERT_POINTER(lpStorage, IStorage);
		lpStream->Release();
		lpStgMedium->pstg = lpStorage;
		lpStgMedium->tymed = TYMED_ISTORAGE;
		lpStgMedium->pUnkForRelease = NULL;
	}
	else
	{
		// Return as a stream.

		ASSERT_POINTER(lpStream, IStream);
		lpStgMedium->pstm = lpStream;
		lpStgMedium->tymed = TYMED_ISTREAM;
		lpStgMedium->pUnkForRelease = NULL;
	}

	return TRUE;
}
示例#24
0
void AircraftClass::DropFlare (void)
{
	vector		pos, posDelta;
	int		type;
	BombClass	*weapon;
	
	if (counterMeasureStation[FLARE_STATION].weaponCount > 0)
	{
		if (this == FalconLocalSession->GetPlayerEntity())
		    g_intellivibeData.FlareDropped++;
		{
			static int chaffsid=0; // just need a fake id so multiple chaffs can play at once.
			chaffsid = (chaffsid + 1) & 0xf;
			SoundPos.Sfx( af->auxaeroData->sndBBFlare, chaffsid);
		}

/*
		pos.x = XPos();
		pos.y = YPos();
		pos.z = ZPos();
		posDelta.x = XDelta() * 0.75F;
		posDelta.y = YDelta() * 0.75F;
		posDelta.z = ZDelta() * 0.75F;
*/
		// MLR 2003-11-16 New positional dispensers
		int NumToLaunch = 1;
		
		if(af->auxaeroData->Flare.Sequence==2)
		{
			NumToLaunch=af->auxaeroData->Flare.Count;
		}

		int i;
		for(i=0;i<NumToLaunch && counterMeasureStation[FLARE_STATION].weaponCount > 0;i++)
		{
			counterMeasureStation[FLARE_STATION].weaponCount--;

			Tpoint work;
			MatrixMult( &((DrawableBSP*)af->platform->drawPointer)->orientation, &af->auxaeroData->Flare.Pos[flareDispenser], &work ); 		
			pos.x=work.x + XPos();
			pos.y=work.y + YPos();
			pos.z=work.z + ZPos();

			MatrixMult( &((DrawableBSP*)af->platform->drawPointer)->orientation, &af->auxaeroData->Flare.Vec[flareDispenser], &work ); 		
			posDelta.x=work.x + XDelta();
			posDelta.y=work.y + YDelta();
			posDelta.z=work.z + ZDelta();


			switch(af->auxaeroData->Flare.Sequence)
			{
			case 0: // alternate dispensers;
			case 2:
				flareDispenser++;

				if(flareDispenser>=af->auxaeroData->Flare.Count)
				  flareDispenser=0;
				break;
			case 1: // use 1 dispenser, then move to the next
			default:
				flareUsed++;
				if(flareUsed>=af->auxaeroData->Flare.Decoys[flareDispenser])
				{
					flareUsed=0;
					flareDispenser++;
					if(flareDispenser>=af->auxaeroData->Flare.Count)
					  flareDispenser=0;
				}
				break;
			}

			//type = GetClassID (DOMAIN_AIR, CLASS_VEHICLE, TYPE_BOMB, STYPE_BOMB_IRON, SPTYPE_MK82, VU_ANY, VU_ANY, VU_ANY) + VU_LAST_ENTITY_TYPE; // JB 010220
			type = GetClassID (DOMAIN_AIR, CLASS_VEHICLE, TYPE_BOMB, STYPE_FLARE1, SPTYPE_CHAFF1 + 1, VU_ANY, VU_ANY, VU_ANY) + VU_LAST_ENTITY_TYPE; // JB 010220
			
			weapon = new FlareClass (type);
			weapon->Init();
			weapon->SetParent(this);
			weapon->Start(&pos, &posDelta, 0.2f);
			vuDatabase->/*Quick*/Insert(weapon);
			weapon->Wake();
		}
		SetFlareExpireTime( SimLibElapsedTime + FlareTime );
		SetNewestFlareID( weapon->Id() );
	}
	//MI for EWS stuff
	if(g_bRealisticAvionics && this == FalconLocalSession->GetPlayerEntity())
	{
		if(counterMeasureStation[FLARE_STATION].weaponCount == 0)
		{
			//F4SoundFXSetDist(af->auxaeroData->sndBBChaffFlareOut, TRUE, 0.0f, 1.0f);
			SoundPos.Sfx(af->auxaeroData->sndBBChaffFlareOut);
			//make sure we don't get here again, no sounds from now on
			counterMeasureStation[FLARE_STATION].weaponCount--;
		}
		else if(OTWDriver.pCockpitManager->mpIcp->FlareBingo == counterMeasureStation[FLARE_STATION].weaponCount)
		{
			if(OTWDriver.pCockpitManager->mpIcp->EWS_BINGO_ON)
				SoundPos.Sfx(af->auxaeroData->sndBBChaffFlareLow);
				//F4SoundFXSetDist( af->auxaeroData->sndBBChaffFlareLow, TRUE, 0.0f, 1.0f );
		}
		//MI moved further down
		/*else if(counterMeasureStation[FLARE_STATION].weaponCount > 0)
			F4SoundFXSetDist(SFX_BB_CHAFLARE, FALSE, 0.0f, 1.0f);*/
	}

	// If this is the player and they want unlimited chaff, let 'em have it
	if (IsSetFlag(MOTION_OWNSHIP) && PlayerOptions.UnlimitedChaff())
		counterMeasureStation[FLARE_STATION].weaponCount++;
}
示例#25
0
void AircraftClass::DropChaff (void)
{
	vector		pos, posDelta;
	int		type;
	BombClass	*weapon;
	
	if (counterMeasureStation[CHAFF_STATION].weaponCount > 0)
	{

		if (this == FalconLocalSession->GetPlayerEntity())
		    g_intellivibeData.ChaffDropped++;
		/*
		pos.x = XPos();
		pos.y = YPos();
		pos.z = ZPos();
		posDelta.x = XDelta() * 0.75F;
		posDelta.y = YDelta() * 0.75F;
		posDelta.z = ZDelta() * 0.75F;
		*/
		// new positional Dispensers 
		int NumToLaunch = 1;
		
		if(af->auxaeroData->Chaff.Sequence==2)
		{
			NumToLaunch=af->auxaeroData->Chaff.Count;
		}

		int i;
		for(i=0;i<NumToLaunch && counterMeasureStation[CHAFF_STATION].weaponCount > 0;i++)
		{
            counterMeasureStation[CHAFF_STATION].weaponCount--;
			Tpoint work;
			MatrixMult( &((DrawableBSP*)af->platform->drawPointer)->orientation, &af->auxaeroData->Chaff.Pos[chaffDispenser], &work ); 		
			pos.x=work.x + XPos();
			pos.y=work.y + YPos();
			pos.z=work.z + ZPos();

			MatrixMult( &((DrawableBSP*)af->platform->drawPointer)->orientation, &af->auxaeroData->Chaff.Vec[chaffDispenser], &work ); 		
			posDelta.x=work.x + XDelta();
			posDelta.y=work.y + YDelta();
			posDelta.z=work.z + ZDelta();


			switch(af->auxaeroData->Chaff.Sequence)
			{
			case 0: // alternate dispensers;
			case 2:
				chaffDispenser++;

				if(chaffDispenser>=af->auxaeroData->Chaff.Count)
				  chaffDispenser=0;
				break;
			case 1: // use 1 dispenser, then move to the next
			default:
				chaffUsed++;
				if(chaffUsed>=af->auxaeroData->Chaff.Decoys[chaffDispenser])
				{
					chaffUsed=0;
					chaffDispenser++;
					if(chaffDispenser>=af->auxaeroData->Chaff.Count)
					  chaffDispenser=0;
				}
				break;
			}


			// TODO:  Use a different (much higher drag) type for the chaff
			//type = GetClassID (DOMAIN_AIR, CLASS_SFX, TYPE_CHAFF, STYPE_CHAFF, SPTYPE_CHAFF1, VU_ANY, VU_ANY, VU_ANY) + VU_LAST_ENTITY_TYPE; // JB 010220
			type = GetClassID (DOMAIN_AIR, CLASS_VEHICLE, TYPE_BOMB, STYPE_CHAFF, SPTYPE_CHAFF1, VU_ANY, VU_ANY, VU_ANY) + VU_LAST_ENTITY_TYPE; // JB 010220

			weapon = new ChaffClass(type);
			weapon->Init();
			weapon->SetParent(this);
			weapon->Start(&pos, &posDelta, 0.2f);
			vuDatabase->/*Quick*/Insert(weapon);
			weapon->Wake();
		}

		SetChaffExpireTime( SimLibElapsedTime + ChaffTime );
		SetNewestChaffID( weapon->Id() );
	}
	//MI for EWS stuff
	if(g_bRealisticAvionics && this == FalconLocalSession->GetPlayerEntity())
	{
		if(counterMeasureStation[CHAFF_STATION].weaponCount == 0)
		{
			SoundPos.Sfx(af->auxaeroData->sndBBChaffFlareOut);
			//make sure we don't get here again, no sounds from now on
			counterMeasureStation[CHAFF_STATION].weaponCount--;
		}
		else if(OTWDriver.pCockpitManager->mpIcp->ChaffBingo == counterMeasureStation[CHAFF_STATION].weaponCount)
		{
			if(OTWDriver.pCockpitManager->mpIcp->EWS_BINGO_ON)
				SoundPos.Sfx(af->auxaeroData->sndBBChaffFlareLow);
		}
		//MI Moved further down
		/*if(counterMeasureStation[CHAFF_STATION].weaponCount > 0)
			F4SoundFXSetDist(SFX_BB_CHAFLARE, FALSE, 0.0f, 1.0f);*/
	}


	// If this is the player and they want unlimited chaff, let 'em have it
	if (IsSetFlag(MOTION_OWNSHIP) && PlayerOptions.UnlimitedChaff())
		counterMeasureStation[CHAFF_STATION].weaponCount++;
}
示例#26
0
int DogfightClass::AdjustClassId(int oldid, int team)
{
	Falcon4EntityClassType *classPtr = &Falcon4ClassTable[oldid];
	
	return GetClassID(classPtr->vuClassData.classInfo_[0],classPtr->vuClassData.classInfo_[1],classPtr->vuClassData.classInfo_[2],classPtr->vuClassData.classInfo_[3],classPtr->vuClassData.classInfo_[4],team,VU_ANY,VU_ANY);
}
示例#27
0
void HelicopterClass::InitDamageStation (void)
{
#if 0		// KCK Removed on 6/23 - This stuff isn't really necessary and breaks a unification assumption
Falcon4EntityClassType* classPtr;
VuEntityType* eclassPtr = NULL;
int i, debrisvis;
Tpoint    simView = {0.0F, 0.0F, 0.0F};
Trotation viewRotation = IMatrix;

   // current parts are:
   //		fuselage
   //		2 wings
   //		tail
   numBodyParts = 4;

   damageStation = new WeaponStation;
   damageStation->onRail = new SimBaseClass*[numBodyParts];
   damageStation->SetupPoints(numBodyParts);


   // get the aircraft's class info
   // for each aircraft, visType[1] should indicate the specific type for
   // the aircraft's damaged version
   eclassPtr = EntityType();
   F4Assert (eclassPtr);
   classPtr = &(Falcon4ClassTable[
      GetClassID(
	  		eclassPtr->classInfo_[VU_DOMAIN],
			eclassPtr->classInfo_[VU_CLASS],
			eclassPtr->classInfo_[VU_TYPE],
			eclassPtr->classInfo_[VU_STYPE],
      		eclassPtr->classInfo_[VU_SPTYPE],
			VU_ANY, VU_ANY, VU_ANY)
	  ]);
   /*
   classPtr = &(Falcon4ClassTable[
      GetClassID(
	  		eclassPtr->classInfo_[VU_DOMAIN],
			eclassPtr->classInfo_[VU_CLASS],
			eclassPtr->classInfo_[VU_TYPE],
			eclassPtr->classInfo_[VU_STYPE],
      		classPtr->visType[3],
			VU_ANY, VU_ANY, VU_ANY)
	  ]);
   */

   for (i=0, debrisvis=0; i<numBodyParts; i++)
   {
      damageStation->onRail[i] = new SimBaseClass(Type());
      CalcTransformMatrix (damageStation->onRail[i]);
      OTWDriver.CreateVisualObject(damageStation->onRail[i], classPtr->visType[i+2], &simView, &viewRotation, OTWDriver.Scale());

	  /*
	  if ( i > 0 )
	  {
      	((DrawableBSP*)(damageStation->onRail[0]->drawPointer))->GetChildOffset(i, &simView);
      	((DrawableBSP*)(damageStation->onRail[0]->drawPointer))->AttachChild(((DrawableBSP*)(damageStation->onRail[i]->drawPointer)), i);
	  }
      damageStation->SetSubPosition(i, simView.x, simView.y, simView.z);
      damageStation->SetSubRotation(i, 0.0F, 0.0F);
	  */
   }


   // Init smoke trails
   numSmokeTrails = 4;
   smokeTrail = new DrawableTrail*[numSmokeTrails];
   for (i=0; i<numSmokeTrails; i++)
      smokeTrail[i] = new DrawableTrail(TRAIL_SMOKE);
#endif
}
示例#28
0
OSErr TShioTimeValue::Read(BFPB *bfpb)
{
	long i, n, version;
	ClassID id;
	TimeValuePair pair;
	float f;
	OSErr err = 0;
	
	if (err = TOSSMTimeValue::Read(bfpb)) return err;
	
	StartReadWriteSequence("TShioTimeValue::Read()");
	if (err = ReadMacValue(bfpb,&id)) return err;
	if (id != GetClassID ()) { TechError("TShioTimeValue::Read()", "id != TYPE_SHIOMOVER", 0); return -1; }
	if (err = ReadMacValue(bfpb,&version)) return err;
	//if (version != TShioMoverREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	if (version > TShioMoverREADWRITEVERSION) { printSaveFileVersionError(); return -1; }
	
	/////////////////////////////////
	
	if (err = ReadMacValue(bfpb, fStationName, MAXSTATIONNAMELEN)) return err; // don't swap !! 
	if (err = ReadMacValue(bfpb,&fStationType)) return err; 
	//if (version == 1)
	{
		double fLatitude, fLongitude;	// now the station info is is TOSSMTimeValue...
		if (err = ReadMacValue(bfpb,&fLatitude)) return err;
		if (err = ReadMacValue(bfpb,&fLongitude)) return err;
		// should set the station position
		fStationPosition.p.pLat = fLatitude * 1.e6;
		fStationPosition.p.pLong = fLongitude * 1.e6;
	}
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.datum)) return err;
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.FDir)) return err;
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.EDir)) return err;
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.L2Flag)) return err;
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.HFlag)) return err;
	if (err = ReadMacValue(bfpb,&fConstituent.DatumControls.RotFlag)) return err;

	// read the number of elements in the handle, then the handle values
	if (err = ReadMacValue(bfpb,&n)) return err;
	if(n > 0) {
		if(sizeof(f) != sizeof(**fConstituent.H))  { printError("fConstituent.H size mismatch"); return -1; }
		fConstituent.H = (float**)_NewHandle(n*sizeof(**fConstituent.H));
		if(!fConstituent.H) {TechError("TLEList::Read()", "_NewHandle()", 0); return -1; }
		for(i = 0; i<n;i++)	{
			if (err = ReadMacValue(bfpb,&f)) return err;
			INDEXH(fConstituent.H,i) = f;
		}
	}
	
	// read the number of elements in the handle, then the handle values
	if (err = ReadMacValue(bfpb,&n)) return err;
	if(n > 0) {
		if(sizeof(f) != sizeof(**fConstituent.kPrime))  { printError("fConstituent.kPrime size mismatch"); return -1; }
		fConstituent.kPrime = (float**)_NewHandle(n*sizeof(**fConstituent.kPrime));
		if(!fConstituent.kPrime) {TechError("TLEList::Read()", "_NewHandle()", 0); return -1; }
		for(i = 0; i<n;i++)	{
			if (err = ReadMacValue(bfpb,&f)) return err;
			INDEXH(fConstituent.kPrime,i) = f;
		}
	}

	if (err = ReadMacValue(bfpb,&fHeightOffset.HighTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.HighTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.HighHeight_Mult.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.HighHeight_Mult.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.HighHeight_Add.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.HighHeight_Add.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowHeight_Mult.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowHeight_Mult.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowHeight_Add.val)) return err;
	if (err = ReadMacValue(bfpb,&fHeightOffset.LowHeight_Add.dataAvailFlag)) return err;

	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBefFloodTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBefFloodTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.FloodTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.FloodTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBefEbbTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBefEbbTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.EbbTime.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.EbbTime.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.FloodSpdRatio.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.FloodSpdRatio.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.EbbSpdRatio.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.EbbSpdRatio.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBFloodSpd.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBFloodSpd.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBFloodDir.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBFloodDir.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxFloodSpd.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxFloodSpd.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxFloodDir.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxFloodDir.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBEbbSpd.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBEbbSpd.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBEbbDir.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MinBEbbDir.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxEbbSpd.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxEbbSpd.dataAvailFlag)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxEbbDir.val)) return err;
	if (err = ReadMacValue(bfpb,&fCurrentOffset.MaxEbbDir.dataAvailFlag)) return err;

		//
/////////////////////////////////////////////////

	if (fStationType == 'C')	// values to show on list for tidal currents
	{
		long i,numEbbFloods;
		EbbFloodData ebbFloodData;	
		if (err = ReadMacValue(bfpb,&numEbbFloods)) return err;
		fEbbFloodDataHdl = (EbbFloodDataH)_NewHandleClear(sizeof(EbbFloodData)*numEbbFloods);
		if(!fEbbFloodDataHdl) {TechError("TShioTimeValue::Read()", "_NewHandleClear()", 0); err = memFullErr; return err;}
		for (i=0;i<numEbbFloods;i++)
		{
			if (err = ReadMacValue(bfpb,&(ebbFloodData.time))) return err;
			if (err = ReadMacValue(bfpb,&(ebbFloodData.speedInKnots))) return err;
			if (err = ReadMacValue(bfpb,&(ebbFloodData.type))) return err;
			INDEXH(fEbbFloodDataHdl,i) = ebbFloodData;
		}		
	}
	if (fStationType == 'H')	// values to show on list for tidal heights
	{
		long i,numHighLows;
		HighLowData highLowData;		
		if (err = ReadMacValue(bfpb,&numHighLows)) return err;
		fHighLowDataHdl = (HighLowDataH)_NewHandleClear(sizeof(HighLowData)*numHighLows);
		if(!fHighLowDataHdl) {TechError("TShioTimeValue::Read()", "_NewHandleClear()", 0); err = memFullErr; return err;}
		for (i=0;i<numHighLows;i++)
		{
			if (err = ReadMacValue(bfpb,&(highLowData.time))) return err;
			if (err = ReadMacValue(bfpb,&(highLowData.height))) return err;
			if (err = ReadMacValue(bfpb,&(highLowData.type))) return err;
			INDEXH(fHighLowDataHdl,i) = highLowData;
		}		
		if (err = ReadMacValue(bfpb,&fHighLowValuesOpen)) return err;
		if (err = ReadMacValue(bfpb,&fEbbFloodValuesOpen)) return err;
	}
	if (fStationType == 'P')	// values to show on list for tidal heights
	{
		long i,numHighLows;
		HighLowData highLowData;		
		if (err = ReadMacValue(bfpb,&numHighLows)) return err;
		fHighLowDataHdl = (HighLowDataH)_NewHandleClear(sizeof(HighLowData)*numHighLows);
		if(!fHighLowDataHdl) {TechError("TShioTimeValue::Read()", "_NewHandleClear()", 0); err = memFullErr; return err;}
		for (i=0;i<numHighLows;i++)
		{
			if (err = ReadMacValue(bfpb,&(highLowData.time))) return err;
			if (err = ReadMacValue(bfpb,&(highLowData.height))) return err;
			if (err = ReadMacValue(bfpb,&(highLowData.type))) return err;
			INDEXH(fHighLowDataHdl,i) = highLowData;
		}		
		if (err = ReadMacValue(bfpb,&fHighLowValuesOpen)) return err;
		//if (err = ReadMacValue(bfpb,&fEbbFloodValuesOpen)) return err;
	}
	
	return err;
}