• R/O
  • SSH

OMP: Commit

Multiplayer platform


Commit MetaInfo

Revision743e5b381086d3cbb41a8d48390fd9e8a791231e (tree)
Time2017-05-22 02:56:26
AuthorFace
CommiterFace

Log Message

OMPClient: added keyboard handler again including status send ping key "S"

Change Summary

Incremental Difference

diff -r 3daaa0ca8cb1 -r 743e5b381086 Orbitersdk/samples/OMP/OMPClient/KeyboardFilter.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Orbitersdk/samples/OMP/OMPClient/KeyboardFilter.cpp Sun May 21 19:56:26 2017 +0200
@@ -0,0 +1,239 @@
1+// ==============================================================
2+// ORBITER MODULE: ASCENSIONULTRA
3+// Part of Ascension Ultra
4+// Copyright (C) 2010 Friedrich Kastner-Masilko
5+// All rights reserved
6+//
7+// KeyboardFilter.cpp
8+// Class implementation of keyboard filter.
9+// ==============================================================
10+#include <windows.h>
11+#include "KeyboardFilter.h"
12+#include <stdio.h>
13+
14+LRESULT CALLBACK Intercept(int nCode, WPARAM wParam, LPARAM lParam)
15+{
16+ KeyboardFilter filter=*KeyboardFilter::Current;
17+ if (nCode < 0) return CallNextHookEx(filter.GetHook(), nCode, wParam, lParam);
18+ filter.Preprocess(wParam, lParam);
19+ filter.Process(wParam, (lParam & 0x80000000)==0);
20+ return CallNextHookEx(filter.GetHook(), nCode, wParam, lParam);
21+}
22+
23+KeyboardFilter::KeyboardFilter(void *obj, int (*consumeDirectKey)(void*, char*), void (*prefilter)(void*, WPARAM &wparam, LPARAM &lparam))
24+{
25+ //Install keyboard hook
26+ if (Current==NULL)
27+ {
28+ Current=this;
29+ ConsumeDirectKey=consumeDirectKey;
30+ Prefilter=prefilter;
31+ object=obj;
32+ kstate=new char[256];
33+ for(int i=0;i<256;i++) kstate[i]=(char)0x00;
34+ hhook=SetWindowsHookEx(WH_KEYBOARD, Intercept, NULL, GetCurrentThreadId());
35+ }
36+}
37+
38+KeyboardFilter::~KeyboardFilter(void)
39+{
40+ if (Current==this)
41+ {
42+ UnhookWindowsHookEx(hhook);
43+ delete [] kstate;
44+ ConsumeDirectKey=NULL;
45+ Prefilter=NULL;
46+ Current=NULL;
47+ }
48+}
49+
50+void KeyboardFilter::Preprocess(WPARAM &wparam, LPARAM &lparam)
51+{
52+ if (Prefilter!=NULL)
53+ {
54+ Prefilter(object, wparam, lparam);
55+ }
56+}
57+
58+int KeyboardFilter::Process(short key, bool down)
59+{
60+ bool edge=(kstate[VK2OAPI[key]] & 0x80)>0;
61+ if (down) kstate[VK2OAPI[key]]=0x80;
62+ else kstate[VK2OAPI[key]]=0x00;
63+ return down ^ edge?ConsumeDirectKey(object, kstate):0;
64+}
65+
66+KeyboardFilter *KeyboardFilter::Current=NULL;
67+
68+HHOOK KeyboardFilter::GetHook(){return hhook;}
69+
70+//Convert OAPI key identifier to virtual key code
71+const short KeyboardFilter::OAPI2VK[256]=
72+{
73+ 0x00,//--- 0x00
74+ 0x1b,//#define OAPI_KEY_ESCAPE 0x01
75+ 0x31,//#define OAPI_KEY_1 0x02
76+ 0x32,//#define OAPI_KEY_2 0x03
77+ 0x33,//#define OAPI_KEY_3 0x04
78+ 0x34,//#define OAPI_KEY_4 0x05
79+ 0x35,//#define OAPI_KEY_5 0x06
80+ 0x36,//#define OAPI_KEY_6 0x07
81+ 0x37,//#define OAPI_KEY_7 0x08
82+ 0x38,//#define OAPI_KEY_8 0x09
83+ 0x39,//#define OAPI_KEY_9 0x0A
84+ 0x30,//#define OAPI_KEY_0 0x0B
85+ 0xBD,//#define OAPI_KEY_MINUS 0x0C // on main keyboard
86+ 0x00,//#define OAPI_KEY_EQUALS 0x0D
87+ 0x08,//#define OAPI_KEY_BACK 0x0E // backspace
88+ 0x09,//#define OAPI_KEY_TAB 0x0F
89+ 0x51,//#define OAPI_KEY_Q 0x10
90+ 0x57,//#define OAPI_KEY_W 0x11
91+ 0x45,//#define OAPI_KEY_E 0x12
92+ 0x52,//#define OAPI_KEY_R 0x13
93+ 0x54,//#define OAPI_KEY_T 0x14
94+ 0x59,//#define OAPI_KEY_Y 0x15
95+ 0x55,//#define OAPI_KEY_U 0x16
96+ 0x49,//#define OAPI_KEY_I 0x17
97+ 0x4F,//#define OAPI_KEY_O 0x18
98+ 0x50,//#define OAPI_KEY_P 0x19
99+ 0xDB,//#define OAPI_KEY_LBRACKET 0x1A
100+ 0xDD,//#define OAPI_KEY_RBRACKET 0x1B
101+ 0x0D,//#define OAPI_KEY_RETURN 0x1C // Enter on main keyboard
102+ 0xA2,//#define OAPI_KEY_LCONTROL 0x1D
103+ 0x41,//#define OAPI_KEY_A 0x1E
104+ 0x53,//#define OAPI_KEY_S 0x1F
105+ 0x44,//#define OAPI_KEY_D 0x20
106+ 0x46,//#define OAPI_KEY_F 0x21
107+ 0x47,//#define OAPI_KEY_G 0x22
108+ 0x48,//#define OAPI_KEY_H 0x23
109+ 0x4A,//#define OAPI_KEY_J 0x24
110+ 0x4B,//#define OAPI_KEY_K 0x25
111+ 0x4C,//#define OAPI_KEY_L 0x26
112+ 0xBA,//#define OAPI_KEY_SEMICOLON 0x27
113+ 0xDE,//#define OAPI_KEY_APOSTROPHE 0x28
114+ 0xC0,//#define OAPI_KEY_GRAVE 0x29 // accent grave
115+ 0xA0,//#define OAPI_KEY_LSHIFT 0x2A
116+ 0xDC,//#define OAPI_KEY_BACKSLASH 0x2B
117+ 0x5A,//#define OAPI_KEY_Z 0x2C
118+ 0x58,//#define OAPI_KEY_X 0x2D
119+ 0x43,//#define OAPI_KEY_C 0x2E
120+ 0x56,//#define OAPI_KEY_V 0x2F
121+ 0x42,//#define OAPI_KEY_B 0x30
122+ 0x4E,//#define OAPI_KEY_N 0x31
123+ 0x4D,//#define OAPI_KEY_M 0x32
124+ 0xBC,//#define OAPI_KEY_COMMA 0x33
125+ 0xBE,//#define OAPI_KEY_PERIOD 0x34 // . on main keyboard
126+ 0xBF,//#define OAPI_KEY_SLASH 0x35 // / on main keyboard
127+ 0xA1,//#define OAPI_KEY_RSHIFT 0x36
128+ 0x6A,//#define OAPI_KEY_MULTIPLY 0x37 // * on numeric keypad
129+ 0xA4,//#define OAPI_KEY_LALT 0x38 // left Alt
130+ 0x20,//#define OAPI_KEY_SPACE 0x39
131+ 0x14,//#define OAPI_KEY_CAPITAL 0x3A // caps lock key
132+ 0x70,//#define OAPI_KEY_F1 0x3B
133+ 0x71,//#define OAPI_KEY_F2 0x3C
134+ 0x72,//#define OAPI_KEY_F3 0x3D
135+ 0x73,//#define OAPI_KEY_F4 0x3E
136+ 0x74,//#define OAPI_KEY_F5 0x3F
137+ 0x75,//#define OAPI_KEY_F6 0x40
138+ 0x76,//#define OAPI_KEY_F7 0x41
139+ 0x77,//#define OAPI_KEY_F8 0x42
140+ 0x78,//#define OAPI_KEY_F9 0x43
141+ 0x79,//#define OAPI_KEY_F10 0x44
142+ 0x90,//#define OAPI_KEY_NUMLOCK 0x45
143+ 0x91,//#define OAPI_KEY_SCROLL 0x46 // Scroll lock
144+ 0x67,//#define OAPI_KEY_NUMPAD7 0x47
145+ 0x68,//#define OAPI_KEY_NUMPAD8 0x48
146+ 0x69,//#define OAPI_KEY_NUMPAD9 0x49
147+ 0x6D,//#define OAPI_KEY_SUBTRACT 0x4A // - on numeric keypad
148+ 0x64,//#define OAPI_KEY_NUMPAD4 0x4B
149+ 0x65,//#define OAPI_KEY_NUMPAD5 0x4C
150+ 0x66,//#define OAPI_KEY_NUMPAD6 0x4D
151+ 0x6B,//#define OAPI_KEY_ADD 0x4E // + on numeric keypad
152+ 0x61,//#define OAPI_KEY_NUMPAD1 0x4F
153+ 0x62,//#define OAPI_KEY_NUMPAD2 0x50
154+ 0x63,//#define OAPI_KEY_NUMPAD3 0x51
155+ 0x60,//#define OAPI_KEY_NUMPAD0 0x52
156+ 0x6E,//#define OAPI_KEY_DECIMAL 0x53 // . on numeric keypad
157+ 0x00,//--- 0x54
158+ 0x00,//--- 0x55
159+ 0xE2,//#define OAPI_KEY_OEM_102 0x56 // | < > on UK/German keyboards
160+ 0x7A,//#define OAPI_KEY_F11 0x57
161+ 0x7B,//#define OAPI_KEY_F12 0x58
162+ 0x00,//--- 0x59
163+ 0x00,//--- 0x5A
164+ 0x00,//--- 0x5B
165+ 0x00, 0x00, 0x00, 0x00, //5C,5D,5E,5F
166+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //60,61,62,63,64,65,66,67
167+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //68,69,6A,6B,6C,6D,6E,6F
168+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //70,71,72,73,74,75,76,77
169+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //78,79,7A,7B,7C,7D,7E,7F
170+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //80,81,82,83,84,85,86,87
171+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //88,89,8A,8B,8C,8D,8E,8F
172+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //90,91,92,93,94,95,96,97
173+ 0x00, 0x00, 0x00, 0x00, //98,99,9A,9B
174+ 0x6C,//#define OAPI_KEY_NUMPADENTER 0x9C // Enter on numeric keypad
175+ 0xA3,//#define OAPI_KEY_RCONTROL 0x9D // right Control key
176+ 0x00,//--- 0x9E
177+ 0x00,//--- 0x9F
178+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //A0,A1,A2,A3,A4,A5,A6,A7
179+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //A8,A9,AA,AB,AC,AD,AE,AF
180+ 0x00, 0x00, 0x00, 0x00, //B0,B1,B2,B3
181+ 0x00,//--- 0xB4
182+ 0x6F,//#define OAPI_KEY_DIVIDE 0xB5 // / on numeric keypad
183+ 0x00,//--- 0xB6
184+ 0x00,//--- 0xB7
185+ 0xA5,//#define OAPI_KEY_RALT 0xB8 // right Alt
186+ 0x00,//--- 0xB9
187+ 0x00,//--- 0xBA
188+ 0x00,//--- 0xBB
189+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //BC,BD,BE,BF,C0,C1,C2,C3
190+ 0x00,//--- 0xC4
191+ 0x00,//--- 0xC5
192+ 0x00,//--- 0xC6
193+ 0x24,//#define OAPI_KEY_HOME 0xC7 // Home on cursor keypad
194+ 0x26,//#define OAPI_KEY_UP 0xC8 // up-arrow on cursor keypad
195+ 0x21,//#define OAPI_KEY_PRIOR 0xC9 // PgUp on cursor keypad
196+ 0x00,//--- 0xCA
197+ 0x25,//#define OAPI_KEY_LEFT 0xCB // left-arrow on cursor keypad
198+ 0x00,//--- 0xCC
199+ 0x27,//#define OAPI_KEY_RIGHT 0xCD // right-arrow on cursor keypad
200+ 0x00,//--- 0xCE
201+ 0x23,//#define OAPI_KEY_END 0xCF // End on cursor keypad
202+ 0x28,//#define OAPI_KEY_DOWN 0xD0 // down-arrow on cursor keypad
203+ 0x22,//#define OAPI_KEY_NEXT 0xD1 // PgDn on cursor keypad
204+ 0x2D,//#define OAPI_KEY_INSERT 0xD2 // Insert on cursor keypad
205+ 0x2E //#define OAPI_KEY_DELETE 0xD3 // Delete on cursor keypad
206+};
207+
208+const short KeyboardFilter::VK2OAPI[256]=
209+{
210+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
211+ 0x0E, 0x0F, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00,
212+ 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00,
213+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
214+ 0x39, 0xC9, 0xD1, 0xCF, 0xC7, 0xCB, 0xC8, 0xCD,
215+ 0xD0, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xD3, 0x00,
216+ 0x0B, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
217+ 0x09, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
218+ 0x00, 0x1E, 0x30, 0x2E, 0x20, 0x12, 0x21, 0x22,
219+ 0x23, 0x17, 0x24, 0x25, 0x26, 0x32, 0x31, 0x18,
220+ 0x19, 0x10, 0x13, 0x1F, 0x14, 0x16, 0x2F, 0x11,
221+ 0x2D, 0x15, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00,
222+ 0x52, 0x4F, 0x50, 0x51, 0x4B, 0x4C, 0x4D, 0x47,
223+ 0x48, 0x49, 0x37, 0x4E, 0x9C, 0x4A, 0x53, 0xB5,
224+ 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42,
225+ 0x43, 0x44, 0x57, 0x58, 0x00, 0x00, 0x00, 0x00,
226+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
227+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
228+ 0x45, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
229+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
230+ 0x2A, 0x36, 0x1D, 0x9D, 0x38, 0xB8, 0x00, 0x00,
231+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
233+ 0x00, 0x00, 0x27, 0x00, 0x33, 0x0C, 0x34, 0x35,
234+ 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
235+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
236+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237+ 0x00, 0x00, 0x00, 0x1A, 0x2B, 0x1B, 0x28, 0x00,
238+ 0x00, 0x00, 0x56
239+};
diff -r 3daaa0ca8cb1 -r 743e5b381086 Orbitersdk/samples/OMP/OMPClient/KeyboardFilter.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Orbitersdk/samples/OMP/OMPClient/KeyboardFilter.h Sun May 21 19:56:26 2017 +0200
@@ -0,0 +1,28 @@
1+// ==============================================================
2+// ORBITER MODULE: ASCENSIONULTRA
3+// Part of Ascension Ultra
4+// Copyright (C) 2010 Friedrich Kastner-Masilko
5+// All rights reserved
6+//
7+// KeyboardFilter.h
8+// Class definition of keyboard filter.
9+// ==============================================================
10+#pragma once
11+
12+class KeyboardFilter
13+{
14+public:
15+ KeyboardFilter(void *obj, int (*consumeDirectKey)(void*, char*), void (*prefilter)(void*, WPARAM &wparam, LPARAM &lparam)=NULL);
16+ ~KeyboardFilter(void);
17+ HHOOK GetHook();
18+ int Process(short key, bool down);
19+ void Preprocess(WPARAM &wparam, LPARAM &lparam);
20+ static KeyboardFilter *Current;
21+private:
22+ static const short OAPI2VK[256], VK2OAPI[256];
23+ int (*ConsumeDirectKey)(void*, char*);
24+ void (*Prefilter)(void*, WPARAM &wparam, LPARAM &lparam);
25+ HHOOK hhook;
26+ void *object;
27+ char *kstate;
28+};
diff -r 3daaa0ca8cb1 -r 743e5b381086 Orbitersdk/samples/OMP/OMPClient/OMPClient.cpp
--- a/Orbitersdk/samples/OMP/OMPClient/OMPClient.cpp Sat May 20 18:59:38 2017 +0200
+++ b/Orbitersdk/samples/OMP/OMPClient/OMPClient.cpp Sun May 21 19:56:26 2017 +0200
@@ -90,6 +90,7 @@
9090 #include <map>
9191 #include <vector>
9292 #include "OMPModule.h"
93+#include "KeyboardFilter.h"
9394
9495 // ==============================================================
9596 // Global variables
@@ -554,6 +555,9 @@
554555 bool quickLaunch;
555556 bool quickLeave;
556557 bool closeDialogOnceStarted;
558+ char statusPingKey;
559+ OBJHANDLE statusPinger;
560+ KeyboardFilter *filter;
557561
558562 //Missile toy
559563 char missileLaunchKey;
@@ -603,7 +607,8 @@
603607 double get_global_timestamp();
604608 double get_clock_acceleration(double T, double mjd, double stamp, double acceleration);
605609 void MJDtoSystemTime(double MJD, LPSYSTEMTIME lpSystemTime);
606-int keyhandler(VESSEL2 *me, DWORD key, bool down, char *keystate);
610+int keyhandler(void *null, char *keystate);
611+void keyfilter(void *null, WPARAM &wparam, LPARAM &lparam);
607612 void TakeSnapshots(double mjd);
608613
609614 #pragma managed
@@ -1361,7 +1366,9 @@
13611366 //Additional things
13621367 dinfo.vesselclass=0;
13631368 dinfo.vesselname=0;
1364- dinfo.vessellocation=0;
1369+ dinfo.vessellocation=0;
1370+ dinfo.statusPinger=NULL;
1371+ dinfo.statusPingKey=OAPI_KEY_S;
13651372 dinfo.missileLaunchKey=OAPI_KEY_SPACE;
13661373 dinfo.missileTargetKey=OAPI_KEY_C;
13671374 dinfo.missileModifiers=0x14; //Left Control + Alt
@@ -1843,6 +1850,7 @@
18431850 winfo.idcrender=hWnd;
18441851 winfo.hhook=SetWindowsHookEx(WH_CBT, intercept, NULL, GetWindowThreadProcessId(winfo.idcrender, NULL));
18451852 CloseDlg();
1853+ dinfo.filter=new KeyboardFilter(NULL, &keyhandler, &keyfilter);
18461854 launchpad=false;
18471855 fullscreen=h==0;//mode==oapi::Module::RENDER_FULLSCREEN;
18481856 dinfo.missiles.clear();
@@ -1861,6 +1869,8 @@
18611869 void CloseRenderViewport ()
18621870 {
18631871 LeaveCriticalSection(&orbiter);
1872+ delete dinfo.filter;
1873+ dinfo.filter=NULL;
18641874 CloseDlg();
18651875 winfo.hhook2=SetWindowsHookEx(WH_FOREGROUNDIDLE, dialogstarter, NULL, GetWindowThreadProcessId(winfo.idcorbiter, NULL));
18661876 oapiDelAnnotation(dinfo.missileDisplay);
@@ -7907,11 +7917,29 @@
79077917 }
79087918 }
79097919
7910-int keyhandler(VESSEL2 *me, DWORD key, bool down, char *keystate)
7920+void keyfilter(void *null, WPARAM &wparam, LPARAM &lparam)
79117921 {
7922+ switch (wparam)
7923+ {
7924+ case VK_SHIFT:
7925+ wparam=VK_LSHIFT;
7926+ break;
7927+ case VK_CONTROL:
7928+ wparam=VK_LCONTROL;
7929+ break;
7930+ case VK_MENU:
7931+ wparam=VK_LMENU;
7932+ break;
7933+ }
7934+}
7935+
7936+int keyhandler(void *null, char *keystate)
7937+{
7938+ OBJHANDLE focobj=oapiGetFocusObject();
7939+ if (focobj==NULL || !oapiIsVessel(focobj)) return 0;
7940+ VESSEL *me=oapiGetVesselInterface(focobj);
79127941 //Check for missile key combinations
7913- if (!down) return 0;
7914- if (key!=dinfo.missileLaunchKey && key!=dinfo.missileTargetKey) return 0;
7942+ if (!KEYDOWN(keystate, dinfo.missileLaunchKey) && !KEYDOWN(keystate,dinfo.missileTargetKey) && !KEYDOWN(keystate, dinfo.statusPingKey)) return 0;
79157943 if (!KEYMOD_LSHIFT(keystate) && (dinfo.missileModifiers & 0x01)>0) return 0;
79167944 if (!KEYMOD_RSHIFT(keystate) && (dinfo.missileModifiers & 0x02)>0) return 0;
79177945 if (!KEYMOD_LCONTROL(keystate)&&(dinfo.missileModifiers & 0x04)>0) return 0;
@@ -7919,8 +7947,13 @@
79197947 if (!KEYMOD_LALT(keystate) && (dinfo.missileModifiers & 0x10)>0) return 0;
79207948 if (!KEYMOD_RALT(keystate) && (dinfo.missileModifiers & 0x20)>0) return 0;
79217949
7922- OBJHANDLE obj=me->GetHandle();
7923- if (key==dinfo.missileTargetKey)
7950+ if (KEYDOWN(keystate, dinfo.statusPingKey))
7951+ {
7952+ if (dinfo.statusPinger==NULL) dinfo.statusPinger=focobj;
7953+ return 1;
7954+ }
7955+
7956+ if (KEYDOWN(keystate, dinfo.missileTargetKey))
79247957 {
79257958 OBJHANDLE target;
79267959 int i=0;
@@ -7928,7 +7961,7 @@
79287961 while (target=oapiGetVesselByIndex(i++))
79297962 {
79307963 VECTOR3 g,l,n;
7931- if (target==obj) continue; //Don't target yourself
7964+ if (target==focobj) continue; //Don't target yourself
79327965 oapiGetGlobalPos(target, &g);
79337966 me->Global2Local(g, l);
79347967 //Quick frustum culling
@@ -7951,7 +7984,7 @@
79517984
79527985 //Launch missile
79537986 char line[LINESIZE];
7954- VESSELSTATUS2 state=dinfo.snapshot[obj];
7987+ VESSELSTATUS2 state=dinfo.snapshot[focobj];
79557988 VECTOR3 offset;
79567989 me->GlobalRot(dinfo.missileOffset, offset);
79577990 state.rpos+=offset;
diff -r 3daaa0ca8cb1 -r 743e5b381086 Orbitersdk/samples/OMP/OMPClient/OMPClient.vcproj
--- a/Orbitersdk/samples/OMP/OMPClient/OMPClient.vcproj Sat May 20 18:59:38 2017 +0200
+++ b/Orbitersdk/samples/OMP/OMPClient/OMPClient.vcproj Sun May 21 19:56:26 2017 +0200
@@ -336,6 +336,10 @@
336336 </FileConfiguration>
337337 </File>
338338 <File
339+ RelativePath=".\KeyboardFilter.cpp"
340+ >
341+ </File>
342+ <File
339343 RelativePath="OMPClient.cpp"
340344 >
341345 <FileConfiguration
@@ -390,6 +394,10 @@
390394 >
391395 </File>
392396 <File
397+ RelativePath=".\KeyboardFilter.h"
398+ >
399+ </File>
400+ <File
393401 RelativePath=".\Launcher.h"
394402 >
395403 </File>
Show on old repository browser