예제 #1
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        LevelChangeTrigger l = (LevelChangeTrigger)target;

        l.LeadstoRandomLevel = EditorGUILayout.Toggle("Leads to Random Lev.", l.LeadstoRandomLevel);

        if (!l.LeadstoRandomLevel)
        {
            l.LevelObject = (GameObject)EditorGUILayout.ObjectField("Level Object", l.LevelObject, typeof(GameObject), true);
        }
    }
    static void ConvertMagicTrigger(MagicTrigger oldTrigger)
    {
        // Get or add MagicTriggerNew
        MagicTriggerNew newTrigger = oldTrigger.gameObject.GetComponent <MagicTriggerNew>();

        if (newTrigger == null)
        {
            newTrigger = oldTrigger.gameObject.AddComponent <MagicTriggerNew>();
        }
        else
        {
            newTrigger.triggerConditions.Clear();
            newTrigger.actionsToTrigger.Clear();
        }

        // Convert old trigger conditions to new TriggerConditions
        CopyTrigggerConditions(oldTrigger, newTrigger);

        // Convert old trigger effects to new TriggerActions
        if (oldTrigger is ForceActivePillarToggle)
        {
            ForceActivePillarToggle pillarTrigger = oldTrigger as ForceActivePillarToggle;
            // Handle active pillar toggle triggers
            newTrigger.actionsToTrigger.Add(new TriggerAction {
                action                  = TriggerActionType.ChangeActivePillar,
                actionTiming            = ActionTiming.OnceWhileOnStay,
                forwardSameScenePillar  = pillarTrigger.forwardSameScenePillar,
                forwardPillar           = pillarTrigger.forwardTriggeredPillar,
                forwardPillarLevel      = pillarTrigger.forwardPillarLevel,
                forwardPillarName       = pillarTrigger.forwardPillarName,
                backwardSameScenePillar = pillarTrigger.backwardSameScenePillar,
                backwardPillar          = pillarTrigger.backwardTriggeredPillar,
                backwardPillarLevel     = pillarTrigger.backwardPillarLevel,
                backwardPillarName      = pillarTrigger.backwardPillarName
            });
        }
        else if (oldTrigger is LevelChangeTrigger)
        {
            // Handle level change triggers
            LevelChangeTrigger levelChangeTrigger = oldTrigger as LevelChangeTrigger;
            newTrigger.actionsToTrigger.Add(new TriggerAction {
                action        = TriggerActionType.ChangeLevel,
                actionTiming  = ActionTiming.OnceWhileOnStay,
                levelForward  = levelChangeTrigger.levelForward,
                levelBackward = levelChangeTrigger.levelBackward
            });
        }
        else if (oldTrigger is MagicSpawnDespawnToggle)
        {
            // Handle toggle trigger
            MagicSpawnDespawnToggle toggleTrigger = oldTrigger as MagicSpawnDespawnToggle;
            if (toggleTrigger.objectsToEnable.Length > 0 || toggleTrigger.objectsToDisable.Length > 0)
            {
                newTrigger.actionsToTrigger.Add(new TriggerAction {
                    action           = TriggerActionType.ToggleGameObjects,
                    actionTiming     = ActionTiming.OnceWhileOnStay,
                    objectsToEnable  = DeepListCopy(toggleTrigger.objectsToEnable),
                    objectsToDisable = DeepListCopy(toggleTrigger.objectsToDisable)
                });
            }
            if (toggleTrigger.scriptsToEnable.Length > 0 || toggleTrigger.scriptsToDisable.Length > 0)
            {
                newTrigger.actionsToTrigger.Add(new TriggerAction {
                    action           = TriggerActionType.ToggleScripts,
                    actionTiming     = ActionTiming.OnceWhileOnStay,
                    scriptsToEnable  = DeepListCopy(toggleTrigger.scriptsToEnable),
                    scriptsToDisable = DeepListCopy(toggleTrigger.scriptsToDisable)
                });
            }
        }
        else if (oldTrigger is MagicSpawnDespawn)
        {
            // Handle spawn despawn triggers
            MagicSpawnDespawn enableDisableTrigger = oldTrigger as MagicSpawnDespawn;
            if (enableDisableTrigger.objectsToEnable.Length > 0 || enableDisableTrigger.objectsToDisable.Length > 0)
            {
                newTrigger.actionsToTrigger.Add(new TriggerAction {
                    action           = TriggerActionType.EnableDisableGameObjects,
                    actionTiming     = ActionTiming.OnceWhileOnStay,
                    objectsToEnable  = DeepListCopy(enableDisableTrigger.objectsToEnable),
                    objectsToDisable = DeepListCopy(enableDisableTrigger.objectsToDisable)
                });
            }
            if (enableDisableTrigger.scriptsToEnable.Length > 0 || enableDisableTrigger.scriptsToDisable.Length > 0)
            {
                newTrigger.actionsToTrigger.Add(new TriggerAction {
                    action           = TriggerActionType.EnableDisableScripts,
                    actionTiming     = ActionTiming.OnceWhileOnStay,
                    scriptsToEnable  = DeepListCopy(enableDisableTrigger.scriptsToEnable),
                    scriptsToDisable = DeepListCopy(enableDisableTrigger.scriptsToDisable)
                });
            }
        }

        // Convert old self-disable effects to new TriggerActions
        if (oldTrigger.disableGameObjectOnTrigger)
        {
            newTrigger.actionsToTrigger.Add(new TriggerAction {
                action       = TriggerActionType.DisableSelfGameObject,
                actionTiming = ActionTiming.OnceWhileOnStay
            });
        }
        if (oldTrigger.disableScriptOnTrigger)
        {
            newTrigger.actionsToTrigger.Add(new TriggerAction {
                action       = TriggerActionType.DisableSelfScript,
                actionTiming = ActionTiming.OnceWhileOnStay
            });
        }

        oldTrigger.enabled = false;
    }