private void ConfigServer(int Port) { // Create a network object for Control the Car CtrlCarNetworkObj = new ControlCarNetworkObject(); // Callback funtion for the Network obj "ControlCarCall" CtrlCarNetworkObj.CallbackFunc = ControlCarCall; // Create a network handler for handling the network transfers INetworkHandler networkHandler = new SocketNetworkHandler(); //Creo El Servidor IServer server = null; //server server = new SocketServer(Port); //Numero de Clientes a esperar antes de la simulacion fisica State.NumberOfClientsToWait = 0; //Agrego CallBacks server.ClientConnected += new HandleClientConnection(ClientConnected); server.ClientDisconnected += new HandleClientDisconnection(ClientDisconnected); networkHandler.NetworkServer = server; // Assign the network handler used for this scene scene.NetworkHandler = networkHandler; // Add the ControlCar network object to the scene. scene.NetworkHandler.AddNetworkObject(CtrlCarNetworkObj); }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { base.Initialize(); #if WINDOWS this.IsMouseVisible = true; #endif // Initialize the GoblinXNA framework State.InitGoblin(graphics, Content, ""); // Initialize the scene graph scene = new Scene(); State.EnableNetworking = true; State.IsServer = isServer; State.ShowNotifications = true; State.ShowFPS = true; Notifier.FadeOutTime = 2000; // Set up the lights used in the scene CreateLights(); // Set up the camera, which defines the eye location and viewing frustum CreateCamera(); // Create 3D objects CreateObject(); // Create a network object that contains mouse press information to be // transmitted over network mouseNetworkObj = new MouseNetworkObject(); // When a mouse press event is sent from the other side, then call "ShootBox" // function mouseNetworkObj.CallbackFunc = ShootBox; // Create a network handler for handling the network transfers INetworkHandler networkHandler = null; #if USE_SOCKET_NETWORK || WINDOWS_PHONE networkHandler = new SocketNetworkHandler(); #else networkHandler = new NetworkHandler(); #endif if (State.IsServer) { IServer server = null; #if WINDOWS #if USE_SOCKET_NETWORK server = new SocketServer(14242); #else server = new LidgrenServer("Tutorial10", 14242); #endif State.NumberOfClientsToWait = 1; scene.PhysicsEngine = new NewtonPhysics(); #else scene.PhysicsEngine = new MataliPhysics(); ((MataliPhysics)scene.PhysicsEngine).SimulationTimeStep = 1 / 30f; #endif scene.PhysicsEngine.Gravity = 30; server.ClientConnected += new HandleClientConnection(ClientConnected); server.ClientDisconnected += new HandleClientDisconnection(ClientDisconnected); networkHandler.NetworkServer = server; } else { IClient client = null; // Create a client that connects to the local machine assuming that both // the server and client will be running on the same machine. In order to // connect to a remote machine, you need to either pass the host name or // the IP address of the remote machine in the 3rd parameter. #if WINDOWS client = new LidgrenClient("Tutorial10", 14242, "Localhost"); #else client = new SocketClient("10.0.0.2", 14242); #endif // If the server is not running when client is started, then wait for the // server to start up. client.WaitForServer = true; client.ConnectionTrialTimeOut = 60 * 1000; // 1 minute timeout client.ServerConnected += new HandleServerConnection(ServerConnected); client.ServerDisconnected += new HandleServerDisconnection(ServerDisconnected); networkHandler.NetworkClient = client; } // Assign the network handler used for this scene scene.NetworkHandler = networkHandler; // Add the mouse network object to the scene graph, so it'll be sent over network // whenever ReadyToSend is set to true. scene.NetworkHandler.AddNetworkObject(mouseNetworkObj); MouseInput.Instance.MousePressEvent += new HandleMousePress(MouseInput_MousePressEvent); }