private void SetPackageInput() { foreach (KeyValuePair <Guid, Guid> item in ParamHookMap) { IGH_Param iGH_Param = base.Params.Find(item.Key); GH_ClusterInputHook gH_ClusterInputHook = m_document.FindObject <GH_ClusterInputHook>(item.Value, topLevelOnly: true); if (iGH_Param != null && gH_ClusterInputHook != null) { GH_Structure <IGH_Goo> gH_Structure = new GH_Structure <IGH_Goo>(); IEnumerator enumerator = default; for (int i = 0; i < iGH_Param.VolatileData.PathCount; i++) { GH_Path path = iGH_Param.VolatileData.get_Path(i); IList list = iGH_Param.VolatileData.get_Branch(i); try { enumerator = list.GetEnumerator(); while (enumerator.MoveNext()) { IGH_Goo data = (IGH_Goo)enumerator.Current; gH_Structure.Append(data, path); } } finally { if (enumerator is IDisposable) { (enumerator as IDisposable).Dispose(); } } gH_ClusterInputHook.SetPlaceholderData(gH_Structure); } } } }
private void AdjustPackageInput() { if (m_document != null) { GH_ClusterInputHook[] inputs = m_document.ClusterInputHooks(); for (int i = 0; i < inputs.Length; i++) { Params.RegisterInputParam(CreateParameter(GH_ParameterSide.Input, i)); GH_ClusterInputHook inputHook = inputs[i]; // 找到所有在输入端下游的Component var allDnComponents = m_document.FindAllDownstreamObjects(inputs[0]); if (allDnComponents.Count > 0) { // 取第一个 var inputAdjustment = allDnComponents[0] as GH_Component; if (inputAdjustment != null && Equals(inputAdjustment.ComponentGuid, Identities.SetDefault)) { var plug = inputAdjustment.Params.Input[0] as Param_ScriptVariable; var input = Params.Input[i] as Param_ScriptVariable; input.Access = plug.Access; input.TypeHint = plug.TypeHint; input.NickName = inputHook.CustomNickName; FixGhInput(input); ParamHookMap.Remove(input.InstanceGuid); ParamHookMap.Add(input.InstanceGuid, inputHook.InstanceGuid); } } } inputAdjusted = true; } }