public MethodInvokeParameterUnionControl(CodeGenerateSystem.Base.ConstructionParams csParam, string param) : base(csParam, param) { InitConstruction(); string[] splits = param.Split(':'); mParamValue = splits[0]; mParamName = splits[1]; if (splits[2].StartsWith("@")) { string[] splitsType = splits[2].Split('#'); string[] linkTypeSplits = splitsType[1].Split(','); foreach (var linkType in linkTypeSplits) { var str = linkType.Replace(" ", ""); if (mParamELinkType == CodeGenerateSystem.Base.enLinkType.All) { mParamELinkType = CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str); } else { mParamELinkType |= CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str); } } mParamType = EngineNS.Rtti.RttiHelper.GetTypeFromTypeFullName(splitsType[0].Remove(0, 1), csParam.CSType); } else { string[] linkTypeSplits = splits[2].Split(','); foreach (var linkType in linkTypeSplits) { var str = linkType.Replace(" ", ""); if (mParamELinkType == CodeGenerateSystem.Base.enLinkType.All) { mParamELinkType = CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str); } else { mParamELinkType |= CodeGenerateSystem.Base.LinkObjInfo.GetLinkTypeFromTypeString(str); } } } AddLinkObject(mParamELinkType, mParamEllipse, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, null, true); }
public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam) { CodeGenerateSystem.Base.enLinkType linkType = CodeGenerateSystem.Base.enLinkType.NumbericalValue | CodeGenerateSystem.Base.enLinkType.VectorValue; switch (smParam.ConstructParam) { case "=": case "==": case "≠": linkType = linkType | CodeGenerateSystem.Base.enLinkType.Class | CodeGenerateSystem.Base.enLinkType.Bool | CodeGenerateSystem.Base.enLinkType.String; break; } CollectLinkPinInfo(smParam, "CtrlParamLink_1", linkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false); CollectLinkPinInfo(smParam, "CtrlParamLink_2", linkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false); CollectLinkPinInfo(smParam, "CtrlresultHandle", CodeGenerateSystem.Base.enLinkType.Bool, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true); }
public static void InitNodePinTypes(CodeGenerateSystem.Base.ConstructionParams smParam) { CodeGenerateSystem.Base.enLinkType value1LinkType = CodeGenerateSystem.Base.enLinkType.Unknow; CodeGenerateSystem.Base.enLinkType value2LinkType = CodeGenerateSystem.Base.enLinkType.Unknow; CodeGenerateSystem.Base.enLinkType resultLinkType = CodeGenerateSystem.Base.enLinkType.Unknow; value1LinkType = GetLinkType(smParam); value2LinkType = GetLinkType(smParam); if (smParam.ConstructParam == "&&" || smParam.ConstructParam == "||") { value1LinkType |= CodeGenerateSystem.Base.enLinkType.Class; value2LinkType |= CodeGenerateSystem.Base.enLinkType.Class; } resultLinkType = GetLinkType(smParam); CollectLinkPinInfo(smParam, "CtrlValue1", value1LinkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false); CollectLinkPinInfo(smParam, "CtrlValue2", value2LinkType, CodeGenerateSystem.Base.enBezierType.Left, CodeGenerateSystem.Base.enLinkOpType.End, false); CollectLinkPinInfo(smParam, "CtrlResultLink", resultLinkType, CodeGenerateSystem.Base.enBezierType.Right, CodeGenerateSystem.Base.enLinkOpType.Start, true); }
// 根据两个运算的类型获得一个合法的类型, 如果两个值不能运算则返回Unknow private CodeGenerateSystem.Base.enLinkType GetAvilableType(CodeGenerateSystem.Base.enLinkType type1, CodeGenerateSystem.Base.enLinkType type2) { return(CodeGenerateSystem.Base.enLinkType.Bool); }
// 根据两个运算的类型获得一个合法的类型, 如果两个值不能运算则返回Unknow private CodeGenerateSystem.Base.enLinkType GetAvilableType(CodeGenerateSystem.Base.enLinkType type1, CodeGenerateSystem.Base.enLinkType type2) { switch (CSParam.ConstructParam) { case "+": case "-": case "×": case "÷": { if (type1 == CodeGenerateSystem.Base.enLinkType.String || type2 == CodeGenerateSystem.Base.enLinkType.String) { return(CodeGenerateSystem.Base.enLinkType.String); } if ((type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type1 || (type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue) { if ((type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type2 || (type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == CodeGenerateSystem.Base.enLinkType.NumbericalValue) { return(type1); } if (type1 == type2) { return(type1); } if ((type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type2 || (type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue) { return(type1); } return(CodeGenerateSystem.Base.enLinkType.Unknow); } if ((type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type2 || (type2 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue) { if ((type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type1 || (type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == CodeGenerateSystem.Base.enLinkType.NumbericalValue) { return(type2); } if (type1 == type2) { return(type1); } if ((type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == type1 || (type1 & CodeGenerateSystem.Base.enLinkType.VectorValue) == CodeGenerateSystem.Base.enLinkType.VectorValue) { return(type2); } return(CodeGenerateSystem.Base.enLinkType.Unknow); } if ((type1 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type1 && (type2 & CodeGenerateSystem.Base.enLinkType.NumbericalValue) == type2) { if (type1 == CodeGenerateSystem.Base.enLinkType.NumbericalValue && type2 == CodeGenerateSystem.Base.enLinkType.NumbericalValue) { return(CodeGenerateSystem.Base.enLinkType.NumbericalValue); } else if (type1 == CodeGenerateSystem.Base.enLinkType.Double || type2 == CodeGenerateSystem.Base.enLinkType.Double) { return(CodeGenerateSystem.Base.enLinkType.Double); } else if (type1 == CodeGenerateSystem.Base.enLinkType.Single || type2 == CodeGenerateSystem.Base.enLinkType.Single) { return(CodeGenerateSystem.Base.enLinkType.Single); } else { switch (type1) { case CodeGenerateSystem.Base.enLinkType.UInt64: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: return(CodeGenerateSystem.Base.enLinkType.UInt64); default: return(CodeGenerateSystem.Base.enLinkType.Unknow); } } case CodeGenerateSystem.Base.enLinkType.UInt32: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.Int64: case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int64); } } break; case CodeGenerateSystem.Base.enLinkType.UInt16: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); case CodeGenerateSystem.Base.enLinkType.UInt32: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: return(CodeGenerateSystem.Base.enLinkType.Int32); case CodeGenerateSystem.Base.enLinkType.Int64: return(CodeGenerateSystem.Base.enLinkType.Int64); case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int32); } } break; case CodeGenerateSystem.Base.enLinkType.Byte: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); case CodeGenerateSystem.Base.enLinkType.UInt32: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: return(CodeGenerateSystem.Base.enLinkType.Int32); case CodeGenerateSystem.Base.enLinkType.Int64: return(CodeGenerateSystem.Base.enLinkType.Int64); case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int32); } } break; case CodeGenerateSystem.Base.enLinkType.Int64: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.Unknow); case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.Int64: case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int64); } } break; case CodeGenerateSystem.Base.enLinkType.Int32: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.Unknow); case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.Int64: return(CodeGenerateSystem.Base.enLinkType.Int64); case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int32); } } break; case CodeGenerateSystem.Base.enLinkType.Int16: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.Unknow); case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.Int64: return(CodeGenerateSystem.Base.enLinkType.Int64); case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int32); } } break; case CodeGenerateSystem.Base.enLinkType.SByte: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.Unknow); case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.Int64: return(CodeGenerateSystem.Base.enLinkType.Int64); case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.Int32: case CodeGenerateSystem.Base.enLinkType.Int16: case CodeGenerateSystem.Base.enLinkType.SByte: return(CodeGenerateSystem.Base.enLinkType.Int32); } } break; default: return(type1); } } } } break; case "&&": case "||": //if (type1 == CodeGenerateSystem.Base.enLinkType.Bool && type2 == CodeGenerateSystem.Base.enLinkType.Bool) return(CodeGenerateSystem.Base.enLinkType.Bool); //break; case "&": case "|": if (((type1 & CodeGenerateSystem.Base.enLinkType.UnsignedNumbericalValue) == type1) && ((type2 & CodeGenerateSystem.Base.enLinkType.UnsignedNumbericalValue) == type2)) { switch (type1) { case CodeGenerateSystem.Base.enLinkType.Byte: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.UInt16: return(CodeGenerateSystem.Base.enLinkType.Int32); case CodeGenerateSystem.Base.enLinkType.UInt32: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); } } break; case CodeGenerateSystem.Base.enLinkType.UInt16: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.UInt16: return(CodeGenerateSystem.Base.enLinkType.Int32); case CodeGenerateSystem.Base.enLinkType.UInt32: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); } } break; case CodeGenerateSystem.Base.enLinkType.UInt32: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.UInt32: return(CodeGenerateSystem.Base.enLinkType.UInt32); case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); } } break; case CodeGenerateSystem.Base.enLinkType.UInt64: { switch (type2) { case CodeGenerateSystem.Base.enLinkType.Byte: case CodeGenerateSystem.Base.enLinkType.UInt16: case CodeGenerateSystem.Base.enLinkType.UInt32: case CodeGenerateSystem.Base.enLinkType.UInt64: return(CodeGenerateSystem.Base.enLinkType.UInt64); } } break; } } break; } return(CodeGenerateSystem.Base.enLinkType.Unknow); }