public override void CollectDataFromChildren() { var childNodes = ChildNodes.ToArray(); LeftId = (childNodes[0] as IdLinkNode).TableName; RightId = (childNodes[2] as IdLinkNode).TableName; }
public override void CollectDataFromChildren() { var childNodes = ChildNodes.ToArray(); UnionKind = FindFirstChildNodeByType <UnionKindOptNode>().UnionKindOpt; LeftId = (childNodes[0] as IdLinkNode).TableName; RightId = (childNodes[3] as IdLinkNode).TableName; }
/// <summary> /// 删除对象 /// </summary> public void DeleteObject() { if (Parent) { Parent.Remove(this); } var tempChildNodes = ChildNodes.ToArray(); foreach (var item in tempChildNodes) { item.DeleteObject(); } if (DeleteNodeHandle != null) { try { DeleteNodeHandle(this); } catch { } } DestroyImmediate(gameObject); }
public int GetNodeValue() { if (ChildNodes.Count == 0) { return(MetaData.Sum()); } else { int r = 0; var nodeArray = ChildNodes.ToArray(); foreach (int n in MetaData) { if (n <= nodeArray.Length) { r += ChildNodes[n - 1].GetNodeValue(); } } return(r); } }
public override void CollectDataFromChildren() { _binOp = FindFirstChildNodeByType <BinOpNode>().BinOp; var childNodes = ChildNodes.ToArray(); _leftOperand = (ExpressionNode)childNodes[0]; _rightOperand = (ExpressionNode)childNodes[2]; ConstOnly = _leftOperand.ConstOnly && _rightOperand.ConstOnly; GetAllValuesNamesFromNode(_leftOperand); GetAllValuesNamesFromNode(_rightOperand); try { if ((_leftOperand.VariablesNames.Count + _rightOperand.VariablesNames.Count == 1) && (_leftOperand.IsCompressed || _rightOperand.IsCompressed)) { string variableName = default; dynamic constData = default; var left = false; if (_leftOperand.VariablesNames.Count == 1) { variableName = _leftOperand.VariablesNames[0]; constData = _rightOperand.Calc(new Dictionary <string, dynamic>()); left = true; } else { variableName = _rightOperand.VariablesNames[0]; constData = _leftOperand.Calc(new Dictionary <string, dynamic>()); left = false; } IsCompressed = true; switch (_binOp) { case BinOp.Equal: AddVariableBorder(variableName, new VariableBorder(constData, constData, false, false)); break; case BinOp.Greater: if (left) { AddVariableBorder(variableName, new VariableBorder(constData, null, true, true)); } else { AddVariableBorder(variableName, new VariableBorder(null, constData, true, true)); } break; case BinOp.Less: if (left) { AddVariableBorder(variableName, new VariableBorder(null, constData, true, true)); } else { AddVariableBorder(variableName, new VariableBorder(constData, null, true, true)); } break; case BinOp.EqualGreater: if (left) { AddVariableBorder(variableName, new VariableBorder(constData, null, false, false)); } else { AddVariableBorder(variableName, new VariableBorder(null, constData, false, false)); } break; case BinOp.EqualLess: if (left) { AddVariableBorder(variableName, new VariableBorder(null, constData, false, false)); } else { AddVariableBorder(variableName, new VariableBorder(constData, null, false, false)); } break; default: IsCompressed = false; break; } } else { IsCompressed = false; } if (_binOp == BinOp.And && _leftOperand.IsCompressed && _rightOperand.IsCompressed && !_leftOperand.ConstOnly && !_rightOperand.ConstOnly && _leftOperand.VariablesBorder.Count > 0 && _rightOperand.VariablesBorder.Count > 0) { foreach (var variableBorder in _leftOperand.VariablesBorder) { if (variableBorder.Value.LeftBorder == null && variableBorder.Value.RightBorder == null) { throw new Exception(); } AddVariableBorder(variableBorder.Key, (VariableBorder)variableBorder.Value.Clone()); } foreach (var variableBorder in _rightOperand.VariablesBorder) { if (variableBorder.Value.LeftBorder == null && variableBorder.Value.RightBorder == null) { throw new Exception(); } AddVariableBorder(variableBorder.Key, (VariableBorder)variableBorder.Value.Clone()); } IsCompressed = true; } } catch (Exception exc) { IsCompressed = false; } }