Jump to content

[Release - Final] kOSPropMonitor - IVA kOS Monitor


dsonbill

Recommended Posts

20 hours ago, dueb said:

If you want, and while waiting for an official update, you can give try this quick & untested recompile and tell me how that work for you: https://www.dropbox.com/s/8kotf6nnru6zr3a/kOSPropMonitor_RecompileForKSP1.2.2x64.zip?dl=0

(If for any reason you want me to remove this link feel free to ask, I'll do so.)

 

Edit: I forgot to include JsonFX.dll

nice! Basic test looks good, no nullref spam and everything seems functional.

Link to comment
Share on other sites

10 hours ago, Drew Kerman said:

everything seems functional.

Then how to use other RPM screens? Found Upper rightmost button.

To switch between different kOS modules best way is to show it's Tag or even Volume:Name.

Keyboard focus can be shown by outline border around screen. Is it possible to activate it by click on screen itself?

Can button labels be less wide like RPM's ?

"Flag panel" do not need  to be named on screen.

 

Edited by Sebra
Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

Lol oh god, did you release master?
It's perfectly fine, but I wasn't really planning on releasing the color thing - it's kinda built like crap.

I'm sorry if this is super complicated to use. I don't even remember how to use it at this point, but I'll make a point of updating this soon. It'll only take me a moment to remember everything and figure out what has changed. kOS is a very fluid mod, though a lot of the bits I now use shouldn't have changed much.

On 3/13/2017 at 8:11 AM, Sebra said:

Then how to use other RPM screens? Found Upper rightmost button.

To switch between different kOS modules best way is to show it's Tag or even Volume:Name.

Keyboard focus can be shown by outline border around screen. Is it possible to activate it by click on screen itself?

Can button labels be less wide like RPM's ?

"Flag panel" do not need  to be named on screen.

 

Much of what you want is possible with alterations to the template files. I don't have a system for outlining the screen right now, not sure if that's something that happened with RPM while I was away. It's easily doable though.

Check out the files that come with the thing. You can see how the screen is templated so you can change the layout quite easily. The background is provided by an image file. Also make sure to check out how configurable everything is in the rpm config file.

 

I'll make more detailed information at a later date if it's not already in the OP.
Cheers.

 

 

More Importantlel Information

I'm going to be downloading a copy of clean, latest version of KSP tonight and the newest version of kOS. If anyone has any more suggestions for the mod or gripes, now is definitely the time to bring them up.

@Sebra if you'd like the template to change, please make the adjustments you'd like and post the template on here. If I like them, I may include them. You can also do a pull request on git if you'd like your name on the stuffs. Either way if I use your changes, I'll include you in the OP and on the repo.

Also please tell me if you guys think the color feature is worth a ridiculous amount of text.replace. It's probably not.

Edited by dsonbill
Link to comment
Share on other sites

@dsonbill When it says "IVA Keyboard Input" in the OP features list, do you mean you can use your computer keyboard for input in IVA, or do you mean the monitor that is included in the ASET Alcor pod?

If not the IVA monitor, COULD you make it so??

Heres the one I mean:

7GnAdDN.png

Link to comment
Share on other sites

15 hours ago, dsonbill said:

Check out the files that come with the thing. You can see how the screen is templated so you can change the layout quite easily. The background is provided by an image file. Also make sure to check out how configurable everything is in the rpm config file.

I would. But now it is still dark to me :(

For now bugs found are:

1.Arrow keys still move IVA view if kPM intercept keyboard.

2.ID not changed when switched to another CPU.

3.Russian characters are broken. The same is on Terminal, so doubt you can fix it. KOS probably ignores high bit and use 128 of 256 codes.

My idea was to give single kOS processor ability to show different info on different RPM monitors. Do you think single kOS CPU should provide single screen only? Also I do not like STBY button do not close kOS screen as it is supposed to do for all screens. So here is my suggestion:

1.STBY button is always close kOS screen exactly as any other screen.

2.Upper right button "kOS terminal screen". (immediately if no DPAI installed) On this screen there are rows of upper and lower buttons labels, status line like "CPU 1 'navigator' 5.3 EC/min ...". The rest of screen can show terminal content. NEXT/PREV buttons select CPU here.

3.Other six upper buttons switch monitor to show one of six pages, prepared by kOS CPU. Pages can be kOS variables of string or list of strings type. KOS script could be able to know how many monitors show that page. Probably pages should not be able to get keyboard input, but should be controllable by buttons.

If you like it I can add more details. Sorry, I'm weak in explaining. If you think single CPU should have single terminal screen, let it be.

15 hours ago, dsonbill said:

Also please tell me if you guys think the color feature is worth a ridiculous amount of text.replace. It's probably not.

If this amount is ridiculous, it seems it is done wrong way. I would be more interested in graphics. :wink:

Edited by Sebra
Link to comment
Share on other sites

Bugs:
1. Yeah, complete garbage. I'll look into fixing this one again.

2. This is not the ID of the cpu, but rather the ID of the monitor, which is completely useless to you guys since I made it so you just access them based on their number. I'll look into making this the CPU tag instead, since it makes much more sense.

3. Yeah, probably can't fix that one.

 

Suggestions:

1/2. Can be handled mostly with the template system. I'll post the template here so you can see what it looks like:

{buttonLabel0} {buttonLabel1} {buttonLabel2} {buttonLabel3} {buttonLabel4} {buttonLabel5} EXIT
[#60F8F9]CPU: {currentCPU}   [#60F8F9]ID: {GUID}   {keyboardFlag}
[#60F8F9]FLAG  {flagLabel0} {flagLabel1} {flagLabel2} {flagLabel3} {flagLabel4} {flagLabel5} {flagLabel6}
[#60F8F9]PANEL {flagLabel7} {flagLabel8} {flagLabel9} {flagLabel10} {flagLabel11} {flagLabel12} {flagLabel13}
{l1}
{l2}
{l3}
{l4}
{l5}
{l6}
{l7}
{l8}
{l9}
{l10}
{l11}
{l12}
{l13}
{l14}
{l15}
{buttonLabel7} {buttonLabel8} {buttonLabel9} {buttonLabel10} {buttonLabel11} {buttonLabel12} {buttonLabel13}}

Also, the buttons can be reassigned from the config file.

3. Having multiple pages per monitor would be a huge benefit. I was thinking about doing this for a while, but I'm still thinking of an implementation. This may be the big addition for this release - we'll see how it goes.

And yeah, the color thing. We'll see.

 

Also definitely interested in implementing the vector graphics from RPM - I'll take a look into that this time around as well.

 

Here's some information on the color system. The replacements file isn't even included in the git repo, so that may cause some weirdness with the version you guys are using. Here's the preliminary replacements file I'd made:

{
"run ": "{CUSTOM1}run {COLOR}",
".ks": ".{CUSTOM1}ks{COLOR}",

"local ": "{CUSTOM2}local {COLOR}",
"global ": "{CUSTOM2}global {COLOR}",
"is ": "{CUSTOM2}is {COLOR}",
"until ": "{CUSTOM2}until {COLOR}",
"wait ": "{CUSTOM2}wait {COLOR}",
"lock ": "{CUSTOM2}lock {COLOR}",
"unlock ": "{CUSTOM2}unlock {COLOR}",
"set ": "{CUSTOM2}set {COLOR}",
"to ": "{CUSTOM2}to {COLOR}",
"function ": "{CUSTOM2}function {COLOR}",
"return ": "{CUSTOM2}return {COLOR}",
"if ": "{CUSTOM2}if {COLOR}",
"parameter ": "{CUSTOM2}parameter {COLOR}",
"list ": "{CUSTOM2}list {COLOR}",
"switch ": "{CUSTOM2}switch {COLOR}",

":": "{CUSTOM3}:{COLOR}",
".": "{CUSTOM3}.{COLOR}",
",": "{CUSTOM3},{COLOR}",
"<": "{CUSTOM3}<{COLOR}",
">": "{CUSTOM3}>{COLOR}",
"=": "{CUSTOM3}={COLOR}",
"*": "{CUSTOM3}*{COLOR}",
"/": "{CUSTOM3}/{COLOR}",
"+": "{CUSTOM3}+{COLOR}",
"-": "{CUSTOM3}-{COLOR}",
"(": "{CUSTOM3}({COLOR}",
")": "{CUSTOM3}){COLOR}",

"true": "{CUSTOM4}true{COLOR}",
"false": "{CUSTOM4}false{COLOR}",

"{CUSTOM1}": "[#4286f4]",
"{CUSTOM2}": "[#EFCE39]",
"{CUSTOM3}": "[#9D39EF]",
"{CUSTOM4}": "[#291FE2]"
}

This is handled by the FreeFormat function, which uses the ReplaceString function:

public static string FreeFormat(string input, Dictionary<string, object> p, bool toUpper)
{
    if (toUpper)
    {
        foreach (KeyValuePair<string, object> kvpair in p)
            input = ReplaceString(input, kvpair.Key, (kvpair.Value).ToString().ToUpper(), StringComparison.InvariantCultureIgnoreCase);
    
        return input;
    }
    
    foreach (KeyValuePair<string, object> kvpair in p)
        input = ReplaceString(input, kvpair.Key, (kvpair.Value).ToString(), StringComparison.InvariantCultureIgnoreCase);
    
    return input;
}

public static string ReplaceString(string str, string oldValue, string newValue, StringComparison comparison)
{
    StringBuilder sb = new StringBuilder();

    int previousIndex = 0;
    int index = str.IndexOf(oldValue, comparison);
    while (index != -1)
    {
        sb.Append(str.Substring(previousIndex, index - previousIndex));
        sb.Append(newValue);
        index += oldValue.Length;

        previousIndex = index;
        index = str.IndexOf(oldValue, index, comparison);
    }
    sb.Append(str.Substring(previousIndex));

    return sb.ToString();
}

I'll get back to this post soon on why it's written like that. I guess it's never too late to document your code. All I can say is wow.

 

Here's a list of every variable that you can set from the config file, kPM/Library/Patches/Patch.cfg:

//Buttons
[KSPField]
public int processorSelectorUpButton = 7;
[KSPField]
public int processorSelectorDownButton = 8;
[KSPField]
public int connectButton = 4;
[KSPField]
public int toggleProcessorPowerButton = 9;
[KSPField]
public string multiFunctionButtons = "17,18,19,20,21,22,23,10,11,12,13,14,15,16";

//Directional Buttons
[KSPField]
public int upButton = 0;
[KSPField]
public int downButton = 1;
[KSPField]
public int leftButton = 6;
[KSPField]
public int rightButton = 5;

//Enter and Cancel
[KSPField]
public int enterButton = 2;
[KSPField]
public int cancelButton = 3;

//Terminal Fields
[KSPField]
public int flagCount = 14;
[KSPField]
public string template = "";
[KSPField]
public string replacements = "";
[KSPField]
public string buttonSide = "##########";
[KSPField]
public string buttonSideSmall = "#";
[KSPField]
public string buttonEmptyLabel = "        ";
[KSPField]
public string flagSide = "##########";
[KSPField]
public string flagSideSmall = "#";
[KSPField]
public string flagEmptyLabel = "        ";
[KSPField]
public string textTint = "[#009900ff]";
[KSPField]
public string coloredTextTint = "[#ffffffff]";
[KSPField]
public string textTintUnpowered = "[#ffffff3e]";
[KSPField]
public string textTintButtonOn = "[#009900ff]";
[KSPField]
public string textTintButtonOff = "[#ffffffff]";
[KSPField]
public string textTintFlagOn = "[#009900ff]";
[KSPField]
public string textTintFlagOff = "[#000000]";
[KSPField]
public string keyboardActiveLabel = "KBRD";
[KSPField]
public string keyboardActiveTint = "[#FFF72B]";
[KSPField]
public string keyboardInactiveTint = "[#000000]";
[KSPField]
public int consoleWidth = 40;
[KSPField]
public int consoleHeight = 20;
[KSPField]
public bool longGuid = false;
[KSPField]
public bool coloredTerminal = true;
[KSPField]
public bool replacementsToUpper = false;

These are the things you can set in the pagehandler:

//@INTERNAL:NEEDS[kOS|kOSPropMonitor]:FINAL
//{
//    @PROP[RasterPropMonitorBasicMFD]
//    {
//        @name = kPMDisplay
//    }
//}

@PROP[RasterPropMonitorBasicMFD]:NEEDS[kOS|kOSPropMonitor]:FINAL
{
    @MODULE[RasterPropMonitor]
    {
        //Make All Buttons Except G Global
        @globalButtons = button_UP,button_DOWN,button_ENTER,button_ESC,button_HOME,button_RIGHT,button_LEFT,buttonR9,buttonR10, button_STBY, buttonR1, buttonR2, buttonR3, buttonR4, buttonR5, buttonR6, buttonR7, button_A, button_B, button_C, button_D, button_E, button_F
    
        // Change Home Page
        @PAGE[home]
        {
            @text = kPM/Library/Patches/kOS_home40x20.txt
        }
        
        //kOS Page Definition
        PAGE
        {
            //Main
            name = kOSRPMPage
            button = button_G
            textureURL = kPM/Library/Textures/kPM40x20Alt
            
            
            disableSwitchingTo=pluginEngineIgnitor,pluginVesselView,sas,smartass,targetmenu,graphs,aviapfd,navball,extcamAll,resources,flightlog,crewinfo,shipinfo,targetcam,orbitgraphical,orbit,map,description,test,home
            
            PAGEHANDLER
            {
                //Class name is kOS Monitor
                name = kOSMonitor
                
                //This is the terminal template
                template = kPM/Library/Terminals/terminal40x20.txt
                
                //This is the highlighting
                replacements = kPM/Library/Replacements/default.json
                
                //Processors are named sanely
                method = ContentProcessor
                buttonClickMethod = ButtonProcessor
                
                //Labels
                buttonEmptyLabel = LABEL
                flagEmptyLabel = FLAG
                
                //kOSProcessor TermWindow
                consoleWidth = 40
                consoleHeight = 15
                
                //Text Tint
                textTint = [#009900ff]
                textTintUnpowered = [#ffffff3e]
            }
        }
    }
}

 

Edited by dsonbill
Link to comment
Share on other sites

37 minutes ago, dsonbill said:

This is not the ID of the cpu, but rather the ID of the monitor,

I found my mistake later, just did not edit post.

I also found doubtful realisation of cursor, which shift letters to be placed. Can you find better implementation? May be by properly applied image.

37 minutes ago, dsonbill said:

Having multiple pages per monitor would be a huge benefit. I was thinking about doing this for a while, but I'm still thinking of an implementation.

Oh my explanation skill. I mean several pages per kOS CPU so pilot can open wanted page on wanted monitor and kOS prepare them all. As an example of implementation I suggest string variable (or list of strings) to be shown as a page content.

37 minutes ago, dsonbill said:

At the least, you have the flag panel, which gives you this ability plus the dirty IPC that you can get from it (Set monitor0flag1 to something from cpu 0, then cpu 1 reads monitor0flag1).

I still did not get the need of flag panel at all. I see labels are perfect to be used as flags and I do not need many. And what is IPC? For inter-process communication we have messaging system.

I see your attempts to separate monitors but different flags and labels are meaningless IMHO with the same text content.

37 minutes ago, dsonbill said:

And yeah, the color thing. We'll see.

To minimize copypaste you can minimize color names to the configured list.

37 minutes ago, dsonbill said:

Also definitely interested in implementing the vector graphics from RPM - I'll take a look into that this time around as well.

I do not know your possibilities. Can you add something like "[x100y200][-x110y250]" to draw line from (100,200) to (110,250) by current color on the layer under the text? Can you add something like "[p:stopsign]" to show "stopsign.dds in some position? Can you add something like "[c:camera1]" to show picture from mentioned camera?

Edited by Sebra
Link to comment
Share on other sites

6 hours ago, Sebra said:

3.Russian characters are broken. The same is on Terminal, so doubt you can fix it. KOS probably ignores high bit and use 128 of 256 codes.

I noticed this thread pop up when I did a search of kOS mentions in the last week or so.

I'd like to point out, in case it's relevant here, that we've got a new pull request merged in that lets users pick their own font from their OS to use, and we'll be deprecating the use of that tile texture file we're currently using.  The relevant pull request is here:

https://github.com/KSP-KOS/KOS/pull/1948

This is not yet in public release, but it is going to be in the next release, whenever that ends up being.  (It's already merged into our development source code branch).

If you're contemplating engaging in some complex workaround for the current ASCII-Only capabilities of kOS, you might want to double-check that you're not working on something that will become moot.

I'd also like to alter the kerboscript parser rules to allow multi-lingual identifiers (right now it just uses ranges like [a-z] to define what counts as a letter).  The next official KSP release is all about localizations so it seemed like the right time to finally fix this in kOS.

 

 

 

Link to comment
Share on other sites

4 minutes ago, Sebra said:

And what is IPC? For Inter Process Communications we have messaging system.

This is exactly what it is! So don't use it for that!

5 minutes ago, Sebra said:

I still did not get the need of flag panel at all. I see labels are perfect to be used as flags and I do not need many.

I see your attempts to separate monitors but different flags and labels are meaningless IMHO with the same text content.

The beauty of the template that I posted is that you can easily remove the flag panel if you don't like it, and replace it with more lines of code :wink: 

Your kPM/Library/Patches/Patch.cfg would look like this:

//@INTERNAL:NEEDS[kOS|kOSPropMonitor]:FINAL
//{
//    @PROP[RasterPropMonitorBasicMFD]
//    {
//        @name = kPMDisplay
//    }
//}

@PROP[RasterPropMonitorBasicMFD]:NEEDS[kOS|kOSPropMonitor]:FINAL
{
    @MODULE[RasterPropMonitor]
    {
        //Make All Buttons Except G Global
        @globalButtons = button_UP,button_DOWN,button_ENTER,button_ESC,button_HOME,button_RIGHT,button_LEFT,buttonR9,buttonR10, button_STBY, buttonR1, buttonR2, buttonR3, buttonR4, buttonR5, buttonR6, buttonR7, button_A, button_B, button_C, button_D, button_E, button_F
    
        // Change Home Page
        @PAGE[home]
        {
            @text = kPM/Library/Patches/kOS_home40x20.txt
        }
        
        //kOS Page Definition
        PAGE
        {
            //Main
            name = kOSRPMPage
            button = button_G
            textureURL = kPM/Library/Textures/kPM40x20Alt
            
            
            disableSwitchingTo=pluginEngineIgnitor,pluginVesselView,sas,smartass,targetmenu,graphs,aviapfd,navball,extcamAll,resources,flightlog,crewinfo,shipinfo,targetcam,orbitgraphical,orbit,map,description,test,home
            
            PAGEHANDLER
            {
                //Class name is kOS Monitor
                name = kOSMonitor
                
                //This is the terminal template
                template = kPM/Library/Terminals/terminal40x20.txt
                
                //This is the highlighting
                replacements = kPM/Library/Replacements/default.json
                
                //Processors are named sanely
                method = ContentProcessor
                buttonClickMethod = ButtonProcessor
                
                //Labels
                buttonEmptyLabel = LABEL
                flagEmptyLabel = FLAG
                
                //kOSProcessor TermWindow
                consoleWidth = 40
                consoleHeight = 17
                //ADJUSTED FOR REMOVING THE FLAG PANEL
                
                //Text Tint
                textTint = [#009900ff]
                textTintUnpowered = [#ffffff3e]
            }
        }
    }
}

And your kPM/Library/Terminals/terminal40x20.txt would look like this:

{buttonLabel0} {buttonLabel1} {buttonLabel2} {buttonLabel3} {buttonLabel4} {buttonLabel5} EXIT
[#60F8F9]CPU: {currentCPU}   [#60F8F9]ID: {GUID}   {keyboardFlag}
{l1}
{l2}
{l3}
{l4}
{l5}
{l6}
{l7}
{l8}
{l9}
{l10}
{l11}
{l12}
{l13}
{l14}
{l15}
{l16}
{l17}
{buttonLabel7} {buttonLabel8} {buttonLabel9} {buttonLabel10} {buttonLabel11} {buttonLabel12} {buttonLabel13}}

 

16 minutes ago, Sebra said:

I also found doubtful realisation of cursor, which shift letters to be placed. Can you find better implementation? May be by properly applied image.

I'll try to think about a better cursor. It may be very possible now that you mention it.

 

18 minutes ago, Sebra said:

Oh my explanation skill. I mean several pages per kOS CPU so pilot can open wanted page on wanted monitor and kOS prepare them all. As an example of implementation I suggest string variable (or list of strings) to be shown as a page content.

I have something in mind that you will be very happy about if I get to it.

 

20 minutes ago, Sebra said:

I do not know your possibilities. Can you add something like "[x100y200][-x110y250]" to draw line from (100,200) to (110,250) by current color on the layer under the text? Can you add something like "[p:stopsign]" to show "stopsign.dds in some position? Can you add something like "[c:camera1]" to show picture from mentioned camera?

I may just have to write my own RPM background handler finally.

Link to comment
Share on other sites

Further explanation of what we're replacing the kOS font_sml.png file with:

We'll have a class called kOS.AssetManager, which will have the following static method in it (Edit: not static, but nearly so, because we only create on instance of AssetManager, which you can obtain with kOS.AssetManager.Instance.)
 

public Font GetSystemFontByNameAndSize(string[] names, int size, bool checkMono);

names: a list of font names to try, in order from most desired to least desired.  The system will pick whichever font it finds first from the list that is installed and works.  (You need to use the full name that includes all the weighting options you want, ie "Consolas Bold Italic")

size: the font's point size.  Unity's docs are (as usual) unclear on what it's measured in, but I assume it's pixel height not point height.

checkMono: If true, then you are demanding that only monospaced fonts are allowed, and if a font in the name list appears to be proportional width, then it will not count and it will try the next font in the list.  (kOS performs a heuristic test to find out if the font is monospaced.  Sadly, Unity does not expose that header-level monospace flag for the font so we have to actually load it and try a sample of text to find out, which this method will do "in its head" in a Texture2D that it then immediately throws away after the test is done.)

If either none of the font names existed, or if they did but they were all proportional and you had the checkMono flag on, then it returns null, else it returns the Unity Font object for the first font in the list that worked, and you can then use that for whatever you like.

I don't know if you'll find that useful or just annoying.  But it's what kOS is switching to in the future.

 

Edited by Steven Mading
Link to comment
Share on other sites

19 minutes ago, Steven Mading said:

This is not yet in public release, but it is going to be in the next release, whenever that ends up being.

Thanks! Can I get test version? For testing purposes.

9 minutes ago, Steven Mading said:

I don't know if you'll find that useful or just annoying.  But it's what kOS is switching to in the future.

So kOS would read fonts from windows based on configured list. Am I right?

30 minutes ago, dsonbill said:

I have something in mind that you will be very happy about if I get to it.

It seems you do not want  to discuss it.

Link to comment
Share on other sites

Sounds like something that would also be useful inside of RPM. RPM has it's own font thing, and I'm not sure how it'll work with other languages once that is implemented.

I'll either have some sort of work around or I'll start working on doing something similar for RPM when the time comes.

Link to comment
Share on other sites

5 minutes ago, Sebra said:

So kOS would read fonts from windows based on configured list. Am I right?

"From Windows" -> "From Whatever OS It's Running On which may or may not be Windows."

The reason I went with that as opposed to shipping with a font (Aside from Unity assetbundles being unsupported without the professional version up until recently when that changed) is that there's no way I'd be qualified to pick a good Unicode font for Kanji, for Cyrillic, etc.  But a person who wants such a font is likely to have such a font on their own computer.  Also, it's no longer possible for one font to cover all of Unicode well anymore.  The TTF format doesn't allow enough distinct codes.  So that's all the more reason not to attempt to use a one-size-fits-all font.

Quote

Can I get test version? For testing purposes.

It's available on github if you have the dev environment set up to compile KSP mods (which I assume you do if you're wanting to work on mods).  You'd need to select the "develop" branch, not the "master" branch.  ("master" is where we put things only at the moment of cutting a release).

https://github.com/KSP-KOS/KOS

Link to comment
Share on other sites

1 minute ago, Steven Mading said:

"From Windows" -> "From Whatever OS It's Running On which may or may not be Windows."

Of course windows was as an example only.

2 minutes ago, Steven Mading said:

It's available on github if you have the dev environment set up to compile KSP mods (which I assume you do if you're wanting to work on mods).

Not yet. But would have.

Link to comment
Share on other sites

On 16.04.2017 at 11:21 PM, dsonbill said:

 

On 16.04.2017 at 10:56 PM, Sebra said:

I do not know your possibilities. Can you add something like "[x100y200][-x110y250]" to draw line from (100,200) to (110,250) by current color on the layer under the text? Can you add something like "[p:stopsign]" to show "stopsign.dds in some position? Can you add something like "[c:camera1]" to show picture from mentioned camera?

I may just have to write my own RPM background handler finally.

That is what I want to repeat. :wink:

Link to comment
Share on other sites

6 minutes ago, Sebra said:

That is what I want to repeat. :wink:

That looks really great, and I understand what you want from the page thing.

 

I have a rough idea of what I'll do for the page system - I'll write something up soon. I'm setting up my dev environment now and testing the new versions. There probably isn't anything broken with kPM so far, so this probably won't take long.

I know that is something a lot of programmers have thought, though.

Link to comment
Share on other sites

  • 7 months later...

Hi everyone...

I just started with KOS... and I wished so bad that a mod like this would exit AND HERE IT IS! :-)

Not sure though if this is still being developed or not ...

Is the test version posted above, compatible with current KSP release 1.3? 

Thanks in advice.

Please don't stop develop this mod! :-)

Edited by bepsy3d
Link to comment
Share on other sites

  • 3 weeks later...
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...