3D Starchart - Teaser 1: Rendering Planets
-
yep, I just installed JFLP after adoxa pointed out that “I don’t like it”
Starchart, or rather my FLApi library are very strongly typed. The invalid cast is because in JFLP many values that are floats in vanilla are integers, and the parser handles this correctly but the api assumes other types.Will try to fix that soon
-
OK good news so
Oh, just a suggestion :
is there an easy way for you to let the user point at the FL folder instead of reading the registry ? So that, we can choose if we want load vanilla FL or a modded one :), By asking the user to point at the universe.ini or the freelancer.ini r the FL Folder.It can be a cool option for your future release.
-
No not an editor really, more a system viewer, well, a star chart
But Starchart really is just a frontend for FLApi, a library im working on to access Freelancer data. The api could be eqipped with editing functions (I plan to, some time in the distant future), so then it can be used to build editors. Starchart itself could evolve into a new engine for Freelancer, but that is far far off. I’m just scratching at the surface.
-
Found another problem caused by JFLP. I use the longer “En Dash” (U+2013) for the gate “arrows”. This character isn’t present in the sprite font, so another exception is thrown. Solution is simple, add s = s.Replace(‘\x2013’, ‘-’); before MeasureString in drawString in SystemMap.cs. Well, simple for that particular problem, but there could be other missing characters, so a more robust solution is needed.
-
So i have maked some other tests :
Performaance seems to be good, i can change 25+ times of systemes, but some systems are unable, if you click on the map, nothing append, and on some systems, soft crach with the “system.exception” throwed.
And always this “cast exception” on a modded freelancer.But the god side is that the perfprmance is rather good and system swytch are fast, on my computer.
-
@Ezekiel:
OK, thank you for testing. I’m glad performance is good, and it should be considering almost all data is loaded at startup (resuting in the immense memory usage). That some systems don’t react when clicking on them is because the click detection is done really “quick-and-dirty”.
And the CastException, yeah well…. ^^@Adoxa:
My “solution” yesterday, well two days ago, was only a quick fix. I hoped it would solve some problems with JFLP, maybe it did but of course not all. I’ll need some time looking over the code, testing with various installations and trying out your suggestions. Especially the casting issues… ^^So, I dont know how long it’ll take, how much time I can make in the week(s) to come. This post was, after all, only meant to be a preview. But suggestions are always appeciated of course, so thanks to everyone.
-
I’ve taken the liberty of attaching an updated version. It should fix all problems reading ini files, as well as reducing memory usage (I could previously only visit three systems before running out). It also lets you hold down control to move five times quicker. Note: this is just the binaries, you still need the Content directory. Source patch included (from revision 109).
-
build 0.0.0.4 online: https://sourceforge.net/projects/flapi/files/
Includes the changes by Adoxa (thanks man^^) except for the Tradelane Names workaroud (I want to do it right, might take time though)
Now includes a FolderBrowserDialog at startup so you can select a custom Freelancer install
Edit: Turns out I made more new errors than I fixed old ones in 0.0.0.3, so here is number 4.
Just realised the EN-Dash problem was is Jumpgate names, not Tradelannes, silly me…
Anyway, fixed now. -
Here’s another update. Greatly improves system selection, including showing the name as you move over it (although it has a horrible magenta flash each time, but that could just be me). Made the gate lines green (I had also intended to make systems with both gate & hole use yellow, but that wasn’t as simple as it sounded) and gave gates precedence over holes. Less strict model loading, so Omicron Alpha (and perhaps others) will load. Even more memory fixes. Improved font support (e.g. Lübeck in Hamburg). As before, this is just the binaries plus patch (for r116).
-
Pre Alpha Release 0.0.0.5 is available, as always, on Sourceforge: click
Includes Adoxas 2nd patch (this time I actually applied it, so it should all work)
@Adoxa:
Thanks so much for your system selection improvement, somehow I didn’t get the math right. I continued your work and added differently coloured stars.
Your memory improvements are working graet, too. Is’t so simple, really, but somehow I always rely too much on the garbage collector^^I removed a restriction that prevented models without names from being drawn, resulting in much mor “stuff” in the systems.
Added some experimental lighting.
Added a simple launcher that allows you to select the Freelancer install to use and change the window size or make it fullscreen.
AND: This time I visited all (vanilla) systems and they all worked (at least on my pc) so hopefully there aren’t so many errors as in my previous releases.
-
Nice job so far on this, i am having allot of fun working with it.
I am wondering though, if you have any ideas on how to go about using the left mouse button to select scene objects and have them highlighted like in FL when you select something. I tried a few ideas but nothing has really worked yet.
For what i am doing i added a combobox that is populated with all the valid system objects of which i can select items, move the camera close to it, and show the objects properties in a property grid. but i would prefer to use the left mouse button in the scene to select them instead.
–—
I have also started extending the FLApi to add in a Faction Class, and classes for the Market ie:
FLApi.Market.Commodities, FLApi.Market.Ships, FLApi.Market.Equipement
i just started on them so no real code yet.
the Class: FLApi.Factions.FLFaction is working fine, all it really does though is to parse the initialworld.ini to retrieve the Proper name of factions. Although this will be extended to include a list of their reputations with other factions, which will be easy enough to do , just have not coded it yet.
I am also working on extending the Costume class , which so far was a simple thing since you already had the code in place and parsing out those lines anyway. Again, plans are to extend this Class.
Because of the project i am using these in i had to convert the Starchart project into VB.NET, but somewhere along the lines of the conversion process something went wrong and now Planets are not being physically rendered in the scene, which also has a side effect of messing up the scene lighting. I have not really delved into this problem too much.
Anyway Cheers, and nice job so far.
-
I am wondering though, if you have any ideas on how to go about using the left mouse button to select scene objects and have them highlighted like in FL when you select something. I tried a few ideas but nothing has really worked yet.
You need to project the mouse position into 3D space. I was going to include it but didn’t have the timne yet.
Because of the project i am using these in i had to convert the Starchart project into VB.NET, but somewhere along the lines of the conversion process something went wrong and now Planets are not being physically rendered in the scene, which also has a side effect of messing up the scene lighting.
In theory it should work as C# and VB.NET are essentially the same, but I’ve never tried this (why would anyone want to use VB when they can have C# )
Good luck with your project, I will continue to update Starchart as soon as I have time.
-
Well i am casting a ray from the mouse x,y into 3d space. this is the function that handles that:
Ray GetPickRay() { MouseState mouseState = Mouse.GetState(); int mouseX = mouseState.X; int mouseY = mouseState.Y; Vector3 nearsource = new Vector3((float)mouseX, (float)mouseY, 0f); Vector3 farsource = new Vector3((float)mouseX, (float)mouseY, 1f); Matrix world = Matrix.CreateTranslation(0, 0, 0); Vector3 nearPoint = GraphicsDevice.Viewport.Unproject(nearsource, proj, view, world); Vector3 farPoint = GraphicsDevice.Viewport.Unproject(farsource, proj, view, world); // Create a ray from the near clip plane to the far clip plane. Vector3 direction = farPoint - nearPoint; direction.Normalize(); Ray pickRay = new Ray(nearPoint, direction); return pickRay; }
the problem comes in when i loop through all the objects in the scene to get the object that is suppose to be selected the result value returned from ray.intersects is always : -1.#IND
so i tried changing the farSource to be the static system size, which does not really work at all except to move the camera to above the sun, or in the case of New York System, sometimes above West Point (mostly though is ends up above the sun)
–-forgive my ignorance of XNA here, i have not done allot with XNA so still feeling my way around to a large degree.
and for the planet rendering issue, i am not at all sure what is going on, the code is pretty much identical (just written in VB.NET not C#). As i said, the Planets are being added as valid system objects but just nothing rendering, or maybe they are rendering but could it be that the ‘scale’ of the planets is not being calculated right? not sure to be honest, my code matches yours so not sure what i am doing wrong.
I may try changing my app into C# and see if that changes anything.
to your question about why VB.NET instead of using C#? well mostly because i am more comfortable in VB environment. Nothing to do with the language or anything. And secondly, because i can. Also because there is a few quirks about C# i am not fond of.
Don’t get me wrong though, i can code in C# just as well as VB or C++.
-
well well, i will be a g*&&^ d&^*&^& monkey’s uncle.
i did a quite conversion to C# of part of my project and bang, planets and proper lighting.
so i am moving forward to redo my project in solid C#.
anyway just thought i would let you know , cheers.
-
How do you convert between C# and VB.NET? Is it a VisualStudio function?
I’d like to try it so I can see what it does to my planet creation code.I didn’t want to start a religious war about programming languages here (well thankfully it didn’t really start^^). Of course you should use VB if you have good reasons to do so.
Hopefully I’ll find some time at the weekend to experiment with object selection (I had something similar working in another project, but it might be a bit harder here)
Don’t worry about XNA, I’m a newbie, too. I actually did Starchart to learn a bit more about XNA than what you do in tutorials.
-
i have a probleme with a custom FL :
“mat count 11!=12” or something similar.
i will post the exact message when i have some more time.
I think it’s a probleme in the mod file, but didn’t crash the game, anyway to ignore it and continue ?Good job for your 0.5 release, it’s work like a charm on vanilla FL, fast and precise