Jump to content

LEAVU development phase, coding MPCD graphics


RvEYoda

Recommended Posts

I dont know how you would do this.

You would probably need to hook into the lockon graphics engine.

That is something I have no clue of how to do and I don't really

want to go there. Replacing the ingame mpcd is something that I

also consider extremely low prio, if it is even possible. It is not something

I am planning to do, nor do I know how to do it.

 

This project is complex enough as it is imo ;)

 

You can alwys put the mpcd(s) on a second screen or second computer even.


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

  • Replies 784
  • Created
  • Last Reply

Top Posters In This Topic

If I correctly understood Topol-m I think it is easyier and it doesn't needs weird procedures to programme - add option to allign MFD to corner screen, set up always on top and maybe transparency level xD.

Reminder: Fighter pilots make movies. Bomber pilots make... HISTORY! :D | Also to be remembered: FRENCH TANKS HAVE ONE GEAR FORWARD AND FIVE BACKWARD :D

ಠ_ಠ



Link to comment
Share on other sites

If I correctly understood Topol-m I think it is easyier and it doesn't needs weird procedures to programme - add option to allign MFD to corner screen, set up always on top and maybe transparency level xD.

 

How do you make it always be on top?

Any ideas?

 

Edit, working on it. Might be able to get it to be topmost. Will try to make it keyboard activated so.

Press Key ** , it pops up, you click it with mouse ^^^^ (it hopefully wont minimize lockon :P)

Press key ** again, it disappears

 

Edit: Shit it becomes like an overlay :P. But I am not sure this will work.

I dont think "topmost" will put it above a full screen d3d screen (lockon)

 

NO GO, just tried it


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

I would make your drawing surface full-screen and fully transparent apart from your little window in the position your want (bottom right, or perhaps user-configurable). You'd then need to set the 'Z-order' of this window to be higher than of LockOn. As a quick hack you could simply use ALT-Tab to place your (mostly) transparent fullscreen window over LockOn and leave it there.

 

In Win32 the z-order of a window can be changed with SetWindowPos. You might be able to use this on the application window you render Direct3D into.

 

The hard part is then passing all mouse and keyboard events through your mostly transparent window to LockOn below (not so bad once you get the window handle of the lower window). I'd suggest you always leave the transparent window on top (so it intercepts keypresses) and your 'hide' key merely shows or hides your instrument panel within your glass pane. If you lower your glass pane below LockOn you'll lose your key interception (which means you won't be able to re-show your window as easily).

 

I'm sure there are plenty of dodgy hackers out there with code to log keypresses and pass them through to other windows, just ask the eastern european mafias or cantonese triads :)

 

Incidentally, doing this kind of stuff with Java Swing + JoGL (Java OpenGL) is a quite easy and also very easy to set your 'glass pane' to always-on-top. That's why I suggested using OpenGL some-time back (plus you can re-use the parts of the same code on multiplatform, Android, iPhone etc). I guess you're using DirectX so no point changing now.

 

ps. Thanks Crunch for pointing out this thread.

 

pps. With this 'compositing' method you could actually overwrite the *entire* cockpit display of lockon and just have the external environment (rendered by LockOn) showing through. That is, you could make a completely *custom* cockpit (not just re-skinned) if you grabbed the aircraft performance data from the export.lua in real time! Shame I'm too busy to do this myself :(


Edited by Moa
Typo
Link to comment
Share on other sites

I use setWindowPos to modify the NOACTIVATE extended style already,

or more precisely, I create a Cwindow and call "ModifyStyleEx".

(this guarantees the window doesnt grab focus when you click it, but still

receive commands)

but when trying to do the same for "SET TOPMOST" it didnt do anything

at all...it didnt become topmost whatsoever, which is kind of wierd.

 

I had no luck with this parameter.

 

EDIT: After some reading it would seem WS_EX_TOPMOST cannot

be used as a passive style. It must be used together with a "bring topmost" call

to setWindow....Crap ;). I may try it again later.

It might be possible to make this transparent.

However one thing is still in there. When DirectX (lockon) runs in full screen,

I dont think you can have any *normal* window on top of it (like windows forms app).

It might be possible to get the DX window on top, but the buttons and stuff is...hmm...

I dont know tbh.

 

Btw how do you use JNI (more explicitly) in java to call SetWindowPos?

I had no luck and due to the amount of data sent, I had MAJOR performance issues

when doing just the rwr in java. Memory usage went off the scale and CPU usage

was bad too.

 

I gave up java swing+OGL approach when my java mem usage went really high

and I discovered all these issues with trying to call windows APIs from java (through JNI)

 

Also another reason java would be difficult is keyboard input detection, because it must be

global, but that is not hte main problem. The main problem is that Lockon hooks your keyboard

entirely, and you must intercept this at low level (ie DirectX DirectInput) to get past this.

This was one of the issues when making AMRACT earlier, basic simulated keyboard input doesnt

work on lockon, you have to use directx keyboard input or some other low level calls.


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

Successfully made the window topmost without stealing focus!

(and it stays topmost unfocused even when I click other windows)

Thanks Moa ;).

Now trying with lockon..

 

No Go

 

Like I feared, when dragged above lockon it simply goes behind. Also tried calling the "Set top" when lockon

was already up, but it was the same. (Now using SetWindowPos directly)

It is actually topmost (because when I click it it works, even though it is not visible on top of lockon :P)

 

I believe this problem is caused by the nature of Direct3d in full screen simply does not let anything else be painted (this is

in the d3d stuff I have read elsewhere as well) - talking about LOCKON's direct3d here, not mine

 

And the ways to get around this would either be to hook into the d3d engine and use the game's engine to display my image,

(but thereby removing my buttons on my MPCD), or some directDraw on top of lockon.

 

Simply placing a window on top wont work, (DirectX full screen does not care about which window is on top it seems)

 

This is too much work for something I don't really see as a high prio right now.

But if someone somehow finds a way for me to do it, then im sure I can implement it, but it is nothing I wish to

do research on at this point. Right now working on Markpoints, both local and datalinked.


Edited by =RvE=Yoda
  • Like 1

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

Ok. It's nearly the weekend here (timezone +12) so I'll do some homework on whether its possible to compositing to another application's direct3d window.

 

Incidentally, we do fullscreen video at 70+ fps using JNI (we have a Java application using open-source ffmpeg library [used in vlc and others] running on Windows, Linux and OS X). It is possible to get it going fast, you have to make sure you minimise or eliminate buffer copying. We also don't call Win32 directly. Wrote a native C library wrapper for the things we need that internally handles the Win32 types and Java/JNI just calls the nice POSIX-compliant C interface instead of Win32's macro mess.

Link to comment
Share on other sites

Ok. It's nearly the weekend here (timezone +12) so I'll do some homework on whether its possible to compositing to another application's direct3d window.

 

Incidentally, we do fullscreen video at 70+ fps using JNI (we have a Java application using open-source ffmpeg library [used in vlc and others] running on Windows, Linux and OS X). It is possible to get it going fast, you have to make sure you minimise or eliminate buffer copying. We also don't call Win32 directly. Wrote a native C library wrapper for the things we need that internally handles the Win32 types and Java/JNI just calls the nice POSIX-compliant C interface instead of Win32's macro mess.

 

that seems really great :). But for me who basically wrote his first java project, it was too complicated with how to make JNI work.

 

Thanks, if you do that work, and you find some solution, we can definitely

try to implement it! (im sticking with cpp though!)

 

Quick note, i will leave on sunday evening and wont be back for almost 2 weeks


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

THE FOLLOWING IS A PICTURE FROM LEAVU 1, and is NOT valid for leavu 2!

 

Working on MARK points right now.

Early MFD design and some settings. comparing MARK points off, and on.

(the circle is not the finished mark point design ;) )

test37.PNG

 

 

THE FOLLOWING IS A PICTURE FROM LEAVU 1, and is NOT valid for leavu 2!

 

test38.PNG


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

Uploaded a version that has working mark points included (previous versions

got the math mixed up)

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

THE FOLLOWING IS A PICTURE FROM LEAVU 1, and is NOT valid for leavu 2!

 

Datalinked Mark points are online!

 

test39.PNG


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

LEAVU not working for me

 

Hey Guys,

 

I've loaded the latest EAU and it's not working. I bring it up, click "add mpcd," then click any Button on the display and the MPCD comes alive. I then click "start import thread" and go into lockon. When I select an F-15 mission and it begins, my MPCD still shows "no data." Any thoughts?


Edited by wilbur81

i7 8700K @ Stock - Win10 64 - 32 RAM - RTX 3080 12gb OC - 55 inch 4k Display

 

 

Link to comment
Share on other sites

THE FOLLOWING IS A PICTURE FROM LEAVU 1, and is NOT valid for leavu 2!

 

,download the export.lua from the main post on the first page and make sure

in config.lua that exports are enabled.

 

Update:

Further improved the precision of the mark points. They should now be _VERY_accurate ;)

 

Here is my flying a mission

 

test40.PNG


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

Thanks sir

 

Thanks Yoda,

 

The config.lua change to enable exports worked. Thanks for the tip. Also, When I play lockon with the EAV MPCD activated...certain textures on Lockon blink and flicker occasionally. Any idea what causes this or has anyone else reported the problem? It only happens when I'm running EAU.

 

WIlbur81

i7 8700K @ Stock - Win10 64 - 32 RAM - RTX 3080 12gb OC - 55 inch 4k Display

 

 

Link to comment
Share on other sites

Thanks Yoda,

 

The config.lua change to enable exports worked. Thanks for the tip. Also, When I play lockon with the EAV MPCD activated...certain textures on Lockon blink and flicker occasionally. Any idea what causes this or has anyone else reported the problem? It only happens when I'm running EAU.

 

WIlbur81

 

what is your graphic card setup?

are you running leavu on a different monitor, if so, are you certain

it is ONLY on the second monitor?

 

Third - never alt tab out of lockon after it has been started.

This will cause flickering (this is lockon normal, not caused by leavu)

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

When the Master completes this mod he should release some manual for a better compehension of the new features implemented. ;)

 

 

Yes, but mostly, you can use the F4 Allied force manual.

Some small differences are there

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

no just use the manual that comes with the Game ALlied Force.

For the mfds.

 

look for the details in the hsd page, but even this is a lil diff from mine.

yeah i might make a manual at some point.


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

  • 4 weeks later...

Here is a little tech demo.

Not showing ingame action, just fooling around

with AA, resolution and menu settings.

 

Just to give people an idea of what it is. I dont claim

that it's realistic to have gray buttons. I dont claim that

it is realistic for a mark point to be green on the MPCD or that it

is even in the same shape or triggered by the same button.

 

This is a proof of concept, sort of, and a useful interface imo.

http://yoda.reservoirselite.com/LEAVU/demo1.avi

 

Will release an ingame demo later and then also a datalink demo


Edited by =RvE=Yoda

S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...