// public void Perform( ECsgOperation inOper, CSGObject inMaster, CSGObject inSlave ) { // we are processing our slave faces processState = EProcessState.Process_Slave; // process faces against master tree PerformFaces( inMaster.rootNode, inSlave.faces ); // process face from master tree processState = EProcessState.Process_Master; // perform master faces on slave bsp tree PerformTree( inMaster.rootNode, inSlave.rootNode ); // check if how do we need to process generated faces if( inOper == ECsgOperation.CsgOper_Additive || inOper == ECsgOperation.CsgOper_Subtractive ) { // add deferred faces to master tree... for( int i = 0; i < deferredFaces.Count; i++ ) { Face defFace = ((DeferredFace)deferredFaces[i]).face; BspNode startNode = ((DeferredFace)deferredFaces[i]).node; // testing startNode = inMaster.rootNode; // add node to master tree BspGen.AddNodeRecursive( startNode, defFace, BspNode.BspFlags_IsNew ); } } else { // clear old faces list inMaster.faces.Clear(); // copy created faces for( int i = 0; i < deferredFaces.Count; i++ ) { inMaster.faces.Add( deferredFaces[i].face ); } } // clear deferred faces deferredFaces.Clear(); }
// public void Perform(ECsgOperation inOper, CSGObject inMaster, CSGObject inSlave) { // we are processing our slave faces processState = EProcessState.Process_Slave; // process faces against master tree PerformFaces(inMaster.rootNode, inSlave.faces); // process face from master tree processState = EProcessState.Process_Master; // perform master faces on slave bsp tree PerformTree(inMaster.rootNode, inSlave.rootNode); // check if how do we need to process generated faces if (inOper == ECsgOperation.CsgOper_Additive || inOper == ECsgOperation.CsgOper_Subtractive) { // add deferred faces to master tree... for (int i = 0; i < deferredFaces.Count; i++) { Face defFace = ((DeferredFace)deferredFaces[i]).face; BspNode startNode = ((DeferredFace)deferredFaces[i]).node; // testing startNode = inMaster.rootNode; // add node to master tree BspGen.AddNodeRecursive(startNode, defFace, BspNode.BspFlags_IsNew); } } else { // clear old faces list inMaster.faces.Clear(); // copy created faces for (int i = 0; i < deferredFaces.Count; i++) { inMaster.faces.Add(deferredFaces[i].face); } } // clear deferred faces deferredFaces.Clear(); }