public override bool Sync()
        {
            IsChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate();
            if (IsChanged)
            {
                Length = FNodeIn.SliceCount;
                using (var writer = GetWriter())
                {
                    object usI;
                    FNodeIn.GetUpstreamInterface(out usI);
                    var upstreamInterface = usI as IGenericIO;

                    for (int i = 0; i < Length; i++)
                    {
                        int usS;
                        T   result = new T();
                        if (upstreamInterface != null)
                        {
                            FNodeIn.GetUpsreamSlice(i, out usS);
                            IDX11ResourceDataProvider res = (IDX11ResourceDataProvider)upstreamInterface.GetSlice(usS);

                            if (result == null)
                            {
                                res = new T();
                            }
                            result.Assign(res);
                        }
                        writer.Write(result);
                    }
                }
            }
            return(base.Sync());
        }
示例#2
0
 public void Assign(IDX11ResourceDataProvider original)
 {
     if (original != null)
     {
         this.resources = original.Data;
     }
     else
     {
         this.resources = null;
     }
 }