コード例 #1
0
ファイル: GroupNode.cs プロジェクト: r2d2m/NodeGame
        public void UpdateInputs()
        {
            SortIns();
            for (int i = 0; i < groupIns.Count; i++)
            {
                if (inputs.Count > i)
                {
                    //update current input
                    MultiDataInput inp  = (MultiDataInput)inputs[i];
                    GroupInputNode node = (GroupInputNode)groupIns[i].node;
                    if (!inp.GetAllowedDataTypes().Contains(node.dataType))
                    {
                        inp.SetAllowedDataTypes(new List <Type>(new Type[] { node.dataType }));
                    }
                }
                else
                {
                    //create new input
                    GroupInputNode node = (GroupInputNode)groupIns[i].node;
                    MultiDataInput inp  = new MultiDataInput(this, new List <Type>(new Type[] { node.dataType }));
                    inputs.Add(inp);
                }
            }
            //supprime les autres inputs

            while (inputs.Count > groupIns.Count)
            {
                inputs.RemoveAt(groupIns.Count);
            }
        }
コード例 #2
0
ファイル: AddNode.cs プロジェクト: r2d2m/NodeGame
 internal override void PartialSetup()
 {
     if (in1.GetDataType() != null || in2.GetDataType() != null)
     {
         //if there is something plugged in somewhere
         //or both are plugged in
         bool one = true;
         bool two = false;
         Type t   = in1.GetDataType();
         if (t == null)
         {
             one = false;
             two = true;
             t   = in2.GetDataType();
         }
         if (in2.GetDataType() != null)
         {
             two = true;
         }
         //t is the right type
         in1.SetAllowedDataTypes(new List <Type>(new Type[] { t }));
         in2.SetAllowedDataTypes(new List <Type>(new Type[] { t }));
         if (one)
         {
             in1.SetIncommingDataType(t);
         }
         if (two)
         {
             in2.SetIncommingDataType(t);
         }
         outp.SetDataType(t);
         if (outputs.Count == 0)
         {
             outputs.Add(outp);
         }
         //both can only accept the right type
     }
     if (in1.GetDataType() == null && in2.GetDataType() == null)
     {
         //otherwise if both are unplugged, open back the inputs to any type
         outputs.Clear();
         in1.SetAllowedDataTypes(new List <Type>(new Type[] { typeof(Vector2), typeof(Vector3), typeof(float) }));
         in2.SetAllowedDataTypes(new List <Type>(new Type[] { typeof(Vector2), typeof(Vector3), typeof(float) }));
     }
 }
コード例 #3
0
 public void InitFromVar()
 {
     if (variables.ContainsKey(varName))
     {
         Variable vari = variables[varName];
         varType = vari.GetDataType();
         inp.SetAllowedDataTypes(new List <Type>(new Type[] { vari.GetDataType() }));
         outp.SetDataType(vari.GetDataType());
         if (varType != null && onTypeChanged != null)
         {
             onTypeChanged(varType);
         }
     }
 }