SSU Development Thread (3.0 to 4.0)

DaveS

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Feb 4, 2008
Messages
9,434
Reaction score
689
Points
203
I have checked in a version that is close to the real photos.
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,667
Reaction score
796
Points
128
A Sketchpad solution sounds like the best approach to me.... what would be needed for that?

I started working on the mesh rendering and looks like I am going to do some other drawing optimizations to the sketchpad as well, so it's going to take a day or two longer than expected.

One problem is that the inline engine would require a GDI solution for the ADI ball where as everything else should work with sketchpad, so, no need for separate codes. Although, the Sketchpad::GetDC can be only used with inline engine. It won't work in D3D9.

I checked the Shuttle Crew Operations Manual how the instruments are supposed to look like and it would seem that the most efficient way to draw the markers and arrows would be from a mesh. So, having one mesh with multiple groups where one is the ADI ball and each different marker/arrow would be made on it's own group.

Would something help reducing the "Waiting present" times?

A reduction of GPU load would do that but I have no idea how. The GPU is the bottle neck and the CPU is waiting the GPU to catch up. CPU has already done everything it can and there is nothing else to do than waiting Present().

Try "ISS A to Z" and the results are different.

I also added some additional debug information into the statistics display and A/E PFD is waiting 7ms to get a lock to the drawing surface and then the drawing takes 5ms. But for that frame waiting present is likely zero.

EDIT: Are there photos showing how the ADI ball is supposed to look like. Does it look spherical or flat ?

Just a few ahead-ups:

The render function is likely going to look like this:

void DrawMeshGroup(DEVMESHHANDLE hMesh, DWORD grp, const VECTOR3 *pos, const MATRIX3 *pRS, const VECTOR4 *color = NULL, float fov = 0.0f, DWORD flags = 0);

'pRS' is rotation and scale matrix.
'color' is a mesh material color override. Texture color is modulated with a material color. Only diffuse material is in use. Alpha is supported.
 
Last edited:

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
It is flat shaded:

530876main_gc-atlantis.jpg
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
So we're going to need 2 solutions for the ADI... :facepalm: Well, at least one of them is done already and as long as both work. :shrug:

The ADI ball is spherical and if I remember my calculations it has a diameter equal to the diameter of the "window" times the square root of 2.* I have a picture of the ADI somewhere... let me find it.
I think we just need the mesh stuff for the ADI ball and the HSI disk... maybe the tapes as well. The needles and arrows are probably not that expensive... or are they?
I think we need a projection of the mesh and then to copy part, or all, of it to the display. I don't think we'll need to play with color or anything else, but you of course implement what you want.

As for time, don't worry as in SSU we measure time with a calendar. :lol:

*) don't ask how I got to that number... it just looks right.

---------- Post added at 04:37 PM ---------- Previous post was at 04:35 PM ----------

Here it is:
img_8013.jpg
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,667
Reaction score
796
Points
128
The ADI ball is spherical and if I remember my calculations it has a diameter equal to the diameter of the "window" times the square root of 2.* I have a picture of the ADI somewhere... let me find it.

Yes, of course, the ball it self is much bigger than what's visible on the screen. So, we are going to need a clip plane to hide the rest of the ball leaving only a small cap visible.

The needles and arrows are probably not that expensive... or are they?

No, of course not, I just though that some of them might be easier and quicker to do in a 3D editor than manually coding.
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
So, any progress in towards SSU 4.0?
I'm currently doing some small changes to the manual. I don't know if anybody seen it, but 1 or 2 weeks ago I added a small checklist for Centaur deployment.... and given that the IUS panel isn't working fully I'm wondering if I should do a (simplified) checklist for it as well.
Other than that, the only major things missing are the CISS bellows stuff and then me updating the Centaur images in the manual.
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
So, any progress in towards SSU 4.0?
I'm currently doing some small changes to the manual. I don't know if anybody seen it, but 1 or 2 weeks ago I added a small checklist for Centaur deployment.... and given that the IUS panel isn't working fully I'm wondering if I should do a (simplified) checklist for it as well.
Other than that, the only major things missing are the CISS bellows stuff and then me updating the Centaur images in the manual.

Not much here, I mostly do the New Shepard stuff right now and port ye olde Black Dart to orbiter-beta for learning. I planned to test CMake for orbiter projects last weekend, but had no time for it :(
 

DaveS

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Feb 4, 2008
Messages
9,434
Reaction score
689
Points
203
Could someone take a look at issue#103? It's the only one that isn't a major system undertaking and would fit well with a 4.0 release.
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
Could someone take a look at issue#103? It's the only one that isn't a major system undertaking and would fit well with a 4.0 release.

Plasma is one PITA... I remember taking a look at this a while back but didn't really get anywhere. There's also plasma during late ascent... but we don't want to have the plasma mesh showing at that time (any news in getting that resized?), so getting the right balance is hard. Also we don't want plasma during max q bar or during TAEM. Anyway, after I finish with the changes to the manual I'll take another look at it. What about the IUS checklist?

I'd like to get SSU 4.0 out the door ASAP so we can all move to SSU 5.0 and Orbiter 2016 and solve the tons of problems there.
 

DaveS

Addon Developer
Addon Developer
Donator
Beta Tester
Joined
Feb 4, 2008
Messages
9,434
Reaction score
689
Points
203
There are several procedures that could be implemented with regards to the IUS. The ones I'm thinking about are:

  • PCP/CIU/SSP ACT AND C/O (2-6)
  • ACTUATOR ENGAGEMENT (3-6)
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
Can anyone help me with Figure 3-2 in page 3-2 of the Centaur G Technical Description? We need that in the manual as GEO performance needs to be described somehow for the users to use it. And so I did some testing to see how close are we to those numbers, and it looks like we are very far from them. Which is strange because if we shoot a Centaur G (or G') into an escape trajectory, the C3 it gets is pretty much what the charts say.
The text says "Figure 3-2 presents the orbital energy capabilities of the Centaur G for payload weights up to 6000 lb.", but the numbers in that chart are from 10k to 13k lbs. :uhh: If I subtract 7k lbs from the payload mass, the performance starts to matching the chart (actually exceeding it). But I don't think the chart is for Centaur+payload mass, as the later 1984 doc has 0º GEO payload to 9400 lbs (the 1982 has 10600 lbs) (we can't do 9400 lbs either).
Any ideas on what to "advertise" in the manual?

There are several procedures that could be implemented with regards to the IUS. The ones I'm thinking about are:

  • PCP/CIU/SSP ACT AND C/O (2-6)
  • ACTUATOR ENGAGEMENT (3-6)

I thought about adding the talkback test part, but then realized it requires adding 2 DiscPorts per talkback to the panel code :leaving:.
The ASE actuator stuff needs more work (and the CISS one as well)... don't think we have time to do that for 4.0 :shrug:.
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,667
Reaction score
796
Points
128
The Sketchpad2 interface should be operational now with a mesh rendering support. Documentation is located in OrbiterSDK/doc/gcAPI.chm. Also, gcAPI.lib or gcAPI_dbg.lib need to be linked.

PHP:
#include "gcAPI.h"
#include "Sketchpad2.h"

//  ---- Init Code ----

SKETCHMESH hMesh = NULL;

if (gcInitialize()) {
	hMesh = gcLoadSketchMesh("Phobos");
}


// ---- Render Code -----

if (gcSketchpadVersion(pSkp)==2 && hMesh) {

	// It is safe to cast to Sketchpad2 only if version returns 2
	oapi::Sketchpad2 *pSkp2 = (oapi::Sketchpad2 *)pSkp;

	// Build World Matrix, zFar clip plane is at max(W,H) and zNear plane is at 0.0f	
	FMATRIX4 mat;
	gcWorldMatrix(&mat, _V(float(W/2), float(H/2), float(W)), _V(1,0,0), _V(0,0,1), 200.0f); 

	// Apply World transform		
	pSkp2->SetWorldTransform(&mat);

	// Render Mesh group 0
	// Resulting color.rgba = Texture.rgba * Material.rgba * Pen.rgba
	pSkp2->DrawMeshGroup(hMesh, 0, SMOOTH_SHADE);

	// Reset to default world transform
	pSkp2->SetWorldTransform();
}

//  ---- Cleanup Code ----

if (hMesh) {
     gcDeleteSketchMesh(hMesh);
}
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
Is there also a way in gcAPI to create a mesh like it is done for Panel2D?
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,667
Reaction score
796
Points
128
Is there also a way in gcAPI to create a mesh like it is done for Panel2D?

What do you mean ? I have never created a panel for Orbiter but as far as I can tell there exists no API to create a mesh. Panel mesh is created in a 3D editor like any other Orbiter mesh.

It should be possible to load a 2D Panel mesh using gcLoadSketchMesh() and render it on screen but SKETCHMESH is static (i.e. non editable).

Currently 2D panel is rendered directly from a template mesh never converting it to a device specific format (i.e. never creating a video memory vertex buffers) vertex data exists only in a system memory. Providing easy way to edit it but is slower to render when vertex count is high. Of course, it would be possible to add that kind of rendering to the sketchpad if needed.

There also exists HPOLY object, currently allowing to record a polyline to an object for faster rendering. Could also store lines and polygons, but not currently implemented. It is also intended for static use.
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
What do you mean ? I have never created a panel for Orbiter but as far as I can tell there exists no API to create a mesh. Panel mesh is created in a 3D editor like any other Orbiter mesh.

There are for example:

oapiCreateMesh(DWORD, MESHGROUP *)
oapiEditMeshGroup(MESHHANDLE, DWORD, GROUPEDITSPEC);

etc.

In orbiter 2010. You have a few example there like this from the Deltaglider:

Code:
void DeltaGlider::DefinePanelMain (PANELHANDLE hPanel)
{
	MESHGROUP grp;
	memset (&grp, 0, sizeof(MESHGROUP));
	ReleaseSurfaces();

	const DWORD NVTX = 4, NIDX = 6;
	const DWORD texw = PANEL2D_TEXW, texh = PANEL2D_TEXH;
	const DWORD panelw = PANEL2D_WIDTH, panelh = 572, panely0 = PANEL2D_TEXH-572;
	int xofs, g = 0;

	// panel billboard definition
	static NTVERTEX VTX[NVTX] = {
		{     0,     0,0,  0,0,0,  0,                        1.0f-(float)panelh/(float)texh},
		{panelw,     0,0,  0,0,0,  (float)panelw/(float)texw,1.0f-(float)panelh/(float)texh},
		{panelw,panelh,0,  0,0,0,  (float)panelw/(float)texw,1},
		{     0,panelh,0,  0,0,0,  0,                        1}
	};
	static WORD IDX[NIDX] = {
		0,1,2,2,3,0
	};

	DWORD i, mfdgrp[2];

	// Create the mesh for defining the panel geometry
	if (hPanelMesh) oapiDeleteMesh (hPanelMesh);
	hPanelMesh = oapiCreateMesh (0, 0);
	for (i = 0; i < 5; i++)
		oapiAddMeshGroup (hPanelMesh, &grp);

	// 1. Define panel elements underneath the the main panel (mesh group 0)
	// Attitude, HSI, AOA and VS tapes
	for (i = 0; i < 4; i++)
		instr[i]->AddMeshData2D (hPanelMesh, 0);

	// 2. Define main panel background (group 1)
	oapiAddMeshGroupBlock (hPanelMesh, 1, VTX, NVTX, IDX, NIDX);

	// 3. Define panel elements on top of the main panel (group 2)
	for (i = 4; i < ninstr_main; i++)
		instr[i]->AddMeshData2D (hPanelMesh, 2);
	aap->AddMeshData2D (hPanelMesh, 2);

	// 4. Define left and right MFD displays (groups 3+4)
	static NTVERTEX VTX_MFD[2][4] = {
	   {{ 216, 65,0,  0,0,0,  0,0},
		{ 504, 65,0,  0,0,0,  1,0},
		{ 216,353,0,  0,0,0,  0,1},
	    { 504,353,0,  0,0,0,  1,1}},
	   {{ 778, 65,0,  0,0,0,  0,0},
		{1066, 65,0,  0,0,0,  1,0},
		{ 778,353,0,  0,0,0,  0,1},
	    {1066,353,0,  0,0,0,  1,1}}
	};
	static WORD IDX_MFD[6] = {
		0,1,2,3,2,1
	};
	for (i = 0; i < 2; i++) {
		mfdgrp[i] = 3+i;
		oapiAddMeshGroupBlock (hPanelMesh, mfdgrp[i], VTX_MFD[i], 4, IDX_MFD, 6);
	}

	SetPanelBackground (hPanel, &panel2dtex, 1, hPanelMesh, panelw, panelh, 190,
		PANEL_ATTACH_BOTTOM | PANEL_MOVEOUT_BOTTOM);

	// Define MFD layout (display and buttons)
	RegisterPanelMFDGeometry (hPanel, MFD_LEFT, 0, mfdgrp[0]);
	RegisterPanelMFDGeometry (hPanel, MFD_RIGHT, 0, mfdgrp[1]);

	xofs = 173; // left MFD
	RegisterPanelArea (hPanel, AID_MFD1_BBUTTONS, _R( 51+xofs,359,321+xofs,377), PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[30]); // bottom button row
	RegisterPanelArea (hPanel, AID_MFD1_LBUTTONS, _R(    xofs,100, 25+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[31]); // left button column
	RegisterPanelArea (hPanel, AID_MFD1_RBUTTONS, _R(348+xofs,100,373+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[32]); // right button column

	xofs = 736; // right MFD
	RegisterPanelArea (hPanel, AID_MFD2_BBUTTONS, _R( 51+xofs,359,321+xofs,377), PANEL_REDRAW_NEVER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[33]); // bottom button row
	RegisterPanelArea (hPanel, AID_MFD2_LBUTTONS, _R(    xofs,100, 25+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[34]); // left button column
	RegisterPanelArea (hPanel, AID_MFD2_RBUTTONS, _R(348+xofs,100,373+xofs,323), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[35]); // right button column

	RegisterPanelArea (hPanel, AID_HORIZON,      _R(0,0,0,0),           PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, 0, instr[0]);
	RegisterPanelArea (hPanel, AID_HSIINSTR,     _R(0,0,0,0),           PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, 0, instr[1]);
	RegisterPanelArea (hPanel, AID_AOAINSTR,     _R(0,0,0,0),           PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[2]);
	RegisterPanelArea (hPanel, AID_VSINSTR,      _R(0,0,0,0),           PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[3]);
	RegisterPanelArea (hPanel, AID_MAINPROP,     _R(0,0,0,0),           PANEL_REDRAW_ALWAYS, PANEL_MOUSE_IGNORE, panel2dtex, instr[4]);
	RegisterPanelArea (hPanel, AID_NAVMODE,      _R(1121,119,1197,273), PANEL_REDRAW_USER,   PANEL_MOUSE_LBDOWN, panel2dtex, instr[5]);
	RegisterPanelArea (hPanel, AID_ELEVATORTRIM, _R(1242,135,1262,195), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[6]);
	RegisterPanelArea (hPanel, AID_AIRBRAKE,     _R(1242,215,1262,275), PANEL_REDRAW_USER,   PANEL_MOUSE_LBDOWN, panel2dtex, instr[7]);
	RegisterPanelArea (hPanel, AID_ENGINEMAIN,   _R(108,52,161,227),    PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED, panel2dtex, instr[8]);
	RegisterPanelArea (hPanel, AID_ENGINEHOVER,  _R(108, 234,161,374),  PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBPRESSED, panel2dtex, instr[9]);
	RegisterPanelArea (hPanel, AID_ATTITUDEMODE, _R(1136,69,1176,113),  PANEL_REDRAW_MOUSE,  PANEL_MOUSE_DOWN, panel2dtex, instr[10]);
	RegisterPanelArea (hPanel, AID_ADCTRLMODE,   _R(1217,69,1257,113),  PANEL_REDRAW_MOUSE,  PANEL_MOUSE_DOWN, panel2dtex, instr[11]);
	RegisterPanelArea (hPanel, AID_DOCKRELEASE,  _R(1141,474,1172,504), PANEL_REDRAW_MOUSE,  PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBUP, panel2dtex, instr[12]);
	RegisterPanelArea (hPanel, AID_HUDMODE,      _R(  15, 18, 122, 33), PANEL_REDRAW_USER,   PANEL_MOUSE_LBDOWN|PANEL_MOUSE_ONREPLAY, panel2dtex, instr[13]);
	RegisterPanelArea (hPanel, AID_GEARLEVER,    _R(1230,286,1262,511), PANEL_REDRAW_USER,   PANEL_MOUSE_LBDOWN, panel2dtex, instr[14]);
	RegisterPanelArea (hPanel, AID_PGIMBALMAINDISP, _R(0,0,0,0),        PANEL_REDRAW_USER,   PANEL_MOUSE_IGNORE, panel2dtex, instr[15]);
	RegisterPanelArea (hPanel, AID_PGIMBALMAIN,  _R( 63,  83, 98,125),  PANEL_REDRAW_MOUSE,  PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[16]);
	RegisterPanelArea (hPanel, AID_PGIMBALMAINMODE, _R(57,139,69,151),  PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[17]);
	RegisterPanelArea (hPanel, AID_YGIMBALMAINDISP, _R(0,0,0,0),        PANEL_REDRAW_USER,   PANEL_MOUSE_IGNORE, panel2dtex, instr[18]);
	RegisterPanelArea (hPanel, AID_YGIMBALMAIN,  _R( 56, 178, 98,213),  PANEL_REDRAW_MOUSE,  PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[19]);
	RegisterPanelArea (hPanel, AID_YGIMBALMAINMODE, _R(8,165,20, 211),  PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[20]);
	RegisterPanelArea (hPanel, AID_HBALANCEDISP, _R(0,0,0,0),           PANEL_REDRAW_USER,   PANEL_MOUSE_IGNORE, panel2dtex, instr[21]);
	RegisterPanelArea (hPanel, AID_HOVERBALANCE, _R( 63, 304,79, 348),  PANEL_REDRAW_MOUSE,  PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[22]);
	RegisterPanelArea (hPanel, AID_HBALANCEMODE, _R( 57, 354, 69,366),  PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[23]);
	RegisterPanelArea (hPanel, AID_GEARINDICATOR, _R(0,0,0,0),          PANEL_REDRAW_USER,   PANEL_MOUSE_IGNORE, panel2dtex, instr[24]);
	RegisterPanelArea (hPanel, AID_NOSECONELEVER, _R(1141,327,1180,421), PANEL_REDRAW_USER,  PANEL_MOUSE_LBDOWN, panel2dtex, instr[25]);
	RegisterPanelArea (hPanel, AID_NOSECONEINDICATOR, _R(0,0,0,0),      PANEL_REDRAW_USER,   PANEL_MOUSE_IGNORE, panel2dtex, instr[26]);
	RegisterPanelArea (hPanel, AID_SWITCHARRAY,  _R( 855,415,1106,453), PANEL_REDRAW_USER,   PANEL_MOUSE_LBDOWN, panel2dtex, instr[27]);
	RegisterPanelArea (hPanel, AID_WBRAKE_BOTH,  _R(1221,494,1273,557), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBUP, panel2dtex, instr[28]);
	RegisterPanelArea (hPanel, AID_MWS,          _R(1071,  6,1098, 32), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN, panel2dtex, instr[29]);

	if (ScramVersion()) {
		RegisterPanelArea (hPanel, AID_ENGINESCRAM, _R(108,386,161,488), PANEL_REDRAW_ALWAYS, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED, panel2dtex, instr[instr_scram0+0]);
		RegisterPanelArea (hPanel, AID_GIMBALSCRAMDISP, _R(0,0,0,0),     PANEL_REDRAW_USER, PANEL_MOUSE_IGNORE, panel2dtex, instr[instr_scram0+1]);
		RegisterPanelArea (hPanel, AID_GIMBALSCRAM, _R( 63,411, 98,455), PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN | PANEL_MOUSE_LBPRESSED | PANEL_MOUSE_LBUP, panel2dtex, instr[instr_scram0+2]);
		RegisterPanelArea (hPanel, AID_GIMBALSCRAMMODE, _R(57,468,69,480), PANEL_REDRAW_USER | PANEL_REDRAW_MOUSE, PANEL_MOUSE_LBDOWN, panel2dtex, instr[instr_scram0+3]);
	}

	aap->RegisterPanel (hPanel);
	InitPanel (0);
}
 

jarmonik

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 28, 2008
Messages
2,667
Reaction score
796
Points
128
Since the Orbiter already has an API to create a mesh then would it be simply enough to add a playback function to the sketchpad ?

Sketchpad2::DrawMesh(MESHHANDLE hMeshTemplate, int grp, DWORD flags)
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
Since the Orbiter already has an API to create a mesh then would it be simply enough to add a playback function to the sketchpad ?

Sketchpad2::DrawMesh(MESHHANDLE hMeshTemplate, int grp, DWORD flags)

If it works as intended, sure. :)
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
I did some changes to the reentry plasma mesh math, and got a pretty good result IMO. The mesh is now visible from ~260kft to ~140kft on the way down, which while not perfect, is much better than it was. The mesh still needs resizing though...

On another front, I think we should add a small change list to the release package, containing the major changes from the last release, so the users can see that we are not releasing the same thing over and over again :p. My question is: should it go in the manual (one page max) or on a separate txt file?
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,624
Reaction score
2,343
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
I did some changes to the reentry plasma mesh math, and got a pretty good result IMO. The mesh is now visible from ~260kft to ~140kft on the way down, which while not perfect, is much better than it was. The mesh still needs resizing though...

On another front, I think we should add a small change list to the release package, containing the major changes from the last release, so the users can see that we are not releasing the same thing over and over again :p. My question is: should it go in the manual (one page max) or on a separate txt file?

Can't we do both, a Latex include file for the manual and a simple plain text readme file for the current release?
 

GLS

Well-known member
Orbiter Contributor
Addon Developer
Joined
Mar 22, 2008
Messages
5,920
Reaction score
2,928
Points
188
Website
github.com
Can't we do both, a Latex include file for the manual and a simple plain text readme file for the current release?

This below in a "changelog.txt" going in the doc/SSU folder, and a page in the manual at the end before the credits?

Code:
*** Major changes from SSU 3.0 ***

corrected orbiter vehicle textures
corrections to external airlock and tunner adapter
fixed orbiter vehicle mesh
fixed Item 27 issue for OMS-2
small corrections to RMS systems and its cameras
corrected colors in displays
added some funcionality to Ku-band antenna (radar and manual slew)
added Centaur upper stage and its vc panel
added IUS upper stage and its vc panels
updated HUD graphics
fixed wrong WT parameter in MNVR display
fixed issue with the event timer
new texture for RMS
corrected position of PLB handrails
fixed reentry mesh not showing
 
Top