Editing
Polyobject
(section)
From Eternity Wiki
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Moving PolyObjects== There are two types of basic motion which PolyObjects can currently undergo: translation and rotation. Using "override" actions, it is possible to combine the two to have a PolyObject which rotates while moving in the xy plane. [[File:Polyobject_rotating.gif]] ===Translating PolyObjects=== To move a PolyObject in the xy plane, use one of the following line specials: * <code>Polyobj_Move('''polyobj_id''', '''speed''', '''angle''', '''dist''')</code> * <code>Polyobj_OR_Move('''polyobj_id''', '''speed''', '''angle''', '''dist''')</code> Both of these line specials use the same arguments: * ''polyobj_id'' : Specifies which PolyObject to intially move. If the object is already moving, nothing will happen unless the action is Polyobj_OR_Move. If this object has a mirror, the same action will be recursively applied to every mirror PolyObject, reversing the angle of movement for each subsequent mirror. * ''speed'' : Speed of the motion in eighths of a unit per tic. * ''angle'' : Byte angle specifying the direction of motion. To convert from degrees to byte angles, use this formula: byteangle = (degrees * 256) / 360. Round or chop the result to an integer. 0 means East, 64 means North, 128 means West, and 192 means South. * ''dist'' : The total distance to move the object in units. All PolyObjects will inflict thrust on objects which block them with force proportional to the speed of motion. If the PolyObject was spawned with the EEPolyObjSpawnSpotCrush object (DoomEd num 9302), then if the object does not fit at the location it is being pushed toward, it will be damaged 3 hitpoints per tic (105 damage per second). ===Rotating PolyObjects=== To rotate a PolyObject, use one of the following line specials: * <code>Polyobj_RotateRight('''polyobj_id''', '''aspeed''', '''adist''')</code> * <code>Polyobj_OR_RotateRight('''polyobj_id''', '''aspeed''', '''adist''')</code> * <code>Polyobj_RotateLeft('''polyobj_id''', '''aspeed''', '''adist''')</code> * <code>Polyobj_OR_RotateLeft('''polyobj_id''', '''aspeed''', '''adist''')</code> All these line specials use the same arguments: * ''polyobj_id'' : Specifies which PolyObject to initially rotate. If the object is already moving, nothing will happen unless the action is Polyobj_OR_RotateRight or Polyobj_OR_RotateLeft. If this object has a mirror, the same action will be recursively applied to every mirror PolyObject, reversing the direction of rotation for each subsequent mirror. * ''aspeed'' : Angular speed of the rotation in byte angles per tic. Same as for the "angle" parameter to Move actions. * ''adist'' : Angular distance to rotate in byte angles. Same as for aspeed, except with two special caveats: The byte angle value 0 (zero) means to rotate exactly 360 degrees. The byte angle value 255 means to rotate perpetually. This type of action never ends and thus only override actions can subsequently be applied to the PolyObject. ===PolyObject Examples=== ====[https://s3-eu-west-1.amazonaws.com/eternity/polyobjects.wad PolyObject Demo]==== A demonstration of both rotating and translating PolyObjects. Plays on '''Doom 2''' / '''Map01'''. The map is linked to an [[ExtraData]] lump (via [[EMAPINFO]]). It is recommended that you open the Demo WAD in a WAD manager program like '''SLADE3''' or '''XWE''' to read the '''ExtraData''' and '''ACS''' scripts together with provided comments. For example this script explains how LineDefs are configured for a manually operated rotating PolyObject: <pre> //=============================== //= MANUALLY ROTATING POLYOBJECT //============================= // This PolyObject doesn't move unless activated by a a nearby switch. linedef { recordnum = 2 special = PolyObj_StartLine args = { 2 } } linedef { recordnum = 3 extflags = "use player" // Defines how the LineDef action is activated. // The lack of "repeat" flag means it's a one-time // action. special = Polyobj_RotateRight args = { 2, 2, 255 } // Starts Rotating PolyObject with PolyID: 2 // at a speed of 2 units and angular distance // of 255 units - which means it'll rotate // continuously. } (...) </pre> ====[https://s3-eu-west-1.amazonaws.com/eternity/polyobjects_adv.wad PolyObject Advanced Demo]==== A demonstration of rotating and translating PolyObjects made with <code>PolyObj_ExplicitLine()</code> Plays on '''Doom 2''' / '''Map01'''. The map is linked to an [[ExtraData]] lump (via [[EMAPINFO]]). It shows how more advanced PolyObjects can be constructed and moved to fake 3D objects. It also includes PolyObject Doors discussed in the next section of this article. It is recommended that you play go through the first Demo in the series and open the Demo WAD in a WAD manager program like '''SLADE3''' or '''XWE''' to read the '''ExtraData''' and '''ACS''' scripts together with provided comments.
Summary:
Please note that all contributions to Eternity Wiki are considered to be released under the GNU Free Documentation License 1.2 (see
Eternity Wiki:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Page actions
Page
Discussion
Read
Edit
History
Page actions
Page
Discussion
More
Tools
Personal tools
Not logged in
Talk
Contributions
Log in
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Search
Tools
What links here
Related changes
Special pages
Page information