public void RefreshPins()
 {
     if (Object.op_Equality((Object)this.Target, (Object)null))
     {
         return;
     }
     FlowNode[] components = (FlowNode[])this.Target.GetComponents <FlowNode>();
     for (int index = 0; index < components.Length; ++index)
     {
         if (components[index] is FlowNode_Output)
         {
             FlowNode_Output flowNodeOutput = components[index] as FlowNode_Output;
             if (this.FindEmbeddedPin(flowNodeOutput.PinName) < 0)
             {
                 Array.Resize <FlowNode_ExternalLink.PinData>(ref this.mPins, this.mPins.Length + 1);
                 this.mPins[this.mPins.Length - 1].PinID   = this.GenerateUniquePinID(this.Pins);
                 this.mPins[this.mPins.Length - 1].PinName = flowNodeOutput.PinName;
                 this.mPins[this.mPins.Length - 1].PinType = FlowNode.PinTypes.Output;
             }
         }
         else if (components[index] is FlowNode_Input)
         {
             FlowNode_Input flowNodeInput = components[index] as FlowNode_Input;
             if (this.FindEmbeddedPin(flowNodeInput.PinName) < 0)
             {
                 Array.Resize <FlowNode_ExternalLink.PinData>(ref this.mPins, this.mPins.Length + 1);
                 this.mPins[this.mPins.Length - 1].PinID   = this.GenerateUniquePinID(this.Pins);
                 this.mPins[this.mPins.Length - 1].PinName = flowNodeInput.PinName;
                 this.mPins[this.mPins.Length - 1].PinType = FlowNode.PinTypes.Input;
             }
         }
     }
 }
 protected void BindPins()
 {
     FlowNode[] components = (FlowNode[])this.mInstance.GetComponents <FlowNode>();
     for (int index = 0; index < components.Length; ++index)
     {
         if (components[index] is FlowNode_Output)
         {
             FlowNode_Output flowNodeOutput = components[index] as FlowNode_Output;
             int             embeddedPin    = this.FindEmbeddedPin(flowNodeOutput.PinName);
             if (embeddedPin >= 0 && this.mPins[embeddedPin].PinType == FlowNode.PinTypes.Output)
             {
                 this.mPins[embeddedPin].NodeBinding = components[index];
                 flowNodeOutput.TargetNode           = this;
                 flowNodeOutput.TargetPinID          = this.mPins[embeddedPin].PinID;
             }
         }
         else if (components[index] is FlowNode_Input)
         {
             int embeddedPin = this.FindEmbeddedPin((components[index] as FlowNode_Input).PinName);
             if (embeddedPin >= 0 && this.mPins[embeddedPin].PinType == FlowNode.PinTypes.Input)
             {
                 this.mPins[embeddedPin].NodeBinding = components[index];
             }
         }
     }
 }
 protected void DestroyInstance()
 {
     if (Object.op_Equality((Object)this.mInstance, (Object)null))
     {
         return;
     }
     for (int index = 0; index < this.mPins.Length; ++index)
     {
         if (Object.op_Inequality((Object)this.mPins[index].NodeBinding, (Object)null))
         {
             if (this.mPins[index].PinType == FlowNode.PinTypes.Output)
             {
                 FlowNode_Output nodeBinding = this.mPins[index].NodeBinding as FlowNode_Output;
                 nodeBinding.TargetNode  = (FlowNode_ExternalLink)null;
                 nodeBinding.TargetPinID = -1;
             }
             this.mPins[index].NodeBinding = (FlowNode)null;
         }
     }
     Object.Destroy((Object)this.mInstance);
     this.mInstance = (GameObject)null;
     this.OnInstanceDestroy();
 }