Artemis.Engine.Multiforms.MultiformManager.Activate C# (CSharp) Method

Activate() public method

Activate the multiform with the given name.
public Activate ( Multiform sender, string name, MultiformConstructionArgs args = null ) : void
sender Multiform
name string
args MultiformConstructionArgs
return void
        public void Activate(Multiform sender, string name, MultiformConstructionArgs args = null)
        {
            if (ActiveMultiforms.ContainsKey(name))
            {
                throw new MultiformManagerException(
                    String.Format("Multiform with name '{0}' has already been constructed.", name));
            }

            if (!RegisteredMultiforms.ContainsKey(name))
            {
                throw new MultiformManagerException(
                    String.Format("No multiform with name '{0}' exists.", name));
            }

            var multiform = RegisteredMultiforms[name];
            if (multiform.TransitionConstraints != null)
            {
                var constraints = multiform.TransitionConstraints;
                var senderName = sender == null ? null : sender.Name;
                if ((constraints.AllowedFrom != null && !constraints.AllowedFrom.Contains(senderName)) ||
                    (constraints.NotAllowedFrom != null && constraints.NotAllowedFrom.Contains(senderName)))
                {
                    if (senderName == null)
                    {
                        throw new MultiformManagerException(
                            String.Format(
                                "The transition constraints on multiform '{0}' prevent it from " +
                                "being used as the initial multiform in the engine.", name
                                )
                            );
                    }
                    throw new MultiformManagerException(
                        String.Format(
                            "The transition constraints on multiform '{0}' prevent the multiform '{1}' from " +
                            "being able to transition to it.", name, senderName
                        )
                    );
                }
            }
            args = args == null ? new MultiformConstructionArgs(sender) : args;
            ApplyOrQueueEvent(new ActivateEvent(name, args));
        }