I added a Quad ( and the beginning of a Lozenge ) primitive to the physics system, and fixed a couple of bugs here and there. I am tempted to switch to a contact manager type approach with contact caching, etc, but it hasn't been needed yet, so I won't, even though it would be cleaner & faster.
The reason for the quad primitive was to add force field support. We had the idea for force fields many months ago, but had other higher-priority things to worry about, so put it off, despite what an intriguing idea it could be.
The dynamic nav grid work was needed anyway, but also was important for the force fields.
I now have a working version of the force fields that I'm fairly happy with. I'm sure it will need tweaking, but it works, and definitely adds to the game in some interesting ways.
Here's how it works :
The spiker gun fires 3 spikes in 1 second intervals, then requires 15 seconds to recharge. If the spikes are fired into walls, ceilings, pillars, etc. anywhere near each other, a quad is generated such that it touches all 3 points, and creates a force-field effect. Right now the force field blocks all bullets & movement. The larger your force field, the more transparent it is, and the less time it lasts ( up to 12 seconds ). So, it behooves you to make the area of the force field as little as possible to suit the need at hand.
Now the force field is a physical object, so depending on where you place the 3 shots, you can make a defensive force field when in combat, or a ramp to get up somewhere otherwise inaccessible, or to as a platform to fall onto.
Tomorrow I will add force field reflectivity so that bullets, etc. reflect off the force field, so it can be placed in a hallway corner and used to fire at enemies at a distance.
We have also talked of making the force field have bouncing properties for objects, so it could be used as sort of a trampoline.
When used as defense, it's better than just using the level geometry as cover, because it's partly transparent, so it's easier to see the bad guys while taking cover.