MCPcopy Create free account
hub / github.com/Panzerschrek/Chasm-Reverse / MoveMapObjects

Method MoveMapObjects

PanzerChasm/server/map.cpp:2678–2935  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2676}
2677
2678void Map::MoveMapObjects( const Time current_time )
2679{
2680 // Zero objects transformations. Set mortal flag to false.
2681 for( DynamicWall& wall : dynamic_walls_ )
2682 {
2683 wall.transformation.Clear();
2684 wall.vert_move_speed[0]= wall.vert_move_speed[1]= m_Vec2( 0.0f, 0.0f );
2685 wall.mortal= false;
2686 }
2687
2688 for( StaticModel& model : static_models_ )
2689 {
2690 model.transformation.Clear();
2691 model.transformation_angle_delta= 0.0f;
2692 model.move_speed= m_Vec2( 0.0f, 0.0f );
2693 model.mortal= false;
2694 }
2695
2696 /* Accumulate transformations from procedures on objects.
2697 * Several transformations can be applied for one object.
2698 * But, if transformation effect depends on their order, result may be incorrect.
2699 * Examples of "bad" transformations combination:
2700 * Rotate + Move, Rotate + Rotate with different center, etc.
2701 */
2702 for( unsigned int p= 0u; p < procedures_.size(); p++ )
2703 {
2704 const MapData::Procedure& procedure= map_data_->procedures[p];
2705 const ProcedureState& procedure_state= procedures_[p];
2706
2707 float absolute_action_stage;
2708 float move_dir_sign= 0.0f;
2709 if( procedure_state.movement_state == ProcedureState::MovementState::Movement )
2710 {
2711 absolute_action_stage= procedure_state.movement_stage;
2712 move_dir_sign= +1.0f;
2713 }
2714 else if( procedure_state.movement_state == ProcedureState::MovementState::BackWait )
2715 absolute_action_stage= 1.0f;
2716 else if( procedure_state.movement_state == ProcedureState::MovementState::ReverseMovement )
2717 {
2718 absolute_action_stage= 1.0f - procedure_state.movement_stage;
2719 move_dir_sign= -1.0f;
2720 }
2721 else
2722 absolute_action_stage= 0.0f;
2723
2724
2725 const bool mortal=
2726 procedure.mortal &&
2727 ( procedure_state.movement_state == ProcedureState::MovementState::Movement || procedure_state.movement_state == ProcedureState::MovementState::ReverseMovement );
2728
2729 for( const MapData::Procedure::ActionCommand& command : procedure.action_commands )
2730 {
2731 using Action= MapData::Procedure::ActionCommandId;
2732 switch( command.id )
2733 {
2734 case Action::Move:
2735 case Action::XMove:

Callers

nothing calls this directly

Calls 2

ToSecondsMethod · 0.80
ClearMethod · 0.45

Tested by

no test coverage detected