Exemple #1
0
        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);
        }