#K2-D2

1 messages · Page 1 of 1 (latest)

glass depot
#

Enjoy

sterile thunder
#

Will try it out tonight and see how it goes. Thanks for the work!

glass depot
glass depot
#

K2-D2

fading vine
#

I'm gonna be testing this out today. With my Skylon heavy LKO delivery vehicle delivering a interplanetary and lander vehicle. Do you have a list of planned features for this mod?

#

If you foresee this as an all encompassing mod similar to mechjeb 2 then I have some ideas for features

feral ember
#

So I've tried it and it's good. It just has some problems:

  1. It overshoots by about a second of burn time, making precise manoeuvres not very precise
  2. When the Engine Burn starts wile beeing in the Map View, the engines do not produce any noise, even when returning to vehicle view

Other than that, it works as advertised!

#

Edit: The Overshooting Problem is occuring about 30-50% of the time, the other ones are for all intents and purposes PERFECT. Great job!

rotund rock
#

jep can confirm all of the above 🙂

glass depot
#

thanks for the test. I'm on the trouble of burning. For the moment It just burn as long as the maneuvre duration is declared. and it's no good.
I'm about to compute realtime the dV added. And use only this parameter seems so better. I hope I'll have a version during the week.

oblique finch
#

Maybe I will make the circularization work. After that my next steps will be to calculate 1. Hohmann transfer and 2. changing the longitude of ascending node + inclination of an orbit.

fading vine
#

I wonder if additional perameters could be used like the predicted end peri and apoapsis to make more accurate burns.

glass depot
#

I'm currently adding a setting page. hoping it will be useful for this kind of use

glass depot
#

new version released.
Mainly UI Improvement and preparation for integrating @oblique finch works.

glass depot
#

Work in progress icon

fading vine
#

I like!

#

Give it a little antenna dish maybe

glass depot
#

yes good idea

feral ember
#

I'll try it out today!

#

Is the delta V calculation working?

feral ember
#

This was a test I did, makeing a maneuver nodejust small enough to be still in Kerbin SOI. It overshot by about 10 m/s. (PS: In the screenshot you can see that the throttle is to 100%, this is because when I took the screenshot with Shitft+Win+S the throttle got increased. The game was paused, so this did not change the trajectory)

#

This is how I got the value of 10 m/s, I made this maneuver node just after the burn finnished and made it's apoapsis the same as the node I used for the burn

#

The feature enabling SAS and point to Maneuver is great. Thank you for this addition.

#

@glass depot If you have any scenarios you'd like us to test, please tell us! We want to help you make this a good mod

glass depot
#

thanks for the test. the Dv is not working for the time. but yesterday I've found a proper ways to compute it in real time.

noble night
#

If you're able to compute the needed Dv in real time then you're well on your way to having K2-D2 be able to end the burn precisely when it should!

glass depot
#

I hope so 😀

glass depot
#

cool by simply adding any engine dv vectors during the burn we have a quite accurate value. I really can try small adjust burn !

shy zodiac
#

Will this take into account a throttled-down engine? I have not had any success with engines that I have throttled to not-100% thrust.

glass depot
#

I've tried to take this in account. I'm asking each engine it's actual flow, adding the full vector.

#

each value is computed by Ksp2.

glass depot
#

good news @shy zodiac the throttled-down engines also gives accurates values.

glass depot
#

the last version is online

#

with Circulize tools from @oblique finch !!

glass depot
#

Next steps :
From my side I will integrate a node editor. I've asked @mild bronze for collaboration using it's work on maneuver node controller.
I'll also now work on ascending contrôler and auto land without atmosphere. So fun to automate those phases.

oblique finch
#

There a some known issues with the cicularization when the excentricity is greater than 1.0. This issue will be fixed by the with the next upcoming release.

glass depot
#

ok so wait and see

#

I'm sorry but I need a last merge. i've changed the way csproj includes .cs files

#

here is the new include. I asume we will nclude all cs files

#

and it's working perfectly

#

I just had to moved popup and popup content to the source/view folder

#

this would be the last change that will affect you

#

sorry I thought it would be on PM

oblique finch
#

I also fixed the circularization. This should work now

glass depot
#

excellent and I see you fixed the hyperbolic orbit trouble.

#

I've got a bug on my side when using your maneuver creations. I burn really too soon.

#

this not happens with maneuver made using th ksp map

#

i'll debug check what hapenning

oblique finch
#

Im a little bit confused. I just merged. Your bug seems to only appear when the second++ Maneuver is being executed. Even when i stop and rerun the autopilot. So i wonder if that bug comes from the maneuver side. Before i merged it was possible to execute them one after another.

glass depot
#

Yes confused too. by maneuver side you mean but "execute maneuver" or from ksp ?

#

the way maneuvre are created seems to bother KSP expected it to be. My only clue it the way you create them in 0.5.0 was without trouble. But I can't tell what has changed

#

for the AutoExecuteManeuver it uses the KSPVessel.GetNextManeuveurNode

#

i'm not really sure of this implementation. perhaps there is something to fix there.

glass depot
#

@oblique finch I've met the ghost node issue twice during lunch time.

#

I tried using another node controller : KontrolSystem2.
The first has create a valid execution. but the second create strange issues too.

#

I need to dig further to be really sure of what's happening preciselly.

#

I've also met many over warp errors in various situation.

#

but no real overburn. just burn stating at wrong time and sometime really wrong time 😄

#

I've also worked on landing controller. It's working quite well for the moment. nothing to release for the moment. but really fun to implement.

#

I need to test with different rocket sizes to check if everything is alright in any situations

oblique finch
#

So it also bugged using KontrolSystem2 if i understand you correctly?

glass depot
#

yes, not the exact same way. but yes

noble night
#

Are you guys working to integrate the old MJ code from OrbitalManeuverCalculator.cs? I've been poking around with that code in the MNC mod. I've got most of it to a state that compiles for KSP2, and the little bit I've tested appears to be working, but I'm stumped with what I believe is an old KSP1 call to PatchedConics.CalculatePatch(). There is no method I've found quite like this in KSP2, and AFAIK it's not something MJ is extending KSP1 with. In KSP2 I can find CalculatePatchConicList() and CalculatePatchList(), but the former takes an int ManeuverNumber as input and the later takes no input at all, while the method MJ expects to use is taking a bunch of inputs including a pair of PatchedConicsOrbit, a UT (double), and a PatchedConicSolver.SolverParameters.

#

Any clues what to update a call to PatchedConics.CalculatePatch with?

#

Also, if it's any help to you, I've got most of the rest of that to a state that may be useful.

oblique finch
#

@noble night I had the same problem. I gusse this codesnippet is not the way to do it properly but it works for me.

#
        {
            Game.SpaceSimulation.Maneuvers.AddNodeToVessel(maneuverNodeData);


            MapCore mapCore = null;
            Game.Map.TryGetMapCore(out mapCore);
            mapCore.map3D.ManeuverManager.GetNodeDataForVessels();
            mapCore.map3D.ManeuverManager.UpdatePositionForGizmo(maneuverNodeData.NodeID);
            mapCore.map3D.ManeuverManager.UpdateAll();
            mapCore.map3D.ManeuverManager.RemoveAll();
        }
private void CreateManeuverNode(Vector3d burnVector, double TrueAnomaly)
        {
            PatchedConicsOrbit referencedOrbit = GetLastOrbit() as PatchedConicsOrbit;
            if (referencedOrbit == null)
            {
                logger.LogError("CreateManeuverNode: referencedOrbit is null!");
                return;
            }

            double TrueAnomalyRad = TrueAnomaly * Math.PI / 180;
            double UT = referencedOrbit.GetUTforTrueAnomaly(TrueAnomalyRad, 0);

            ManeuverNodeData maneuverNodeData = new ManeuverNodeData(kspVessel.GetGlobalIDActiveVessel(), true, UT);

            IPatchedOrbit orbit = referencedOrbit;

            orbit.PatchStartTransition = PatchTransitionType.Maneuver;
            //orbit.PatchEndTransition = PatchTransitionType.Final;

            maneuverNodeData.SetManeuverState((PatchedConicsOrbit)orbit);

            maneuverNodeData.BurnVector = burnVector;
            AddManeuverNode(maneuverNodeData);
        } 
#

We are not reusing the MJ code. We do everything from scratch because we believe the work belongs to the MJ Owners/contributors.

glass depot
#

Yes and because it's funnier to start from scratch. I've used mechjeb for hours. I know its incredible quality and limits too.

noble night
# oblique finch We are not reusing the MJ code. We do everything from scratch because we believe...

MJ code is covered under a variety of open source licenses. It's all free to use, though the licenses for any parts that are used must be maintained. In many cases what it's doing is applying textbook orbital mechanics equations - at least that's what you find deep inside it. There are also good applications of various public domain optimization solvers. Where the art lies, and where I would not want to borrow, is in the UI and architecture of solutions - not so much in the math. Borrowing the math would be wise in many cases. I would also make exceptions for ascent and landing and things like that - those may be more in the art realm, but working out the Delta-v needed and when to apply it so that you change your inclination, intercept some target, or whathaveyou - those are textbook things.

#

Also, I would not re-use MJ code without giving full credit to the authors/contributors. That would not be OK in any way.

glass depot
#

I'm currently on the landing. I've read of course mechjeb code to see the overall logic. But just adapting it would work with the same defaults. I'd like to avoid that.
But of course it's fully part of inspiration.

glass depot
#

It seems that K2-D2 does not work with version 1.0 of spacewarp. I'll try to correct this ASAP. sorry for the trouble

glass depot
#

Hello, I've rebuild the Mod for with Spacewarp's lastest version

glass depot
glass depot
#

With full auto landing

fading vine
glass depot
#

I've update the version to fit new kSP version

glass depot
#

New Version is on SpaceDock !! 0.8

#

Lift is working, Landing Improved, added TouchDown Mode and Drone Fly.

noble night
# glass depot Lift is working, Landing Improved, added TouchDown Mode and Drone Fly.

Hey I just took K2-D2 for a spin with a new rocket and it worked brilliantly for launch, circularization, and Hohmann xfer orbit to Mun. I used the built-in K2-D2 Lift capability for the ascent, with the only feedback being that it would be awesome if K2-D2 could detect spent stages and eject them. My rocket had 4 strap-on solids to help with TWR in the early part of the flight. It was not hard for me to watch them and press space to stage them, but it would be really cool if K2-D2 could do this. That might matter especially to those who build multi-stage to orbit craft.

#

The other thing I noticed was that when K2-D2 is finished with a node it might be nice if it deleted the old node. It's not really a big deal for the player to delete them, but leaving them around can confuse Flight Plan. OTOH I could have a setting in FP to remove any past nodes when creating a new on. I'll look into that too - just wanted to pass along this feedback. Fantastic work, my friend! This is simply brilliant!

noble night
#

Just did a landing on the Mun! Worked great! Some of the controls were a little counter intuitive for me, but I quickly got the hang of it. The first attempt I overshot the breaking burn as I didn't realize I needed to press that button when a collision had been detected and K2-D2 was actively counting down to the burn. Restoring from a save I made another go of it and realized that pressing Brake doesn't trigger the burn, it enables it. That attempt bounced a bit and I wound up with the vessel on it's side, so I restored and gave it another go pressing the Touch-Down button when I was close to the ground and that seemed to do the trick! Is that how it's intended to work? If so, I figured it out pretty quickly and it worked great!

noble night
noble night
#

@glass depot After playing with K2-D2 0.8 I had a couple thoughts...

#

First: Your UI is gorgeous! Way prettier than mine. I really like how it works and where you've taken it.

#

Second: It seems there's a really clear distinction between the things that K2-D2 excels at and the things the FP does well. Where FP is good at doing some orbital maths and setting up nodes, K2-D2 owns the dynamic control space. Things like precision execution of nodes, ascent, and landing all involve dynamic engine and attitude control. Also, managing time warp is a big deal. FP does none of that, and K2-D2 does it really well!

#

Third: The way I was using these apps, and the way we've suggested to others that they use them, is that for use cases between ascent and landing the user creates a node with FP, then executes it with K2-D2. This got me thinking...

#

In stead of hiding the FP capabilities inside the handleButtons method I could bring each of them out to a public method that handleButtons calls. This would make it possible for players to continue to use K2-D2 & FP exactly as they may do now - the FP GUI would still be available via Alt-P and the app bar, but it would also mean that K2-D2 could directly call methods in FP!

#

Imagine if, via your sweet UI, players would click on something they want to do, then K2-D2 calls a FP method to create the node, and bang They're off an running! FP is available to call whether the GUI is launched or not, so from the player's perspective they're just using K2-D2 to setup nodes and execute them. If some players prefer to bring up the FP GUI and make the node that way it would work too.

#

If I were to take FP that way, I could bring out a number of orbital math methods that K2-D2 may want to call. It might make launching to the target's plane or launching to rendezvous easier as some answers would just come from a FP call within K2-D2. This would really take these things to the next level as a KSP2 answer to MJ!

#

I'm going to start looking into this, but I wanted to bounce the idea off of you to see if this is a direction you'd want to consider going with K2-D2.

glass depot
#

@noble night thanks for all this positive return.

#

I'll try to answer to all your Questions.

#

first about the Landing. It's not working very well for the moment you're right.

When the landing page is openened it shows It compute the burn time and this part is not working well

When pressing the Brake button. we starts the full landing pilot.

noble night
glass depot
#

It start to quick Warp to this time, then burn and if the altitude is too high it will start another Warp and brake loop.
until the Touchdown Altitude is reached. It can then have 3 or more loops if parameters are not good.
The TouchDown mode starts when at the end of a burn the altitude Low enough.
Then it just adjust your speed to the altitude. In a simple linear ratio. the slider you can use in settings?
by pressing the Touch-Down button you start the mode sooner.

#

I've added the button because of the too many warp-burn loops.

#

The good thing is that it's a reallllyyy safe landing mode

#

The bad thing is that it burn too many fuel.
i'll do a better computing of that time in next version. taking acount of both gravity, TWR and horizontal collisions

#

then for your other considerations.

  1. The UI has been made using my own graphics and a small library I wrote. I used to code using Unity in the first version of the Engine and the only UI was this Legacy code we use (GUILayout stuff)
#

I love this mode of UI because it's a purely programmatic way to draw UI

#

I had a look to UITK and it should be a better idea to go this way one day but for the moment I'm really comfortable with that and it's quite a please to write new code about that.

#

for the EditorField focus trouble I've wrote a little class that do the stuff. thanks for reminding me about the way we can use it. it is an old Unity trick.

#
  1. I totally agree with the fact that K2-D2 and FlightPlan are on totally 2 different part of a good space navigation. It's perfect to flight using both.
#

Mechjeb did the both parts but it was not excellent for the User Interface. I'ts quite cool to have different tool at different states of the space navigation.

#

I was thinking from my side that FlightPlan should be the master interface during orbit navigation. and K2-D2 usefull when Orbiting and coming back to ground.

#

I'd like to add the Docking Pilot too of course. I love creating pilot that only use the Vessel Inputs like a user can do : change SAS, point to, warp, RCS, Thrust and so on.

#

it's the fun part for me.

#

And I think K2-D2 should stick to that only responsabilities.

#

all Orbit and Maneuver stuff Should stay in FlightPlan.

#

Therefore, It would be cool to do the opposite : Flight Plan should remains as the main Navigation windows, and I could add a K2-D2 button that execute the next Node.

#

The Button would be visible if only K2-D2 is installed.

#

it will execute the node even if the K2-D2 window is hidden.

#

and I would be very pleased to adapt the FlightPlan UI to fit my skin.

#

I don't know if the best way is to create a external dependency like you did with Node Control

#

there are Images to bring with the skin of course and I don't know how I could load it using SpaceWarp calls

#

Here us the UI skin I drawed

#

the good point is that it is all coded with 2 or 3 .cs files

#

Style.cs and UI_Tools.cs and all the images
plus EditorField.cs that Handle the Focus and Input stuff

#

and it would be easy to add to Flightplan as it does not draw any other dependency.

#

If you like the idea I can try to adpat actual FlightPlan to this skin doing a fork and propose you a pull request .

#

I wouldn't be a hard work and working on another thing than K2-D2 for a while would be cool.

noble night
#

Actually, I really like this idea! The player could launch either mod and they would have common look and feel. If both are installed, then FP can call K2-D2 for node execution - this is a very easy thing in principle. If the user has only one, they can use it like they normally would, but there would be a synergy if they have both.

#

I've already updated my FP code so that many of its functions are callable, but that is not a problem. If you find a use in calling them later, fine, and if not fine. If you'd like I can make a fork of K2-D2 and see what it might take to make the execute node capability an API callable function. We can do this with soft dependencies if you like so that they don't require eachother, but can use the other if it's available. That way is slightly more work, but not a big deal. FP already does this with MNC, so it's really not hard.

#

I'll fork K2-D2 and see if I can add the API you would need. If I can, I'll give you a PR for it.

glass depot
#

Yes soft link would be the fine way to call each other. I've built my first flight plan. I'm ready to do the UI changes. Cool.

noble night
#

Also, would you want FP to bring up your GUI and then make the call so that the user can see it executing? Or would you prefer that K2D2 works behind the scenes in such a case?

noble night
#

I've gotten a soft dependency to K2D2 working in FP. This is just gaining access to K2D2, not establishing the call, but already FP can "see" k2D2 and tell if it's loaded or not.

#

[Info :Flight Plan] K2D2Loaded = False
[Info :Flight Plan] K2-D2 installed and available
[Info :Flight Plan] K2D2 = K2D2 0.7.1
[Info :Flight Plan] K2D2Loaded = True

#

You might want to change the following lines in K2D2. These are hard coded, which is not ideal.

#
        public const string ModGuid = MyPluginInfo.PLUGIN_GUID; // "K2D2";
        public const string ModName = MyPluginInfo.PLUGIN_NAME; // "K2D2";
        public const string ModVer = MyPluginInfo.PLUGIN_VERSION; // "0.7.1";```
glass depot
glass depot
noble night
# glass depot Thanks I was searching for a way to get it and avoid a duplicate.

Actually, what I put there doesn't quite work. It works for mods based on @fluid apex's SpaceWarp template, but for this to work correctly in K2D2 will require just a bit more work I think. When I put in that code above for some reason it was picking up this instead

namespace SpaceWarp
{
    public static class MyPluginInfo
    {
        public const string PLUGIN_GUID = "SpaceWarp";
        public const string PLUGIN_NAME = "SpaceWarp";
        public const string PLUGIN_VERSION = "1.1.3";
    }
}```
fluid apex
#

Oh god, not that again

#

I remember dealing with that stuff with another person here

noble night
#

I suspect it goes to the csproj, and the K2D2 csproj is quite a bit different

fluid apex
#

The main thing you need is the package reference to BepInEx.PluginInfoProps

#

At least i think that's what it's called

#

It's what generates the MyPluginInfo class for mods automatically

noble night
#

I'm helping @glass depot with getting things set up so he can call FP as a soft dependency and FP can call his code too.

#

I don't want to stomp on his thigns too much, but it sounds like he would like to be able to use this capability.

fluid apex
#

Of course it's not exactly needed, all you need to do is define the constants with the mod information manually in your plugin class, if not using the MyPluginInfo

noble night
#

Is suspect there's some simplification that can happen in csproj that would mean he doesn't need so many dlls in external_dlls

#

Yeah, and then any time he updates I'm out of sync...

fluid apex
noble night
#

Oh yeah for sure! I meant other than that one

#

I'll take a stab at this, but his csproj is different enough from the working examples I have (and his is working) that I want to proceed carefully

fluid apex
#

But the rest should all be available on the SpaceWarp nuget feed

#

To be fair I only had a quick look at it since I'm on my phone right now, i can help out more in a couple of minutes when I get back home

noble night
#

Your insights would be most appreciated!

noble night
#

I think I fixed it? If I did, it's almost certainly a suboptimal fix. This compiles...

noble night
# fluid apex To be fair I only had a quick look at it since I'm on my phone right now, i can ...

I think I may have broken my copy of K2-D2. It seems to load (there are normal KSP2 messages in the log about loading it), but (a) FP can't see it, and (b), when I put this code into K2-D2's OnInitized it doesn't appear to execute the new code. Other messages come out, even after this code, but never the new ones I put in try/catch blocks below.

        public override void OnInitialized()
        {
            if (loaded)
            {
                Destroy(this);
            }
            Instance = this;

            Settings.Init(SettingsPath);
            mod_id = SpaceWarpMetadata.ModID;

            loaded = true;
            Instance = this;

            gameObject.hideFlags = HideFlags.HideAndDontSave;
            DontDestroyOnLoad(gameObject);

            // Test logging to make sure things are set right - remove when done testing
            try
            {
                logger.LogMessage($"ModGuid = {ModGuid}");
                logger.LogMessage($"ModName = {ModName}");
                logger.LogMessage($"ModVer = {ModVer}");
            }
            catch (Exception ex) { logger.LogMessage($"Unable to check ModGuid, ModName, or ModVer: {ex}"); }
            try
            {
                logger.LogMessage($"MyPluginInfo.PLUGIN_GUID = {MyPluginInfo.PLUGIN_GUID}");
                logger.LogMessage($"MyPluginInfo.PLUGIN_NAME = {MyPluginInfo.PLUGIN_NAME}");
                logger.LogMessage($"MyPluginInfo.PLUGIN_VERSION = {MyPluginInfo.PLUGIN_VERSION}");
            }
            catch (Exception ex) { logger.LogMessage($"Unable to check MyPluginInfo.PLUGIN_GUID, MyPluginInfo.PLUGIN_NAME, or MyPluginInfo.PLUGIN_VERSION: {ex}"); }

            logger.LogMessage("building AutoExecuteManeuver");
...```
#

The building AutoExecuteManeuver message comes out every time, for example - but none of the message I put there do even with try/catch blocks

[Info   : Unity Log] [System] Initialization for plugin MicroEngineer completed in 0.0890s.
[Info   : Unity Log] Initilised
[Info   : Unity Log] [System] Initialization for plugin Cheat Menu completed in 0.0021s.
[Message:      K2D2] building AutoExecuteManeuver
[Message:      K2D2] SimpleManeuverController !
[Message:      K2D2] MainGUI
[Info   : Unity Log] [System] Initialization for plugin SpaceWarp completed in 0.0133s.
[Info   : Unity Log] [System] Post-initialization for plugin Space Warp completed in 0.0003s.
[Info   : Unity Log] [System] Post-initialization for plugin VesselRenamer completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Community Fixes completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin ShowKSP2Events completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin SkipSplashScreen completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Lazy Orbit completed in 0.0002s.
[Info   : Unity Log] [System] Post-initialization for plugin Node Manager completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Flight Plan completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Resonant Orbit Calculator completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Maneuver Node Controller completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin MicroEngineer completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin Cheat Menu completed in 0.0001s.
[Info   : Unity Log] [System] Post-initialization for plugin SpaceWarp completed in 0.0001s.
[Info   :MicroEngineer] Message triggered: GameStateLeftMessage```
#

Also, I never see a Post-initialization for plugin for K2D2...

fluid apex
#

that's really weird

#

any exceptions in Ksp2.log?

noble night
#

None at all to get to the start screen

#

Also none for K2D2 by that point

fluid apex
#

would you mind sending me a zip with the project?

noble night
fluid apex
#

alright, that works even better

noble night
#

will that do?

#

one sec may need to commit some stuff

#

Ok ready

#

That copy has my changes to swinfo and csproj for what they're worth

fluid apex
#

well I have to admit that I've spent a while reading through it and I'm more confused than anything

#

I'm not seeing anything that should be preventing it from getting loaded by BepInEx and seen by SpaceWarp

#

though I'll say that I don't exactly understand the structure of the project and its .csproj file

noble night
# fluid apex though I'll say that I don't exactly understand the structure of the project and...

Thanks for taking the time and looking! I'll circle back with @glass depot to see where I may have gone wrong. Something seems to be preventing FP from seeing K2D2 in the current state I've got it. I can go back to the hard coded way, which may work, but I'd still like to explore a fix for this that can help keep things in sync as cfloutier evolves his project and updates versions numbers, etc.

glass depot
#

I got the same troubkle at the very start of the project and as i was totally discovering I did only little changes from lazy orbit mod

#

until It worked, and then I stopped doing change on that. sorry I think I can't help much i'll try to compile from your fork

noble night
#

Ahh, if you started from there then I think I know how to fix it. I worked on updating Lazy Orbit to the template a while ago, but had assumed that with K2-D2 this was more important to your design and so wanted to tread carefully.

#

I'll compare what you've got the the Lazy Orbit fork I've got and work from there.

noble night
#

Good news!

#

Flight Plan now sees K2D2 and can call it!

#

In the images above you can see that first there is no node, then I create a node using FP to Circularize at Ap - both mods pick it up!

#

Then I click the brand new K2D2 button in FP and bang K2D2 is flying the node!

#

An no time did I press any buttons on K2D2 except the app bar button to bring it up so I could watch it do its Astromech thing

#

Essentially, FP now has a precision node executor aboard! 🥳

#

Ok, now the bad news...

#

After spending a bit too much time trying to get the existing K2D2 csproj to work with the current SpaceWarp template I ultimately did this

#
  1. Built a brand new blank mod from the current template
#
  1. Pulled all of your code into that mod (almost no changes to any lines of code, but things are not quite where you left them folder wise...)
#
  1. Made some more changes to the csproj post build events and such
#
  1. ... uh, there is no step 4... It builds and seems to work!
fluid apex
#

and now imagine that the whole template is completely reworked in the upcoming version

noble night
#

Ummmm, thank you?

#

LOL

#

What sorts of wonderful changes do you have in store for us?

#

Are things going to move around folder-wise?

fluid apex
#

well, mostly just what I described in #🔴mod-dev message

noble night
#

Well in that case, it's all win!

fluid apex
#

this is the full new folder structure, it might seem like there's much more than before, but I really just made it more generic and extensible

noble night
#

Because the things I kinda broke in @glass depot 's csproj were some of his auto zip and deploy stuff

#

His lovely batch files are still there, but not being called - mainly cause I was moving fast and breaking shit as ususal

fluid apex
#

yeah, then the good news is that that functionality is all built-in now

#

(well, will be when it's released)

noble night
#

This isn't a big change in terms of work needed to do on any of my mods or on K2D2 if cfloutier wants to roll in what I've done so far

#

Some things will move around a bit, but not a problem I think

fluid apex
#

technically with a few minor changes I could release the template for SpaceWarp 1.1.3 now, instead of waiting for 1.2

noble night
#

No rush. I think it will be fantastic when we get it.

#

I'm just thrilled I've been able to get FP to play nice with K2D2 tonight!

fluid apex
#

I'm really glad to see more and more interoperability between mods

noble night
#

Now I just have to figure out how to shovel it all back up to my git repo so I can put in a PR...

#

That's a mess with what I did locally

#

Yeah! We're really getting somewhere on the interoperability front!

fluid apex
#

and SpaceWarp 1.2 should hopefully make it even easier, if we add the base for soft-dependency APIs

#

and in turn in the new "library mod" template I would add a basic example of its usage

noble night
#

Excellet!

#

I owe you a nuget, btw

fluid apex
#

hehe

noble night
#

I finished the update to the FP README

#

last night...

#

But I'd want to roll this capability out anyway...

#

so soon!

glass depot
#

Wooa I'm seeing that after the fire.
Many excellent work here. I didn't had the courage to rebuild the csproj as you did. That's an excellent point. I'll accept your Pull request off course and do the little adaptations to be confortable with my little batches.
I like the spacewarp folder structure much. I'll try to be closest to it.

noble night
#

Now, if K2-D2 is loaded, FP will give a K2D2 button that either launches K2-D2 (if the installed K2-D2 is 0.8.0 or earlier), or calls K2-D2 to execute the current node in the background (K2-D2 v 0.8.1+). This was possible as your ToggleButton method happened to be public anyway, so even previous versions can be called up to the screen!

glass depot
#

I'm currently trying to integrate your Pull request.

noble night
#

That's why I made sure FP could do something useful with K2-D2 0.8.0!

glass depot
#

I'm removing Post build event in csproj reblacing by a call to one of my batches.

#

the main trouble is hardcoded pathes to ksp2

#

I'll add in in the ksp_location.bat

noble night
#

BTW, @munix is planning an update to his template that will do a lot of what you're doing with batch files.

glass depot
#

great

noble night
#

I plan to migrate to that template on my mods once it's available.

glass depot
#

cool thing I will do it too

#

It will be if FP and K2D have the same structure for the csproj and build options

noble night
#

Yes! Easier for both!

glass depot
#

I didn't had time to du much today. But my 0.8.1 compile and I've adapted the batches to copy on a proper ksp2 folder.

#

I've added options to stop and start ksp and of course make the zip

glass depot
#

Thanks for the pull request. Very good thing to me closer to standard mods. And I really didn't know what to do for that

glass depot
#

I've not merged yet. Buy it will be done tomorrow I think

noble night
# glass depot I've not merged yet. Buy it will be done tomorrow I think

If you're still working on the merge then I'd like to look into how FP could get a little more feedback from K2D2. Right now there's a one way signal, but no feedback. Can you suggest how I might be able to get a status back? I know that in some instances there is an issue with the node and K2D2 reports on it's console that there is this issue, but FP doesn't know this. So just being able to tell that K2D2 is going to execute the node or not is valuable info.

#

Also if the node was acceptable it would be great if FP could access the info that K2D2 is seeking alignment, warping to the node, waiting for the node, burning, done burning. I'm thinking of the case where FP might be up and the player has not brought up K2D2. In that case, it would be good if FP could relay some status. I'll look at this, and if I can I'll try to make this happen.

noble night
#

@glass depot I've committed a couple of changes since the PR that enable FP to get and display some useful status from K2D2.

public string GetStatus()
{
    string status = "";
    var instance = AutoExecuteManeuver.Instance;
    if (instance.current_maneuvre_node == null)
    {
        status = "No Maneuvre Node";
    }
    else
    {
        if (!instance.valid_maneuver) status = "Invalid Maneuvre Node";
        // else if (!AutoExecuteManeuver.Instance.canStart()) status = "No Future Maneuver Node";
        else if (instance.isActive)
        {
            if (instance.mode == AutoExecuteManeuver.Mode.Off) status = "Off";
            else if (instance.mode == AutoExecuteManeuver.Mode.Turn)
            {
                status = $"Turning: {instance.current_executor.status_line}";
            }
            else if (instance.mode == AutoExecuteManeuver.Mode.Warp)
            {
                status = $"Warping: {instance.current_executor.status_line}";
            }
            else if (instance.mode == AutoExecuteManeuver.Mode.Burn)
            {
                if (Game.UniverseModel.UniversalTime < instance.current_maneuvre_node.Time)
                {
                    status = $"Waiting to Burn: {instance.current_executor.status_line}";
                }
                else
                {
                    status = $"Burning: {instance.current_executor.status_line}";
                }
            }
        }
        else status = "Done";
    }
    return status;
}```
#

That's in the base class.

#

In AutoExecuteManeuver I also made this change

public bool valid_maneuver = false;```
#

That's all I think I needed to get the essentials out so that FP could display them.

glass depot
#

Right I take it

noble night
#

If you prefer a different API interface to get status out, I'll be happy to adapt. I just wanted to put something in there so I could get these essential things out. With this much I can easily pass along the info from K2D2 so the player knows what's going on even if the K2D2 GUI isn't up. That said, your GUI is a lot prettier than mine! Why would they not want it up? That's my question!

glass depot
#

oh yeah. it has been a bit long

#

but the good news is that there is no more hard coded pathes

#

you shoudl use a local_dev_options.bat in the batches folder

#

it contains all options needed by both of us

#
@REM this exemple file should be renamed to ksp_location.bat.
@REM ksp_location.bat is git ignored and therefore can contains informations depending on dev local machine

@REM set your own KSP2_LOCATION and rename me to ksp_location.bat (git ignored)
@REM ps : don't use ""
set KSP2_LOCATION=Z:\SteamLibrary\steamapps\common\Kerbal Space Program 2

@REM Create Zip package (require 7zip)
set Create_zip=True

@REM CLOSE KSP before build
set Close_KSP2=True

@REM Open KSP after build
set Open_KSP2=False
#

what is missing is the copy dll to FlightPlan or another mod

#

i'll add it in next push

#

you can also look at the make_zip.bat wich read the version in swininfo.json to format a good name for the zip

noble night
#

Done! My fork is synced with the master and my local copy is updated. I am aligned!

#

If alignment is done, we can now warp and burn, right? 😉

#

Excellent work! I was easily able to create my local_dev_options.bat from the example, and the build process was flawless! Much nicer than what I had before.

glass depot
#

K2-D2 is now officially ready to speak to next FlightPlan Version

#

0.8.1 is released !

glass depot
#

i've written a first page of documentation on the github wiki

glass depot
#

There were no big changes for a while as I was working on Ktools UI stuff s on FlightPlan.

#

but I took time to add small new tools in the K2-D2 toolbox

#

First the Attitude Pilot. that could be really useful for a kind of planes pilot

#

not much for a UI but it's a full test ofr new controls in KTool

#

the edit field can be modified by both the slider and ++/-- buttons

#

the buttons are repeat button with a special timer taht accelerate over time

#

very useful a real precise control of value

#

and of course it point the vessel direction to the desired attitude 🙂

#

it was the easy part. the hard part was the UI writing

#

another little tool :

#

a first button in the warp tab

#

only SOI detection because I really needed that (and every body should need it too)

#

I still need to add new fcts for FlightPlan. and I could release it

glass depot
#

I didn't had the time for a new K2D2 version, and i'm not sure I could do it next week

#

but I made new UI component.

#

still in progress, but promising.

#

it will be used a heading when vertical for drone mode,

#

and heading selection in Lift and Attitude controler

#

I've changed my way to devellop Ktools UI

#

using Unity Editor to first debug, it's far more simple than launching KSP2

#

the final function will be called using

#

you can draw in the controller, and change value or just fix as input only.

noble night
#

Cool!

noble night
#

[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
K2D2.Controller.AutoLiftController.computeValues () (at C:/dev/_ksp2/k2d2/K2D2Project/Controller/AutoLiftController.cs:158)
K2D2.Controller.AutoLiftController.Update () (at C:/dev/_ksp2/k2d2/K2D2Project/Controller/AutoLiftController.cs:185)
K2D2.Models.ControllerManager.UpdateControllers () (at C:/dev/_ksp2/k2d2/K2D2Project/Models/ControllerManager.cs:32)
K2D2.K2D2_Plugin.Update () (at C:/dev/_ksp2/k2d2/K2D2Project/K2D2_Plugin.cs:182)

glass depot
#

Ah thanks. I didn't see that

#

It make sense as there is no vessel there. I'll fix that

glass depot
#

ok I thing I've corrected that thanks for help

#

new version on space dock : i've added the functions we discuss about ("stop Pilot" and "is Running")

noble night
#

Hey @glass depot , I was on your forum page for K2-D2 today and I noticed that you've run into an issue I've had before. When you pasted the info into your post for 0.9.0 you may have forgotten to remove the formatting from where you copied it, and so it looks like this for anyone with dark mode.

#

You might want to go in and edit the post to remove the formatting. Super easy to do, and it will be more readable for all.

glass depot
#

Ah thanks. I Didn't noticed that

glass depot
#

I tried to fix it. But i couldn't test it cause i only have a phone to test it

noble night
glass depot
#

Thanks

noble night
#

I've highlighted the use of K2-D2, in particular your Warp to SOI feature, in some videos I've made for Flight Plan. You can find them here: #1091863665134796880 message

glass depot
#

Thanks again. I'm back from holidays. And I think i will be back to code this week

feral ember
#

Hey, I've tried this mod once again and I'm blown away. It works perfectly. Thank you so much for the work you've done!

glass depot
#

Thanks @feral ember

#

And it's a full work in progress

noble night
#

@glass depot minor typo in the K2-D2 status message.

#

Should be "Invalid Maneuver Node". (r and e are transposed)

glass depot
#

thanks bro

#

typical french error

glass depot
#

thanks to @novel gale with it's excellent HUD i've tried experimenting with the Shape library. It can give real cool rendering

#

I'll try to use it to debug the docking pilot. and to easy the choice of docking port on big station.

noble night
#

Nice!

#

I thought maybe you'd equipped it with a new laser canon or something...

glass depot
#

the additive blending mode gives a kind of laser style if alpha color is greater than 1... strange but a cool side effect.

glass depot
#

I've finally found the way to show docking port on target !

#

I'll try now to code a simple kill target speed using main thrust. It can be usefull for quick approach

glass depot
#

first success using gizmos.

noble night
#

That looks so cool!

#

You know I've got a match velocity function in FP. When I'm doing rendezvous I use that a lot.

#

Maybe you could call that then execute the node it gives you?

glass depot
#

Yes i use it for the final approach. It works quite well. But i'd like to add a way to stop not based on orbit but just relative speed of each object. A local stop

noble night
#

I compute relative speed in FP, which I display for when the player is in the final steps of rendezvous.

relVelocityNow = Vector3d.Dot(Orbit.WorldOrbitalVelocityAtUT(UT) - targetOrbit.WorldOrbitalVelocityAtUT(UT), Orbit.WorldBCIPositionAtUT(UT) - targetOrbit.WorldBCIPositionAtUT(UT)) / (Orbit.WorldBCIPositionAtUT(UT) - targetOrbit.WorldBCIPositionAtUT(UT)).magnitude;```
#

In this Orbit is the active vessel's Orbit, and targetOrbit is the same for the target. In the case where the target is a vessel, then targetOrbit is defined as

targetOrbit = _currentTarget?.Orbit as PatchedConicsOrbit;```
and in the case where the target is a port (or really any part on a vessel), then it's defined as
```cs
targetOrbit = _currentTarget.Part.PartOwner.SimulationObject.Orbit as PatchedConicsOrbit;```
#

I believe this gives positive numbers when you're moving away and negative when on approach, but I'd have to check. There is a sign change for sure and it does work for either direction.

glass depot
#

Thanks bro. I'll try this. I was thinking just to try without conic stuff. Simply by looking at relative positions. But it can be a mistake.
I'll try both approaches.

noble night
glass depot
#

I've picked it from a screen copy of the official interface

#

I'll give you tomorrow. I've got no computer right now

#

The line weight also need to be adjusted

noble night
#

I can’t make it any thinner than it is now. It’s set to 1 px

glass depot
#

Oh ok it's stange because it's like 2 pixels width when watching it in Photoshop

noble night
# glass depot Oh ok it's stange because it's like 2 pixels width when watching it in Photoshop

That could be a UITK thing. With UITK it assumes a standard screen dimensions (1920 x 1080) and then scales the mod based on the actual screen size so that the percent of screen consumed is always the same. With that, the smallest I can make a border is 1 px, but on some screens that may scale up to 2. However with your IMGUI approach you create an image for the background texture, then scale it (perhaps down) to fix in the rect you're displaying it in. I can see where a larger higher resolution background image with a 2 px border might end up looking like it's got a slimmer border when scaled. This is just a theory though.

noble night
#

Here's a shot an getting closer to a common look

#

I was trying to sample in photoshop off of one of your images, and I may have gotten it slightly wrong. I think the purple borders may still look just a shade too bright in FP. I think I'll also want to tweak the horizontal line between the tabs buttons and the tab content to align better with your design. It looks like that's just a bit too thin and too wide in FP

noble night
#

The color match may not be perfect yet, but I think I've got the height of the title bar dialed in, and also the slightly heavier horizontal line is matching pretty well in thickness (I've got 2px now, 3 seemed to much and 1 to little). I may have that horizontal line just a bit too wide relative to what K2D2 is using, but it's closer now.

#

To be honest, I'm liking the tab highlighting I've got now better even though it's quite different from what K2D2 has. This aligns with what the FP buttons do as well.

#

The font in FP, OTOH, just plain sucks. The K2D2 fonts are altogether better. Which font are you using? I think I may be able to change to match yours relatively easily in UITK. I'm speaking here of the general font used for the buttons, though the font you've got in the tile is really quite nice too! I might want to copy that too unless you feel that would be borrowing too much.

noble night
#

Messing around with fonts... This is Arial at 16pt

#

Seems a tad big, though 14 seemed to small, and nothing I do seems to be affecting the text input fields.

#

Maybe it's not the font size, but the font color that's off?

noble night
noble night
#

@glass depot Another typo... In the status, the "s" in "m/s" should be lower case

noble night
#

Also, I'm having a real problem with the warp to SOI. Is it possible to configuire that? The SOI + 1 minute invariably overshoots when I'm coming into a planetary SOI. It didn't stop warping until I was nearly out of the Moho SOI, and I just used it again on entry to Duna where it whipped me right past the Pe. In the second instance I paused the game before I got the the SOI and tried to tell K2-D2 to stop, but when I unpasued it sped right past the SOI boundary again.

#

The Warp to SOI is a really great feature, but I think it needs a little fine tuning or at least some way for the user to configure it.

glass depot
#

@noble night . pretty good progress in the ui. The font i used for simple button and text is only arial. As you found it.
Excellent rendering !!! Except perhaps the gray background of buttons. I'll try a dark purple to fit with global colour

#

The warp to soi does not work perfectly. I've found many troubles in different situation. I really need to enhance this. And thanks for the typo. I'll correct that

noble night
#

@glass depot have you looked at how the game does a WarpToNode? I assume you probably have, but I'm wondering what would happen if you did a WarpToSoi that worked like this?

    public void WarpToSoi(double SoiTime)
    {
      if (GameManager.Instance.Game.ViewController.TimeWarp.IsAutoWarpEngaged)
        return;
      GameManager.Instance.Game.ViewController.TimeWarp.WarpTo(SoiTime - 30.0);
      // this._warpingToNode = true;
    }```
#

Is is poking around in ManeuverPlanComponent, which also has a _warpingToNode. I don't know if you'd ned to mimic that too, but you might. OnFixedUpdate does this with that

      if (this._warpingToNode)
        this._warpingToNode = GameManager.Instance.Game.ViewController.TimeWarp.IsAutoWarpEngaged;```
glass depot
#

I've tried the standard auto warp. Without much success. The real point on warp to soi, is that the way i detect soi changes is not good. I currently use the patch conic changes. And sometime the order is not good and my warp time is detected to the soi change after.... Leaving the entering of soi..

noble night
# glass depot I've tried the standard auto warp. Without much success. The real point on warp ...

What are you looking for specifically with the patches? There is patch.closestEncounterBody.Name (only when there is an encounter, ofc, otherwise closestEncounterBody = null), patch.closestEncounterLevel, patch.PatchStartTransition, and patch.PatchEndTransition. These are all accessed in MNC now and displayed as an aid to planning maneuvers. I suspect the thing you need is closestEncounterLevel and there I think SoiIntersect1 is the entry and SoiIntersect2 is the exit.

#

In the encounter shown above there are three patches in the patch list. The first goes from LKO to the Mun encounter with a PatchStartTransition of EndThrust, a PatchEndTransition of Encounter, a closestEncounterBody.Name of Mun, and a closestEncounterLevel of SoiIntersect1. The second patch is the hyperbolic Munar orbit and it has a PatchStartTransition of Encounter , a PatchEndTransition of Escape, a closestEncounterBody of null and a closestEncounterLevel of None. The third patch is the new Kerbin orbit and it has PatchStartTransition of Escape , a PatchEndTransition of Final, a closestEncounterBody.Name of Mun, and a closestEncounterLevel of SoiIntersect1.

#

So, I think the Soi Entry should always have a level of SoiIntersect1 and you'll want of course the patch.EndUT, whereas the Soi Exit should always have a level of SoiIntersect2 and you'll want patch.StartUT for the time.

noble night
#

For the above encounter,

#

[Info :Maneuver Node Controller] Patch 0: Start EndThrust @ 17,605.924, End Encounter @ 35,817.752, Encounter: Mun (SoiIntersect1)
[Info :Maneuver Node Controller] Patch 1: Start Encounter @ 35,817.752, End Escape @ 50,633.456
[Info :Maneuver Node Controller] Patch 2: Start Escape @ 50,633.456, End Final @ 352,490.116, Encounter: Mun (SoiIntersect2)
[Info :Maneuver Node Controller] Patch 3: Start Final @ 352,490.116, End Initial @ 352,490.116

#

So, it looks like you could take your pick for where to get the time for the SOI entry as either the SoiIntersect1 end (patch 0 in this case), or the following patch's start, and likewise you could take the time for the SOI exit as either the transiting patch's end of the start of the SoiIntersect2 patch.

glass depot
#

Excellent. I didn't find how to make the difference between patches end types

noble night
#

[Info :Maneuver Node Controller] Patch 0: Active True, Start EndThrust @ 17,610.489, End Encounter @ 32,791.734, Encounter: Mun (SoiIntersect1)
[Info :Maneuver Node Controller] Patch 0: SOI Encounter 32791.7339145451, Transition1 22251.0295047122, Transition1 37033.1383509635
[Info :Maneuver Node Controller] Patch 1: Active True, Start Encounter @ 32,791.734, End Collision @ 37,960.819
[Info :Maneuver Node Controller] Patch 1: SOI Encounter 0, Transition1 0, Transition1 0
[Info :Maneuver Node Controller] Patch 2: Active False, Start Collision @ 37,960.819, End Initial @ 37,960.819
[Info :Maneuver Node Controller] Patch 2: SOI Encounter 0, Transition1 0, Transition1 0

#

In this instance there's just one node, and patch[0] is the patch resulting from that node, so straight away it's giving the SOI encounter time

#

Modifying the orbit slightly so that we fly by the Mun I get this
[Info :Node Manager] SpitNode: Node[0] [Info :Node Manager] BurnDuration: 85.5212382604975 s [Info :Node Manager] BurnRequiredDV: 632.607438896382 m/s [Info :Node Manager] BurnVector: [7.5931179572132, 106.308219698723, 623.5648151806] = 632.607438896382 m/s [Info :Node Manager] CachedManeuverPatchEndUT: 0 s [Info :Node Manager] IsOnManeuverTrajectory: False [Info :Node Manager] ManeuverTrajectoryPatch: [Info :Node Manager] NodeID: 2df6b976-0250-435e-80d1-23b378fc3ff7 [Info :Node Manager] NodeName: Maneuver Node [Info :Node Manager] RelatedSimID: 89e1cdb0-2b9b-436d-a47a-00e1fa1bd692 [Info :Node Manager] SimTransform: KSP.Sim.impl.TransformModel [Info :Maneuver Node Controller] Patch 0: Active True, Start EndThrust @ 17,608.535, End Encounter @ 35,822.484, Encounter: Mun (SoiIntersect1) [Info :Maneuver Node Controller] Patch 0: SOI Encounter 35822.4844303862, Transition1 24389.6679114655, Transition1 24389.6679114655 [Info :Maneuver Node Controller] Patch 1: Active True, Start Encounter @ 35,822.484, End Escape @ 50,637.147 [Info :Maneuver Node Controller] Patch 1: SOI Encounter 50637.1471748878, Transition1 14814.6627445017, Transition1 0.00262945734903042 [Info :Maneuver Node Controller] Patch 2: Active True, Start Escape @ 50,637.147, End Final @ 357,488.839, Encounter: Mun (SoiIntersect2) [Info :Maneuver Node Controller] Patch 2: SOI Encounter -1, Transition1 265887.578807432, Transition1 297429.66029041 [Info :Maneuver Node Controller] Patch 3: Active False, Start Final @ 357,488.839, End Initial @ 357,488.839 [Info :Maneuver Node Controller] Patch 3: SOI Encounter 0, Transition1 0, Transition1 0

#

If I add an (unnecessary) node after the first one but before the encounter then I get this
[Info :Maneuver Node Controller] Patch 0: Active True, Start EndThrust @ 17,608.535, End Maneuver @ 18,680.776, Encounter: Mun (SoiIntersect1) [Info :Maneuver Node Controller] Patch 0: SOI Encounter 35822.4844303862, Transition1 24389.6679114655, Transition1 24389.6679114655 [Info :Maneuver Node Controller] Patch 1: Active True, Start EndThrust @ 18,680.777, End Encounter @ 35,822.482, Encounter: Mun (SoiIntersect1) [Info :Maneuver Node Controller] Patch 1: SOI Encounter 35822.4819213361, Transition1 23317.4260151888, Transition1 23317.4260151888 [Info :Maneuver Node Controller] Patch 2: Active True, Start Encounter @ 35,822.482, End Escape @ 50,637.146, Encounter: Mun (None) [Info :Maneuver Node Controller] Patch 2: SOI Encounter 50637.1456040215, Transition1 14814.6636826854, Transition1 0.00513851287541911 [Info :Maneuver Node Controller] Patch 3: Active True, Start Escape @ 50,637.146, End Final @ 357,489.147, Encounter: Mun (SoiIntersect2) [Info :Maneuver Node Controller] Patch 3: SOI Encounter -1, Transition1 265887.908488285, Transition1 297429.969402955 [Info :Maneuver Node Controller] Patch 4: Active False, Start Final @ 357,489.147, End Initial @ 357,489.147 [Info :Maneuver Node Controller] Patch 4: SOI Encounter 0, Transition1 0, Transition1 0

#

So, now I'd have to say UniversalTimeAtSoiEncounter may be the right thing to use as the patch start and end times deal with where you've placed nodes, and there could be a node between you and the next SOI, but then would you ever want to warp past a node?

#

The interesting thing above I think is that both patch[0] and patch[1] give the same SOI encounter time (as they no doubt should), and that the next SOI encouter time is of course the start of the SoiInterset2 encounter patch. I'm not certain what the game intends to convey with a UniversalTimeAtSoiEncounter == -1 other than perhaps there are not any further SOI encounters to be had.

noble night
#

Hey @glass depot, KSP2 0.1.4 has broken your lovely mod!

#

[Error : Unity Log] MissingMethodException: double KSP.Sim.impl.UniverseModel.get_UniversalTime()
Stack trace:
K2D2.Models.ControllerManager.UpdateControllers () (at <c38f12f436a549bf9677b89ecdda803d>:0)
K2D2.K2D2_Plugin.Update () (at <c38f12f436a549bf9677b89ecdda803d>:0)

[Error : Unity Log] MissingMethodException: double KSP.Sim.impl.UniverseModel.get_UniversalTime()
Stack trace:
K2D2.Models.ControllerManager.UpdateControllers () (at <c38f12f436a549bf9677b89ecdda803d>:0)
K2D2.K2D2_Plugin.Update () (at <c38f12f436a549bf9677b89ecdda803d>:0)

[Error : Unity Log] MissingMethodException: double KSP.Sim.impl.UniverseModel.get_UniversalTime()
Stack trace:
K2D2.Models.ControllerManager.UpdateControllers () (at <c38f12f436a549bf9677b89ecdda803d>:0)
K2D2.K2D2_Plugin.Update () (at <c38f12f436a549bf9677b89ecdda803d>:0)

#

You probably only need to change all the instances of 'UniversalTime' to be 'UniverseTime'.

#

Is your GitHub repo uptodate otherwise?

#

I tried a sync of my fork with your master, then made the necessary change, but I get this result when I build. I suspect this means there's something maybe not quite write with the master or with my fork of the master

glass depot
#

hy @noble night thanks for the correction try

glass depot
#

the error you get are all from the line I draw for the docking. I can remove this lines for the moment to deliver a new version

noble night
#

I basically have a working copy of your master branch on my local fork now and it seems to launch just fine, which it previously would not do in 0.1.4

glass depot
#

great i'll accept your MR. by the way do you know the dll name that is needed to be in external_dlls ?

noble night
#

Yep. ShapesRuntime.DLL: #🔴mod-dev message

glass depot
#

excellent this make really sense 😄

#

Shapes this is the name of the namespace used

noble night
#

Possibly, I literally just dropped that DLL into the folder and it built with no issues. It was late so I didn’t look too closely

glass depot
#

i'm rebuilding and about to post on space dock

#

thanks for your help again

noble night
glass depot
oak karma
#

Any chance that K2D2 could get a more sophisticated lift maneuver with gravity turn support?

glass depot
#

Thanks for the link. I didn't have it

#

I'll have a look to see if it i can integrate it

glass depot
#

@noble night i've corrected the warp to soi. I just didn't get the righ soi time

glass depot
#

that's it ! a new version is released

#

with dockin

noble night
# glass depot

This is exciting! Very exciting! I will download this and try it now!

fluid apex
#

Hello there, I just wanted to let you know that we're now archiving this forum due to it being redundant, and all mod threads should now be moved to #1078701690762571866. Ideally, to make navigation between old and new threads as smooth as possible, the last message in this thread should contain a link to the new thread, and the first message in the new thread should contain a link to this one. Thanks for understanding! @glass depot (There is a possibility a thread for this mod may already exist in #1078701690762571866, please check first before making a new one!)