Jump to content

[1.11] Connected Living Spaces (Adopted) 2.0.0.6 (2020-12-29)


micha
 Share

Recommended Posts

1 hour ago, Tacombel said:

Wont that already happend ?

No. MM will only register a CLSInterfaces keyword if the interface dll is present. MM adds NEEDS keyword by looking for *.dll names and gamedata root folders names.
As long as no ConnectedLivingSpace.dll exists, and that no ConnectedLivingSpace gamedata root folder exists, a NEEDS[ConnectedLivingSpace] patch won't be applied.

The best solution to work around that KSP bug is having mods using CLSInterfaces.dll redistributing it from within their own mod folder, but renaming it with an unique name like "CLSInterfaces_MyMod.dll"

I confirm that this work without side issues, both in 1.12.2 and 1.11.1 (so before and after Squad modified the assembly loader).
The assembly loader will have two separate wrapper entries, but only one common interface assembly will actually be loaded :

1GlqOWP.png

This solution is the one that will have the least impact and require the least work from everyone's POV.
It doesn't require any change on CKAN and neither on the CLS side and won't break any player install that isn't already broken by the KSP bug.
It only require updating mods using the CLS interface.

Edited by Gotmachine
Link to comment
Share on other sites

Thanks everybody for chiming in, and argh, what a nightmare!

Why the bleep did KSP break something which has worked fine for years and years?

Moving forward, IMHO the best approach will be a unified one by all mods which publish APIs or include dependant DLLs from other mods. Will need to collate a list of mods and then have a chat to the authors to see what people think.

Link to comment
Share on other sites

4 hours ago, Gotmachine said:

No. MM will only register a CLSInterfaces keyword if the interface dll is present. MM adds NEEDS keyword by looking for *.dll names and gamedata root folders names.
As long as no ConnectedLivingSpace.dll exists, and that no ConnectedLivingSpace gamedata root folder exists, a NEEDS[ConnectedLivingSpace] patch won't be applied.

 

That's what I mean. As soon as somebody installs Kerbal Health, the DLL is there, whithout the "main" mod present, no?

Edited by Tacombel
Link to comment
Share on other sites

1 hour ago, Tacombel said:

That's what I mean. As soon as somebody installs Kerbal Health, the DLL is there, whithout the "main" mod present, no?

No. The CLS core functionality is in "ConnectedLivingSpace.dll", which is only distributed with CLS. That one will cause the "ConnectedLivingSpace" keyword to be added by MM (as well as the fact that a "ConnectedLivingSpace" folder exists in GameData).
"CLSInterfaces.dll" is an additional assembly distributed by both CLS and other mods using it, for the purpose of plugin interoperability.
It will indeed cause a "CLSInterfaces" keyword to be added to  MM, but nobody should ever be checking that in a MM NEEDS.

Edited by Gotmachine
Link to comment
Share on other sites

4 hours ago, Gotmachine said:

*sigh*... No, the dll isn't there. Should I really explain it a third time, or are you gonna read the post just above yours ?

I was referring to any mod that distributes the dll, should put the dll in to correct place and not in its own folder. 

There are a few mods which do.  If I've misunderstood the conversation, I apologize 

Link to comment
Share on other sites

With my return to modding,  and my resuming support of Ship Manifest, I'll also resume support of Connected Living Spaces.  Thanks to @micha for his support during my absence, and for keeping this mod alive.  I am deeply grateful.

My dev environment is setup now, so I'm working to get the source code repos updated with the updates that @micha has delivered.

Link to comment
Share on other sites

I'm having another issue that I can't figure out how to solve. I have two parts that are connected and passable, but for some reason, CLS is not putting them in the same internal space. I cannot figure out why. I even went through my persistence file and verified that the parts have the CLS module and it's enabled and configured properly. Nothing relevant in the logs. Anybody have any ideas for things I could try? For now I've enabled "allow unrestricted crew transfers" but that kind of defeats the point of having this mod at all.

UTsILkU.png

Y0Vmj8A.png

 

Link to comment
Share on other sites

1 hour ago, ruiluth said:

I'm having another issue that I can't figure out how to solve. I have two parts that are connected and passable, but for some reason, CLS is not putting them in the same internal space. I cannot figure out why. I even went through my persistence file and verified that the parts have the CLS module and it's enabled and configured properly. Nothing relevant in the logs. Anybody have any ideas for things I could try? For now I've enabled "allow unrestricted crew transfers" but that kind of defeats the point of having this mod at all.

UTsILkU.png

Y0Vmj8A.png

 

Check that the docking ports are open. Ship manifest can help with this.

Link to comment
Share on other sites

On 11/11/2021 at 8:27 AM, Tacombel said:

Check that the docking ports are open. Ship manifest can help with this.

The docking ports are open, that was the first thing I checked. If you look closely, you can see in the screenshots that the lower space includes both docking ports and the next part, and the upper space does not extend as far as the docking port. So that's definitely not the problem.

Link to comment
Share on other sites

3 hours ago, ruiluth said:

The docking ports are open, that was the first thing I checked. If you look closely, you can see in the screenshots that the lower space includes both docking ports and the next part, and the upper space does not extend as far as the docking port. So that's definitely not the problem.

Then probably that part has no configuration for CLS, or it is not pasable in that direction. I think that you can check the CLS configuration on the VAB.

 

Link to comment
Share on other sites

@ruiluththere is a patch that could be considered cheating, but you can use it:

GameData\zFinal\zzz_CLSMoreFreedomAddon.cfg

@PART[*ecoupler*]:HAS[!MODULE[ModuleConnectedLivingSpace],~description[*adial*]&#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*eparator*]:HAS[!MODULE[ModuleConnectedLivingSpace],#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*dapter*]:HAS[!MODULE[ModuleConnectedLivingSpace],#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*attery*]:HAS[!MODULE[ModuleConnectedLivingSpace],~description[*adial*]&#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[RC_stack]:HAS[!MODULE[ModuleConnectedLivingSpace]]:NEEDS[RealChute,ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = true
	}
}

It's part of my zFinal project, see signature (always up to date Dropbox archive).

Edited by Gordon Dry
added RealChute Stack Chute
Link to comment
Share on other sites

6 hours ago, Tacombel said:

Then probably that part has no configuration for CLS, or it is not pasable in that direction. I think that you can check the CLS configuration on the VAB.

Quote

I even went through my persistence file and verified that the parts have the CLS module and it's enabled and configured properly.

I tripled checked the part and it definitely does have it. The only thing I can think of that might change it is that it's a switchable part with variable length, as well as a variant that does not have a crew tunnel, but it's configured to have all nodes be passable, so... I'm not sure with that. The other weird thing is that it shows as connected in the VAB when I assemble the station, but not in flight.

5 hours ago, Gordon Dry said:

@ruiluththere is a patch that could be considered cheating, but you can use it:

GameData\zFinal\zzz_CLSMoreFreedomAddon.cfg

@PART[*ecoupler*]:HAS[!MODULE[ModuleConnectedLivingSpace],~description[*adial*]&#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*eparator*]:HAS[!MODULE[ModuleConnectedLivingSpace],#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*dapter*]:HAS[!MODULE[ModuleConnectedLivingSpace],#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

@PART[*attery*]:HAS[!MODULE[ModuleConnectedLivingSpace],~description[*adial*]&#attachRules[1,0,1,1,0]|#attachRules[1,0,1,0,0]|#attachRules[1,0,1,1,1]|#attachRules[1,0,1,0,1]]:NEEDS[ConnectedLivingSpace]:FINAL
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = false
	}
}

It's part of my zFinal project, see signature (always up to date Dropbox archive).

What is this meant to do? It looks like it just removes the ability to transfer kerbals through certain parts...

Link to comment
Share on other sites

  • 2 weeks later...

Hey all,

With the release of Ship Manifest, I'm now turning my attention to CLS.  I'll be pulling the latest code and going thru it.  I'll look over the issues posted here and in @Micha's Repo for any low hanging fruit.    Update soontm:D

Link to comment
Share on other sites

On 11/6/2021 at 1:10 AM, Papa_Joe said:

With my return to modding,  and my resuming support of Ship Manifest, I'll also resume support of Connected Living Spaces.  Thanks to @micha for his support during my absence, and for keeping this mod alive.  I am deeply grateful.

My dev environment is setup now, so I'm working to get the source code repos updated with the updates that @micha has delivered.

Yay. Lovely to see old friends!

I just dropped by seeking a moment out of real life. Great to see people still (trying!) to use Connected Living Space, and really thrilled to see that it being used with feature rich mods like Kerbal Health, 

I have read the discussion about conflicts with CLSInterfaces.dll with interest. I am sure things have moved on, and I can not remember much from when it was originally introduced, but the purpose of having a separate interfaces dll was to remove some of these sorts or problems by making the interface definition rigid and allowing the implementation and callers to change. It sounds like something has changed in KSP to make life harder for everyone, but it is great to see you all trying to find the best solution. Thanks everyone.

Edited by codepoet
Link to comment
Share on other sites

15 hours ago, codepoet said:

Yay. Lovely to see old friends!

I just dropped by seeking a moment out of real life. Great to see people still (trying!) to use Connected Living Space, and really thrilled to see that it being used with feature rich mods like Kerbal Health, 

I have read the discussion about conflicts with CLSInterfaces.dll with interest. I am sure things have moved on, and I can not remember much from when it was originally introduced, but the purpose of having a separate interfaces dll was to remove some of these sorts or problems by making the interface definition rigid and allowing the implementation and callers to change. It sounds like something has changed in KSP to make life harder for everyone, but it is great to see you all trying to find the best solution. Thanks everyone.

Wonderful to hear from you!  I do hope life is treating you and yours well!  I've buried a wife, overcome some strife, built a new life, and am embarking on a new adventure in Mexico, with a woman willing to give it a go!

Indeed, an assembly loading bug in KSP 1.12, caused an issue with duplicate DLL file names.  It is not consistent, and according to @Gotmachine depends on the mix of mods loaded.  Renaming the File embedded with each mod seems to correct the issue.  @HebaruSan at CKAN can rename the files for other mods on the fly at his end, but that does not solve the problem for everyone, and renders the renamed file inaccessable, as CLSInterfaces.dll is referenced in the mod assembly's dependencies.  It seems the least painful path is for modders to simply rename the file using their modname/acronym as a prefix or suffix for CLSInterfaces.dll, and rebind the dependency in their next release to that local file.

Your mod is alive and well, supported by this fine community!  Iirc, it is a *must* for Real Solar System enthusiasts.  Don't be a stranger!

Edited by Papa_Joe
Link to comment
Share on other sites

  • 3 weeks later...
6 hours ago, Gordon Dry said:

consider adding ClickThrougBlocker as dependency - and make CLS un-throughclickable.

Please note that @Papa_Joe has resumed development of CLS.

And if he reads this, I strongly hope that he will not do so. ClickThroughBlocker pulls in other dependencies and some of those I refuse to install in my game. I've discussed my issues with the author of those mods and we agreed to disagree.  That said, implementing similar functionality to avoid click-through is something I do strongly support and have already implemented and/or started work on such for other mods. 

For CLS I was torn between implemeting it for the current implementation, or by moving all of CLS to the "new" Unity windowing system which would provide this functionality by default as well as other benefits, albeit at a significant amount of initial development effort.

----

@Mods please lock this thread as it is no longer required.

Please see the original thread on CLS (linked in the OP).

Edited by micha
add hr between merged posts
Link to comment
Share on other sites

42 minutes ago, micha said:

Please note that @Papa_Joe has resumed development of CLS.

And if he reads this, I strongly hope that he will not do so. ClickThroughBlocker pulls in other dependencies and some of those I refuse to install in my game. I've discussed my issues with the author of those mods and we agreed to disagree.  That said, implementing similar functionality to avoid click-through is something I do strongly support and have already implemented and/or started work on such for other mods. 

For CLS I was torn between implemeting it for the current implementation, or by moving all of CLS to the "new" Unity windowing system which would provide this functionality by default as well as other benefits, albeit at a significant amount of initial development effort.

----

@Mods please lock this thread as it is no longer required.

Please see the original thread on CLS (linked in the OP).

Just to close this out, there is another way, and I just implemented it in ShipManifest.  I do not wish for such as dependency either... I will further refine the blocking code I already have and catch the remaining KSP UI elements that are not yet blocked.

 

Edited by Papa_Joe
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...