public override void _PhysicsProcess(float delta) { base._PhysicsProcess(delta); UpdateAsteroidPosition(asteroid.Position + (ImpactVector * Speed * delta)); // only the server updates asteroids // then it sends the new position to each client if (this.IsServerOrSinglePlayer()) { // only send asteroid position updates once every couple seconds deltaSendNetworkUpdate += delta; if (deltaSendNetworkUpdate > 2) { ClientSignals.PublishAsteroidPositionUpdatedEvent(Id, asteroid.Position); deltaSendNetworkUpdate = 0; } } }
ClientSignals() { Instance = this; }
/// <summary> /// Send a message to any clients about a new asteroid incoming /// </summary> /// <param name="globalPosition"></param> /// <param name="asteroidStrength"></param> /// <param name="asteroid"></param> void SendAsteroid(Vector2 globalPosition, int asteroidStrength, FallingAsteroid asteroid) { ClientSignals.PublishAsteroidIncomingEvent(globalPosition, asteroidStrength, asteroid); }