public void Driver_Table_Calls_Into_Node_With_PreviousTable() { var nodeBuilder = NodeStateTable <int> .Empty.ToBuilder(); nodeBuilder.AddEntries(ImmutableArray.Create(1, 2, 3), EntryState.Cached); var newTable = nodeBuilder.ToImmutableAndFree(); NodeStateTable <int>?passedIn = null; CallbackNode <int> callbackNode = new CallbackNode <int>((b, s) => { passedIn = s; return(newTable); }); // empty first time DriverStateTable.Builder builder = GetBuilder(DriverStateTable.Empty); builder.GetLatestStateTableForNode(callbackNode); Assert.Same(NodeStateTable <int> .Empty, passedIn); // gives the returned table the second time around DriverStateTable.Builder builder2 = GetBuilder(builder.ToImmutable()); builder2.GetLatestStateTableForNode(callbackNode); Assert.NotNull(passedIn); AssertTableEntries(passedIn !, new[] { (1, EntryState.Cached), (2, EntryState.Cached), (3, EntryState.Cached) });
public void Driver_Table_Calls_Into_Node_With_Self() { DriverStateTable.Builder?passedIn = null; CallbackNode <int> callbackNode = new CallbackNode <int>((b, s) => { passedIn = b; return(s); }); DriverStateTable.Builder builder = GetBuilder(DriverStateTable.Empty); builder.GetLatestStateTableForNode(callbackNode); Assert.Same(builder, passedIn); }
public void Driver_Table_Calls_Into_Node_With_EmptyState_FirstTime() { NodeStateTable <int>?passedIn = null; CallbackNode <int> callbackNode = new CallbackNode <int>((b, s) => { passedIn = s; return(s); }); DriverStateTable.Builder builder = GetBuilder(DriverStateTable.Empty); builder.GetLatestStateTableForNode(callbackNode); Assert.Same(NodeStateTable <int> .Empty, passedIn); }
public void setMRI(CT m, bool isLeft) { mri = m; //now need to gather information representing the CT data, then pass it to the volNode //the volNode can then load it into openGL at will int x = mri.width; int y = mri.height; int z = mri.depth; int w = (int)(x * mri.voxelSizeX); int h = (int)(y * mri.voxelSizeY); int l = (int)(z * mri.voxelSizeZ); Console.WriteLine("cropped size of mri data" + w + ", " + h + ", " + l); int dataSize = x * y * z * 4; int[] allDatint = new int[dataSize]; Console.WriteLine("data size from C# " + dataSize + ", "); for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { for (int k = 0; k < z; k++) { int v = (i + x * (j + k * y)); //int v = (k + z * (j + i * y)) * 4; //for (int hl = 0; hl < 4; hl++) //{ // allDatint[v + hl] = mri.getVoxel_as(i, j, k, 0); // //if (mri.getVoxel_as(i, j, k, 0) >254) Console.WriteLine(v + ": " + mri.getVoxel_as(i, j, k, 0) + " stored: " + allDatint[v + hl]); //} allDatint[v + 0] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 1] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 2] = mri.getVoxel_as(i, j, k, 0); allDatint[v + 3] = 255; } } } //for (int ik = 0; ik < x * y * z * 4;ik++ ) //{ // if(allDatint[ik]>100)Console.WriteLine("d: " + allDatint[ik]); //} Console.WriteLine("done printing data"); volNode = new CallbackNode(w, h, l, x, y, z, allDatint, isLeft); volNode.setUpCallBack(); _root.addChild(volNode); }
public IEnumerator StartExecutionFlow(CallbackNode callbackNode) { NodeExecutionContext nodeExecutionContext = new NodeExecutionContext { node = callbackNode }; while (nodeExecutionContext.node != null) { Debug.Log("<color=green> Execute node: " + nodeExecutionContext.node + " ... GRAPH: " + name + "</color>"); nodeExecutionContext.node.Enter(); yield return(new YieldNode(nodeExecutionContext)); Debug.Log("<color=red> Finished node: " + nodeExecutionContext.node + "</color>"); yield return(new WaitForSeconds(0.25f)); nodeExecutionContext.node.Exit(); nodeExecutionContext = nodeExecutionContext.node.NextNode(nodeExecutionContext); } yield return(null); }