Esempio n. 1
0
        private void OnButton2Pressed()
        {
            Console.WriteLine("OnButton2Pressed");

            var host = new ClientWorldHost();

            world = host.ServiceProvider.GetRequiredService <ClientWorld>();

            var loggerFactory = host.ServiceProvider.GetService <ILoggerFactory>();
            var logger        = loggerFactory.CreateLogger <MyControl>();

            // Unity:
            // GameObject[] prefabs
            // var go = Instantiate(prefabs[archetypeId])
            // go.GetComponent<Controlled/Dummy/MimicEntityBehaviour>().Controlled/Dummy/MimicEntity = entity;
            host.Client_OnControlledCreated += entity =>
            {
                logger.LogInformation($"ControlledCreated entity: {entity.Id} ArchetypeId: {entity.State.ArchetypeId}");

                var scene = GD.Load <PackedScene>("res://Entities/ControlledEntitySpatial.tscn");
                var node  = scene.Instance() as ControlledEntitySpatial;

                node.Entity = entity;

                var parent = GetParent <Node>() as MySpatial;
                parent.AddChild(node);
            };
            host.Client_OnDummyCreated += entity =>
            {
                logger.LogInformation($"DummyCreated entity: {entity.Id} ArchetypeId: {entity.State.ArchetypeId}");

                var scene = GD.Load <PackedScene>("res://Entities/DummyEntitySpatial.tscn");
                var node  = scene.Instance() as DummyEntitySpatial;

                node.Entity = entity;

                var parent = GetParent <Node>() as MySpatial;
                parent.AddChild(node);
            };
            host.Client_OnMimicCreated += entity =>
            {
                logger.LogInformation($"MimicCreated entity: {entity.Id} ArchetypeId: {entity.State.ArchetypeId}");

                var scene = GD.Load <PackedScene>("res://Entities/MimicEntitySpatial.tscn");
                var node  = scene.Instance() as MimicEntitySpatial;

                node.Entity = entity;

                var parent = GetParent <Node>() as MySpatial;
                parent.AddChild(node);
            };

            host.Client_OnGameActionEvent += evnt =>
            {
                //logger.LogWarning($"evnt {evnt.Key}");
            };


            NetConfig.LatencySimulation = true;

            network = new NetCore("NetDemo1.0", false);
            network.PeerConnected += (peer, token) =>
            {
                Console.WriteLine($"PeerConnected peer: {peer.EndPoint} token: {token}");
                var wrapper = new MiniUDPConnection(peer);
                world.SetConnection(wrapper);
            };
            network.PeerClosed += (peer, reason, userKickReason, error) =>
            {
                Console.WriteLine($"PeerClosed peer: {peer.EndPoint} reason: {reason} userKickReason: {userKickReason} error: {error}");
            };
            network.PeerPayload += (peer, data, dataLength) =>
            {
                //Console.WriteLine($"PeerPayload data: {data} dataLength: {dataLength}");
                receivedThisFrame += dataLength;
            };
            network.PeerNotification += (peer, data, dataLength) =>
            {
                //Console.WriteLine($"PeerNotification data: {data} dataLength: {dataLength}");
            };

            logger.LogInformation("Client Connecting...");
            var _peer = network.Connect(NetUtil.StringToEndPoint("127.0.0.1:44325"), "SampleAuthToken");

            logger.LogInformation("Client Connected.");

            //network.Stop();
        }