コード例 #1
0
        public override void Cleanup()
        {
            EditStateService.CanBeginEditChanged -= EditStateServiceOnCanBeginEditChanged;

            currentState.Leave();
            currentState = null;
            base.Cleanup();
        }
コード例 #2
0
ファイル: EditModeScript.cs プロジェクト: ReidBix/momentum
    /// <summary>
    /// Use this for initialization
    /// </summary>
    void Start ()
    {
        if(editModeOnStart) {
            editModeState = EditModeState.Active;
            Time.timeScale = editModeTimeScale;    
        } else {
            editModeState = EditModeState.Inactive;
            Time.timeScale = 1;
        }
		pauseCont = gameObject.GetComponent<PauseResourceController>();
	}
コード例 #3
0
        public override void Setup()
        {
            base.Setup();

            TargetElement.Dispatcher.Invoke(DispatcherPriority.ContextIdle, new Action(() =>
            {
                currentState = new BeginEditState();
                currentState.Enter(this);
            }));

            EditStateService.CanBeginEditChanged += EditStateServiceOnCanBeginEditChanged;
        }
コード例 #4
0
    public void SetBuildMode(EditModeState state)
    {
        if (currentActiveMode != null)
        {
            currentActiveMode.Deactivate();
        }
        isAdvancedModeActive = false;

        currentActiveMode = null;
        switch (state)
        {
        case EditModeState.Inactive:
            break;

        case EditModeState.FirstPerson:
            currentActiveMode = firstPersonMode;
            if (HUDController.i.builderInWorldMainHud != null)
            {
                HUDController.i.builderInWorldMainHud.ActivateFirstPersonModeUI();
                HUDController.i.builderInWorldMainHud.SetVisibilityOfCatalog(false);
            }
            if (cursorGO != null)
            {
                cursorGO.SetActive(true);
            }
            break;

        case EditModeState.GodMode:
            if (cursorGO != null)
            {
                cursorGO.SetActive(false);
            }
            currentActiveMode    = editorMode;
            isAdvancedModeActive = true;
            if (HUDController.i.builderInWorldMainHud != null)
            {
                HUDController.i.builderInWorldMainHud.ActivateGodModeUI();
            }

            avatarRenderer?.SetAvatarVisibility(false);
            break;
        }

        currentEditModeState = state;

        if (currentActiveMode != null)
        {
            currentActiveMode.Activate(sceneToEdit);
            currentActiveMode.SetSnapActive(isSnapActive);
            builderInWorldEntityHandler.SetActiveMode(currentActiveMode);
        }
    }
コード例 #5
0
 private void MoveToNextState()
 {
     TargetElement.Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() =>
     {
         var fms = UIServiceProvider.GetService <IFocusManagementService>(TargetElement);
         using (fms.DeferFocusUpdate())
         {
             log.Debug("Moving to next edit state");
             EditModeState nextState = currentState.GetNextState();
             currentState.Leave();
             currentState = nextState;
             currentState.Enter(this);
         }
     }));
 }
コード例 #6
0
    public void SetBuildMode(EditModeState state)
    {
        EditModeState previousState = currentEditModeState;

        if (currentActiveMode != null)
        {
            currentActiveMode.Deactivate();
        }

        currentActiveMode = null;
        switch (state)
        {
        case EditModeState.Inactive:
            break;

        case EditModeState.FirstPerson:
            currentActiveMode = firstPersonMode;

            if (cursorGO != null)
            {
                cursorGO.SetActive(true);
            }
            break;

        case EditModeState.GodMode:
            if (cursorGO != null)
            {
                cursorGO.SetActive(false);
            }
            currentActiveMode = editorMode;
            break;
        }

        currentEditModeState = state;

        if (currentActiveMode != null)
        {
            currentActiveMode.Activate(sceneToEdit);
            currentActiveMode.SetSnapActive(isSnapActive);
            builderInWorldEntityHandler.SetActiveMode(currentActiveMode);
        }

        OnChangedEditModeState?.Invoke(previousState, state);
    }
コード例 #7
0
ファイル: EditModeScript.cs プロジェクト: ReidBix/momentum
    /// <summary>
    /// Linear Interpolation Between Edit Modes
    /// </summary>
    /// <param name="initial">Initial Value</param>
    /// <param name="final">Final Value</param>
    /// <param name="totalTime">Time for Interpolation</param>
    /// <param name="destState">Edit Mode State to Enter when Complete</param>
    void LerpToMode(EditModeState destState)
    {
        if(destState != EditModeState.Active && destState != EditModeState.Inactive) {
            Debug.LogError("Error: Calling LerpMode with invalid destination state (" + destState + "). Must call with Active or Inactive.");
            return;
        }

        bool entering = destState == EditModeState.Active;
        float totalTime = (entering ? enterEditModeTime : exitEditModeTime);

        float timeScaleInit = (entering ? 1 : editModeTimeScale);
        float timeScaleFinal = (entering ? editModeTimeScale : 1);

        float alphaInit = (entering ? editModeInactiveTrailAlpha : editModeActiveTrailAlpha);
        float alphaFinal = (entering ? editModeActiveTrailAlpha : editModeInactiveTrailAlpha);

        float timerVal = (totalTime == 0 ? 1 : transitionTimer / totalTime);

        // Alpha
        SetTrailAlphas(Mathf.Lerp(alphaInit, alphaFinal, timerVal));

        // Time Scale
        Time.timeScale = Mathf.Lerp(timeScaleInit, timeScaleFinal, timerVal);

        // Clamping to Final States
        if (transitionTimer >= totalTime)
        {
            Time.timeScale = timeScaleFinal;
            SetTrailAlphas(alphaFinal);
            editModeState = destState;
            transitionTimer = 0;
        }
        else
        {
            transitionTimer += MyTime.deltaTime;
        }
    }
コード例 #8
0
ファイル: EditModeScript.cs プロジェクト: ReidBix/momentum
    /// <summary>
    /// Toggle edit mode
    /// </summary>
    public void BeginEditModeTransition(bool toEdit)
    {
		pauseCont.setResourceDrain(toEdit);
        // Smooth switching when in transition state.
        if (transitionTimer > 0)
        {
            transitionTimer = 1 - transitionTimer;
        }
        else
        {
            transitionTimer = 0;
        }
		if (toEdit) {
			pauseCont.Paused();
		}
        editModeState = (toEdit ? EditModeState.Entering : EditModeState.Exiting);
    }