View Issue Details

IDProjectCategoryView StatusLast Update
0003399The Dark ModDesign/Codingpublic09.05.2013 15:08
ReporterObsttorte Assigned Tograyman  
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product VersionTDM 1.08 
Target VersionTDM 2.00Fixed in VersionTDM 2.00 
Summary0003399: Func_portals disable info_locationseperator entities.
DescriptionIf you place a func_portal inside a visportal, that contains a info_locationseperator entity, too, the latter one will no longer work. This means that the map is not divided into zones at that VP.
Steps To ReproduceTake a look at the testmap.

Normally, when changin location, a text shows up in the console saying that you changed from one location to another. This don't happen with the func_portal placed.
TagsNo tags attached.
Attached Files
functest.map (5,732 bytes)

Activities

grayman

grayman

09.05.2013 03:55

viewer   ~0005377

In the test map, the location_separator is spawned first, and correctly marks the portal as "BLOCKING", which means it's the boundary of a location.

The func_portal is then spawned, and it marks the portal as "NON-BLOCKING", undoing the "BLOCKING" that had been set earlier.

This erases the boundary condition.

Fix forthcoming.
grayman

grayman

09.05.2013 15:08

viewer   ~0005378

When a func_portal is spawned after an info_locationseparator, and they’re both on the same portal, the func_portal undoes the location boundary marker on the portal.

The ‘state’ on a portal is set up as a collection of bits that indicate whether the portal blocks the view, sound, etc. However, the routines that manipulate these bits don’t do so at the bit level, using bitwise operators. They simply write a complete ‘state’ to the portal, with no consideration for the bits they’re not interested in. Luckily, the boundary bit is used at the start of the mission to establish the extent of locations, and after that’s done, it doesn’t matter if an opening door clears the portal state, wiping out the boundary bit.
Func_portals, however, can wipe out the boundary bit at spawn time, destroying the location zones.

The solution is to have everyone who plays with these bits use bitwise operators, but for now, I’m restricting the solution to only having the func_portal do so. Changing all programs to use bitwise operations would require extensive testing, and since the boundary bit isn’t used after mission start, we’re probably not improving anything.

Rev. 5751:

Misc.cpp

Issue History

Date Modified Username Field Change
08.05.2013 07:11 Obsttorte New Issue
08.05.2013 07:11 Obsttorte File Added: functest.map
09.05.2013 03:52 grayman Assigned To => grayman
09.05.2013 03:52 grayman Status new => assigned
09.05.2013 03:55 grayman Note Added: 0005377
09.05.2013 15:08 grayman Note Added: 0005378
09.05.2013 15:08 grayman Status assigned => resolved
09.05.2013 15:08 grayman Resolution open => fixed
09.05.2013 15:08 grayman Fixed in Version => TDM 2.00
09.05.2013 15:08 grayman Target Version => TDM 2.00