41 Sector Movement
This tour shows how sector movement works in Doom through four key files: p_doors.c
for doors, p_plats.c
for platforms, p_floor.c
for floors, and p_ceilng.c
for ceilings.
FILES2 - Shows the core p_*
modules for moving sectors: - p_doors.c
- p_plats.c
- p_floor.c
- p_ceilng.c
// linuxdoom-1.10/FILES2
// lines 101–105
41.0.1 Door Movement (p_doors.c
)
EV_DoDoor
is invoked when a door line special is triggered.
// linuxdoom-1.10/p_doors.c
// lines 263–267
- Creates and initializes a new door thinker.
// linuxdoom-1.10/p_doors.c
// lines 283–287
T_VerticalDoor
thinker controls movement based on door direction.
// linuxdoom-1.10/p_doors.c
// lines 63–67
- Door closes by moving floor plane down.
// linuxdoom-1.10/p_doors.c
// lines 119–123
- Door opens upward until reaching topheight.
// linuxdoom-1.10/p_doors.c
// lines 168–173
41.0.2 Platform Logic (p_plats.c
)
- Implements elevator platforms with various states.
// linuxdoom-1.10/p_plats.c
// lines 19–21
EV_DoPlat(line, type, amount)
creates platform thinkers.
// linuxdoom-1.10/p_plats.c
// lines 138–142
- Initializes and registers platform.
// linuxdoom-1.10/p_plats.c
// lines 174–178
T_PlatRaise
thinker updates movement.
// linuxdoom-1.10/p_plats.c
// lines 52–56
T_MovePlane
raises platform.
// linuxdoom-1.10/p_plats.c
// lines 59–63
41.0.3 Floor Logic (p_floor.c
)
- Handles raising, lowering, and stair building.
// linuxdoom-1.10/p_floor.c
// lines 19–21
T_MovePlane
adjusts floor plane during door closing.
// linuxdoom-1.10/p_doors.c
// lines 120–123
- General
T_MovePlane
usage for platforms.
// linuxdoom-1.10/p_plats.c
// lines 59–62
T_MovePlane
function drives motion towarddest
.
// linuxdoom-1.10/p_floor.c
// lines 49–53
T_MoveFloor
updates floor motion.
// linuxdoom-1.10/p_floor.c
// lines 209–213
41.0.4 Ceiling Logic (p_ceilng.c
)
- Controls ceiling states and movement types.
// linuxdoom-1.10/p_ceilng.c
// lines 19–21
T_MoveCeiling
handles active ceiling behavior.
// linuxdoom-1.10/p_ceilng.c
// lines 171–174
P_ActivateInStasisCeiling
resumes paused crushers.
// linuxdoom-1.10/p_ceilng.c
// lines 52–55
- Ceiling thinkers for linedef-triggered movement.
// linuxdoom-1.10/p_ceilng.c
// lines 185–192
fastCrushAndRaise
logic.
// linuxdoom-1.10/p_ceilng.c
// lines 195–203
- Initial state setup for crushers.
// linuxdoom-1.10/p_ceilng.c
// lines 210–218
raiseToHighest
logic.
// linuxdoom-1.10/p_ceilng.c
// lines 219–227
- Crushing movement downward.
// linuxdoom-1.10/p_ceilng.c
// lines 233–243
- Summary: all sector motion (doors, platforms, floors, ceilings) use thinkers and
T_MovePlane
.
// linuxdoom-1.10/p_ceilng.c
// lines 107–110