--- bzw.5-orig 2007-01-02 21:37:25.000000000 -0500 +++ bzw.5 2007-01-02 22:00:56.000000000 -0500 @@ -26,48 +26,29 @@ .TP Here is small example world: .PP -# simple world containing a box, pyramid, and mesh -.br +.nf +# simple world containing a box, pyramid, and mesh .B world -.br \fB name\fR Simple World -.br \fB size\fR 100.0 -.br .B end -.br .B box -.br \fB position\fR \-20 \-20 0 -.br \fB size\fR 10 20 10 -.br .B end -.br .B pyramid -.br \fB position\fR 20 20 0 -.br \fB size\fR 10 10 20 -.br .B end -.br .B mesh -.br \fB vertex\fR \-10 0 0 -.br \fB vertex\fR 10 0 0 -.br \fB vertex\fR 0 10 0 -.br \fB face\fR -.br \fB vertices\fR 0 1 2 -.br \fB endface\fR -.br .B end -.br +.fi .PP The .bzw file is a plain text file with a relatively simple file format. The format of this text file consists of any number of @@ -75,55 +56,33 @@ dynamicColor, and material must come before they are referenced) separated by newlines and grouped into blocks of types. The list of world types consists of: -.br +.sp +.nf .B world -.br .B options -.br .B waterLevel -.br .B dynamicColor -.br .B textureMatrix -.br .B transform -.br .B material -.br .B physics -.br .B define -.br .B group -.br .B mesh -.br .B meshbox -.br .B meshpyr -.br .B arc -.br .B cone -.br .B sphere -.br .B tetra -.br .B box -.br .B pyramid -.br .B link -.br .B teleporter -.br .B base -.br .B weapon -.br .B zone -.br +.fi Each object is described by placing the type on one line, the word \fIend\fR on a following line, and a list of attributes for that @@ -143,632 +102,370 @@ command line arguments that are used to configure the server's game mode, but can not contain server specific options such as \-p, \-passwd, and \-conf. - -.br + In the following examples, the values are the defaults. -.B The World object -.br +.SS The World object Header for the world. +.nf \fBworld\fR -.br \fB name\fR example_world -.br \fB size\fR 400.0 -.br \fB flagHeight\fR 10.0 -.br \fBend\fR -.br +.fi -.B The Options object -.br +.SS The Options object A world file interface for setting command line options for BZFS. +.nf \fBoptions\fR -.br \-set _tankSpeed 36 -.br \-j +r \-ms 3 -.br +f GM{5} +f SW{5} -.br \fBend\fR -.br +.fi - -.B The Water Level object -.br +.SS The Water Level object Sets how high the water is, in a matter of units. +.nf \fBwaterLevel\fR -.br \fB name\fR example_waterlevel -.br \fB height\fR \-1.0 # anything below 0 turns it off -.br \fBend\fR -.br - +.fi -.B The Group Definition object -.br +.SS The Group Definition object Defines a group, which may include other group instances -.br + This does not place any objects into the world, a group instance must be used to generate world objects from a group definition. +.nf \fBdefine\fR -.br # You can add any object to a group definition, -.br # except for the following types: -.br # textureMatrix -.br # dynamicColor -.br # material -.br # physics -.br # links -.br # weapon -.br # zone -.br \fBenddef\fR -.br +.fi - -.B The Group Instantiation object -.br +.SS The Group Instantiation object Instantiates a group, and possibly modifies subobjects +.nf \fBgroup\fR # a valid group definition reference -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br # angle degrees about vector n -.br \fB team\fR 0 # change all base colors within group -.br \fB tint\fR 1 1 1 1 # hierarchically tints objects within this group -.br \fB drivethrough\fR # make all subobjects drivethrough -.br \fB shootthrough\fR # make all subobjects shootthrough -.br \fB phydrv\fR example_phydrv # reassign any valid physics drivers -.br \fB matref\fR example_material # set material properties -.br # (except for the color) -.br \fBend\fR -.br - - -.B The Dynamic Color object +.fi +.SS The Dynamic Color object +.nf \fBdynamicColor\fR -.br \fB name\fR example_dyncol -.br # there are 4 channels that can be modified: -.br # \fBred\fR, \fBgreen\fR, \fBblue\fR, \fBalpha\fR -.br # there are 5 types of commands per channel: -.br # \fBlimits\fR, \fBsinusoid\fR, \fBclampUp\fR, \fBclampDown\fR, \fBsequence\fR -.br # except for "limits" and "sequence", the commands are \fBrepeatable\fR -.br # if a sequence is used, then clampUps and clampDowns have no effect -.br # sequences can use three states (0, 1, 2). -.br # 0 \- equivalent to an active clampDown -.br # 1 \- equivalent to no clamps -.br # 2 \- equivalent to an active clampUp -.br # if both clampUp and clampDown are active, the value is (min+max)/2 -.br # the sinusoid function starts at the max value -.br # the sum of a channel's sinusoids is clamped between 0 and 1 -.br \fB red limits\fR 0 1 # min/max limits -.br \fB green sinusoid\fR 0.1 0 0.25 # period, offset, weight -.br \fB blue clampUp\fR 0.1 0 0.75 # period, offset, width -.br \fB alpha clampDown\fR 0.2 0.5 0.5 # period, offset, width -.br \fB red sequence\fR 0.0 0.0 2 0 1 1 2 0 ... # period, offset, list of states -.br \fBend\fR -.br - - -.B The Texture Matrix object +.fi +.SS The Texture Matrix object +.nf \fBtextureMatrix\fR -.br \fB name\fR example_texmat -.br \fB scale\fR 0.0 0.0 1.0 1.0 # u/v freqs, u/v scales -.br \fB spin\fR 0.0 # rotation freq -.br \fB shift\fR 0.0 0.0 # u/v freqs -.br \fB center\fR 0.5 0.5 # dynamic u/v center (for spin and scale) -.br \fB fixedscale\fR 0.0 0.0 # time invariant u/v scale -.br \fB fixedspin\fR 0.0 # time invariant rotation -.br \fB fixedshift\fR 0.0 0.0 # time invariant u/v shift -.br \fBend\fR -.br - - -.B Material Properties +.fi +.SS Material Properties Material properties may be set on several types of objects, including meshes, mesh faces, arcs, cones, spheres, and tetras. Here are the -properties: -.br +properties: +.nf \fBmaterial\fR -.br \fB name\fR example_material -.br \fB resetmat\fR # restore default values -.br \fB matref\fR material_name # copy another material's properties -.br \fB ambient\fR 0.2 0.2 0.2 1.0 # ambient color -.br \fB diffuse\fR 1.0 1.0 1.0 1.0 # diffuse color (\fBmain color\fR) -.br \fB color\fR 1.0 1.0 1.0 1.0 # synonym for 'diffuse' -.br \fB specular\fR 0.0 0.0 0.0 1.0 # specular color -.br \fB emission\fR 0.0 0.0 0.0 1.0 # emission color -.br \fB shininess\fR 0.0 # shininess (0.0 - 128.0) -.br \fB texture\fR filename # set working texture -.br # - non-interlaced PNG -.br # - http:// or ftp:// hyperlinks can be used (no spaces) -.br # - BZFlag default texture names can be used (.png not required) -.br \fB addtexture\fR filename # add texture -.br \fB notextures\fR # specify that no textures are to be used -.br \fB notexalpha\fR # don't use the texture's alpha channel -.br \fB notexcolor\fR # the color is not applied to the texture -.br # if a texture is specified, but not found, the default texture -.br # will be used. if the default texture is also not available, then -.br # the color will be used (untextured) -.br \fB spheremap\fR # use spherical texture coordinate mapping -.br \fB texmat\fR \-1 # texture matrix (\-1 for none) -.br \fB dyncol\fR \-1 # dynamic color (\-1 for none) -.br \fB noradar\fR # do not display on radar (except normal mode) -.br \fB noshadow\fR # do not render shadows -.br \fB noculling\fR # do not cull by face winding (double-sided) -.br \fB nosorting\fR # do not do front-to-back alpha sorting -.br \fB nolighting\fR # disable lighting -.br \fB alphathresh 0.0\fR # alpha thresholding value -.br \fB groupalpha\fR # sort translucent faces as a group -.br \fB occluder\fR # faces with this material will occlude -.br \fBend\fR -.br - - -.B The Physics Driver object +.fi +.SS The Physics Driver object +.nf \fBphysics\fR -.br \fB name\fR example_phydrv -.br \fB linear\fR 0.0 0.0 0.0 # x/y/z linear velocities -.br \fB angular\fR 0.0 0.0 0.0 # rotation freq, x/y coordinates -.br \fB slide\fR 0.0 # time until max velocity (> 0.0 enables) -.br \fB death\fR Message goes here. -.br # the 'death' property requires a non\-blank message -.br \fBend\fR -.br - - -.B The Mesh object +.fi +.SS The Mesh object +.nf \fBmesh\fR -.br \fB name\fR example_mesh -.br # Material properties applied to a mesh apply to all faces -.br # that follow the setting. Mesh faces will alter their own -.br # properties without affecting the state of the mesh properties. -.br # The same pattern is used to apply physics drivers. -.br \fB vertex\fR 100 200 300 # add a vertex (\fBrepeatable\fR) -.br \fB normal\fR 1.0 0 0 # add a normal (\fBrepeatable\fR) -.br \fB texcoord\fR 0.1 0.75 # add a texture coordinate (\fBrepeatable\fR) -.br \fB inside\fR 5.5 4.5 1.2 # add an inside point (\fBrepeatable\fR) -.br \fB outside\fR 0 0 1000 # add an outside point (\fBrepeatable\fR) -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br \fB phydrv\fR example_phydrv # assign a physics driver -.br \fB smoothbounce\fR # ricochets use normals -.br \fB noclusters\fR # render each mesh face individually -.br \fB face\fR # start a face (\fBrepeatable\fR) -.br # the front-face winding is counter-clockwise -.br \fB vertices\fR 1 4 0 3 5 # list of vertices (requires at least three) -.br \fB normals\fR 2 6 0 4 7 # list of normals (optional) -.br \fB texcoords\fR 0 3 2 4 9 # list of texture coordinates (optional) -.br \fB phydrv\fR example_phydrv # assign a physics driver -.br \fB endface\fR # end the face -.br # -.br # This next element can be added to increase the rendering speed -.br # of the mesh object. If the client is capable of using this data, -.br # then it is used to draw the mesh instead of the face information. -.br # -.br \fB drawInfo\fR -.br \fB dlist\fR # display list for all material sets -.br \fB decorative\fR # older clients with not see this mesh -.br \fB angvel\fR # rotation about initial Z axis -.br \fB extents\fR -.br \fB sphere\fR -.br \fB corner\fR (\fBrepeatable\fR) -.br \fB vertex\fR 0.0 0.0 0.0 (\fBrepeatable\fR) -.br \fB normal\fR 0.0 0.0 0.0 (\fBrepeatable\fR) -.br \fB texcoord\fR 0.0 0.0 (\fBrepeatable\fR) -.br \fB lod\fR (\fBrepeatable\fR) -.br \fB lengthPerPixel\fR -.br \fB matref\fR (\fBrepeatable\fR) -.br \fB dlist\fR # display list for this material set -.br \fB sphere\fR -.br \fB points\fR 0 (\fBrepeatable\fR) -.br \fB lines\fR 0 1 (\fBrepeatable\fR) -.br \fB lineloop\fR 0 1 (\fBrepeatable\fR) -.br \fB linestrip\fR 0 1 (\fBrepeatable\fR) -.br \fB tris\fR 0 1 2 (\fBrepeatable\fR) -.br \fB tristrip\fR 0 1 2 (\fBrepeatable\fR) -.br \fB trifan\fR 0 1 2 (\fBrepeatable\fR) -.br \fB quads\fR 0 1 2 3 (\fBrepeatable\fR) -.br \fB quadstrip\fR 0 1 2 3 (\fBrepeatable\fR) -.br \fB polygon\fR 0 1 2 (\fBrepeatable\fR) -.br \fB end\fR # matref -.br \fB end\fR # lod -.br \fB end\fR # drawInfo -.br \fBend\fR # mesh -.br - - -.B The Arc object +.fi +.SS The Arc object +.nf \fBarc\fR -.br \fB name\fR example_arc -.br \fB divisions 16\fR # number of subdivisions -.br \fB flatshading\fR # flat shading (smooth is default) -.br \fB angle 360\fR # the sweep angle -.br \fB ratio 1\fR # (outrad \- inrad) / outrad -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 10 10 10 -.br \fB rotation\fR 0.0 -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br \fB phydrv\fR example_phydrv # assign a physics driver -.br \fB smoothbounce\fR # ricochets use normals -.br \fBend\fR -.br - - -.B The Cone object +.fi +.SS The Cone object +.nf \fBcone\fR -.br \fB name\fR example_cone -.br \fB divisions 16\fR # number of subdivisions -.br \fB flatshading\fR # flat shading (smooth is default) -.br \fB angle 360\fR # the sweep angle -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 10 10 10 -.br \fB rotation\fR 0.0 -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br \fB phydrv\fR example_phydrv # assign a physics driver -.br \fB smoothbounce\fR # ricochets use normals -.br \fBend\fR -.br - - -.B The Sphere object +.fi +.SS The Sphere object +.nf \fBsphere\fR -.br \fB name\fR example_sphere -.br \fB divisions 4\fR # number of subdivisions -.br \fB flatshading\fR # flat shading (smooth is default) -.br \fB position\fR 0.0 0.0 10.0 -.br \fB size\fR 10 10 10 -.br \fB radius 10\fR # sets all size values to this value -.br \fB rotation\fR 0.0 -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br \fB phydrv\fR example_phydrv # assign a physics driver -.br \fB smoothbounce\fR # ricochets use normals -.br \fBend\fR -.br - - -.B The Tetrahedron object +.fi +.SS The Tetrahedron object +.nf \fBtetra\fR -.br \fB name\fR example_tetra -.br # there must always be 4 vertices -.br \fB vertex\fR \-10.0 \-5.0 0.0 -.br \fB vertex\fR +10.0 \-5.0 0.0 -.br \fB vertex\fR 0.0 10.0 0.0 -.br \fB vertex\fR 0.0 5.0 10.0 -.br \fB shift\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB scale\fR 1 1 1 # (\fBrepeatable\fR) -.br \fB shear\fR 0 0 0 # (\fBrepeatable\fR) -.br \fB spin\fR angle nx ny nz # (\fBrepeatable\fR) -.br \fBend\fR -.br +.fi - -.B The Box object -.br +.SS The Box object Adds a simple block. +.nf \fBbox\fR -.br \fB name\fR example_box -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 30.0 30.0 9.42 -.br \fB rotation\fR 0.0 -.br \fBend\fR -.br - +.fi -.B The Pyramid object -.br +.SS The Pyramid object Adds a triangular shaped object. +.nf \fBpyramid\fR -.br \fB name\fR example_pyramid -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 8.2 8.2 10.25 -.br \fB rotation\fR 0.0 -.br \fBend\fR -.br +.fi +.SS The Teleporter object +Adds an object that places a tank at another teleporter in a different +area when ran through. -.B The Teleporter object -.br -Adds an object that places a tank at another teleporter in a different area when ran through. - +.nf \fBteleporter\fR [name] -.br # the [name] tag is used for linkage -.br \fB name\fR example_teleporter -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 5.06 4.48 20.16 -.br \fB rotation\fR 0.0 -.br \fB border\fR 1.12 -.br \fBend\fR -.br - +.fi -.B The Link object -.br +.SS The Link object Adds a route to teleport a tank between two teleporters. +.nf # Teleporter names are terminated with either :f (forward) -.br # or :b (backwards). The forwards link points to 0 degrees, -.br # and the backwards link points to 180. Links are made by -.br # pattern matching the teleporter names. The '*' and '?' -.br # globbing characters can be used to make multiple matches. -.br # If there are multiple matches for the "to" link, then the -.br # destination will be selected randomly between the matches. -.br # in\-game. -.br # NOTE: bzfs \-d \-d \-d \-d will print the linkage table. \fBlink\fR -.br \fB name\fR example_link -.br # this will link all teleporters randomly to all other teleporters -.br \fB from\fR * -.br \fB to\fR * -.br \fBend\fR -.br # or, to link between known teleporters examp_tele1(front) and examp_tele2(back) @@ -782,33 +479,24 @@ .br \fBend\fR .br +.fi - -.B The Base object -.br +.SS The Base object Creates a team base where the corresponding team's flag is stored. The oncap option will fire a world weapon of the specified type when the team flag for this base is captured. +.nf \fBbase\fR -.br \fB name\fR example_base -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 60.0 60.0 0.0 -.br \fB rotation\fR 0.0 -.br \fB color\fR 0 -.br \fB oncap\fR V -.br \fBend\fR -.br - +.fi -.B The Weapon object -.br +.SS The Weapon object Creates a world weapon, or a weapon fired automatically by the world. The weapon can either be timed or be event driven. Timed weapons should use the initdelay and delay fields. Event driven weapons need to use the trigger option to define what the trigger event is. @@ -819,63 +507,39 @@ If the weapon is to be triggered only for a specific team then the eventteam option should be used with a team number (1 to 4). A eventteam value of -1 will trigger this weapon for any team. -1 is the default eventteam value. +.nf \fBweapon\fR -.br \fB name\fR example_weapon -.br \fB position\fR 0.0 0.0 0.0 -.br \fB rotation\fR 0.0 -.br \fB tilt\fR 0.0 -.br \fB initdelay\fR 10.0 -.br \fB delay\fR 10.0 3.0 5.0 3.0 -.br \fB type\fR V -.br \fB trigger\fR flagcap -.br \fB eventteam\fR V -.br \fBend\fR -.br - +.fi -.B The Zone object -.br +.SS The Zone object Specifies a certain range in the world, and what attributes that range has. +.nf \fBzone\fR -.br \fB name\fR example_zone -.br \fB position\fR 0.0 0.0 0.0 -.br \fB size\fR 1.0 1.0 1.0 -.br \fB rotation\fR 0.0 -.br # where players may spawn -.br \fB team\fR 0 1 2 3 4 -.br # where flag may spawn -.br \fB flag\fR GM SW good bad -.br # dropped team flags will fly to the closest safety zone -.br \fB safety\fR 1 2 3 4 -.br # attach a flag to this zone (always spawn in this zone) -.br \fB zoneflag\fR GM 3 # type, count (type can be a team flag, ex: R*) -.br \fBend\fR -.br - +.fi .SH "FILE SYNTAX" .PP @@ -883,684 +547,411 @@ .PP The notation {a..b} means that the number of times the item can be present must be between 'a' and 'b', where '*' mean infinity. ('?' is equivalent to {0..1}) -.TP -angle := -.TP + +.nf +angle := 2dpoint := -.TP -3dpoint := -.TP +3dpoint := rgbColor := -.TP -alpha := -.TP +alpha := rgbaColor := rgbColor alpha? | alpha? -.TP channel := "red" | "green" | "blue" | "alpha" +.fi -.TP -.B (BZWReader.cxx/parseNormalObject) -.TP +.SS (BZWReader.cxx/parseNormalObject) +.nf allObjects := -.br "box" -.br | "pyramid" -.br | "base" -.br | "link" -.br | "teleporter" -.br | "mesh" -.br | "arc" -.br | "meshbox" -.br | "cone" -.br | "meshpyr" -.br | "sphere" -.br | "tetra" -.br | "weapon" -.br | "zone" -.br | "waterLevel" -.br | "dynamicColor" -.br | "textureMatrix" -.br | "material" -.br | "physics" -.br | "transform" -.br -.TP -.B (BZWReader.cxx/BZWReader::readWorldStream) -.br +.fi +.SS (BZWReader.cxx/BZWReader::readWorldStream) Note: Blank lines and lines starting with # are discarded. -.br -.TP +.nf worldStream := -.br "end" -.br | allObjects -.br | "define" -.br | "enddef" -.br | "group" -.br | "teleporter" ? -.br | "options" -.br | "include" -.br | "world" -.br -.TP -.B (ParseMaterial.cxx/parseMaterials) -.br -.TP +.fi + +.SS (ParseMaterial.cxx/parseMaterials) +.nf material := -.br object -.br | "matref" -.br | "resetmat" -.br | "dyncol" -.br | "ambient" rgbaColor -.br | ("diffuse" | "color") rgbaColor -.br | "specular" rgbaColor -.br | "emission" rgbaColor -.br | "shininess" -.br | "texture -.br | "notextures" -.br | "addtexture" -.br | "texmat" -.br | "notexalpha" -.br | "notexcolor" -.br | "spheremap" -.br | "noradar" -.br | "noshadow" -.br | "noculling" -.br | "nosorting" -.br | "nolighting" -.br | "alphathresh" -.br | "groupalpha" -.br | "occluder" -.br | "shader" # NOT IMPLEMENTED -.br | "addshader" # NOT IMPLEMENTED -.br | "noshaders" # NOT IMPLEMENTED -.br -.TP -.B (WorldFileObject:.cxx/WorldFileObject::read) -.br -.TP +.fi + +.SS (WorldFileObject:.cxx/WorldFileObject::read) +.nf object := "name" -.br -.TP -.B (WorldFileLocation.cxx/readWorldFileLocation::read) -.br -.TP +.fi + +.SS (WorldFileLocation.cxx/readWorldFileLocation::read) +.nf location := -.br ("pos" | "position") 3dpoint -.br | "size" 3dpoint -.br | ("rot" | "rotation") -.br | "shift" 3dpoint -.br | "scale" 3dpoint -.br | "shear" 3dpoint -.br | "spin" angle 3dpoint -.br | "xform" -.br | object -.br -.TP -.B (WorldFileObstacle.cxx/WorldFileObstacle::read) -.br -.TP +.fi + +.SS (WorldFileObstacle.cxx/WorldFileObstacle::read) +.nf obstacle := -.br "drivethrough" -.br | "shootthrough" -.br | "passable" -.br | location -.br -.TP -.B (CustomArc.cxx/CustomArc::read) -.br -.TP +.fi + +.SS (CustomArc.cxx/CustomArc::read) +.nf meshbox := -.br "divisions" -.br | "angle" angle -.br | "ratio" -.br | "texsize" -.br | "phydrv" -.br | "smoothbounce" -.br | "flatshading" -.br | material -.br | ("top" | "bottom" | "inside" | "outside" | "startside" | "endside") material -.br | obstacle -.br -.TP + arc := -.br "divisions" -.br | "angle" angle -.br | "ratio" -.br | "texsize" -.br | "phydrv" -.br | "smoothbounce" -.br | "flatshading" -.br | material -.br | ("top" | "bottom" | "inside" | "outside" | "startside" | "endside") material -.br | obstacle -.br -.TP -.B (CustomBase.cxx/CustomBase::read) -.br -.TP +.fi + +.SS (CustomBase.cxx/CustomBase::read) +.nf base := -.br "color" -.br | obstacle -.br -.TP -.B (CustomBox.cxx) -.br -.TP +.fi + +.SS (CustomBox.cxx) +.nf box := obstacle -.br -.TP -.B (CustomCone.cxx/CustomCone::read) -.br -.TP +.fi + +.SS (CustomCone.cxx/CustomCone::read) +.nf meshpyr := -.br "divisions" -.br | "angle" -.br | "texsize" -.br | "phydrv" -.br | "smoothbounce" -.br | "flatshading" -.br | material -.br | ("edge" | "bottom" | "startside" | "endside") material -.br | "flipz" -.br | obstacle -.br -.TP + cone := -.br "divisions" -.br | "angle" -.br | "texsize" -.br | "phydrv" -.br | "smoothbounce" -.br | "flatshading" -.br | material -.br | ("edge" | "bottom" | "startside" | "endside") material -.br | obstacle -.br -.TP -.B (CustomDynamicColor.cxx/CustomDynamicColor::read) -.br -.TP +.fi + +.SS (CustomDynamicColor.cxx/CustomDynamicColor::read) +.nf dynamicColor := -.br object -.br | channel "limits" -.br | channel "sinusoid" -.br | channel "clampup" -.br | channel "clampdown" -.br | channel "sequence" ("0" "1" "2"){1..*} -.br -.TP -.B (CustomGate.cxx/CustomGate::read) -.br -.TP +.fi + +.SS (CustomGate.cxx/CustomGate::read) +.nf teleporter := -.br "border" -.br | "horizontal" # NOT IMPLEMENTED -.br | obstacle -.br -.TP -.B (CustomGroup.cxx/CustomGroup::read) -.br -.TP +.fi + +.SS (CustomGroup.cxx/CustomGroup::read) +.nf group := -.br "team" -.br | "tint" rgbaColor -.br | "phydrv" -.br | "matref" -.br | obstacle -.br -.TP -.B (CustomLink.cxx/CustomLink::read) -.br -.TP +.fi + +.SS (CustomLink.cxx/CustomLink::read) +.nf teleporter_spec := -.br -.br | (":f" | ":b")? -.br -.TP + link := -.br "from" -.br | "to" -.br | object -.br -.TP -.B (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawCmd) -.br -.TP +.fi + +.SS (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawCmd) +.nf drawInfoCmd := -.br "points" + -.br | "lines" {2}* -.br | "lineloop" + -.br | "linestrip" {3}* -.br | "tristrip" + -.br | "trifan" + -.br | "quads" {4}* -.br | "quadstrip" {2}+ -.br | "polygon" {3}* -.br -.TP -.B (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawSet) -.br -.TP +.fi + +.SS (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawSet) +.nf drawInfoSet := -.br "matref" -.br | "dlist" -.br | "sphere" 3dpoint -.br | drawInfoCmd -.br -.TP -.B (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawLod) -.br -.TP +.fi + +.SS (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawLod) +.nf drawInfoLod := -.br "lod" -.br | "lengthPerPixel" -.br | drawInfoSet -.br -.TP -.B (MeshDrawInfo.cxx/MeshDrawInfo::parse) -.br -.TP +.fi + +.SS (MeshDrawInfo.cxx/MeshDrawInfo::parse) +.nf drawInfo := -.br "drawInfo" -.br | "dlist" -.br | "decorative" -.br | "angvel" -.br | "extents" 3dpoint 3dpoint -.br | "sphere" 3dpoint -.br | "corner" -.br | "vertex" 3dpoint -.br | "normal" 3dpoint -.br | "texcoord" -.br | drawInfoLod -.br -.TP -.B (CustomMesh.cxx/CustomMesh::read) -.br -.TP +.fi + +.SS (CustomMesh.cxx/CustomMesh::read) +.nf mesh := -.br "face" -.br | face -.br | "endface" -.br | "inside" 3dpoint -.br | "outside" 3dpoint -.br | "vertex" 3dpoint -.br | "normal" 3dpoint -.br | "texcoord" -.br | "phydrv" -.br | "smoothbounce" -.br | "noclusters" -.br | drawInfo -.br | material -.br | obstacle -.br -.TP -.B (CustomMeshFace.cxx/CustomMeshFace::read) -.br -.TP +.fi + +.SS (CustomMeshFace.cxx/CustomMeshFace::read) +.nf face := -.br "vertices" {3..*} -.br | "normals" {3..*} -.br | "texcoords" {3..*} -.br | "phydrv" -.br | "smoothbounce" -.br | "noclusters" -.br | "drivethrough" -.br | "shootthrough" -.br | "passable" -.br | material -.br -.TP -.B (CustomMeshTransform.cxx/CustomMeshTransform::read) -.br -.TP +.fi + +.SS (CustomMeshTransform.cxx/CustomMeshTransform::read) +.nf transform := -.br "shift" 3dpoint -.br | "scale" 3dpoint -.br | "shear" 3dpoint -.br | "spin" angle 3dpoint -.br | "xform" -.br | object -.br -.TP -.B (CustomPhysicsDriver.cxx/CustomPhysicsDriver::read) -.br -.TP +.fi + +.SS (CustomPhysicsDriver.cxx/CustomPhysicsDriver::read) +.nf physics := -.br "linear" 3dpoint -.br | "angular" 2dpoint -.br | "radial" 2dpoint # NOT IMPLEMENTED -.br | "slide" -.br | "death" -.br | object -.br -.TP -.B (CustomPyramid.cxx/CustomPyramid::read) -.br -.TP +.fi + +.SS (CustomPyramid.cxx/CustomPyramid::read) +.nf pyramid := -.br "flipz" -.br | obstacle -.br -.TP -.B (CustomSphere.cxx/CustomSphere::read) -.br -.TP +.fi + +.SS (CustomSphere.cxx/CustomSphere::read) +.nf sphere := -.br "divisions" -.br | "radius" -.br | ("hemi" | "hemisphere") -.br | "texsize" -.br | "phydrv" -.br | "smoothbounce" -.br | "flatshading" -.br | material -.br | ("edge" | "bottom") material -.br | obstacle -.br -.TP -.B (CustomTetra.cxx/CustomTetra::read) -.br +.fi + +.SS (CustomTetra.cxx/CustomTetra::read) Note: At most 4 vertices can be specified. -.br Note2: material will apply to all vertices when specified first, otherwise like "normals" and "texcoords" they apply to the previous vertex. -.br -.TP +.nf tetra := -.br "vertex" 3dpoint -.br | "normals" 3dpoint -.br | "texcoords" 2dpoint -.br | material -.br | obstacle -.br -.TP -.B (CustomTextureMatrix.cxx/CustomTextureMatrix::read) -.br -.TP +.fi + +.SS (CustomTextureMatrix.cxx/CustomTextureMatrix::read) +.nf textureMatrix := -.br "fixedshift" 2dpoint -.br | "fixedscale" 2dpoint -.br | "fixedspin" angle -.br | "fixedcenter" 2dpoint -.br | "shift" -.br | "spin" -.br | "scale" -.br | "center" 2dpoint -.br | object -.br -.TP -.B (CustomWaterLevel.cxx/CustomWaterLevel::read) -.br -.TP +.fi + +.SS (CustomWaterLevel.cxx/CustomWaterLevel::read) +.nf waterLevel := -.br "height" -.br | material -.br | object -.br -.TP -.B (CustomWeapon.cxx/CustomWeapon::read) -.br -.TP +.fi + +.SS (CustomWeapon.cxx/CustomWeapon::read) +.nf weapon := -.br "initdelay" -.br | "delay" {1..*} -.br | "type" -.br | location -.br -.TP -.B (CustomWorld.cxx/CustomWorld::read) -.br -.TP +.fi + +.SS (CustomWorld.cxx/CustomWorld::read) +.nf world := -.br "size" -.br | "flagHeight" -.br | object -.br -.TP -.B (CustomZone.cxx/CustomZone::read) -.br -.TP +.fi + +.SS (CustomZone.cxx/CustomZone::read) +.nf zone := -.br "team" {1..*} -.br "flag" ("good" | "bad" | ){1..*} -.br | "safety" {1..*} -.br | "zoneflag" ? -.br | location -.br +.fi .SH "SEE ALSO" -bzflag(6), bzadmin(6), bzfs(6) +.IR bzflag (6), +.IR bzadmin(6), +.IR bzfs(6)