Advertisement
Guest User

sfr Issues

a guest
Mar 30th, 2014
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 10.67 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Text;
  4. using UnityEngine;
  5. using HSHModules.Extensions;
  6. using KSP.IO;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using KSP;
  10.  
  11. namespace HSHModules
  12. {
  13.     public class FindTransform
  14.     {
  15.         private Transform f;
  16.  
  17.         private Transform Find()
  18.         {
  19.             if (this.f)
  20.                 return this.f;
  21.             else
  22.                 return (Transform)null;
  23.         }
  24.     }
  25.  
  26.     public class sfrUtility
  27.     {
  28.         public bool Found;
  29.  
  30.         public static Camera FindCamera(string name)
  31.         {
  32.             foreach (Camera c in Camera.allCameras)
  33.             {
  34.                 if (c.name == name)
  35.                     return c;
  36.             }
  37.             return (Camera)null;
  38.         }
  39.  
  40.         public static int Find(Transform part, string name, ref List<Transform> aTransform)
  41.         {
  42.             IEnumerator enumerator = part.GetEnumerator();
  43.             try
  44.             {
  45.                 while (enumerator.MoveNext())
  46.                 {
  47.                     Transform part1 = (Transform)enumerator.Current;
  48.                     if (part1.name.StartsWith(name))
  49.                         aTransform.Add(part1);
  50.                     sfrUtility.Find(part1, name, ref aTransform);
  51.                 }
  52.             }
  53.             finally
  54.             {
  55.                 IDisposable disposable = enumerator as IDisposable;
  56.                 if (disposable != null)
  57.                     disposable.Dispose();
  58.             }
  59.             return part.childCount;
  60.         }
  61.  
  62.         public static void ChangeLayer(Transform part, int layer)
  63.         {
  64.             if (!part)
  65.                 return;
  66.             if (!part.camera)
  67.                 part.gameObject.layer = layer;
  68.             IEnumerator enumerator = part.GetEnumerator();
  69.             try
  70.             {
  71.                 while (enumerator.MoveNext())
  72.                     ChangeLayer((Transform)enumerator.Current, layer);
  73.             }
  74.             finally
  75.             {
  76.                 IDisposable disposable = enumerator as IDisposable;
  77.                 if (disposable != null)
  78.                     disposable.Dispose();
  79.             }
  80.         }
  81.  
  82.         public static Transform FindTransform(Transform transform1, string name)
  83.         {
  84.             if (transform1.name == name)
  85.                 return transform1;
  86.             IEnumerator enumerator = transform1.GetEnumerator();
  87.             try
  88.             {
  89.                 while (enumerator.MoveNext())
  90.                 {
  91.                     Transform transform = sfrUtility.FindTransform((Transform)enumerator.Current, name);
  92.                     if (transform)
  93.                         return transform;
  94.                 }
  95.             }
  96.             finally
  97.             {
  98.                 IDisposable disposable = enumerator as IDisposable;
  99.                 if (disposable != null)
  100.                     disposable.Dispose();
  101.             }
  102.             return (Transform)null;
  103.         }
  104.     }
  105.  
  106.     public class sfrInternal : PartModule
  107.     {
  108.  
  109.         private Transform kspParent;
  110.         private Vector3 kspPosition;
  111.         private Quaternion kspRotation;
  112.         private bool isActive;
  113.         private bool packed;
  114.  
  115.         public override void OnAwake()
  116.         {
  117.             base.OnAwake();
  118.         }
  119.  
  120.         public override void OnLoad(ConfigNode node)
  121.         {
  122.             base.OnLoad(node);
  123.         }
  124.  
  125.         public override void OnSave(ConfigNode node)
  126.         {
  127.             base.OnSave(node);
  128.         }
  129.  
  130.         public override void OnStart(PartModule.StartState state)
  131.         {
  132.             base.OnStart(state);
  133.         }
  134.  
  135.         public override void OnUpdate()
  136.         {
  137.             base.OnUpdate();
  138.  
  139.             if (!part.internalModel)
  140.             {
  141.                 part.CreateInternalModel();
  142.                 part.vessel.SetActiveInternalPart(part);
  143.                 kspParent = part.transform;//InternalCamera.Instance.transform.parent;
  144.                 if (!part.internalModel)
  145.                     part.internalModel.SetVisible(true);
  146.                 part.internalModel.transform.parent = part.transform;
  147.                 part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f);
  148.                 part.internalModel.transform.localPosition = Vector3.zero;
  149.                 if (part.protoModuleCrew.Count > 0)
  150.                 {
  151.                     part.internalModel.Initialize(part);
  152.                     part.internalModel.enabled = true;
  153.                     using (List<ProtoCrewMember>.Enumerator enumerator = ((List<ProtoCrewMember>)part.protoModuleCrew).GetEnumerator())
  154.                     {
  155.                         while (enumerator.MoveNext())
  156.                         {
  157.                             ProtoCrewMember current = enumerator.Current;
  158.                             if (current.seat && !part.vessel.packed)
  159.                             {
  160.                                 current.seat.enabled = true;
  161.                                 current.seat.SpawnCrew();
  162.                             }
  163.                             if (current.KerbalRef)
  164.                             {
  165.                                 current.KerbalRef.enabled = true;
  166.                                 current.KerbalRef.kerbalCam.cullingMask = 1;
  167.                             }
  168.                         }
  169.                     }
  170.                     using (List<InternalSeat>.Enumerator enumerator = part.internalModel.seats.GetEnumerator())
  171.                     {
  172.                         while (enumerator.MoveNext())
  173.                         {
  174.                             InternalSeat current = enumerator.Current;
  175.                             if (current.kerbalRef)
  176.                                 current.SpawnCrew();
  177.                             if (current.portraitCamera != null)
  178.                                 current.portraitCamera.cullingMask = 65537;
  179.                         }
  180.                     }
  181.                 }
  182.             }
  183.             Exception exception;
  184.             if (isActive != part.vessel.isActiveVessel && !vessel.packed)
  185.             {
  186.                 isActive = part.vessel.isActiveVessel;
  187.                 if (part.internalModel && part.protoModuleCrew.Count > 0)
  188.                 {
  189.                     part.vessel.SetActiveInternalPart(part);
  190.                     part.internalModel.Initialize(part);
  191.                     using (List<InternalSeat>.Enumerator enumerator = part.internalModel.seats.GetEnumerator())
  192.                     {
  193.                         while (enumerator.MoveNext())
  194.                         {
  195.                             InternalSeat current = enumerator.Current;
  196.                             current.enabled = true;
  197.                             if (current.portraitCamera)
  198.                                 current.portraitCamera.cullingMask = 1;
  199.                         }
  200.                     }
  201.                     try
  202.                     {
  203.                         using (List<ProtoCrewMember>.Enumerator enumerator = part.protoModuleCrew.GetEnumerator())
  204.                         {
  205.                             while (enumerator.MoveNext())
  206.                             {
  207.                                 ProtoCrewMember current = enumerator.Current;
  208.                                 if (current.seat && !part.vessel.packed)
  209.                                 {
  210.                                     current.seat.enabled = true;
  211.                                     current.seat.SpawnCrew();
  212.                                 }
  213.                                 if (current.KerbalRef)
  214.                                 {
  215.                                     current.KerbalRef.enabled = true;
  216.                                     current.KerbalRef.kerbalCam.cullingMask = 1;
  217.                                 }
  218.                             }
  219.                         }
  220.                     }
  221.                     catch (Exception ex)
  222.                     {
  223.                         exception = ex;
  224.                     }
  225.                 }
  226.             }
  227.             try
  228.             {
  229.                 if (sfrUtility.FindCamera("InternalCamera") && part.vessel.isActiveVessel)
  230.                 {
  231.                     sfrUtility.ChangeLayer(part.internalModel.transform, 16);
  232.                     part.internalModel.transform.parent = kspParent;
  233.                     part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f); //Working at root
  234.                     print(this.part.transform.localPosition.ToString());
  235.                     kspPosition = this.part.transform.position - this.vessel.rootPart.transform.position;
  236.                     part.internalModel.transform.position = new Vector3(kspPosition.x, kspPosition.y, kspPosition.z);  // Fairly certain these need to be reordered.
  237.                     //part.internalModel.transform.localPosition = Vector3.zero; //Working at root
  238.                     print("1");
  239.                 }
  240.                 else
  241.                 {
  242.                     sfrUtility.ChangeLayer(part.internalModel.transform, 0);
  243.                     part.internalModel.SetVisible(true);
  244.                     part.internalModel.gameObject.SetActive(true);
  245.                     part.internalModel.transform.parent = part.transform;
  246.                     part.internalModel.transform.localRotation = new Quaternion(0.0f, 0.7f, -0.7f, 0.0f);
  247.                     part.internalModel.transform.localPosition = Vector3.zero;
  248.                     print("2");
  249.                 }
  250.             }
  251.             catch (Exception ex)
  252.             {
  253.                 exception = ex;
  254.             }
  255.             try
  256.             {
  257.                 using (List<ProtoCrewMember>.Enumerator enumerator = part.protoModuleCrew.GetEnumerator())
  258.                 {
  259.                     while (enumerator.MoveNext())
  260.                     {
  261.                         ProtoCrewMember current = enumerator.Current;
  262.                         if (current.seat)
  263.                         {
  264.                             current.seat.enabled = true;
  265.                             if (current.seat.portraitCamera)
  266.                                 current.seat.portraitCamera.cullingMask = (65537);
  267.                         }
  268.                         if (current.KerbalRef)
  269.                         {
  270.                             current.KerbalRef.enabled = true;
  271.                             current.KerbalRef.kerbalCam.cullingMask = (65537);
  272.                             if (current.KerbalRef.kerbalCamOverlay)
  273.                                 current.KerbalRef.kerbalCamOverlay.layer = 16;
  274.                         }
  275.                     }
  276.                 }
  277.             }
  278.             catch (Exception ex)
  279.             {
  280.                 exception = ex;
  281.             }
  282.         }
  283.     }
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement