Running a specific script in Unity Editor ignores some statements, apparently at random???
Interestingly, the same script executes perfectly when run as a Console application in Visual Studio!!
Note that the same lines are ignored regardless of data input.
I’ve tried to refactor the functions in different ways, but nothing works.
Please provide ADVICE on how to TROUBLESHOOT this further!!
Here is a snippet of the code with Debug statements.
public void ApplySeparationForcesToBall(Ball ball)
{
Debug.Log("ApplySeparationForcesToBall()");
int i = ball.ball_index;
for (int k = i + 1; k < numballs; k++)
{
Ball neighbour = list_balls[k];
int j = neighbour.ball_index;
Debug.Log("applySeparationForcesToBall1: i=" + i + " j=" + j + " k=" + k + "ball.position=" + ball.position + "neighbour.position=" + neighbour.position);
Debug.Log("applySeparationForcesToBall2: call GetSeparationForce");
Vector2 forceij = GetSeparationForce(ball, neighbour);
Debug.Log("applySeparationForcesToBall3: i=" + i + " j=" + j + " forceij=" + forceij + " forceij.magnitude=" + forceij.magnitude);
if (forceij.magnitude > 0f) // check whether this should be magnitude or norm?
{
list_separate_forces[i] = list_separate_forces[i] + forceij;
list_separate_forces[j] = list_separate_forces[j] - forceij;
list_near_balls[i] += 1;
list_near_balls[j] += 1;
Debug.Log(" force[ij].magnitude >0 list_separate_forces[i]=" + list_separate_forces[i] + " list_near_balls[i]=" + list_near_balls[i]);
Debug.Log(" list_separate_forces[j]=" + list_separate_forces[j] + " list_near_balls[j]=" + list_near_balls[j]);
}
}
Here is the console output from Unity Editor where XXs indicate the Debug lines that are missing!!
applySeparationForcesToBall1: i=1 j=2 k=2ball.position=(0.3, 0.2)neighbour.position=(0.5, 0.4)
XX
applySeparationForcesToBall3: i=1 j=2 forceij=(-0.8, -0.6) forceij.magnitude=0.9999999
force[ij].magnitude >0 list_separate_forces<em>=(0.0, 0.0) list_near_balls*=2*</em>
<em>*list_separate_forces[j]=(1.6, 1.2) list_near_balls[j]=2*</em>
_*applySeparationForcesToBall1: i=1 j=3 k=3ball.position=(0.3, 0.2)neighbour.position=(0.7, 0.5)*_
_*XX*_
_*applySeparationForcesToBall3: i=1 j=3 forceij=(-0.8, -0.6) forceij.magnitude=1*_
<em><em>force[ij].magnitude >0 list_separate_forces<em>=(-0.8, -0.6) list_near_balls*=3*</em></em></em>
<em><em>_*XX*_</em></em>
<em><em>_*applySeparationForcesToBall1: i=1 j=4 k=4ball.position=(0.3, 0.2)neighbour.position=(0.9, 0.7)*_</em></em>
<em><em>_*XX*_</em></em>
<em><em>_*applySeparationForcesToBall3: i=1 j=4 forceij=(-0.8, -0.6) forceij.magnitude=1*_</em></em>
<em><em><em><em>force[ij].magnitude >0 list_separate_forces<em>=(-1.6, -1.2) list_near_balls*=4*</em></em></em></em></em>
<em><em><em><em>_*XX*_</em></em></em></em>
<em><em><em><em><em><em>list_separate_forces*.magnitude=2*</em></em></em></em></em></em>
<em><em><em><em><em><em><em>forces>0 list_separate_forces*=(-1.9, -1.4)*</em></em></em></em></em></em></em>
<em><em><em><em><em><em>_*XX*_</em></em></em></em></em></em>
<em><em><em><em><em><em><em><em>nearballs>0 list_separate_forces*=(-0.5, -0.4)*</em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*applySeparationForcesToBall: separation=(-0.5, -0.4)*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*```*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*Here is the Console output when the identical code is run as a Console application in Visual Studio.*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*Notice that none of the Debug lines are missing!!*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*```ApplySeparationForcesToBall()*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*applySeparationForcesToBall1: i=1 j=2 k=2ball.position=(0.3, 0.2)neighbour.position=(0.5, 0.4)*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*applySeparationForcesToBall2: call GetSeparationForce*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em>_*applySeparationForcesToBall3: i=1 j=2 forceij=(-0.8, -0.6) forceij.magnitude=1*_</em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em>force[ij].magnitude >0 list_separate_forces<em>=(0.0, 0.0) list_near_balls*=2*</em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em>*list_separate_forces[j]=(1.6, 1.2) list_near_balls[j]=2*</em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall1: i=1 j=3 k=3ball.position=(0.3, 0.2)neighbour.position=(0.7, 0.5)*_</em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall2: call GetSeparationForce*_</em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall3: i=1 j=3 forceij=(-0.8, -0.6) forceij.magnitude=1*_</em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em>force[ij].magnitude >0 list_separate_forces<em>=(-0.8, -0.6) list_near_balls*=3*</em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em>*list_separate_forces[j]=(1.6, 1.2) list_near_balls[j]=2*</em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall1: i=1 j=4 k=4ball.position=(0.3, 0.2)neighbour.position=(0.9, 0.7)*_</em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall2: call GetSeparationForce*_</em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall3: i=1 j=4 forceij=(-0.8, -0.6) forceij.magnitude=1*_</em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em>force[ij].magnitude >0 list_separate_forces<em>=(-1.6, -1.2) list_near_balls*=4*</em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em>*list_separate_forces[j]=(1.6, 1.2) list_near_balls[j]=2*</em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>list_separate_forces*.magnitude=2*</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>forces>0 list_separate_forces*=(-1.9, -1.4)*</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>list_near_balls*=4*</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>nearballs>0 list_separate_forces*=(-0.5, -0.4)*</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>_*applySeparationForcesToBall: separation=(-0.5, -0.4)*_</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>_*```*_</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>
<em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em><em>_*I also found that the numeric output of Unity Editor differs from that of the Visual Studio Console application, even when the data input is the same. This is because some of the calculations in Unity Editor are skipped.*_</em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em></em>