Commit MetaInfo

Revision618687a8b9e66866421f7776be41ece2ec15495e (tree)
Time2009-08-16 01:00:09
AuthorFace
CommiterFace

Log Message

Split up in PAX MFD and core plugin.

Change Summary

Incremental Difference

diff -r f4a0595dc36f -r 618687a8b9e6 Orbitersdk/samples/UMMUFB/PAX.cpp
--- a/Orbitersdk/samples/UMMUFB/PAX.cpp Fri Aug 14 18:54:43 2009 +0200
+++ b/Orbitersdk/samples/UMMUFB/PAX.cpp Sat Aug 15 18:00:09 2009 +0200
@@ -1,270 +1,160 @@
1-#define STRICT
2-#define ORBITER_MODULE
3-#define DOCKSTRUCTOFFSET_CURRENTDOCKOBJECT 0x48
4-#define ADDRESS_GETDOCKSTATUS 0x004217E0
51 #include <stdio.h>
62 #include "orbitersdk.h"
73 #include "UMMUFB.h"
8-
9-// ==============================================================
10-// Global variables
11-
12-int g_MFDmode; // identifier for new MFD mode
13-DWORD g_Hook;
14-OBJHANDLE g_Transfer;
15-byte g_original[10]={0x8b,0x44,0x24,0x04,0x8b,0x40,0x48,0xc2,0x04,0x00};
16-//The following array is:
17-//_asm
18-//{
19-// pop eax;
20-// push ecx;
21-// push eax;
22-// jmp dword ptr [GetDockStatus]; //Dynamically detected address
23-// nop;
24-//}
25-byte g_code[10] = {0x58, 0x51, 0x50, 0xff, 0x25, 0, 0, 0, 0, 0x90};
26-
27-// ==============================================================
28-// API interface
29-
30-void _stdcall GetLandedPad(VESSEL *vessel, OBJHANDLE &base, DWORD &port)
31-{
32- VESSELSTATUS2 s;
33- s.version=2;
34- s.flag=0;
35- vessel->GetStatusEx(&s);
36- base=NULL;
37- port=0;
38- if (s.status==1 && s.rbody!=NULL)
39- {
40- int k=oapiGetBaseCount(s.rbody);
41- VECTOR3 distance;
42- OBJHANDLE nearest=NULL;
43- double nearestDistance=-1;
44- for(int i=0;i<k;i++)
45- {
46- base=oapiGetBaseByIndex(s.rbody, i);
47- int l=oapiGetBasePadCount(base);
48- vessel->GetRelativePos(base, distance);
49- double len=length(distance);
50- if (nearestDistance<0 || nearestDistance>len)
51- {
52- nearestDistance=len;
53- nearest=base;
54- }
55- }
56- if (nearest!=NULL)
57- {
58- k=oapiGetBasePadCount(nearest);
59- double vlng, vlat, vrad;
60- vessel->GetEquPos(vlng, vlat, vrad);
61- for(int i=0;i<k;i++)
62- {
63- double lng, lat;
64- oapiGetBasePadEquPos(nearest, i, &lng, &lat);
65- lng-=vlng;
66- lat-=vlat;
67- if (sqrt(lng*lng+lat*lat)*vrad<50)
68- {
69- port=i+1;
70- break;
71- }
72- }
73- }
74- if (port>0) base=nearest;
75- else base=NULL;
76- }
77-}
78-
79-OBJHANDLE _stdcall GetDockStatus(VESSEL *vessel, DOCKHANDLE dock)
80-{
81- //Do my own GetDockStatus
82- if (g_Transfer!=NULL)
83- {
84- OBJHANDLE base;
85- DWORD port;
86- GetLandedPad(vessel, base, port);
87- if (port>0) return g_Transfer;
88- }
89- //Original function content
90- return *(OBJHANDLE *)(void *)((char *)dock+DOCKSTRUCTOFFSET_CURRENTDOCKOBJECT);
91-}
92-
93-int WriteCode(void *address, void *code, DWORD len)
94-{
95- //Get process information
96- HANDLE hSelf = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ::GetCurrentProcessId());
97- MEMORY_BASIC_INFORMATION mbi;
98-
99- //Open up page of linked address
100- if(VirtualQueryEx(hSelf, (LPVOID)address, &mbi, sizeof(mbi)) != sizeof(mbi)) return -1;
101- PVOID pvRgnBaseAddress = mbi.BaseAddress;
102- DWORD dwOldProtect1, dwOldProtect2, dwFake;
103- if(!::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect1)) return -2;
104- BOOL bStridePage = FALSE;
105- LPBYTE lpByte = (LPBYTE)pvRgnBaseAddress;
106- lpByte += 4096;
107- if((DWORD)lpByte < (DWORD)address + 4) bStridePage = TRUE;
108- PVOID pvRgnBaseAddress2 = (LPVOID)lpByte;
109- if(bStridePage)
110- if(!::VirtualProtectEx(hSelf, pvRgnBaseAddress2, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect2))
111- {
112- ::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, dwOldProtect1, &dwFake);
113- return -3;
114- }
115-
116- //Write code
117- memcpy(address, code, len);
118-
119- //Lock vtables again
120- ::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, dwOldProtect1, &dwFake);
121- if(bStridePage) ::VirtualProtectEx(hSelf, pvRgnBaseAddress2, 4, dwOldProtect2, &dwFake);
122-}
123-
124-DLLCLBK void InitModule (HINSTANCE hDLL)
125-{
126- //Hook
127- union
128- {
129- void *pointer;
130- byte bytes[4];
131- DWORD value;
132- } p;
133- g_Hook=(DWORD)(void *)GetDockStatus;
134- g_Transfer=NULL;
135- p.pointer=(void *)&g_Hook;
136- for(int i=0;i<4;i++) g_code[5+i] = p.bytes[i];
137- if (memcmp((void *)g_original, (void *)ADDRESS_GETDOCKSTATUS, 10)==0)
138- WriteCode((void *)ADDRESS_GETDOCKSTATUS, (void *)g_code, 10);
139-
140- static char *name = "UMMUFB";
141- MFDMODESPEC spec;
142- spec.name = name;
143- spec.key = OAPI_KEY_U;
144- spec.msgproc = UMMUFB::MsgProc;
145-
146- // Register the new MFD mode with Orbiter
147- g_MFDmode = oapiRegisterMFDMode (spec);
148-}
149-
150-DLLCLBK void ExitModule (HINSTANCE hDLL)
151-{
152- // Unregister the custom MFD mode when the module is unloaded
153- oapiUnregisterMFDMode (g_MFDmode);
154-
155- //Unhook
156- if (memcmp((void *)g_code, (void *)ADDRESS_GETDOCKSTATUS, 10)==0)
157- WriteCode((void *)ADDRESS_GETDOCKSTATUS, (void *)g_original, 10);
158-}
159-
160-// ==============================================================
161-// MFD class implementation
4+#include "PAX.h"
5+#define MFD_LINELENGTH 35
1626
1637 // Constructor
164-UMMUFB::UMMUFB (DWORD w, DWORD h, VESSEL *vessel)
8+PAX::PAX (DWORD w, DWORD h, VESSEL *vessel)
1659 : MFD (w, h, vessel)
16610 {
16711 this->vessel=vessel;
16812 this->object=vessel->GetHandle();
16913 this->width=(int)w/35;
17014 this->heigth=(int)h/28;
15+ lastButton=0;
16+ lastTime=oapiGetSimTime();
17+ middleGreen=NULL;
18+ blink=false;
17119 }
17220
17321 // Destructor
174-UMMUFB::~UMMUFB ()
22+PAX::~PAX ()
17523 {
17624 // Add MFD cleanup code here
17725 }
17826
17927 // Return button labels
180-char *UMMUFB::ButtonLabel (int bt)
28+char *PAX::ButtonLabel (int bt)
18129 {
18230 // The labels for the two buttons used by our MFD mode
183- static char *label[2] = {"REL", "TST"};
184- return (bt < 2 ? label[bt] : 0);
31+ static char *label = "PAX";
32+ static char *empty = "";
33+ if (bt == 5) return label;
34+ return (bt < 5 ? empty : 0);
18535 }
18636
18737 // Return button menus
188-int UMMUFB::ButtonMenu (const MFDBUTTONMENU **menu) const
38+int PAX::ButtonMenu (const MFDBUTTONMENU **menu) const
18939 {
19040 // The menu descriptions for the two buttons
191- static const MFDBUTTONMENU mnu[2] = {
192- {"Release from parents", 0, 'D'},
193- {"Test UMMU", 0, 'T'}
41+ static const MFDBUTTONMENU mnu[6] = {
42+ {0, 0, 0},
43+ {0, 0, 0},
44+ {0, 0, 0},
45+ {0, 0, 0},
46+ {0, 0, 0},
47+ {"Passenger boarding", 0, 'P'}
19448 };
19549 if (menu) *menu = mnu;
196- return 2; // return the number of buttons used
50+ return 6; // return the number of buttons used
19751 }
19852
19953 // Repaint the MFD
200-void UMMUFB::Update (HDC hDC)
54+void PAX::Update (HDC hDC)
20155 {
202- ATTACHMENTHANDLE point;
203- DWORD i, j=vessel->AttachmentCount(true);
204- char buffer[80];
205- strcpy(buffer, "F R E E");
206- /*for(i=0;i<j;i++)
56+ char line[2][MFD_LINELENGTH+1];
57+ OBJHANDLE base;
58+ DWORD pad;
59+
60+ SelectDefaultFont (hDC, 0);
61+ if (middleGreen==NULL)
20762 {
208- point=vessel->GetAttachmentHandle(true, i);
209- if (point!=0)
210- if (vessel->GetAttachmentStatus(point)!=0)
63+ LOGPEN pen;
64+ SelectDefaultPen(hDC, 2);
65+ GetObject(GetCurrentObject(hDC, OBJ_PEN), sizeof(LOGPEN), &pen);
66+ middleGreen=pen.lopnColor;
67+ }
68+ GetLandedPad(vessel, base, pad);
69+ if (pad>0)
70+ {
71+ SetTextColor(hDC, RGB(255,255,255));
72+ sprintf(line[0], "WELCOME AT GATE %d OF", pad);
73+ oapiGetObjectName(base, line[1], MFD_LINELENGTH);
74+ CenterTextOut(hDC, 7, line[0]);
75+ CenterTextOut(hDC, 9, line[1], -1, true);
76+ if (GetPAX(vessel))
77+ {
78+ double time=oapiGetSimTime();
79+ if ((time-lastTime)>0.5)
21180 {
212- strcpy(buffer, "A T T A C H E D");
213- break;
81+ blink=!blink;
82+ lastTime=time;
21483 }
215- }*/
216- DOCKHANDLE port=vessel->GetDockHandle(0);
217- OBJHANDLE dock=vessel->GetDockStatus(port);//GetDockStatus(vessel, port);
218- if (dock!=NULL) strcpy(buffer, "D O C K E D");
219- int l=strlen(buffer);
220- SelectDefaultFont (hDC, 0);
221- SelectDefaultPen (hDC, 4);
222- TextOut(hDC, (35-l)/2*this->width, 13*this->heigth, buffer, l);
84+ if (blink) SetTextColor(hDC, RGB(255,255,0));
85+ else SetTextColor(hDC, middleGreen);
86+ CenterTextOut(hDC, 13, "Ready for PAX");
87+ SelectDefaultFont (hDC, 1);
88+ SetTextColor(hDC, middleGreen);
89+ CenterTextOut(hDC, 26, "Press PAX again after boarding completed", 1);
90+ }
91+ else
92+ {
93+ SelectDefaultFont (hDC, 1);
94+ SetTextColor(hDC, middleGreen);
95+ CenterTextOut(hDC, 26, "Press PAX for passenger operations", 1);
96+ }
97+ }
98+ else
99+ {
100+ DelPAX(vessel);
101+ SetTextColor(hDC, middleGreen);
102+ CenterTextOut(hDC, 13, "NO SERVICE");
103+ }
223104 }
224105
225106 // MFD message parser
226-int UMMUFB::MsgProc (UINT msg, UINT mfd, WPARAM wparam, LPARAM lparam)
107+int PAX::MsgProc (UINT msg, UINT mfd, WPARAM wparam, LPARAM lparam)
227108 {
228109 switch (msg) {
229110 case OAPI_MSG_MFD_OPENED:
230111 // Our new MFD mode has been selected, so we create the MFD and
231112 // return a pointer to it.
232- return (int)(new UMMUFB (LOWORD(wparam), HIWORD(wparam), (VESSEL*)lparam));
113+ return (int)(new PAX (LOWORD(wparam), HIWORD(wparam), (VESSEL*)lparam));
233114 }
234115 return 0;
235116 }
236117
237-bool UMMUFB::ConsumeKeyBuffered(DWORD key)
118+bool PAX::ConsumeKeyBuffered(DWORD key)
238119 {
239120 switch(key)
240121 {
241- case OAPI_KEY_D:
242- return true;
243- case OAPI_KEY_T:
244- TestUMMU();
122+ case OAPI_KEY_P:
123+ SwitchPAXMode();
245124 return true;
246125 default:
247126 return false;
248127 }
249128 }
250129
251-bool UMMUFB::ConsumeButton(int bt, int event)
252-{
130+bool PAX::ConsumeButton(int bt, int event)
131+{
253132 if (event==PANEL_MOUSE_LBPRESSED)
254133 {
255- switch(bt)
134+ double time=oapiGetSimTime();
135+ bool re=bt!=lastButton | (time-lastTime)>0.2;
136+ lastButton=bt;
137+ lastTime=time;
138+ if (re) switch(bt)
256139 {
257- case 0:
258- return ConsumeKeyBuffered(OAPI_KEY_D);
259- case 1:
260- return ConsumeKeyBuffered(OAPI_KEY_T);
261- }
140+ case 5:
141+ return ConsumeKeyBuffered(OAPI_KEY_P);
142+ }
262143 }
263144 return false;
264145 }
265146
266-void UMMUFB::TestUMMU()
147+void PAX::SwitchPAXMode()
267148 {
268- g_Transfer=object;
269- return;
149+ if (GetPAX(vessel)) DelPAX(vessel);
150+ else SetPAX(vessel);
151+ return;
270152 }
153+
154+void PAX::CenterTextOut(HDC hDC, int line, LPSTR text, int column, bool toUpper)
155+{
156+ int l=strlen(text);
157+ if (toUpper) for(int i=0;i<l;i++) text[i]=toupper(text[i]);
158+ if (column<0) TextOut(hDC, ((MFD_LINELENGTH-l)/2+1)*width, line*heigth, text, l);
159+ else TextOut(hDC, column*width, line*heigth, text, l);
160+}
\ No newline at end of file
diff -r f4a0595dc36f -r 618687a8b9e6 Orbitersdk/samples/UMMUFB/PAX.h
--- a/Orbitersdk/samples/UMMUFB/PAX.h Fri Aug 14 18:54:43 2009 +0200
+++ b/Orbitersdk/samples/UMMUFB/PAX.h Sat Aug 15 18:00:09 2009 +0200
@@ -1,12 +1,10 @@
1-#ifndef __UMMUFB_H
2-#define __UMMUFB_H
3-
1+#pragma once
42 #include "UMmuSDK.h"
53
6-class UMMUFB: public MFD {
4+class PAX: public MFD {
75 public:
8- UMMUFB (DWORD w, DWORD h, VESSEL *vessel);
9- ~UMMUFB ();
6+ PAX (DWORD w, DWORD h, VESSEL *vessel);
7+ ~PAX ();
108 char *ButtonLabel (int bt);
119 int ButtonMenu (const MFDBUTTONMENU **menu) const;
1210 bool ConsumeKeyBuffered (DWORD key);
@@ -18,9 +16,12 @@
1816 UMMUCREWMANAGMENT Crew;
1917 VESSEL *vessel;
2018 OBJHANDLE object;
21- void TestUMMU();
19+ void SwitchPAXMode();
20+ void CenterTextOut(HDC hDC, int line, LPSTR text, int column=-1, bool toUpper=false);
2221 int width;
23- int heigth;
24-};
25-
26-#endif // !__UMMUFB_H
\ No newline at end of file
22+ int heigth;
23+ int lastButton;
24+ double lastTime;
25+ COLORREF middleGreen;
26+ bool blink;
27+};
\ No newline at end of file
diff -r f4a0595dc36f -r 618687a8b9e6 Orbitersdk/samples/UMMUFB/UMMUFB.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Orbitersdk/samples/UMMUFB/UMMUFB.cpp Sat Aug 15 18:00:09 2009 +0200
@@ -0,0 +1,180 @@
1+#define STRICT
2+#define ORBITER_MODULE
3+#define DOCKSTRUCTOFFSET_CURRENTDOCKOBJECT 0x48
4+#define ADDRESS_GETDOCKSTATUS 0x004217E0
5+
6+#include <stdio.h>
7+#include <map>
8+#include "orbitersdk.h"
9+#include "UMMUFB.h"
10+#include "PAX.h"
11+
12+// ==============================================================
13+// Global variables
14+
15+int g_MFDmode; // identifier for new MFD mode
16+DWORD g_Hook;
17+OBJHANDLE g_Transfer;
18+byte g_original[10]={0x8b,0x44,0x24,0x04,0x8b,0x40,0x48,0xc2,0x04,0x00};
19+//The following array is:
20+//_asm
21+//{
22+// pop eax;
23+// push ecx;
24+// push eax;
25+// jmp dword ptr [GetDockStatus]; //Dynamically detected address
26+// nop;
27+//}
28+byte g_code[10] = {0x58, 0x51, 0x50, 0xff, 0x25, 0, 0, 0, 0, 0x90};
29+
30+typedef std::map<VESSEL*, OBJHANDLE> BaseByVesselType;
31+BaseByVesselType& BaseByVessel()
32+{
33+ static BaseByVesselType g_BaseByVessel;
34+ return g_BaseByVessel;
35+};
36+
37+void GetLandedPad(VESSEL *vessel, OBJHANDLE &base, DWORD &port)
38+{
39+ VESSELSTATUS2 s;
40+ s.version=2;
41+ s.flag=0;
42+ vessel->GetStatusEx(&s);
43+ base=NULL;
44+ port=0;
45+ if (s.status==1 && s.rbody!=NULL)
46+ {
47+ int k=oapiGetBaseCount(s.rbody);
48+ VECTOR3 distance;
49+ OBJHANDLE nearest=NULL;
50+ double nearestDistance=-1;
51+ for(int i=0;i<k;i++)
52+ {
53+ base=oapiGetBaseByIndex(s.rbody, i);
54+ int l=oapiGetBasePadCount(base);
55+ vessel->GetRelativePos(base, distance);
56+ double len=length(distance);
57+ if (nearestDistance<0 || nearestDistance>len)
58+ {
59+ nearestDistance=len;
60+ nearest=base;
61+ }
62+ }
63+ if (nearest!=NULL)
64+ {
65+ k=oapiGetBasePadCount(nearest);
66+ double vlng, vlat, vrad;
67+ vessel->GetEquPos(vlng, vlat, vrad);
68+ for(int i=0;i<k;i++)
69+ {
70+ double lng, lat;
71+ oapiGetBasePadEquPos(nearest, i, &lng, &lat);
72+ lng-=vlng;
73+ lat-=vlat;
74+ if (sqrt(lng*lng+lat*lat)*vrad<50)
75+ {
76+ port=i+1;
77+ break;
78+ }
79+ }
80+ }
81+ if (port>0) base=nearest;
82+ else base=NULL;
83+ }
84+}
85+
86+OBJHANDLE _stdcall GetDockStatus(VESSEL *vessel, DOCKHANDLE dock)
87+{
88+ //Do my own GetDockStatus
89+ if (BaseByVessel().find(vessel)!=BaseByVessel().end())
90+ {
91+ OBJHANDLE base;
92+ DWORD port;
93+ GetLandedPad(vessel, base, port);
94+ if (port>0) return BaseByVessel()[vessel];
95+ else BaseByVessel().erase(vessel);
96+ }
97+ //Original function content
98+ return *(OBJHANDLE *)(void *)((char *)dock+DOCKSTRUCTOFFSET_CURRENTDOCKOBJECT);
99+}
100+
101+int WriteCode(void *address, void *code, DWORD len)
102+{
103+ //Get process information
104+ HANDLE hSelf = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ::GetCurrentProcessId());
105+ MEMORY_BASIC_INFORMATION mbi;
106+
107+ //Open up page of linked address
108+ if(VirtualQueryEx(hSelf, (LPVOID)address, &mbi, sizeof(mbi)) != sizeof(mbi)) return -1;
109+ PVOID pvRgnBaseAddress = mbi.BaseAddress;
110+ DWORD dwOldProtect1, dwOldProtect2, dwFake;
111+ if(!::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect1)) return -2;
112+ BOOL bStridePage = FALSE;
113+ LPBYTE lpByte = (LPBYTE)pvRgnBaseAddress;
114+ lpByte += 4096;
115+ if((DWORD)lpByte < (DWORD)address + 4) bStridePage = TRUE;
116+ PVOID pvRgnBaseAddress2 = (LPVOID)lpByte;
117+ if(bStridePage)
118+ if(!::VirtualProtectEx(hSelf, pvRgnBaseAddress2, 4, PAGE_EXECUTE_READWRITE, &dwOldProtect2))
119+ {
120+ ::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, dwOldProtect1, &dwFake);
121+ return -3;
122+ }
123+
124+ //Write code
125+ memcpy(address, code, len);
126+
127+ //Lock vtables again
128+ ::VirtualProtectEx(hSelf, pvRgnBaseAddress, 4, dwOldProtect1, &dwFake);
129+ if(bStridePage) ::VirtualProtectEx(hSelf, pvRgnBaseAddress2, 4, dwOldProtect2, &dwFake);
130+}
131+
132+DLLCLBK void InitModule (HINSTANCE hDLL)
133+{
134+ //Hook
135+ union
136+ {
137+ void *pointer;
138+ byte bytes[4];
139+ DWORD value;
140+ } p;
141+ g_Hook=(DWORD)(void *)GetDockStatus;
142+ p.pointer=(void *)&g_Hook;
143+ for(int i=0;i<4;i++) g_code[5+i] = p.bytes[i];
144+ if (memcmp((void *)g_original, (void *)ADDRESS_GETDOCKSTATUS, 10)==0)
145+ WriteCode((void *)ADDRESS_GETDOCKSTATUS, (void *)g_code, 10);
146+
147+ static char *name = "PAX";
148+ MFDMODESPEC spec;
149+ spec.name = name;
150+ spec.key = OAPI_KEY_P;
151+ spec.msgproc = PAX::MsgProc;
152+
153+ // Register the new MFD mode with Orbiter
154+ g_MFDmode = oapiRegisterMFDMode (spec);
155+}
156+
157+DLLCLBK void ExitModule (HINSTANCE hDLL)
158+{
159+ // Unregister the custom MFD mode when the module is unloaded
160+ oapiUnregisterMFDMode (g_MFDmode);
161+
162+ //Unhook
163+ if (memcmp((void *)g_code, (void *)ADDRESS_GETDOCKSTATUS, 10)==0)
164+ WriteCode((void *)ADDRESS_GETDOCKSTATUS, (void *)g_original, 10);
165+}
166+
167+void SetPAX(VESSEL *vessel)
168+{
169+ BaseByVessel()[vessel]=oapiGetVesselByIndex(0);
170+}
171+
172+bool GetPAX(VESSEL *vessel)
173+{
174+ return BaseByVessel().find(vessel)!=BaseByVessel().end();
175+}
176+
177+void DelPAX(VESSEL *vessel)
178+{
179+ BaseByVessel().erase(vessel);
180+}
\ No newline at end of file
diff -r f4a0595dc36f -r 618687a8b9e6 Orbitersdk/samples/UMMUFB/UMMUFB.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Orbitersdk/samples/UMMUFB/UMMUFB.h Sat Aug 15 18:00:09 2009 +0200
@@ -0,0 +1,6 @@
1+#pragma once
2+
3+void GetLandedPad(VESSEL*, OBJHANDLE&, DWORD&);
4+void SetPAX(VESSEL*);
5+void DelPAX(VESSEL*);
6+bool GetPAX(VESSEL*);
diff -r f4a0595dc36f -r 618687a8b9e6 Orbitersdk/samples/UMMUFB/UMMUFB.vcproj
--- a/Orbitersdk/samples/UMMUFB/UMMUFB.vcproj Fri Aug 14 18:54:43 2009 +0200
+++ b/Orbitersdk/samples/UMMUFB/UMMUFB.vcproj Sat Aug 15 18:00:09 2009 +0200
@@ -21,6 +21,7 @@
2121 ConfigurationType="2"
2222 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
2323 UseOfMFC="0"
24+ UseOfATL="0"
2425 ATLMinimizesCRunTimeLibraryUsage="false"
2526 >
2627 <Tool
@@ -237,7 +238,7 @@
237238 </File>
238239 </Filter>
239240 <File
240- RelativePath="UMMUFB.cpp"
241+ RelativePath=".\PAX.cpp"
241242 >
242243 <FileConfiguration
243244 Name="Debug|Win32"
@@ -259,7 +260,15 @@
259260 </FileConfiguration>
260261 </File>
261262 <File
262- RelativePath="UMMUFB.h"
263+ RelativePath=".\PAX.h"
264+ >
265+ </File>
266+ <File
267+ RelativePath=".\UMMUFB.cpp"
268+ >
269+ </File>
270+ <File
271+ RelativePath=".\UMMUFB.h"
263272 >
264273 </File>
265274 </Files>
Show on old repository browser