Exemple #1
0
        internal static void RegisterMHLaunchSites(EditorFacility facility)
        {
            foreach (KKLaunchSite site in allLaunchSites)
            {
                if (facility == EditorFacility.SPH && site.LaunchSiteType == SiteType.VAB)
                {
                    continue;
                }
                if (facility == EditorFacility.VAB && site.LaunchSiteType == SiteType.SPH)
                {
                    continue;
                }

                if (site.LaunchSiteName == "LaunchPad" || site.LaunchSiteName == "Runway")
                {
                    continue;
                }

                if (site.isOpen)
                {
                    site.spaceCenterFacility.editorFacility = facility;
                    //CreateMHLaunchSite(site, facility);
                }
                else
                {
                    site.spaceCenterFacility.editorFacility = EditorFacility.None;
                }
            }

            typeof(EditorDriver).GetMethod("setupValidLaunchSites", BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, null);
        }
        protected override void OnLoad(ConfigNode configNode)
        {
            base.OnLoad(configNode);

            url = ConfigNodeUtil.ParseValue<string>(configNode, "url");
            craftType = ConfigNodeUtil.ParseValue<EditorFacility>(configNode, "craftType");
        }
Exemple #3
0
 //        IEnumerator loadScene(GameScenes scenes, EditorFacility facility = EditorFacility.None)
 void loadScene(GameScenes scenes, EditorFacility facility = EditorFacility.None)
 {
     //yield return new WaitForEndOfFrame ();
     if (scenes != GameScenes.EDITOR)
     {
         HighLogic.LoadScene(scenes);
     }
     else if (facility != EditorFacility.None)
     {
         EditorFacility editorFacility = EditorFacility.None;
         if (ShipConstruction.ShipConfig != null)
         {
             editorFacility = ShipConstruction.ShipType;
         }
         if (HighLogic.LoadedSceneIsFlight && FlightGlobals.fetch)
         {
             FlightGlobals.PersistentVesselIds.Clear();
             FlightGlobals.PersistentLoadedPartIds.Clear();
             FlightGlobals.PersistentUnloadedPartIds.Clear();
         }
         EditorDriver.StartupBehaviour = (editorFacility == facility ? EditorDriver.StartupBehaviours.LOAD_FROM_CACHE : EditorDriver.StartupBehaviours.START_CLEAN);
         EditorDriver.StartEditor(facility);
     }
     InputLockManager.ClearControlLocks();
 }
Exemple #4
0
 public BuildListVessel(string name, string ls, double effCost, double bP, double integrP, string flagURL, float spentFunds, float integrCost, int editorFacility)
 {
     LaunchSite        = ls;
     ShipName          = name;
     EffectiveCost     = effCost;
     BuildPoints       = bP;
     IntegrationPoints = integrP;
     Progress          = 0;
     Flag = flagURL;
     if (editorFacility == (int)EditorFacilities.VAB)
     {
         Type            = ListType.VAB;
         FacilityBuiltIn = EditorFacility.VAB;
     }
     else if (editorFacility == (int)EditorFacilities.SPH)
     {
         Type            = ListType.SPH;
         FacilityBuiltIn = EditorFacility.SPH;
     }
     else
     {
         Type = ListType.None;
     }
     CannotEarnScience = false;
     Cost            = spentFunds;
     IntegrationCost = integrCost;
 }
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorShadows.Apply", "editor = " + editor);

            GameObject ksc = GameObject.Find("SpaceCenter");

            Debug.Log("EditorShadows.Apply", "ksc = " + ksc);

            if (ksc != null)
            {
                ksc.SetLayerRecursive(0);
            }

            GameObject shadowsObject = GameObject.Find("Shadow Light") ?? GameObject.Find("Realtime_Shadow Light");

            Debug.Log("EditorShadows.Apply", "shadowsObject = " + shadowsObject);

            if (shadowsObject != null)
            {
                shadowsObject.transform.rotation = EditorView.Rotation * lightDirection;
                shadowsObject.AddOrGetComponent <LightTracker>();
            }

            GameObject shadowPlane = GameObject.Find("ShadowPlane");

            Debug.Log("EditorShadows.Apply", "shadowPlane = " + shadowPlane);

            if (shadowPlane != null)
            {
                shadowPlane.transform.localScale += new Vector3(4000, 0, 4000);
            }
        }
Exemple #6
0
 public BuildListStorageItem FromBuildListVessel(BuildListVessel blv)
 {
     progress          = blv.Progress;
     effectiveCost     = blv.EffectiveCost;
     buildTime         = blv.BuildPoints;
     integrationTime   = blv.IntegrationPoints;
     launchSite        = blv.LaunchSite;
     flag              = blv.Flag;
     shipName          = blv.ShipName;
     shipID            = blv.Id.ToString();
     cannotEarnScience = blv.CannotEarnScience;
     cost              = blv.Cost;
     integrationCost   = blv.IntegrationCost;
     rushBuildClicks   = blv.RushBuildClicks;
     mass              = blv.TotalMass;
     numStageParts     = blv.NumStageParts;
     numStages         = blv.NumStages;
     stagePartCost     = blv.StagePartCost;
     kscDistance       = blv.DistanceFromKSC;
     EditorFacility    = (int)blv.GetEditorFacility();
     BuildListIndex    = blv.BuildListIndex;
     LaunchPadID       = blv.LaunchSiteID;
     desiredManifest   = blv.DesiredManifest;
     KCTPersistentID   = blv.KCTPersistentID;
     FacilityBuiltIn   = blv.FacilityBuiltIn;
     return(this);
 }
Exemple #7
0
 public bool CanEditor(EditorFacility editorFacility)
 {
     if (HighLogic.LoadedSceneIsGame)
     {
         if (HighLogic.LoadedSceneIsEditor)
         {
             if (EditorDriver.fetch != null && EditorLogic.fetch != null)
             {
                 if (EditorDriver.editorFacility != editorFacility)
                 {
                     return(true);
                 }
             }
             return(false);
         }
         if (!HighLogic.LoadedSceneIsFlight)
         {
             return(true);
         }
         if (FlightGlobals.ready && FlightGlobals.ActiveVessel != null && HighLogic.CurrentGame.Parameters.Flight.CanLeaveToEditor)
         {
             return(FlightGlobals.ActiveVessel.IsClearToSave() == ClearToSaveStatus.CLEAR);
         }
     }
     return(false);
 }
Exemple #8
0
        public void PopupNameTagChanger()
        {
            if (typingWindow != null)
            {
                typingWindow.Close();
            }
            if (HighLogic.LoadedSceneIsEditor)
            {
                EditorFacility whichEditor = EditorLogic.fetch.ship.shipFacility;
                if (!(Career.CanTagInEditor(whichEditor)))
                {
                    var formattedString = string.Format("The {0} requires an upgrade to assign name tags", whichEditor);
                    ScreenMessages.PostScreenMessage(formattedString, 6, ScreenMessageStyle.UPPER_CENTER);
                    return;
                }
            }
            // Make a new instance of typingWindow, replacing the existing one if there was one:
            KOSNameTagWindow oldTypingWindow = gameObject.GetComponent <KOSNameTagWindow>();

            if (oldTypingWindow != null)
            {
                Destroy(oldTypingWindow);
            }
            typingWindow = gameObject.AddComponent <KOSNameTagWindow>();
            typingWindow.Invoke(this, nameTag);
        }
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorDoors.Apply", "editor = " + editor);

            // Renderer
            Debug.Log("EditorDoors.Apply", "doorL = " + doorL + ", shadeL = " + shadeL);
            Debug.Log("EditorDoors.Apply", "doorR = " + doorR + ", shadeR = " + shadeR);

            if (doorState == null)
            {
                doorState = new Dictionary <EditorFacility, bool>()
                {
                    { EditorFacility.SPH, !Settings.closeDoors }, { EditorFacility.VAB, !Settings.closeDoors }
                };
            }

            if (Settings.toggleDoors)
            {
                EditorButtons.doorsOnBtn.gameObject.SetActive(doorState[editor]);
                EditorButtons.doorsOffBtn.gameObject.SetActive(!doorState[editor]);
            }
            else
            {
                doorL.SetActive(Settings.closeDoors);
                shadeL.SetActive(Settings.closeDoors);
                doorR.SetActive(Settings.closeDoors);
                shadeR.SetActive(Settings.closeDoors);
            }
        }
Exemple #10
0
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorBuildings.Apply", "editor = " + editor);

            int?n = buildings?.Length;

            Debug.Log("EditorBuildings.Apply", "buildings found = " + n);
            Debug.Log("EditorBuildings.Apply", "positions found = " + positions?.Length);
            Debug.Log("EditorBuildings.Apply", "rotations found = " + rotations?.Length);

            Quaternion editorRotation = EditorView.Rotation;

            for (int i = 0; i < n; i++)
            {
                GameObject building = buildings[i];
                Debug.Log("EditorBuildings.Apply", "buildings[" + i + "] = " + building);

                if (building != null)
                {
                    Vector3 position = positions[i];
                    if (editor == EditorFacility.SPH)
                    {
                        position -= SPHposition;
                    }
                    Debug.Log("EditorBuildings.Apply", "positions[" + i + "] = " + position);

                    Quaternion rotation = rotations[i];
                    Debug.Log("EditorBuildings.Apply", "rotations[" + i + "] = " + rotation);

                    building.transform.position = editorRotation * position;
                    building.transform.rotation = editorRotation * rotation;
                    building.SetActive(true);
                }
            }
        }
Exemple #11
0
 public LaunchEventDto(LaunchEvent le)
 {
     date       = CareerLog.UTToDate(le.UT).ToString("o");
     vesselName = le.VesselName;
     vesselUID  = le.VesselUID;
     launchID   = le.LaunchID;
     builtAt    = le.BuiltAt;
 }
Exemple #12
0
 void Update()
 {
     if (editor != EditorDriver.editorFacility)
     {
         editor = EditorDriver.editorFacility;
         FixMaterials();
     }
 }
Exemple #13
0
 public StringValue OriginatingEditor()
 {
     if (ShipConstruction.ShipConfig != null)
     {
         EditorFacility fac = ShipConstruction.ShipType;
         return(fac.ToString().ToUpper());
     }
     return("");
 }
Exemple #14
0
 protected virtual void store_construct(ShipConstruct construct)
 {
     Facility = construct.shipFacility;
     StoreKit(new VesselKit(this, construct));
     construct.Unload();
     if (kit.AdditionalResources.Count > 0)
     {
         resource_manifest_view.Show(true);
     }
 }
Exemple #15
0
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorSky.Apply", "editor = " + editor);

            RenderSettings.skybox.shader = ShaderLoader.shader;

            RenderSettings.skybox.SetTexture("_CubeMap", cubemap);

            RenderSettings.skybox.SetMatrix("_Rotation", EditorView.GetMatrix(editor));
        }
Exemple #16
0
        private void Update()
        {
            if (_editor == EditorDriver.editorFacility)
            {
                return;
            }

            _editor = EditorDriver.editorFacility;
            FixMaterials();
        }
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorColliders.Apply", "editor = " + editor);

            if (Debug.debug)
            {
                DebugColliders(); DebugShadows();
            }

            GameObject building;

            if (editor == EditorFacility.SPH)
            {
                building = GameObject.Find("SPHlvl1") ?? GameObject.Find("SPHlvl2") ?? GameObject.Find("SPHmodern");
            }
            else
            {
                building = GameObject.Find("VABlvl2") ?? GameObject.Find("VABlvl3") ?? GameObject.Find("VABmodern");
            }

            Debug.Log("EditorColliders.Apply", "building = " + building);

            string name = building?.name;

            if (innerWalls.ContainsKey(name) && doors.ContainsKey(name))
            {
                // Create Walls
                GameObject[] box     = Box(name, innerWalls[name][0], innerWalls[name][1]);
                GameObject[] shadows = Box(name, outerWalls[name][0], outerWalls[name][1], true);

                // Cut out Door
                switch (name)
                {
                case "SPHlvl1":
                case "SPHlvl2":
                case "SPHmodern":
                    Door(box[5], doors[name][0], doors[name][1]);
                    Door(shadows[5], doors[name][0], doors[name][1], true);
                    break;

                case "VABlvl2":
                case "VABlvl3":
                case "VABmodern":
                    Door(box[1], doors[name][0], doors[name][1]);
                    Door(shadows[1], doors[name][0], doors[name][1], true);
                    break;
                }

                if (corners.ContainsKey(name))
                {
                    Corners(name, corners[name][0], corners[name][1], corners[name][2]);
                    Corners(name, corners[name][0], corners[name][1], corners[name][2], true);
                }
            }
        }
Exemple #18
0
 internal static Matrix4x4 GetMatrix(EditorFacility editor)
 {
     if (editor == EditorFacility.SPH)
     {
         return(Matrix4x4.TRS(Vector3.zero, SPHrot, Vector3.one));
     }
     else
     {
         return(Matrix4x4.TRS(Vector3.zero, VABrot, Vector3.one));
     }
 }
        public void RevertingToEditorDetected(EditorFacility data)
        {
            System.Reverting = true;

            if (System.CurrentShipCost != null)
            {
                Funding.Instance.AddFunds(System.CurrentShipCost.Item2, TransactionReasons.VesselRecovery);
                System.CurrentShipCost = null;
            }
            System.StartIgnoringEvents();
        }
        /// <summary>
        /// Triggered when reverting back to the editor. The vessel id DOES change
        /// </summary>
        public void OnRevertToEditor(EditorFacility data)
        {
            if (FlightGlobals.ActiveVessel != null && !VesselCommon.IsSpectating)
            {
                LunaLog.Log($"[LMP]: Detected a revert to editor! {data}");
                RemoveOldVesselAndItsDebris(FlightGlobals.ActiveVessel);
                System.MessageSender.SendVesselRemove(FlightGlobals.ActiveVessel.id, true);

                System.KillVessel(FlightGlobals.ActiveVessel.id, false);
            }
        }
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorLight.Apply", "editor = " + editor);

            if (Settings.toggleLights)
            {
                // Fix Light
                GameObject lightObject = GameObject.Find("SpotlightSun") ?? GameObject.Find("ExteriorSun") ?? GameObject.Find("Realtime_ExteriorSun");
                Debug.Log("EditorLight.Apply", "lightObject = " + lightObject);

                if (lightObject != null)
                {
                    Light light = lightObject.GetComponent <Light>();
                    Debug.Log("EditorLight.Apply", "light = " + light);

                    if (light != null)
                    {
                        light.range       = 3500;
                        light.intensity   = 5;
                        light.spotAngle   = 89;
                        light.cullingMask = 1 << 0 | 1 << 15;

                        if (editor == EditorFacility.SPH)
                        {
                            light.transform.position    = new Vector3(0, 1800, 400);
                            light.transform.eulerAngles = new Vector3(61, 0, 0);
                        }
                        else
                        {
                            light.transform.position    = new Vector3(400, 1800, 0);
                            light.transform.eulerAngles = new Vector3(61, 90, 0);
                        }
                    }
                }


                // LightSwitch

                GameObject building;
                if (EditorDriver.editorFacility == EditorFacility.SPH)
                {
                    building = GameObject.Find("SPHlvl1") ?? GameObject.Find("SPHlvl2") ?? GameObject.Find("SPHmodern");
                }
                else
                {
                    building = GameObject.Find("VABlvl2") ?? GameObject.Find("VABlvl3") ?? GameObject.Find("VABmodern");
                }

                Switch lightSwitch = building.AddOrGetComponent <Switch>();

                EditorButtons.lightsOnBtn.onClick.AddListener(lightSwitch.Flip);
                EditorButtons.lightsOffBtn.onClick.AddListener(lightSwitch.Flip);
            }
        }
Exemple #22
0
 public static void UpdateDefaultConfig(EditorFacility facility, VesselConfig config)
 {
     if (facility == EditorFacility.SPH)
     {
         SPH_DefaultConfig.CopyFrom(config);
     }
     else
     {
         VAB_DefaultConfig.CopyFrom(config);
     }
 }
Exemple #23
0
        internal FacilitySettings For(EditorFacility shipType)
        {
            switch (shipType)
            {
            case EditorFacility.SPH: return(this.SphSettings);

            case EditorFacility.VAB: return(this.VabSettings);

            default: return(new FacilitySettings());
            }
        }
Exemple #24
0
 public void RevertToEditor()
 {
     if (CanRevvertToEditor())
     {
         EditorFacility fac = ShipConstruction.ShipType;
         FlightDriver.RevertToPrelaunch(fac);
     }
     else
     {
         throw new KOSCommandInvalidHereException("REVERTTOEDITOR", "When revert is disabled", "When revert is enabled");
     }
 }
        /// <summary>
        /// Triggered when reverting back to the editor. The vessel id DOES change
        /// </summary>
        public void OnRevertToEditor(EditorFacility data)
        {
            if (FlightGlobals.ActiveVessel != null && !VesselCommon.IsSpectating)
            {
                LunaLog.Log($"[LMP]: Detected a revert to editor! {data}");
                RemoveOldVesselAndItsDebris(FlightGlobals.ActiveVessel, ProtoCrewMember.RosterStatus.Available);
                System.MessageSender.SendVesselRemove(FlightGlobals.ActiveVessel);

                //We consider this vessel removed but we let KSP do the remove of the vessel
                System.RemovedVessels.TryAdd(FlightGlobals.ActiveVessel.id, DateTime.Now);
            }
        }
Exemple #26
0
        internal static void Apply(EditorFacility editor)
        {
            Debug.Log("EditorSky.Apply", "editor = " + editor);

            RenderSettings.skybox.shader = ShaderLoader.shader;

            RenderSettings.skybox.SetTexture("_SkyBox", skybox);
            RenderSettings.skybox.SetTexture("_Scaled", scaled);
            RenderSettings.skybox.SetTexture("_Ground", ground);

            RenderSettings.skybox.SetMatrix("_Rotation", EditorView.GetMatrix(editor));
        }
        //Transfer craft to VAB/SPH/Subassemblies
        public string transfer_to(EditorFacility facility)
        {
            string new_path = "";

            if (facility == EditorFacility.SPH)
            {
                new_path = Paths.joined(CraftManager.ksp_root, "saves", save_dir, "Ships", "SPH", file_name + ".craft");
            }
            else if (facility == EditorFacility.VAB)
            {
                new_path = Paths.joined(CraftManager.ksp_root, "saves", save_dir, "Ships", "VAB", file_name + ".craft");
            }
            else if (facility == EditorFacility.None)
            {
                new_path = Paths.joined(CraftManager.ksp_root, "saves", save_dir, "Subassemblies", file_name + ".craft");
            }
            if (String.IsNullOrEmpty(new_path))
            {
                return("Unexpected error");
            }
            if (File.Exists(new_path))
            {
                string msg = "A craft with this name already exists in " + (facility == EditorFacility.None ? "Subassemblies" : "the " + facility.ToString());
                return(msg);
            }
            else
            {
                try{
                    ConfigNode nodes = ConfigNode.Load(path);
                    nodes.SetValue("type", facility.ToString());
                    nodes.Save(new_path);
                }
                catch (Exception e) {
                    return("Unable to move craft; " + e.Message);
                }
                List <string> tags           = Tags.untag_craft(this);
                FileInfo      thumbnail_file = new FileInfo(thumbnail_path());

                File.Delete(path);
                initialize(new_path, stock_craft);
                Tags.tag_craft(this, tags);
                if (thumbnail_file.Exists)
                {
                    thumbnail_file.MoveTo(thumbnail_path());
                    thumbnail = null;
                }
                if (CraftManager.main_ui)
                {
                    CraftManager.main_ui.refresh();
                }
                return("200");
            }
        }
Exemple #28
0
 public void RevertToEditor()
 {
     if (CanRevvertToEditor())
     {
         EditorFacility fac = ShipConstruction.ShipType;
         shared.Cpu.GetCurrentOpcode().AbortProgram = true;
         FlightDriver.RevertToPrelaunch(fac);
     }
     else
     {
         throw new KOSCommandInvalidHereException(LineCol.Unknown(), "REVERTTOEDITOR", "When revert is disabled", "When revert is enabled");
     }
 }
        /// <summary>
        /// Returns the LaunchSiteName for the given EditorFacility
        /// </summary>
        public static string getSiteName(this EditorFacility facility)
        {
            switch (facility)
            {
            case EditorFacility.SPH:
                return("Runway");

            case EditorFacility.VAB:
                return("LaunchPad");

            default:
                return("Kerbal Space Center");
            }
        }
 void InitializeFacility()
 {
     _currentFacility = EditorDriver.editorFacility;
     if (_currentFacility == EditorFacility.VAB)
     {
         _facilityDefaultsTitle = "#ModAutoAction_VabDefaults";
         _facilitySettings      = _settings.VabSettings;
     }
     else
     {
         _facilityDefaultsTitle = "#ModAutoAction_SphDefaults";
         _facilitySettings      = _settings.SphSettings;
     }
 }
Exemple #31
0
        private void initMod()
        {
            EditorDriver.fetch.sphCamera.enabled = true;
            EditorCamera = EditorDriver.fetch.sphCamera;

            if (Utilities.getEditorScene() == "VAB")
            {
                editorMode = EditorFacility.VAB;
                EditorDriver.fetch.vabCamera.enabled = true;
                vabControls  = true;
                heightLimits = new Vector2(EditorDriver.fetch.vabCamera.minHeight, EditorDriver.fetch.vabCamera.maxHeight);
            }
            else
            {
                editorMode   = EditorFacility.SPH;
                vabControls  = false;
                heightLimits = new Vector2(EditorDriver.fetch.sphCamera.minHeight, EditorDriver.fetch.sphCamera.maxHeight);
            }
            ThreadPool.QueueUserWorkItem(new WaitCallback(updateBounds));

            //save and overwrite all the camera controls so they dont interfere
            GameSettings.AXIS_MOUSEWHEEL.saveDefault("AXIS_MOUSEWHEEL");
            GameSettings.AXIS_MOUSEWHEEL.setZero();

            GameSettings.SCROLL_VIEW_UP.saveDefault("SCROLL_VIEW_UP");
            GameSettings.SCROLL_VIEW_UP.setNone();

            GameSettings.SCROLL_VIEW_DOWN.saveDefault("SCROLL_VIEW_DOWN");
            GameSettings.SCROLL_VIEW_DOWN.setNone();

            GameSettings.ZOOM_IN.saveDefault("ZOOM_IN");
            GameSettings.ZOOM_IN.setNone();

            GameSettings.ZOOM_OUT.saveDefault("ZOOM_OUT");
            GameSettings.ZOOM_OUT.setNone();

            GameSettings.CAMERA_ORBIT_UP.saveDefault("CAMERA_ORBIT_UP");
            GameSettings.CAMERA_ORBIT_UP.setNone();

            GameSettings.CAMERA_ORBIT_DOWN.saveDefault("CAMERA_ORBIT_DOWN");
            GameSettings.CAMERA_ORBIT_DOWN.setNone();

            GameSettings.CAMERA_ORBIT_LEFT.saveDefault("CAMERA_ORBIT_LEFT");
            GameSettings.CAMERA_ORBIT_LEFT.setNone();

            GameSettings.CAMERA_ORBIT_RIGHT.saveDefault("CAMERA_ORBIT_RIGHT");
            GameSettings.CAMERA_ORBIT_RIGHT.setNone();
            EditorCamUtilitiesExtensions.setSaveFileStatusToStarted();
        }
        public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            valid &= ConfigNodeUtil.ParseValue<string>(configNode, "url", x => url = x, this, ValidateURL);
            valid &= ConfigNodeUtil.ParseValue<EditorFacility>(configNode, "craftType", x => craftType = x, this);
            valid &= ConfigNodeUtil.ParseValue<TriggeredBehaviour.State>(configNode, "onState", x => onState = x, this, TriggeredBehaviour.State.CONTRACT_SUCCESS);
            if (onState == TriggeredBehaviour.State.PARAMETER_COMPLETED || onState == TriggeredBehaviour.State.PARAMETER_FAILED)
            {
                valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "parameter", x => parameter = x, this);
            }

            return valid;
        }
        void SelectCraft()
        {
            GUILayout.BeginHorizontal ("box");
            GUILayout.FlexibleSpace ();
            // VAB / SPH / Subassembly selection
            ExBuildControl.CraftType maxType = ExBuildControl.CraftType.SubAss;
            if (buildCraftList == null) {
                maxType = ExBuildControl.CraftType.SPH;
                if (control.craftType == ExBuildControl.CraftType.SubAss) {
                    control.craftType = ExBuildControl.CraftType.VAB;
                }
            }
            for (var t = ExBuildControl.CraftType.VAB; t <= maxType; t++) {
                if (GUILayout.Toggle (control.craftType == t, t.ToString (),
                                      GUILayout.Width (80))) {
                    control.craftType = t;
                }
            }
            GUILayout.FlexibleSpace ();
            GUILayout.EndHorizontal ();

            string strpath = HighLogic.SaveFolder;

            GUILayout.BeginHorizontal ();
            if (GUILayout.Button ("Select Craft", Styles.normal,
                                  GUILayout.ExpandWidth (true))) {

                EditorFacility []facility = new EditorFacility[] {
                    EditorFacility.VAB,
                    EditorFacility.SPH,
                    EditorFacility.None,
                };
                var diff = HighLogic.CurrentGame.Parameters.Difficulty;
                bool stock = diff.AllowStockVessels;
                if (control.craftType == ExBuildControl.CraftType.SubAss) {
                    diff.AllowStockVessels = false;
                }
                //GUILayout.Button is "true" when clicked
                var clrect = new Rect (Screen.width / 2, 100, 350, 500);
                Texture2D fileicon = Instantiate(AssetBase.GetTexture("craftThumbGeneric")) as Texture2D;
                craftlist = new CraftBrowser (clrect, facility[(int)control.craftType],
                                              strpath,
                                              "Select a ship to load",
                                              craftSelectComplete,
                                              craftSelectCancel,
                                              HighLogic.Skin,
                                              fileicon, true,
                                              false);
                if (buildCraftList != null
                    && control.craftType == ExBuildControl.CraftType.SubAss) {
                    craftlist.craftSubfolder = "../Subassemblies";
                    buildCraftList.Invoke (craftlist, null);
                }
                diff.AllowStockVessels = stock;
            }
            GUI.enabled = control.craftConfig != null;
            if (GUILayout.Button ("Reload", Styles.normal,
                                  GUILayout.ExpandWidth (false))) {
                control.LoadCraft (control.filename, control.flagname);
            }
            if (GUILayout.Button ("Clear", Styles.normal,
                                  GUILayout.ExpandWidth (false))) {
                control.UnloadCraft ();
            }
            GUI.enabled = true;
            GUILayout.EndHorizontal ();
        }
Exemple #34
0
 /// <summary>
 /// Detect whether we'll allow you to add a NameTag to a part during the editor.
 /// You can always add one post-editor during flight, but during editing it will
 /// depend on building level.<br/>
 /// NOTE: This method does NOT have an associated suffix because it is meant to be called
 /// from inside the editor, when a script won't be running.
 /// </summary>
 /// <param name="whichEditor">Pass in whether you are checking from the VAB or SPH.</param>
 /// <param name="reason">returns a string describing what would need upgrading to change the answer.</param>
 /// <returns>true if it can. false if it cannot.</returns>
 public static bool CanTagInEditor(EditorFacility whichEditor, out string reason)
 {
     float buildingLevel;
     switch (whichEditor)
     {
         case EditorFacility.VAB:
             reason = "vehicle assembly building";
             buildingLevel = ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.VehicleAssemblyBuilding);
             break;
         case EditorFacility.SPH:
             reason = "space plane hangar";
             buildingLevel = ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.SpaceplaneHangar);
             break;
         default:
             reason = "unknown editor building";
             return false; // not even sure how you could get here.
     }
     // We'll attach it to the same point where the game starts unlocking basic action groups:
     return GameVariables.Instance.UnlockedActionGroupsStock(buildingLevel, false);
 }
Exemple #35
0
        public LOAmbient(EditorFacility facility, EditorLevel level, GameObject[] gameObjects, Camera camera, int layer)
        {
            mainCamera = camera;
            newLayer = layer;
            currentFacility = facility;

            originalCullingMask = camera.cullingMask;
            originalClearFlags = camera.clearFlags;
            originalAmbientLight = RenderSettings.ambientLight;
            originalSkybox = RenderSettings.skybox;
            originalLightmapData = LightmapSettings.lightmaps;
            originalAmbientMode = RenderSettings.ambientMode;

            // Create fake skybox
            skyCamera = new GameObject("NightSkyboxCamera", typeof(Camera));
            //            skyCamera.AddComponent<Camera>();
            skyCamera.GetComponent<Camera>().depth = mainCamera.depth - 1;
            skyCamera.GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;
            skyCamera.GetComponent<Camera>().cullingMask = 0;

            nightSkyboxMaterial = new Material(originalSkybox);

            // GalaxyTex_PositiveX should be viewed outside window
            // Debug.Log("LightsOut: Loading Night Sky Textures");
            foreach (Material material in Resources.FindObjectsOfTypeAll<Material>()) {
                Texture texture = material.mainTexture;
                if (texture) {
                    switch (material.name) {
                    case "ZP":
                        nightSkyboxMaterial.SetTexture("_FrontTex", material.mainTexture);
                        break;
                    case "ZN":
                        nightSkyboxMaterial.SetTexture("_BackTex", material.mainTexture);
                        break;
                    case "XP":
                        nightSkyboxMaterial.SetTexture("_LeftTex", material.mainTexture);
                        break;
                    case "XN":
                        nightSkyboxMaterial.SetTexture("_RightTex", material.mainTexture);
                        break;
                    case "YP":
                        nightSkyboxMaterial.SetTexture("_UpTex", material.mainTexture);
                        break;
                    case "YN":
                        nightSkyboxMaterial.SetTexture("_DownTex", material.mainTexture);
                        break;
                    default:
                        break;
                    }
                }
            }

            skyCamera.AddComponent<Skybox>();
            skyCamera.GetComponent<Skybox>().material = nightSkyboxMaterial;

            if (facility == EditorFacility.VAB) {
                switch (level) {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects) {
                        ChangeLayersRecursively(gameObject, newLayer, "model_vab_interior_floor_cover_v20");
                    }
                    break;
                }
            }
            else if (facility == EditorFacility.SPH) {
                switch (level) {
                case EditorLevel.Level1:
                    break;

                case EditorLevel.Level2:
                    break;

                case EditorLevel.Level3:
                    foreach (GameObject gameObject in gameObjects) {
                        // These are all subsets of model_sph_interior_lights_v16
                        // Component_611_1 to 6 is window reflection
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_1");
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_2");
            //						ChangeLayersRecursively(gameObject, newLayer, "Component_611_3");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_4");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_5");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_611_6");
                        ChangeLayersRecursively(gameObject, newLayer, "Component_749_1"); // Glow from Side Lights!
                        ChangeLayersRecursively(gameObject, newLayer, "Component_750_1"); // Lights!
                    }
                    break;
                }
            }
        }
Exemple #36
0
        // This method should be called before activating the simulation directly from an editor, and allows 
        // QOL improvements (like returning to that editor correctly, and automatically clearing the launch site)
        // Either of these values can be null, if you want to do that for some reason
        public static void OnLeavingEditor(EditorFacility facility, string launchSiteName) 
        {
            // clear the launchpad.
            if (launchSiteName != null)
            {
                List<ProtoVessel> junkAtLaunchSite = ShipConstruction.FindVesselsLandedAt(HighLogic.CurrentGame.flightState, launchSiteName);

                foreach (ProtoVessel pv in junkAtLaunchSite)
                {
                    HighLogic.CurrentGame.flightState.protoVessels.Remove(pv);
                }
            }

            if (facility != EditorFacility.None)
            {
                HoloDeckShelter.lastEditor = facility;
            }

            HoloDeckShelter.lastShip = ShipConstruction.ShipConfig;
        }
Exemple #37
0
 /// <summary>
 /// Same as CanTagInEditor, but without the 'reason' parameter.  (This is a separate method
 /// only because you can't default out parameters like 'out string reason' to make them optional.)
 /// </summary>
 /// <returns>true if you can. false if you cannot.</returns>
 public static bool CanTagInEditor(EditorFacility whichEditor)
 {
     string dummy;
     return CanTagInEditor(whichEditor, out dummy);
 }
        public LOExternalLights(EditorFacility facility, EditorLevel level)
        {
            currentFacility = facility;
            currentLevel = level;

            if (currentFacility == EditorFacility.VAB) {
                switch (currentLevel) {
                case EditorLevel.Level1:
                        //[LOG 17:53:55.152] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:53:55.153] Parent: SunLight
                        //[LOG 17:53:55.154] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:53:55.154] Parent: Scenery
                        //[LOG 17:53:55.155] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:53:55.155] Parent: _UI
                        //[LOG 17:53:55.156] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:53:55.156] Parent: Day Lights
                        //[LOG 17:53:55.157] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:53:55.158] Parent: Day Lights
                        //[LOG 17:53:55.158] Light 5: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:53:55.159] Parent: Day Lights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "SpotlightCraft", parentName = "Day Lights" },
                        new LightToChange(){ name = "SpotlightSun", parentName = "VAB_interior_modern" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Shadow Light", parentName = "Day Lights" }					};
                    break;

                case EditorLevel.Level2:
                        //[LOG 17:56:18.866] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:56:18.867] Parent: SunLight
                        //[LOG 17:56:18.867] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:56:18.868] Parent: Scenery
                        //[LOG 17:56:18.868] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:56:18.869] Parent: _UI
                        //[LOG 17:56:18.869] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:56:18.870] Parent: Day Lights
                        //[LOG 17:56:18.871] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:56:18.871] Parent: Day Lights
                        //[LOG 17:56:18.872] Light 5: roofFill, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:56:18.872] Parent: Day Lights
                        //[LOG 17:56:18.873] Light 6: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:56:18.873] Parent: Day Lights
                        //[LOG 17:56:18.874] Light 7: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:56:18.875] Parent: Day Lights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "SpotlightCraft", parentName = "Day Lights" },
                        new LightToChange(){ name = "SpotlightSun", parentName = "VAB_interior_modern" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Shadow Light", parentName = "Day Lights" }
                    };
                    break;

                case EditorLevel.Level3:
                        //[LOG 17:58:21.702] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:58:21.703] Parent: SunLight
                        //[LOG 17:58:21.703] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:58:21.704] Parent: Scenery
                        //[LOG 17:58:21.704] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.705] Parent: _UI
                        //[LOG 17:58:21.705] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:58:21.706] Parent: Day Lights
                        //[LOG 17:58:21.707] Light 4: SpotlightSun, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.707] Parent: Day Lights
                        //[LOG 17:58:21.708] Light 5: Spotlight, RGBA(1.000, 0.236, 0.104, 1.000), Default ON
                        //[LOG 17:58:21.708] Parent: model_prop_truck_h03
                        //[LOG 17:58:21.709] Light 6: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.710] Parent: Day Lights
                        //[LOG 17:58:21.710] Light 7: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.711] Parent: model_vab_prop_truck_01
                        //[LOG 17:58:21.711] Light 8: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.712] Parent: model_prop_truck_h02
                        //[LOG 17:58:21.712] Light 9: Spotlight, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:58:21.713] Parent: Day Lights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "SpotlightCraft", parentName = "Day Lights" },
                        new LightToChange(){ name = "SpotlightSun", parentName = "VAB_interior_modern" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Shadow Light", parentName = "Day Lights" }
                    };
                    break;
                }
            }
            else if (currentFacility == EditorFacility.SPH) {
                switch (currentLevel) {
                case EditorLevel.Level1:
                        //[LOG 17:54:50.069] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:54:50.070] Parent: SunLight
                        //[LOG 17:54:50.070] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:54:50.071] Parent: Scenery
                        //[LOG 17:54:50.072] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:54:50.072] Parent: _UI
                        //[LOG 17:54:50.073] Light 3: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                        //[LOG 17:54:50.073] Parent: Editors_DayLights
                        //[LOG 17:54:50.074] Light 4: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:54:50.075] Parent: Editors_DayLights
                        //[LOG 17:54:50.075] Light 5: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:54:50.076] Parent: Editors_DayLights
                        //[LOG 17:54:50.076] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:54:50.077] Parent: Editors_DayLights
                        //[LOG 17:54:50.077] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                        //[LOG 17:54:50.078] Parent: Editors_DayLights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_Shadow Light", parentName = "Lighting_Realtime" }
                    };
                    break;

                case EditorLevel.Level2:
                        //[LOG 17:57:04.716] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:57:04.717] Parent: SunLight
                        //[LOG 17:57:04.717] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:57:04.718] Parent: Scenery
                        //[LOG 17:57:04.718] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:57:04.719] Parent: _UI
                        //[LOG 17:57:04.720] Light 3: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                        //[LOG 17:57:04.720] Parent: Editors_DayLights
                        //[LOG 17:57:04.721] Light 4: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:57:04.721] Parent: Editors_DayLights
                        //[LOG 17:57:04.722] Light 5: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:57:04.723] Parent: Editors_DayLights
                        //[LOG 17:57:04.723] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:57:04.724] Parent: Editors_DayLights
                        //[LOG 17:57:04.724] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default OFF
                        //[LOG 17:57:04.725] Parent: Editors_DayLights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_Shadow Light", parentName = "Lighting_Realtime" }
                    };
                    break;

                case EditorLevel.Level3:
                        //[LOG 17:59:41.825] Light 0: Scaledspace SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:59:41.826] Parent: SunLight
                        //[LOG 17:59:41.826] Light 1: SunLight, RGBA(1.000, 1.000, 1.000, 1.000), Default OFF
                        //[LOG 17:59:41.827] Parent: Scenery
                        //[LOG 17:59:41.828] Light 2: Directional light, RGBA(1.000, 1.000, 1.000, 1.000), Default ON
                        //[LOG 17:59:41.828] Parent: _UI
                        //[LOG 17:59:41.829] Light 3: Shadow Light, RGBA(1.000, 0.955, 0.896, 1.000), Default ON
                        //[LOG 17:59:41.829] Parent: Editors_DayLights
                        //[LOG 17:59:41.830] Light 4: SpotlightCraft, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:59:41.831] Parent: Editors_DayLights
                        //[LOG 17:59:41.831] Light 5: Spotlight, RGBA(1.000, 0.236, 0.104, 1.000), Default ON
                        //[LOG 17:59:41.832] Parent: model_prop_truck_h03
                        //[LOG 17:59:41.832] Light 6: SpotlightExteriorSun, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:59:41.833] Parent: Editors_DayLights
                        //[LOG 17:59:41.833] Light 7: SpotlightWindow, RGBA(0.866, 0.863, 0.903, 1.000), Default ON
                        //[LOG 17:59:41.834] Parent: Editors_DayLights
                    lightsToChange = new List<LightToChange>() {
                        new LightToChange(){ name = "Realtime_SpotlightCraft", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_ExteriorSun", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_SpotlightScenery", parentName = "Lighting_Realtime" },
                        new LightToChange(){ name = "Realtime_Shadow Light", parentName = "Lighting_Realtime" }
                    };
                    break;
                }
            }
        }
        public LOShaders(EditorFacility facility, EditorLevel level, GameObject[] gameObjects)
        {
            List<ShaderToChange> shadersToFind = new List<ShaderToChange>();

            List<string> defaultShaders = new List<string>() {
                "KSP/Emissive/Specular",
                "KSP/Emissive/Bumped",
                "KSP/Emissive/Diffuse"
            };

            if (facility == EditorFacility.VAB) {
                switch (level) {
                case EditorLevel.Level1:
                    {
                        //INTERIOR_VAB_lev2 1_MeshPart1
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("VAB_lev1_interior");
                        shader.path.Add("INTERIOR_VAB_lev2 1");
                        shader.name = "INTERIOR_VAB_lev2 1_MeshPart1";
                        shader.shaders = new List<string>(defaultShaders);
                        shadersToFind.Add(shader);
                        break;
                    }

                case EditorLevel.Level2:
                        // shader.path.Add("VAB_lev3_mainStructure");
                    break;

                case EditorLevel.Level3:
                    for (int i = 0; i < 3; i++) {
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("VAB_Interior_Geometry");
                        shader.shaders = new List<string>(defaultShaders);
                        switch (i) {
                        case 0:
                            shader.name = "model_vab_interior_props_v16";
                            break;

                        case 1:
                            shader.name = "model_vab_walls";
                            break;

                        case 2:
                            shader.name = "model_vab_windows";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;
                }
            }
            else if (facility == EditorFacility.SPH) {
                switch (level) {
                case EditorLevel.Level1:
                    {
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("SPH-1_Interior");
                        shader.name = "group37_polySurface813";
                        shader.shaders = new List<string>(defaultShaders);
                        shadersToFind.Add(shader);
                        break;
                    }

                case EditorLevel.Level2:
                    for (int i = 0; i < 3; i++) {
                        ShaderToChange shader = new ShaderToChange();
                        shader.shaders = new List<string>(defaultShaders);
                        switch (i) {
                        case 0:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_windows";
                            break;

                        case 1:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_door3";
                            break;

                        case 2:
                            shader.path.Add("SPH_2_interior");
                            shader.name = "SPH_2_door4";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;

                case EditorLevel.Level3:
                    for (int i = 0; i < 2; i++) {
                        ShaderToChange shader = new ShaderToChange();
                        shader.path.Add("SPH_Interior_Geometry");
                        shader.shaders = new List<string>(defaultShaders);
                        switch (i) {
                        case 0:
                            shader.name = "model_sph_interior_main_v16";
                            break;

                        case 1:
                            shader.path.Add("model_sph_interior_gates_v16");
                            shader.name = "Component_755_1";
                            break;
                        }
                        shadersToFind.Add(shader);
                    }
                    break;
                }
            }

            foreach (ShaderToChange shader in shadersToFind) {
                foreach (GameObject gameObject in gameObjects) {
                    FindShader(gameObject, shader, 0);
                }
            }
        }
 public CopyCraftFile(string url, EditorFacility craftType, State onState, List<string> parameter)
     : base(onState, parameter)
 {
     this.url = url;
     this.craftType = craftType;
 }