示例#1
0
        void mTriggerOutControlPoint_ControlPointRemoved(BasicControlPoint cp, IControlPoint other)
        {
            TriggerControl otherctrl = other.TagObject as TriggerControl;

            if (otherctrl != null)
            {
                bool          onfalse  = (cp.GetName() == "Effect.False") ? true : false;
                TriggerEffect toremove = null;

                if (onfalse == false)
                {
                    foreach (TriggerEffect effect in Trigger.TriggerEffects.Effects)
                    {
                        if ((effect.Type == TriggerSystemMain.mTriggerDefinitions.GetDeactivateEffectName()) ||
                            (effect.Type == TriggerSystemMain.mTriggerDefinitions.GetActivateEffectName()))
                        {
                            TriggerValue val = ParentTriggerNamespace.GetValues()[effect.Parameter[0].ID];
                            if (val.Value == otherctrl.Trigger.ID.ToString())
                            {
                                toremove = effect;
                            }
                        }
                    }
                }
                if (onfalse == true)
                {
                    foreach (TriggerEffect effect in Trigger.TriggerEffectsFalse.Effects)
                    {
                        if ((effect.Type == TriggerSystemMain.mTriggerDefinitions.GetDeactivateEffectName()) ||
                            (effect.Type == TriggerSystemMain.mTriggerDefinitions.GetActivateEffectName()))
                        {
                            TriggerValue val = ParentTriggerNamespace.GetValues()[effect.Parameter[0].ID];
                            if (val.Value == otherctrl.Trigger.ID.ToString())
                            {
                                toremove = effect;
                            }
                        }
                    }
                }
                if (toremove != null)
                {
                    ParentTriggerNamespace.DeleteEffect(Trigger, toremove, onfalse);
                }
            }

            TemplateControl templateControl = other.TagObject as TemplateControl;

            if (templateControl != null)
            {
                string            name    = other.ToString();
                BasicControlPoint othercp = other as BasicControlPoint;
                TriggersTemplateInputActionBinder targetBinder = templateControl.mInputActionCPs[othercp];
                TriggerBindInfo toremove = null;
                string          linkName = cp.Name;
                int             linkID   = this.Trigger.ID;

                foreach (TriggerBindInfo b in targetBinder.TargetIDs)
                {
                    if ((b.LinkName == linkName) && (b.ID == linkID))
                    {
                        toremove = b;
                    }
                }
                if (toremove != null)
                {
                    targetBinder.TargetIDs.Remove(toremove);
                }
                else
                {
                    CoreGlobals.getErrorManager().LogErrorToNetwork("mTriggerOutControlPoint_ControlPointRemoved: error deleting template link");
                }
            }
        }
示例#2
0
        void mTriggerOutControlPoint_ControlPointConnected(BasicControlPoint cp, IControlPoint other)
        {
            //set target value:
            TriggerControl t = other.TagObject as TriggerControl;

            if (t != null)
            {
                string effectName = "";

                if (other.GetName() == "Activate")
                {
                    effectName = TriggerSystemMain.mTriggerDefinitions.GetActivateEffectName();
                }
                if (other.GetName() == "Deactivate")
                {
                    effectName = TriggerSystemMain.mTriggerDefinitions.GetDeactivateEffectName();
                }

                TriggerEffect effect;
                Dictionary <int, TriggerValue> values;
                TriggerSystemMain.mTriggerDefinitions.GetTriggerEffect(effectName, out effect, out values);
                Dictionary <int, TriggerValue> .Enumerator it = values.GetEnumerator();
                while (it.MoveNext())
                {
                    it.Current.Value.Value = t.Trigger.ID.ToString();
                    break;
                }
                int newID;

                bool onfalse = (cp.GetName() == "Effect.False")?true:false;

                ParentTriggerNamespace.InsertEffect(Trigger.ID, effect, values, onfalse, out newID);
                return;//Finished
            }

            //else.. template object
            TemplateControl templateControl = other.TagObject as TemplateControl;

            if (templateControl != null)
            {
                string name = other.ToString();
                foreach (TriggersTemplateInputActionBinder binder in templateControl.TriggerTemplateMapping.TriggerInputs)
                {
                    if (binder.Name == name)
                    {
                        foreach (TriggerBindInfo b in binder.TargetIDs)
                        {
                            if (b.ID == templateControl.TriggerTemplateMapping.ID && b.LinkName == other.ToString())
                            {
                                CoreGlobals.getErrorManager().OnSimpleWarning("can't bind. template is already bound to trigger.  this is a bug");
                                return;
                            }
                        }
                        TriggerBindInfo bindInfo = new TriggerBindInfo();
                        bindInfo.SetTarget(this.Trigger.ID, cp.ToString());
                        binder.TargetIDs.Add(bindInfo);
                        return;
                    }
                }
            }
        }