Ejemplo n.º 1
0
        public override bool Read(GH_IO.Serialization.GH_IReader reader)
        {
            // 2013 Oct 8 - Giulio
            // Removing all hacks and making this work properly from Gh 0.9.61 onwards
            // The logic is this: this component ALWAYS gets constructed without "code" & with "out".
            // Then, when they are not necessary, these are added or removed.
            // RegisterInput/Output must always insert the original amount of items.


            if (reader.ItemExists(ID_EditorLocation))
            {
                DefaultEditorLocation = reader.GetDrawingPoint(ID_EditorLocation);
            }
            if (reader.ItemExists(ID_EditorSize))
            {
                DefaultEditorSize = reader.GetDrawingSize(ID_EditorSize);
            }

            bool hideInput = true;

            if (reader.TryGetBoolean(ID_HideInput, ref hideInput))
            {
                HiddenCodeInput = hideInput;
            }

            bool hideOutput = false;

            if (reader.TryGetBoolean(ID_HideOutput, ref hideOutput))
            {
                HiddenOutOutput = hideOutput;
            }

            if (hideInput)
            {
                if (!reader.TryGetString(ID_CodeInput, ref m_inner_codeInput))
                {
                    m_inner_codeInput = string.Empty;
                }
            }

            bool rc = base.Read(reader);


            // Dynamic input fix for existing scripts
            // Always assign DynamicHint or Grasshopper
            // will set Line and not LineCurve, etc...
            if (Params != null && Params.Input != null)
            {
                for (int i = HiddenCodeInput ? 1 : 0; i < Params.Input.Count; i++)
                {
                    var p = Params.Input[i] as Param_ScriptVariable;
                    if (p != null)
                    {
                        FixGhInput(p, false);
                        if (p.TypeHint == null)
                        {
                            p.TypeHint = p.Hints[0];
                        }
                    }
                }
            }
            return(rc);
        }