コード例 #1
0
ファイル: Package.cs プロジェクト: KaivnD/npkg
        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);
                    }
                }
            }
        }
コード例 #2
0
ファイル: Package.cs プロジェクト: KaivnD/npkg
        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;
            }
        }