/// <summary> /// Updates the last transition variable. /// </summary> protected void UpdateTransitionVariable(ISystemContext context, uint transitionId, FiniteTransitionVariableState variable) { if (variable == null) { return; } if (transitionId == 0) { variable.Value = null; variable.Id.Value = null; if (variable.TransitionTime != null) { variable.TransitionTime.Value = DateTime.MinValue; } if (variable.Number != null) { variable.Number.Value = 0; } return; } ElementInfo[] transitionTable = TransitionTable; if (transitionTable == null) { return; } for (int ii = 0; ii < transitionTable.Length; ii++) { ElementInfo transition = transitionTable[ii]; if (transition.Id == transitionId) { variable.Value = transition.Name; variable.Id.Value = new NodeId(transition.Id, ElementNamespaceIndex); if (variable.TransitionTime != null) { variable.TransitionTime.Value = DateTime.UtcNow; } if (variable.Number != null) { variable.Number.Value = transition.Number; } return; } } }