private void SceneManagerOnSceneLoaded( Object sender, SceneEventArgs e) { if (Game.InFlightScene) { // Add docking port cameras var craft = Game.Instance.FlightScene.CraftNode.CraftScript; foreach (var partData in craft.Data.Assembly.Parts.Where(p => !p.IsDestroyed)) { var part = partData.PartScript; if (part.GetModifier <DockingPortScript>() != null) { var existingScript = part.GetModifier <CameraVantageScript>(); if (existingScript == null) { // Automatically add a CameraVantage Part Modifier to all DockingPort parts var cameraData = PartModifierData.CreateFromDefaultXml <CameraVantageData>(part.Data); cameraData.ViewMode = ViewMode.FirstPerson; var cameraVantageScript = (CameraVantageScript)cameraData.CreateScript(); var cameraAlignment = cameraVantageScript.gameObject.AddComponent <DockingPortCameraAlignment>(); cameraAlignment.Initialize(cameraVantageScript, part); } else if (existingScript.gameObject.GetComponent <DockingPortCameraAlignment>() == null) { var cameraAlignment = existingScript.gameObject.AddComponent <DockingPortCameraAlignment>(); cameraAlignment.Initialize(existingScript, part); } } } } }
private PartStateChange GetChangedProperty(PartData oldPart, PartData newPart) { if (oldPart == null || newPart == null) { Debug.LogError("Can not find property change (Part State NULL)"); return(null); } Debug.Log("modifiers: " + oldPart.Modifiers.Count); foreach (PartModifierData oldmodifier in oldPart.Modifiers) { PartModifierData newmodifer = newPart.GetModifierById(oldmodifier.Id); if (newmodifer != null) { if (newmodifer != oldmodifier) { return(new PartStateChange(newmodifer.Id, String.Empty, String.Empty)); } } Debug.Log("Modifier Deleted"); } Debug.Log("No Change In Modifiers Found"); return(null); }