OpenRA/OpenRA — pull request #2887 by pchote (2013-03-29 09:48:32+00:00)
Title: Replace Turret/Muzzle positioning code

These patches introduce a new set of coordinates for representing position and orientation, and uses them to implement a much better system for positioning turrets and muzzles.

Key changes:
- New types for representing 3d types and rotations without requiring any floating point math.
- Turrets and weapons understand arbitrary 3d rotations, not just facing.
- Muzzles are now affected by recoil.
- Clearer yaml definitions for positioning turrets/muzzles (forward,right,up relative to body).
- Includes a debug layer for displaying the muzzle positions (might finally encourage someone to set them properly).
- Lays the foundations for voxels and TS/RA2 support.

I've tested this with RA, C&C, and my voxel test mod and I'm pretty sure I've covered all the edge cases. I have left rotors/spinners/etc with the old positioning for now, as these are better solved as part of #2841.

It will be straightforward from here to start fixing the coordinate-system mess and the rest of the combat code, but that should wait until these changes have been proven stable.