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 toward dest.
// 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