General Question Atlantis recompile

So How to change the mesh based off the scn?

I have the default mesh set to Atlantis.

OV=104;
void Atlantis::LoadMeshes()
{
// Retrieve mesh handles
//hOrbiterMesh = oapiLoadMeshGlobal ("2016SPACESHUTTLE\\Columbia\\Columbia2016A");
//hOrbiterCockpitMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\Columbia\\ColumbiaCockpit");
//hOrbiterVCMesh = oapiLoadMeshGlobal ("2016SPACESHUTTLE\\Columbia\\ColumbiaVC");
if (OV==104)hOrbiterMesh = oapiLoadMeshGlobal("Atlantis\\Atlantis");
hOrbiterCockpitMesh = oapiLoadMeshGlobal("Atlantis\\AtlantisCockpit");
hOrbiterVCMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\ShuttleVC5B");
hOrbiterODSMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\ODS");
hOrbiterRMS1Mesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\RMS1");

// Load meshes
mesh_cockpit = AddMesh(hOrbiterCockpitMesh);
SetMeshVisibilityMode(mesh_cockpit, MESHVIS_EXTERNAL);

mesh_orbiter = AddMesh(hOrbiterMesh);
SetMeshVisibilityMode(mesh_orbiter, MESHVIS_EXTERNAL | MESHVIS_VC | MESHVIS_EXTPASS);

mesh_vc = AddMesh(hOrbiterVCMesh);
SetMeshVisibilityMode(mesh_vc, MESHVIS_VC) ;

mesh_ODS = AddMesh(hOrbiterODSMesh);
SetMeshVisibilityMode(mesh_ODS, MESHVIS_NEVER);

mesh_RMS1 = AddMesh(hOrbiterRMS1Mesh);
SetMeshVisibilityMode(mesh_RMS1, MESHVIS_NEVER);


//ShiftMesh(2, _V(0.01, -0.0380, -.4125));

// Optonal meshes
mesh_cargo = NULL;
mesh_platform = NULL;

// Visual handle
vis = NULL;
}
[/CODE]

Then change the mesh handle based on OV;

Code:
void Atlantis::clbkLoadStateEx (FILEHANDLE scn, void *vs)
{

			if (!_strnicmp(line, "OV", 2)) {
				sscanf(line + 2, "%d", &OV);

				if (OV == 102)	hOrbiterMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\Columbia\\Columbia2016C");
				if (OV == 104)	hOrbiterMesh = oapiLoadMeshGlobal("Atlantis\\Atlantis");

				//SetMeshVisibilityMode(mesh_orbiter, MESHVIS_EXTERNAL | MESHVIS_VC | MESHVIS_EXTPASS);
				LoadMeshes();
			}


i GET A CTD WITH

============================ ERROR: ===========================
Mesh not found: .\Meshes\.msh
[LoadMesh | .\Mesh.cpp | 1269]
===============================================================

---------- Post added at 05:36 PM ---------- Previous post was at 06:09 AM ----------

So I have this:
Code:
void Atlantis::LoadMeshes()
{
	// Retrieve mesh handles
	if (OV == 102)	hOrbiterMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\Columbia\\Columbia2016C");
	else if (OV == 104)	hOrbiterMesh = oapiLoadMeshGlobal("Atlantis\\Atlantis");
	else hOrbiterMesh = oapiLoadMeshGlobal("2016SPACESHUTTLE\\Constellation\\Constellation2016C");
As I understand it. If the value is 102 then load Columbia or 104 then load Atlantis else load Constellation.
In the scn
Code:
STS-1:Shuttle2016A
  STATUS Landed Earth
  POS -80.6208630 28.6270927
  HEADING 180.57
  ALT 0.000
  AROT 99.922 -54.902 51.216
  ATTACHED 0:0,ET-1
  PRPLEVEL 0:1.000000
  NAVFREQ 0 0
  CONFIGURATION 3
  GEAR 0 0.0000
  HATCH 0 0.0000
  Armtilt 0 0.0000
  ODS 0 
  EVA 0 
  OV 102
In the h:
Code:
int OV;


Animation because I am loading more meshes the index is bad.
Code:
void Atlantis::DefineAnimations (void)
{

	UINT midx = mesh_orbiter; // mesh index for all external animations
	UINT vidx = mesh_vc; // mesh index for all VC animations
	UINT ridx = mesh_RMS1; // mesh index for all rms animations

Code:
Atlantis::Atlantis (OBJHANDLE hObj, int fmodel)
: VESSEL4 (hObj, fmodel)
{
#ifdef _DEBUG
        // D. Beachy: for BoundsChecker debugging
        GrowStack();
#endif
	int i;

	plop            = new PayloadBayOp (this);
//	ascap           = new AscentAP (this);
//	ascapMfdId      = RegisterAscentApMfd ();
	status          = 3;
	gear_status     = AnimState::CLOSED;
	gear_proc       = 0.0;
	ldoor_drag      = rdoor_drag = 0.0;
	spdb_status     = AnimState::CLOSED;
	spdb_proc       = 0.0;
	//light
	light_status = 0;
	aft_light_status = 0;
	rmslight_status = 0;
	//
	engine_light_level = 0.0;
	COLOUR4 col_diff = {1,0.8,0.8,0};
	COLOUR4 col_zero = {0,0,0,0};
	engine_light = AddPointLight (_V(0,0,-25), 300, 2e-4, 0, 4e-4, col_diff, col_zero, col_zero);
	engine_light->SetIntensityRef (&engine_light_level);
	ARM_OPERATING_SPEED = .005;
	OV = 104;
	LoadMeshes();
	reset_sat       = false;
	render_cockpit  = false;

	for (i = 0; i < 10; i++)
		mfdbright[i] = 1.0;
So now it shows the mesh for Ov=104.. Not sure how to reload with the correct mesh

Fixed:)

I cleared the mesh and reload the correct one and the end of the load state:
Code:
	ClearMeshes();//clear meshes
	LoadMeshes();//load correct meshes
}
 
Last edited:
Back
Top