Wintermute Engine > Bug reports

3D actor's blocking region doesn't work as expected



I just realized that two 3D actors can collide when they shouldn't. I've tested it using the following scenario:

I have a player character (PC) and a (non-playable character) NPC, two Trinity model copies (from the 3D demo). The player controls one Trinity, and the other Trinity walks automatically from one side of the scene to the other, using the following code:

--- Code: WME Script ---while (true){    trinity2.GoTo(150, 480);    Sleep(200);    trinity2.GoTo(600, 480);    Sleep(200);}
Both Trinitys have the same blocked regions and waypoints in their .act3d file:

--- Code: WME Script ---  BLOCKED_REGION  {      POINT {  0,-50}      POINT { 50,  0}      POINT {  0, 50}      POINT {-50,  0}  }   WAYPOINTS  {      POINT {  0,-55}      POINT { 55,  0}      POINT {  0, 55}      POINT {-55,  0}  }
I have a very simple geometry (one only walk plane, one camera and one omni light) and the scene has the "2D pathfinding" enabled.

So, if the PC is in any midpoint in the NPC path, and it's still (non-walking) then the NPC circumvents the PC to avoid colliding with it. That's OK.

However, if the PC is in move (walking), the NPC walks through the PC without collision. Moreover, sometimes both PC and NPC ends their walk movements in the same place, and, if this is the case, both PC and NPC gets stuck and they will not move anymore (I suppose that PC enters into the NPC's blocked region and vice versa, so they can't move).

I'm just guessing, but I think the engine doesn't check 3D actor's personal blocked region when in move, or maybe the check is done only once, just before the GoTo(), and never re-check any possible change in any movable blocked region during the GoTo() execution.

2D actor collision detection seems to work OK, though.

Any clues?

Thank you very much in advance.


[0] Message Index

Go to full version