bases and teleportation link sources and destinations. The team base
faces have to be flat tops (normal = +z), but there are no limitations
other than that. You can still jump and shoot backwards through the
mesh faces without having either the baseTeam or teleportLink properties
take effect.
The face links are especially useful, because I've added large number
of configuration parameters. Here are some examples:
- source to destination coordinate system translation (position & velocity)
- entry velocity scale
- exit velocity
- entry angular velocity scale
- exit angular velocity
- exit angle (or angle offset)
- radar rendering
- teleport sound
- teleport glow effect
- tank discrimination (based on driveThrough)
- shot discrimination (based on shootThrough)
- tank team discrimination
- shot team discrimination
- min and max entry velocities (relative to the source plane's normal)
P.S. except for the new 'text' objects, all world geometry can now be
done using meshes. Teleporters and bases were the last two holdouts.
Code: Select all
------------------------------------------------------------------------
r19708 | trepan | 2009-04-25 23:54:15 -0300 (Sat, 25 Apr 2009) | 68 lines
* bumped BZ_PROTO_VERSION to 0080, and BZ_REV to 22
* made map text objects 'groupable'
* made map link objects 'groupable' (absolute linkage availabe from within groups)
* made MeshFaces capable of being team bases (but only faces with +z normals)
* made MeshFaces capable of being teleport link sources and destinations
* added link and base faces to the RadarRenderer
* replaced the Teleporters with meshes (sceneNodes and collision routines)
* created teleporter meshes using the 'x size' properly
(the mesh extends to where faces lie in the x axis)
* added the teleporter 'texsize' parameter (controls the border texture scale)
* added the faceType to ObstacleType (after ObstacleTypeCount)
* removed the gimbal lock for Guided Missiles
(by replacing azimuth/elevation with 'fvec3 nextVel', and playing with vectors)
* rename the global bzfs 'TeamInfo team[]' variable to 'TeamInfo teamInfos[]'
* added the '_forbidDebug' BZDB variable
(used when debugging reveals game state, defaults to 1)
* added the '_gmAdSpeed' BZDB variable
* added the 'debugLinks' BZDB variable
* added the 'debugTele' BZDB variable
* added the 'debugMotion' BZDB variable
* added the 'debugShotSegments' BZDB variable
* added the client /selflock command
(used for testing, should probably be removed)
* added the IDL(fancy) teleporter shot effect (uses a clip plane)
* changed LinkManager to a global (rather than being owned by World and WorldInfo)
* updated bzw.5 with the new MeshFace and Link parameters
* cleanup (headers, whitespace, typos, rare segvs, etc...)
Link notes:
1. mesh face link sources used the driveThrough and shootThrough properties of
the face to determine if shots and tanks can pass through the link
(so you can have 'tank-only' links, and 'shot-only' links, as well as the
standard 'all-shall-pass' links. The link sources can also define team
specific blocks using the linkSrcShotBlockTeams and linkSrcTankBlockTeams
parameters.
2. when a link object is defined inside of a group definition, you can use the
'/' character in front of 'src' and 'dst' names to link absolutely. If the
'/' character is not used, then matches are limited to that group definition.
3. multiple 'src' and 'dst' lines can now be used in a single link object. you
can also put multiple entries on a single line, separated by whitespace.
4. the linkSrc to linkDst transformation maps between two 3D spaces, defined
by their S/T/P vectors. The standard setup is as follows:
vertical faces: (standard teles)
linkSrc:
S : side vector, points to the left when looking into the plane normal
T : top vector, points upwards (+z)
P : plane vector, the inverse to the plane normal (travel direction)
linkDst:
S : side vector, points to the right when looking into the plane normal
T : top vector, points upwards (+z)
P : plane vector, the plane normal (travel direction)
horizontal faces: (face normal is -z or +z)
linkSrc:
S : side vector, the edge vector defined by (vertex[0] - vertex[1])
T : top vector, P points upwards (+z)
P : plane vector, the inverse to the plane normal (travel direction)
linkDst:
S : side vector, the edge vector defined by (vertex[1] - vertex[0])
T : top vector, points upwards (+z)
P : plane vector, the plane normal (travel direction)
------------------------------------------------------------------------