http://forums.inside3d.com/viewtopic.php?t=2376
Example mod with QC and engine source, testmap and mapsource:
http://www.quaketastic.com/upload/files/misc/rmqrotate.zip
Why is this better than hiprotate:
1) easier to use - only rotate_door and an info_null needed to set it up
2) has its own collision - no more func_movewalls, no more laggy collision, no more stairstep effect, no more painstakingly faking the collision - very large rotating bmodels no problem
3) Key doors etc.
You need
a supporting engine:
Darkplaces, FTE, Proquake, Qrack, RMQ engine (the latter is based on Quakespasm/FitzSDL for you Fitzquake lovers, and included in the test mod)
A supporting
map compiler (only QBSP, you can use whatever vis and light you want):
right now only Lord Havoc's hmap 2 (qbsp stage), because it seems a fix is required
A
custom progs.dat:
doors.qc needs a couple provisions related to rotating doors, and one new file with the spawn functions needs to be added, or its contents placed in doors.qc for example.
How it works:
This method exploits a map compiler hack (present in all compilers that support Hipnotic rotating entities, which are practically all of them) where an entity whose name starts with "rotate_" gets its origin from something it targets. In hipnotic, rotate_object uses this same hack.
The engine then supports the bmodel having an
.avelocity (angle velocity) just like grenades etc. already use, and makes it collide properly.
The additions to the engine are pretty minor.
The map compiler fix that Lord Havoc did is also pretty minor, but I haven't fully understood it yet. I think it could be added to Tree / Txqbsp as well, by someone who understands those a little better.
I sincerely hope that support for rotating bmodels will be added to Fitzquake, or Quakespasm which seems more actively developed and is based on Fitz.
I also hope that standard mods like Quoth will support this, it's not that much code to add to a progs.dat and it's clearly better than hiprotate.
Right now we're still hunting one or two minor bugs, and there's no rotating train that uses this yet. However, it definitely works, and engine support is growing.
Give the testmap a try, perhaps.