/* ================ idScriptObject::CheckNetworkStateChanges ================ */ bool idScriptObject::CheckNetworkStateChanges( networkStateMode_t mode, const sdEntityStateNetworkData& baseState ) const { NET_GET_BASE( sdScriptObjectNetworkData ); if ( baseData.data.Num() != networkFields[ mode ].size ) { return true; } baseData.Reset(); for ( int i = 0; i < networkFields[ mode ].fields.Num(); i++ ) { const networkFieldSync_t& value = networkFields[ mode ].fields[ i ]; switch( value.type ) { case ev_object: { const int& intRef = baseData.GetInt(); idScriptObject* object = gameLocal.program->GetScriptObject( *reinterpret_cast< int* >( value.data ) ); int id = 0; if ( object ) { idEntity* ent = object->GetClass()->Cast< idEntity >(); id = gameLocal.GetSpawnId( ent ); } if ( intRef != id ) { return true; } break; } case ev_vector: { const idVec3& vec3Ref = baseData.GetVector(); idVec3* temp = reinterpret_cast< idVec3* >( value.data ); if ( vec3Ref != *temp ) { return true; } break; } default: case ev_float: { const float& floatRef = baseData.GetFloat(); float* temp = reinterpret_cast< float* >( value.data ); if ( floatRef != *temp ) { return true; } break; } case ev_boolean: { const int& intRef = baseData.GetInt(); int* temp = reinterpret_cast< int* >( value.data ); if ( intRef != *temp ) { return true; } break; } } } return false; }
/* ============== sdDeliveryVehicle::CheckNetworkStateChanges ============== */ bool sdDeliveryVehicle::CheckNetworkStateChanges( networkStateMode_t mode, const sdEntityStateNetworkData& baseState ) const { if ( mode == NSM_BROADCAST ) { NET_GET_BASE( sdDeliveryVehicleBroadcastData ); // note that lastRollAccel changing on its own will not make // this send a new packet, however it will be sent if any new packets are sent! } return sdScriptEntity::CheckNetworkStateChanges( mode, baseState ); }
/* ================ sdPhysics_GeneralMover::CheckNetworkStateChanges ================ */ bool sdPhysics_GeneralMover::CheckNetworkStateChanges( networkStateMode_t mode, const sdEntityStateNetworkData& baseState ) const { if ( mode == NSM_VISIBLE ) { NET_GET_BASE( sdGeneralMoverPhysicsNetworkData ); NET_CHECK_FIELD( currentFraction, currentFraction ); } return false; }
/* ================ sdPhysics_Linear::CheckNetworkStateChanges ================ */ bool sdPhysics_Linear::CheckNetworkStateChanges( networkStateMode_t mode, const sdEntityStateNetworkData& baseState ) const { if ( mode == NSM_BROADCAST ) { NET_GET_BASE( sdPhysicsLinearBroadcastData ); if ( baseData.atRest != current.atRest ) { return true; } if ( baseData.baseSpeed != current.linearExtrapolation.GetBaseSpeed() ) { return true; } if ( baseData.duration != SEC2MS( current.linearExtrapolation.GetDuration() ) ) { return true; } if ( baseData.extrapolationType != current.linearExtrapolation.GetExtrapolationType() ) { return true; } if ( baseData.localOrigin != current.localOrigin ) { return true; } if ( baseData.speed != current.linearExtrapolation.GetSpeed() ) { return true; } if ( baseData.startTime != SEC2MS( current.linearExtrapolation.GetStartTime() ) ) { return true; } if ( baseData.startValue != current.linearExtrapolation.GetStartValue() ) { return true; } return false; } return false; }