コード例 #1
0
        public static Tuple <bool, string> EvaluateTests(Operator testingOp, string filterPattern)
        {
            try
            {
                //connect it to a testsevaluator
                var compositionOp = testingOp.Parent;

                var evaluatorMetaOpID = Guid.Parse("0316356c-b1fe-490a-89ce-73c8f67ebccc");
                var evaluatorMetaOp   = MetaManager.Instance.GetMetaOperator(evaluatorMetaOpID);

                var addOpCmd = new AddOperatorCommand(compositionOp, evaluatorMetaOpID);
                addOpCmd.Do();
                var evaluatorOp = evaluatorMetaOp.GetOperatorInstance(addOpCmd.AddedInstanceID);

                var connection = new MetaConnection(testingOp.ID, testingOp.Outputs[0].ID,
                                                    evaluatorOp.ID, evaluatorOp.Inputs[0].ID);
                var addConnectionCmd = new InsertConnectionCommand(compositionOp.Definition, connection, 0);
                addConnectionCmd.Do();

                //configure the testsevaluator op and start testing
                var startTestsTriggerOpPart = evaluatorOp.Inputs[1];
                var filterOpPart            = evaluatorOp.Inputs[3];

                //we must create a down flank for the startTestsTrigger value to start the tests properly
                var updateStartTestsCmd = new UpdateOperatorPartValueFunctionCommand(startTestsTriggerOpPart, new Float(1.0f));
                updateStartTestsCmd.Do();
                var updateFilterCmd = new UpdateOperatorPartValueFunctionCommand(filterOpPart, new Text(filterPattern));
                updateFilterCmd.Do();
                evaluatorOp.Outputs[0].Eval(new OperatorPartContext());

                updateStartTestsCmd.Value = new Float(0.0f);
                updateStartTestsCmd.Do();
                var resultLog = evaluatorOp.Outputs[0].Eval(new OperatorPartContext()).Text;

                var result = new Tuple <bool, string>(resultLog.StartsWith(compositionOp.Definition.Name + " : passed"), resultLog);

                var deleteOperatorCmd = new DeleteOperatorsCommand(compositionOp, new List <Operator>()
                {
                    evaluatorOp
                });
                deleteOperatorCmd.Do();
                return(result);
            }
            catch (Exception ex)
            {
                Logger.Error("Failed to evaluate operator definition {0}: {1}", testingOp.Name, ex.ToString());
                return(new Tuple <bool, string>(false, ""));
            }
        }
コード例 #2
0
        private void BuildTree(Operator fbxOp, List <ICommand> importFbxCommandList, Operator parent, OperatorPart input, Node node, double x, double y, string rootName = "")
        {
            Guid metaIDToAdd = GetIDOfNode(node);

            var newOpName = "";

            if (node is Group)
            {
                newOpName = "+ " + node.Name;
            }
            else if (node is Transform)
            {
                newOpName = "Transform";
            }
            else if (node is TransformMatrix)
            {
                newOpName = "TransformMatrix";
            }
            else if (node is Material)
            {
                newOpName = "Material";
            }
            else
            {
                newOpName = node.Name;
            }

            if (parent == null)
            {
                newOpName += rootName;
            }

            var addOperatorCommand = new AddOperatorCommand(fbxOp, metaIDToAdd, x, y, TreeWidth(node), true, newOpName);

            importFbxCommandList.Add(addOperatorCommand);
            addOperatorCommand.Do();

            var newOp = (from o in fbxOp.InternalOps
                         where addOperatorCommand.AddedInstanceID == o.ID
                         select o).Single();

            SetupValues(newOp, node);

            if (input != null)
            {
                var newConnection = new MetaConnection(newOp.ID, newOp.Outputs[0].ID,
                                                       parent == null ? Guid.Empty : parent.ID, input.ID);

                var firstOccuranceOfTargetOpID = fbxOp.Definition.Connections.FindIndex(con => (con.TargetOpID == newConnection.TargetOpID) &&
                                                                                        (con.TargetOpPartID == newConnection.TargetOpPartID));
                var lastOccuranceOfTargetOpID = fbxOp.Definition.Connections.FindLastIndex(con => (con.TargetOpID == newConnection.TargetOpID) &&
                                                                                           (con.TargetOpPartID == newConnection.TargetOpPartID));

                int index = 0;
                if (firstOccuranceOfTargetOpID > -1 && lastOccuranceOfTargetOpID > -1)
                {
                    index = lastOccuranceOfTargetOpID - firstOccuranceOfTargetOpID + 1;
                }

                var addConnectionCommand = new InsertConnectionCommand(fbxOp.Definition, newConnection, index);
                addConnectionCommand.Do();
                importFbxCommandList.Add(addConnectionCommand);
            }

            double childX = 0;

            foreach (Node child in node.Children)
            {
                BuildTree(fbxOp, importFbxCommandList, newOp, newOp.Inputs[0], child, x + childX, y + CompositionGraphView.GRID_SIZE);
                childX += TreeWidth(child);
            }
        }