Beispiel #1
0
    static void Single_OnHeroMoveReq(object obj, Action <object> callback)
    {
        CSHeroMoveReq req = obj as CSHeroMoveReq;

        //Debug.Log("Single_OnHeroMoveReq,req=" + req.Position.x + "," + req.Position.y + "," + req.Position.z);
        playerData.Position = req.Position;
        playerData.Rotation = req.Rotation;
    }
Beispiel #2
0
        public static void OnHeroMoveReq(Player player, MemoryStream stream)
        {
            CSHeroMoveReq req = NetworkManager.Deserialize <CSHeroMoveReq>(stream);

            //Ultilities.Print($"CSHeroMoveReq,id={player.id},position=({req.Position.x},{req.Position.y},{req.Position.z}),rotation=({req.Rotation.x},{req.Rotation.y},{req.Rotation.z})");
            player.position = new Vector3(req.Position.x, req.Position.y, req.Position.z);
            player.rotation = new Vector3(req.Rotation.x, req.Rotation.y, req.Rotation.z);

            //写数据库
            Redis.SetPlayerData(player.id, new CSPlayer
            {
                PlayerID = player.id,
                Name     = player.name,
                Position = new CSVector3 {
                    x = player.position.x, y = player.position.y, z = player.position.z
                },
                Rotation = new CSVector3 {
                    x = player.rotation.x, y = player.rotation.y, z = player.rotation.z
                },
            });

            //玩家的移动同步给看得到这个chunk的其他玩家
            List <Player> playersInChunk = TerrainData.GetChunkViewPlayers(player.curChunk);

            foreach (Player p in playersInChunk)
            {
                if (p.id != player.id)
                {
                    CSPlayerMoveNotify notify = new CSPlayerMoveNotify
                    {
                        PlayerID = player.id,
                        Position = req.Position,
                        Rotation = req.Rotation
                    };
                    NetworkManager.Enqueue(p.socket, ENUM_CMD.CS_PLAYER_MOVE_NOTIFY, notify);
                }
            }
        }
Beispiel #3
0
    void Update()
    {
        DrawWireFrame();

        if (acceptInput)
        {
            RotateView();

            if (Input.GetMouseButtonDown(0))
            {
                handAnimator.SetTrigger("interactTrigger");
                if (WireFrameHelper.render)
                {
                    if (WireFrameHelper.pos.y != 0)
                    {
                        DeleteBlockReq(WireFrameHelper.pos);
                    }
                }
            }

            if (Input.GetMouseButtonDown(1))
            {
                if (WireFrameHelper.render && ItemSelectPanel.curBlockType != CSBlockType.None)
                {
                    Vector3Int pos = WireFrameHelper.pos;
                    if (ChunkManager.HasCollidableBlock(WireFrameHelper.pos.x, WireFrameHelper.pos.y, WireFrameHelper.pos.z))
                    {
                        pos = WireFrameHelper.pos + Vector3Int.RoundToInt(hit.normal);
                    }

                    if (!cc.bounds.Intersects(new Bounds(pos, Vector3.one)) && !ChunkManager.HasNotPlantBlock(pos))
                    {
                        if (ItemSelectPanel.curBlockType == CSBlockType.Torch)
                        {
                            AddBlockReq(Vector3Int.RoundToInt(pos), ItemSelectPanel.curBlockType, WireFrameHelper.pos);
                        }
                        else
                        {
                            CSBlockOrientation orientation = ChunkMeshGenerator.GetBlockOrientation(transform.position, pos, WireFrameHelper.hitPos);
                            AddBlockReq(Vector3Int.RoundToInt(pos), ItemSelectPanel.curBlockType, orientation);
                        }
                    }
                }
            }
            if (Input.GetKeyDown(KeyCode.Space))
            {
                Jump();
            }
            if (Input.GetKeyDown(KeyCode.Q))
            {
                ItemSelectPanel.DropCurItem();
            }
        }

        if (needUpdate && Time.realtimeSinceStartup - lastUpdateTime > timeInterval)
        {
            needUpdate     = false;
            lastUpdateTime = Time.realtimeSinceStartup;
            CSHeroMoveReq req = new CSHeroMoveReq
            {
                Position = new CSVector3 {
                    x = transform.position.x, y = transform.position.y, z = transform.position.z
                },
                Rotation = new CSVector3 {
                    x = 0, y = transform.localEulerAngles.y, z = camera.transform.localEulerAngles.x
                }
            };
            NetworkManager.SendPkgToServer(ENUM_CMD.CS_HERO_MOVE_REQ, req);
        }
    }
Beispiel #4
0
    void Update()
    {
        DrawWireFrame();
        PositionCorrection();

        if (acceptInput)
        {
            RotateView();

            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                OnLeftMouseDown();
            }
            if (Input.GetKeyUp(KeyCode.Mouse0))
            {
                OnLeftMouseUp();
            }
            if (Input.GetKeyDown(KeyCode.Mouse1))
            {
                OnRightClick();
            }
            if (Input.GetKeyDown(KeyCode.Space))
            {
                Jump();
            }
            if (Input.GetKeyDown(KeyCode.Q))
            {
                uint          slot = ItemSelectPanel.curIndex;
                InventoryItem item = InventorySystem.items[ItemSelectPanel.curIndex];
                if (item.id != null)
                {
                    NBTObject generator = NBTGeneratorManager.GetObjectGenerator(item.id);
                    if (generator != null)
                    {
                        short data = InventorySystem.items[slot].damage;
                        Item.CreatePlayerDropItem(generator, (byte)data);
                        InventorySystem.DecrementCurrent();
                        ItemSelectPanel.instance.RefreshUI();
                    }
                }
            }
        }
        if (Input.GetKeyDown(KeyCode.F2))
        {
            Utilities.Capture();
        }

        if (needUpdate && Time.realtimeSinceStartup - lastUpdateTime > timeInterval)
        {
            needUpdate     = false;
            lastUpdateTime = Time.realtimeSinceStartup;
            CSHeroMoveReq req = new CSHeroMoveReq
            {
                Position = new CSVector3 {
                    x = transform.position.x, y = transform.position.y, z = transform.position.z
                },
                Rotation = new CSVector3 {
                    x = 0, y = transform.localEulerAngles.y, z = camera.transform.localEulerAngles.x
                }
            };
            NetworkManager.SendPkgToServer(ENUM_CMD.CS_HERO_MOVE_REQ, req);
        }
    }