I feel like I’m missing something complete obvious so I apologise in advance if (when?) that is the case.
I’m trying to do something really simple, change a bool value in a struct from false to true. Obviously I can’t change it directly, so I created a method within the struct that I can call which should change the value there. It doesn’t seem to be the case. Here is the code and I’d appreciate any insight;
public void MethodName(ScanLineNode node [...])
{
//This will perform a raycast from the Node's position in the specified direction. If the raycast hits nothing, it will return Vector3.zero ('Row is complete'), otherwise will return the hit point
Vector3 terminationPoint = node.RaycastDirection(node, direction, maxDist, targetRaycast, replacementColour, backgroundColour);
ScanLineNode terminationNode = new ScanLineNode();
//Previously attempted to store a local reference to this row being used, but also did not work
//List<ScanLineNode> rowNodes = allScanLineNodes[node.rowNumber];
[...]
if (terminationPoint == Vector3.zero)
{
//Definitely reaches this point, and executes this function along the row, I have added breakpoints and checked what happens in this for loop. After running 'RowComplete' (which just changes 'rowComplete' from false to true) 'rowComplete' is still false. Just in case I've included the RowComplete() function below.
Debug.Log("Row Complete: " + node.rowNumber);
for (int i = 0; i < allScanLineNodes[node.rowNumber].Count; i++)
{
allScanLineNodes[node.rowNumber]*.RowCompleted();*
}
}
}
ScanLineNode Struct – Most stuff is hidden (that I don’t believe is affecting this), I have included the RowComplete() function however.
public struct ScanLineNode
{
[…]
public bool rowComplete;
[…]
public ScanLineNode([…])
{
[…]
rowComplete = false;
[…]
}
public void RowCompleted()
{
rowComplete = true;
}
}
I have also confirmed that RowCOmpleted() does not get called anywhere aside the above location, and ‘rowComplete’ is only called from the RowComplete() function