Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement