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;
 }
Example #3
0
 /// <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);
 }