Ok, here is the two functions that are acting up, they have Debug.Log lines.
void UpdatePosition() {
if (transform.position.y > 0.5)
CurrentSide = 0;
if (transform.position.y < -0.5)
CurrentSide = 2;
if (transform.position.z > 0.5)
CurrentSide = 1;
if (transform.position.z < -0.5)
CurrentSide = 3;
if (transform.position.x > 0.5)
CurrentSide = 5;
if (transform.position.x < -0.5)
CurrentSide = 4;
Debug.Log("Side:" + CurrentSide.ToString() +
" V:" + transform.position.ToString() + "\n" +
(-transform.position.y).ToString() + "/" + Dist.ToString() + "+" + 3.ToString() + " = " + ((int)-(transform.position.y / Dist) + 3).ToString());
switch (CurrentSide) {
default:
case 0:
pData.x = (int)(transform.position.x / Dist) + 3;
pData.y = (int)-(transform.position.z / Dist) + 3;
break;
case 1:
pData.x = (int)(transform.position.x / Dist) + 3;
pData.y = (int)(transform.position.y / Dist) + 3;
break;
case 2:
pData.x = (int)(transform.position.x / Dist) + 3;
pData.y = (int)(transform.position.z / Dist) + 3;
break;
case 3:
pData.x = (int)(transform.position.x / Dist) + 3;
pData.y = (int)-(transform.position.y / Dist) + 3;
break;
case 4:
pData.x = (int)(transform.position.y / Dist) + 3;
pData.y = (int)-(transform.position.z / Dist) + 3;
break;
case 5:
pData.x = (int)-(transform.position.y / Dist) + 3;
pData.y = (int)-(transform.position.z / Dist) + 3;
break;
}
// pData.x = CurrentX;
// pData.y = CurrentY;
pData.side = CurrentSide;
return;
}
void UpdateEnteringPosition(Vector3 t) {
if (t.y > 0.5)
pData.enteringside = 0;
if (t.y < -0.5)
pData.enteringside = 2;
if (t.z > 0.5)
pData.enteringside = 1;
if (t.z < -0.5)
pData.enteringside = 3;
if (t.x > 0.5)
pData.enteringside = 5;
if (t.x < -0.5)
pData.enteringside = 4;
Debug.Log("eSide:" + pData.enteringside.ToString() +
" V:" + t.ToString() + "\n" +
(-t.y).ToString() + "/" + Dist.ToString() + "+" + 3.ToString() + " = " + ((int)-(t.y / Dist) + 3).ToString());
switch (pData.enteringside) {
default:
case 0:
pData.enteringx = (int)(t.x / Dist) + 3;
pData.enteringy = (int)-(t.z / Dist) + 3;
break;
case 1:
pData.enteringx = (int)(t.x / Dist) + 3;
pData.enteringy = (int)(t.y / Dist) + 3;
break;
case 2:
pData.enteringx = (int)(t.x / Dist) + 3;
pData.enteringy = (int)(t.z / Dist) + 3;
break;
case 3:
pData.enteringx = (int)(t.x / Dist) + 3;
pData.enteringy = (int)-(t.y / Dist) + 3;
break;
case 4:
pData.enteringx = (int)(t.y / Dist) + 3;
pData.enteringy = (int)-(t.z / Dist) + 3;
break;
case 5:
pData.enteringx = (int)-(t.y / Dist) + 3;
pData.enteringy = (int)-(t.z / Dist) + 3;
break;
}
return;
}
And here is the console output I get:
UpdateEnteringPosition:
eSide:3 V:(0.0, 0.4, -0.6)
-0.4/0.2+3 = 2
UpdatePosition:
Side:3 V:(0.0, 0.4, -0.6)
-0.4/0.2+3 = 1
UpdateEnteringPosition’s math is incorrect, but UpdatePosition is correct. UpdateEnteringPosition is called from inside a CoRoutine, UpdatePosition is not. Also, UpdatePosition is called after the CoRoutine ends.
For whatever reason, in UpdateEnteringPosition’s switch statement, case zero works fine, but all over cases seem to give bad numbers.
What is going on here?!