Jump to content

Alskari

Members
  • Posts

    245
  • Joined

  • Last visited

Everything posted by Alskari

  1. Hmmmm I think I usually use a fuel tank, or a plug and port. I remember be desperate to cut parts anywhere possible.... so if there aren't floors/walls I bet that's why. Honestly I apologize if you're having trouble. A brighter tomorrow is coming, it'll just be a smidgen longer. I nearly have the kinks worked out and Gus is going to help me as well.
  2. Can people who actually use this mod (probably 3 of you) be so kind as to help me condense my parts list? I know I have about a bazillion parts, made worse by KSP's root node issue, and I'd like to cull that down just a bit. Otherwise I'm going to just start hacking away until I think I have something manageable. TL;DR - What parts should I remove?
  3. Aww crap I didn't even notice you people posting on my thread. I'm sorry for my continued negligence. I couldn't figure out how to get kerbals to display as I wanted without lots of irritating bugs. I'm going to continue chasing that, but in the mean time I've been idly modelling out some assorted ideas. These will probably all be more base oriented. If Gus hasn't gotten sick of me I'll be providing him with some new parts to beta test before long. I appreciate the comments and deserve any frustration. Expect at least a few new parts by the end of this week. EDIT: Everything is going to be structural in nature. I don't have the willpower to redo all of my Unity 4.3.3 animations in Unity 4.2. Apparently the .24 update should add Unity 4.3.3 support, so I'm going to wait for that.
  4. Just delete that line about controlTransformName. I have no idea what it does, or how it got there. Post your .cfg file and another screenshot of your workspace.
  5. PART { name = Dock module = Part author = Alskari MODEL { model = HSH/Parts/Dock position = 0, 0 ,0 scale = 1, 1, 1 rotation = 0, 0, 0 } rescaleFactor = 1 NODE { name = top transform = TF5 size = 1.0 method = FIXED_JOINT //FIXED_JOINT, HINGE_JOINT, LOCKED_JOINT, MERGED_PHYSICS or NO_PHYSICS } NODE { name = CONNECT1 transform = TF1 size = 1.0 method = FIXED_JOINT //FIXED_JOINT, HINGE_JOINT, LOCKED_JOINT, MERGED_PHYSICS or NO_PHYSICS } NODE { name = CONNECT2 transform = TF2 size = 1.0 method = FIXED_JOINT //FIXED_JOINT, HINGE_JOINT, LOCKED_JOINT, MERGED_PHYSICS or NO_PHYSICS } NODE { name = CONNECT3 transform = TF3 size = 1.0 method = FIXED_JOINT //FIXED_JOINT, HINGE_JOINT, LOCKED_JOINT, MERGED_PHYSICS or NO_PHYSICS } NODE { name = CONNECT4 transform = TF4 size = 1.0 method = FIXED_JOINT //FIXED_JOINT, HINGE_JOINT, LOCKED_JOINT, MERGED_PHYSICS or NO_PHYSICS } MODULE { name = ModuleDockingNode referenceAttachNode = CONNECT1 nodeType = size1 nodeTransformName = TF1 controlTransformName = HSH } MODULE { name = ModuleDockingNode referenceAttachNode = CONNECT2 nodeType = size1 nodeTransformName = TF2 controlTransformName = HSH } MODULE { name = ModuleDockingNode referenceAttachNode = CONNECT3 nodeType = size1 nodeTransformName = TF3 controlTransformName = HSH } MODULE { name = ModuleDockingNode referenceAttachNode = CONNECT4 nodeType = size1 nodeTransformName = TF4 controlTransformName = HSH } cost = 5000 category = Structural subcategory = 0 title = Docking Port 4m manufacturer = W.E.R.I. description = Docks to other HSH ports. attachRules = 1,0,1,1,0 // --- standard part parameters --- mass = 1 dragModelType = default maximum_drag = 0.2 minimum_drag = 0.2 angularDrag = 1 crashTolerance = 100 breakingForce = 2500 breakingTorque = 2500 maxTemp = 5000 fuelCrossFeed=True } Unity Object: Door1-6 are the segmented collision meshes which allow for the part to be hollow. TF1-4 are located roughly where the triangular warning signs are. These are the docking nodes. TF5 is the bottom node for connecting back to the structure.
  6. This makes me laugh because I feel the same way trying to understand how to write plugins for this game. I'm still getting things put back together from my last big burst of activity. When I have a screenshot I'll post it here. I think you're 99% of the way there and probably have issues with the names of the nodes. Your transforms in Unity have two different names, which correspond to two different names in the .cfg file? Are you defining the transform with a node and a module code section in your .cfg? If all else fails copy my .cfg file and change the appropriate file names, transforms and such. See if that fixes it.
  7. Not sure if you've figured it out yourself yet, but this is definitely possible. The docking ports included in my mod have 4 points of contact for a stronger connection. Take a look at the .cfg files to see how the transforms are used. It might be as simple as a naming issue. Warning my mod is very RAM hungry at the moment, so you may want to delete out the non-relevant parts. If you need I can get some screenshots of my Unity workspace as well.
  8. Wow, I had played with this mod trying to get it to work back in September, thank you for pointing me to it again. I didn't realize it had been updated.
  9. I have a mod oriented around hollow parts which allow players to create enclosed bases or ships for their kerbals to move around in. I'm trying to alter the sfr code. Currently the IVA position and rotation is based off of the first part placed in the VAB. The code works perfectly if the command pod is the first thing used, however I would like to make it a bit more flexible. I've posted the relevant bits of code below. /* * sfr * License: BY: Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0): http://creativecommons.org/licenses/by-sa/3.0/ */ using System; using System.Linq; using System.Text; using UnityEngine; using HSHModules.Extensions; using KSP.IO; using System.Collections; using System.Collections.Generic; using KSP; namespace HSHModules { public class FindTransform { private Transform f; private Transform Find() { if (this.f) return this.f; else return (Transform)null; } } public class sfrUtility { public bool Found; public static Camera FindCamera(string name) { foreach (Camera c in Camera.allCameras) { if (c.name == name) return c; } return (Camera)null; } public static int Find(Transform part, string name, ref List<Transform> aTransform) { IEnumerator enumerator = part.GetEnumerator(); try { while (enumerator.MoveNext()) { Transform part1 = (Transform)enumerator.Current; if (part1.name.StartsWith(name)) aTransform.Add(part1); sfrUtility.Find(part1, name, ref aTransform); } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) disposable.Dispose(); } return part.childCount; } public static void ChangeLayer(Transform part, int layer) { if (!part) return; if (!part.camera) part.gameObject.layer = layer; IEnumerator enumerator = part.GetEnumerator(); try { while (enumerator.MoveNext()) ChangeLayer((Transform)enumerator.Current, layer); } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) disposable.Dispose(); } } public static Transform FindTransform(Transform transform1, string name) { if (transform1.name == name) return transform1; IEnumerator enumerator = transform1.GetEnumerator(); try { while (enumerator.MoveNext()) { Transform transform = sfrUtility.FindTransform((Transform)enumerator.Current, name); if (transform) return transform; } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) disposable.Dispose(); } return (Transform)null; } } public class sfrInternal : PartModule { private Transform kspParent; private Vector3 kspPosition; private Quaternion kspRotation; private bool isActive; private bool packed; public override void OnAwake() { base.OnAwake(); } public override void OnLoad(ConfigNode node) { base.OnLoad(node); } public override void OnSave(ConfigNode node) { base.OnSave(node); } public override void OnStart(PartModule.StartState state) { base.OnStart(state); } public override void OnUpdate() { base.OnUpdate(); if (!part.internalModel) { part.CreateInternalModel(); part.vessel.SetActiveInternalPart(part); kspParent = part.transform;//InternalCamera.Instance.transform.parent; if (!part.internalModel) part.internalModel.SetVisible(true); part.internalModel.transform.parent = part.transform; part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f); part.internalModel.transform.localPosition = Vector3.zero; if (part.protoModuleCrew.Count > 0) { part.internalModel.Initialize(part); part.internalModel.enabled = true; using (List<ProtoCrewMember>.Enumerator enumerator = ((List<ProtoCrewMember>)part.protoModuleCrew).GetEnumerator()) { while (enumerator.MoveNext()) { ProtoCrewMember current = enumerator.Current; if (current.seat && !part.vessel.packed) { current.seat.enabled = true; current.seat.SpawnCrew(); } if (current.KerbalRef) { current.KerbalRef.enabled = true; current.KerbalRef.kerbalCam.cullingMask = 1; } } } using (List<InternalSeat>.Enumerator enumerator = part.internalModel.seats.GetEnumerator()) { while (enumerator.MoveNext()) { InternalSeat current = enumerator.Current; if (current.kerbalRef) current.SpawnCrew(); if (current.portraitCamera != null) current.portraitCamera.cullingMask = 65537; } } } } Exception exception; if (isActive != part.vessel.isActiveVessel && !vessel.packed) { isActive = part.vessel.isActiveVessel; if (part.internalModel && part.protoModuleCrew.Count > 0) { part.vessel.SetActiveInternalPart(part); part.internalModel.Initialize(part); using (List<InternalSeat>.Enumerator enumerator = part.internalModel.seats.GetEnumerator()) { while (enumerator.MoveNext()) { InternalSeat current = enumerator.Current; current.enabled = true; if (current.portraitCamera) current.portraitCamera.cullingMask = 1; } } try { using (List<ProtoCrewMember>.Enumerator enumerator = part.protoModuleCrew.GetEnumerator()) { while (enumerator.MoveNext()) { ProtoCrewMember current = enumerator.Current; if (current.seat && !part.vessel.packed) { current.seat.enabled = true; current.seat.SpawnCrew(); } if (current.KerbalRef) { current.KerbalRef.enabled = true; current.KerbalRef.kerbalCam.cullingMask = 1; } } } } catch (Exception ex) { exception = ex; } } } try { if (sfrUtility.FindCamera("InternalCamera") && part.vessel.isActiveVessel) { sfrUtility.ChangeLayer(part.internalModel.transform, 16); part.internalModel.transform.parent = kspParent; part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f); //Working at root print(this.part.transform.localPosition.ToString()); kspPosition = this.part.transform.position - this.vessel.rootPart.transform.position; part.internalModel.transform.position = new Vector3(kspPosition.x, kspPosition.y, kspPosition.z); // Fairly certain these need to be reordered. //part.internalModel.transform.localPosition = Vector3.zero; //Working at root print("1"); } else { sfrUtility.ChangeLayer(part.internalModel.transform, 0); part.internalModel.SetVisible(true); part.internalModel.gameObject.SetActive(true); part.internalModel.transform.parent = part.transform; part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f); part.internalModel.transform.localPosition = Vector3.zero; print("2"); } } catch (Exception ex) { exception = ex; } try { using (List<ProtoCrewMember>.Enumerator enumerator = part.protoModuleCrew.GetEnumerator()) { while (enumerator.MoveNext()) { ProtoCrewMember current = enumerator.Current; if (current.seat) { current.seat.enabled = true; if (current.seat.portraitCamera) current.seat.portraitCamera.cullingMask = (65537); } if (current.KerbalRef) { current.KerbalRef.enabled = true; current.KerbalRef.kerbalCam.cullingMask = (65537); if (current.KerbalRef.kerbalCamOverlay) current.KerbalRef.kerbalCamOverlay.layer = 16; } } } } catch (Exception ex) { exception = ex; } } } }
  10. It is not forgotten. I've gotten the itch again to play KSP, and that always leads into modding. It will probably take me another month to get caught up on things and involved enough to make an update with worthwhile content additions. Apologies for my unannounced hiatus.
  11. Very much enjoying your stuff. Hope you keep going. Be careful with ladders and airlocks. Don't overlap the collision mesh or else you'll end up with 'exploding kerbal syndrome.'
  12. Alright, here is Alskari's HSH Starter Kit Warranty void upon download. All methods and examples guaranteed to be inefficient and sub par. ;-) The blender file in there is where I usually start playing around with new designs. Don't expect any of the models in that to be the exact same as their finished versions. I usually screw around until I get something roughly like I want, and then save as a separate file to clean up and finish. The gimp file is just a source for my various base colors. Glass is usually a 25% opacity. I also usually layer the AO bake on top of the base color I want and then knock it down to 25% opacity as well. I've had problems sharing Unity projects, so I've just included a few pictures for a basic idea on how I set things up.
  13. First off, I think I resolved the vulture issue. Although to be honest I'm not sure what exactly resolved the vulture issue, as I just deleted the duplicate .cfg files and replaced the existing models. Tested fine for me, but please let me know if you guys are having problems. Two questions: A) Where are you getting 500MB memory savings for the V8 pack? Are you talking in terms of RAM while KSP is running? What program are you using to shrink these .tga files? The 'legacy' parts are dead simple as far as textures, but he V8 have AO shading baked in. I'm surprised visual issues don't arise from reducing those.
  14. Gus has identified an issue. I'll be uploading a new version this evening.
  15. I didn't realize that was the case. In what sense is the game unplayable? Does it crash or not load parts? Oddly enough this was pulled straight from my testing installation of KSP, at least I thought...
  16. Do you have any crash logs? What other mods do you have installed?
  17. Guys apparently there may be an issue with this download corrupting older saves using previous iterations. As a rule always make sure you have your persistent save file backed up somewhere so you don't lose your ships. If you overwrite your existing HSH folder with the newest release, there may be issues. I did not do much testing mixing the older and newer parts. Some of them are probably named the same and are causing issues. I'll look into this. Any time you have a cockpit or crew containing part which does not have an IVA view you will need to click around the hatch. When you get the window, it will then give you the option to 'EVA' any kerbals in the part. Even stock parts used to work this way. Also, any part that has an IVA view will still work this way as well.
  18. 'Ultralight' Series is now out. I'll be condensing the original style into a 'legacy' release that is a lot more memory efficient. Once that's done I'll post it as a separate link in the original post.
  19. I'm bundling them up right now. I've been struck with alternating fits of anger and apathy, as my last three attempts at using the new sfrCommandPod code I've made result in nasty graphical glitches and parts failing to load. (A large source of irritation is that I designed all of the new crew pods on the assumption that I could get sfrCommandPod working the way I wanted. Now I'll have to redesign and I'm out of patience presently.) I admit defeat on this front. I'll kick out the new parts minus the command pods for now. Also I'm planning on making a blender file available so if people feel like trying to make things, they have something to start from.
  20. Yeah that looks much easier to use in my opinion. Let me know if you need any help with Unity animations. Currently I'm using the Vanguard plugin to allow for EVA interaction.
  21. You may want to consider slightly larger clearances, in space kerbals don't always orient the way you want. Since I haven't seen full EVA rotation capabilities yet I would be sure to keep that in mind.
  22. Beware face count. Also I'm having a buddy rework the 'Sea Sickness Mod' so I'll let you know how successful we are with that. You'll need the 'nudge' mechanic if nothing else. Even with 'Landed' vessels Kerbals have a terrible time walking on part generated collision meshes. They have a bad tendency of falling over and never getting up because they don't register that they've stopped falling.
×
×
  • Create New...