public override void OnLoad(ConfigNode node) { base.OnLoad (node); try { currentAnimState = (SSTUAnimState) Enum.Parse (typeof(SSTUAnimState), persistentState); } catch(Exception e) { currentAnimState = SSTUAnimState.STOPPED_START; persistentState = currentAnimState.ToString(); print (e.Message); } locateAnimation(); restorePreviousAnimationState(currentAnimState); }
public override void OnLoad(ConfigNode node) { base.OnLoad(node); print("SSTUAnimate OnLoad"); //parse any previously saved deployedStatus value, or fallback to RETRACTED if none found/errors occur try { animationState = (SSTUAnimState)Enum.Parse(typeof(SSTUAnimState), deployedStatus); } catch (Exception ex) { Debug.LogError("[ORS] - InterstellarAnimate in OnLoad: " + ex.Message); animationState = SSTUAnimState.RETRACTED; } updateGuiLabels(); }
private void setAnimState(SSTUAnimState newState, bool callback) { switch (newState) { case SSTUAnimState.PLAYING_BACKWARD: { setAnimSpeed(-1f); if(currentAnimState==SSTUAnimState.STOPPED_END)//enforce play backwards from end { setAnimTime(1f); } playAnimation(); break; } case SSTUAnimState.PLAYING_FORWARD: { setAnimSpeed(1f); if(currentAnimState==SSTUAnimState.STOPPED_START)//enforce play forwards from beginning { setAnimTime(0f); } playAnimation(); break; } case SSTUAnimState.STOPPED_END: { setAnimTime(1f); setAnimSpeed(1); playAnimation(); break; } case SSTUAnimState.STOPPED_START: { setAnimTime(0); setAnimSpeed(-1); playAnimation(); break; } } currentAnimState = newState; persistentState = currentAnimState.ToString(); if (callback && onAnimStateChangeCallbacks!=null) { int len = onAnimStateChangeCallbacks.Count; for(int i = 0; i < len; i++) { onAnimStateChangeCallbacks[i].Invoke(currentAnimState); } } }
private void restorePreviousAnimationState(SSTUAnimState state) { if (state == SSTUAnimState.PLAYING_BACKWARD) { state = SSTUAnimState.STOPPED_START; } else if (state == SSTUAnimState.PLAYING_FORWARD) { state = SSTUAnimState.STOPPED_END; } setAnimState (state, false); }
//External method to set the state; does not callback on this state change, as this is supposed to originate -from- the callback; //it should be aware of its own instigated state changes public void setToState(SSTUAnimState newState) { setAnimState (newState, false); }
private void setAnimationState(SSTUAnimState state) { if(animationController!=null){animationController.setToState(state);} }
public void onAnimationStatusChanged(SSTUAnimState state) { if(state==SSTUAnimState.STOPPED_END) { setPanelState(SSTUPanelState.EXTENDED); } else if(state==SSTUAnimState.STOPPED_START) { setPanelState(SSTUPanelState.RETRACTED); } }
//internal call to set animationState enum value private void setAnimationState(SSTUAnimState newState) { print("SSTUAnimate setAnimationState"); animationState = newState; deployedStatus = animationState.ToString(); }
//DONE public void onAnimationStatusChanged(SSTUAnimState state) { if(state==SSTUAnimState.STOPPED_END) { base.Activate(); } }
public void onAnimationStatusChanged(SSTUAnimState state) { if(state==SSTUAnimState.STOPPED_START) { setLegState(LegState.RETRACTED); } else if(state==SSTUAnimState.STOPPED_END) { setLegState(LegState.DEPLOYED); } }
//TODO - stuff for non-restartable and non-stoppable engines private void setupGuiFields(SSTUAnimState state, bool engineActive) { bool hasAnim = animationControl!=null; bool isEditor = HighLogic.LoadedSceneIsEditor; switch (state) { case SSTUAnimState.PLAYING_BACKWARD://retracting { Events["Activate"].active = false; Events["Shutdown"].active = false; Actions["ActivateAction"].active = isEditor; Actions["ShutdownAction"].active = isEditor; Actions["OnAction"].active = isEditor; Events["deployEngineEvent"].active = hasAnim; Events["retractEngineEvent"].active = false; break; } case SSTUAnimState.PLAYING_FORWARD://deploying { Events["Activate"].active = false; Events["Shutdown"].active = false; Actions["ActivateAction"].active = isEditor; Actions["ShutdownAction"].active = isEditor; Actions["OnAction"].active = isEditor; Events["deployEngineEvent"].active = false; Events["retractEngineEvent"].active = hasAnim; break; } case SSTUAnimState.STOPPED_END://deployed or no anim { Events["Activate"].active = !engineActive; Events["Shutdown"].active = engineActive; Actions["ActivateAction"].active = true; Actions["ShutdownAction"].active = true; Actions["OnAction"].active = true; Events["deployEngineEvent"].active = false; Events["retractEngineEvent"].active = hasAnim; break; } case SSTUAnimState.STOPPED_START://retracted { Events["Activate"].active = false; Events["Shutdown"].active = false; Actions["ActivateAction"].active = isEditor; Actions["ShutdownAction"].active = isEditor; Actions["OnAction"].active = isEditor; Events["deployEngineEvent"].active = hasAnim; Events["retractEngineEvent"].active = false; break; } } }
//DONE private void setAnimationState(SSTUAnimState state) { if(animationControl!=null) { SSTUAnimState currentState = animationControl.getAnimationState(); //exceptions below fix issues of OnActive being called by moduleEngine during startup if(currentState==SSTUAnimState.STOPPED_END && state==SSTUAnimState.PLAYING_FORWARD){return;}//don't allow deploying from deployed else if(currentState == SSTUAnimState.STOPPED_START && state == SSTUAnimState.PLAYING_BACKWARD){return;}//don't allow retracting from retracted animationControl.setToState(state); throw new NotImplementedException(); } }
//DONE public void onAnimationStatusChanged(SSTUAnimState state) { updateGuiDataFromState(state); }
//DONE private void updateGuiDataFromState(SSTUAnimState state) { if (!moduleControlEnabled) { Events["deployEvent"].active = false; Events["retractEvent"].active = false; Actions["deployAction"].active = false; Actions["retractAction"].active = false; Fields["displayState"].guiActiveEditor = Fields["displayState"].guiActive = false; return; } switch(state) { case SSTUAnimState.PLAYING_BACKWARD: { Events["deployEvent"].active = true; Events["retractEvent"].active = false; Actions["deployAction"].active = true; Actions["retractAction"].active = true; displayState = retractingStateName; break; } case SSTUAnimState.PLAYING_FORWARD: { Events["deployEvent"].active = false; Events["retractEvent"].active = true; Actions["deployAction"].active = true; Actions["retractAction"].active = true; displayState = deployingStateName; break; } case SSTUAnimState.STOPPED_END: { Events["deployEvent"].active = false; Events["retractEvent"].active = true; Actions["deployAction"].active = true; Actions["retractAction"].active = true; displayState = deployedStateName; break; } case SSTUAnimState.STOPPED_START: { Events["deployEvent"].active = true; Events["retractEvent"].active = false; Actions["deployAction"].active = true; Actions["retractAction"].active = true; displayState = retractedStateName; break; } } }
//DONE private void setAnimationState(SSTUAnimState state) { if(animationControl!=null){animationControl.setToState(state);} updateGuiDataFromState(state); }