예제 #1
0
    // 쿼리 - 이사를 마쳐도 되는가?.
    public QueryHouseMoveEnd        queryHouseMoveEnd(bool local = true)
    {
        QueryHouseMoveEnd query = null;

        do
        {
            query = new QueryHouseMoveEnd();

            this.queries.Add(query);
        } while(false);

        // 이사 종료 요청을 보냅니다.
        GameObject netObj = GameObject.Find("Network");

        if (netObj && local)
        {
            // Network 클래스의 컴포넌트를 획득합니다.
            Network network = netObj.GetComponent <Network>();
            // 이사 종료 요청을 보냅니다.
            MovingData moving = new MovingData();
            moving.characterId = GameRoot.getInstance().account_name_local;
            moving.houseId     = "";
            moving.moving      = false;
            MovingPacket packet = new MovingPacket(moving);
            network.SendReliable <MovingData>(packet);
        }

        return(query);
    }
예제 #2
0
    // 이동 정보 패킷 획득 함수
    public void OnReceiveMovingPacket(PacketId id, byte[] data)
    {
        MovingPacket packet = new MovingPacket(data);
        MovingData   moving = packet.GetPacket();

        Debug.Log(moving + " 수신완료(마우스).");

        // 수신 후 사용 예
        // navAgent(moving.index).destinaion(new Vector3(moving.destX, moving.destY, moving.dextZ);
    }
예제 #3
0
    // 이동 정보 패킷 획득 함수
    public void OnReceiveMovingPacket(PacketId id, byte[] data)
    {
        MovingPacket packet = new MovingPacket(data);   //바이트 데이터 역직렬
        MovingData   moving = packet.GetPacket();
        // Debug.Log(moving + " 수신완료(이동)");

        Vector3 destination = new Vector3(moving.destX, moving.destY, moving.destZ);

        // 2020 02 01 상대 단말에서 상대의 로컬 캐릭터가 이동했을 때 송신한 정보를 수신한 것이므로 내 단말에서 리모트 캐릭터를 이동시킨다.
        //GameManager.instance.MoveEnemyCharacter(moving.index, destination);
        //// 2020 02 07 상대의 캐릭터의 이동속도 보정값을 저장.
        //remoteAgentSpeed[moving.index] = GameManager.instance.SetInterpolatedSpeed(moving.index, destination);
    }
예제 #4
0
    // 이동정보를 상대에게 전송하는 함수
    // 매개변수는 수정해도 상관 없음.
    // 결과적으로 함수 내 MovingData의 멤버변수를 채워주기만 하면 됨.
    public void SendLocalMovingInfo(int index, Vector3 dest)
    {
        // 이동정보 데이터 생성 후 정보 입력
        MovingData movingData = new MovingData();

        movingData.index = index;
        movingData.destX = dest.x;
        movingData.destY = dest.y;
        movingData.destZ = dest.z;
        Debug.Log("전송 " + movingData);
        // 생성자로 데이터에 패킷을 연결
        MovingPacket packet = new MovingPacket(movingData);

        // UDP 전송
        networkManager.SendUnreliable <MovingData>(packet);
    }
예제 #5
0
    public void     OnReceiveMovingPacket(PacketId id, byte[] data)
    {
        Debug.Log("OnReceiveMovingPacket");

        MovingPacket packet = new MovingPacket(data);
        MovingData   moving = packet.GetPacket();

        Debug.Log("[CharId]" + moving.characterId);
        Debug.Log("[HouseName]" + moving.houseId);
        Debug.Log("[Moving]" + moving.moving);

        chrController remote =
            CharacterRoot.get().findCharacter(moving.characterId);

        // 이사 쿼리 발행.
        if (remote != null)
        {
            if (moving.moving)
            {
                Debug.Log("cmdQueryHouseMoveStart");
                QueryHouseMoveStart query = remote.cmdQueryHouseMoveStart(moving.houseId, false);
                if (query != null)
                {
                    query.set_done(true);
                    query.set_success(true);
                }
            }
            else
            {
                Debug.Log("cmdQueryHouseMoveEnd");
                QueryHouseMoveEnd query = remote.cmdQueryHouseMoveEnd(false);
                if (query != null)
                {
                    query.set_done(true);
                    query.set_success(true);
                }
            }
        }

        // 이사 정보 보존.
        GlobalParam.get().remote_moving = moving;
    }
예제 #6
0
    // 쿼리-이사 시작해도 되는가?.
    public QueryHouseMoveStart      queryHouseMoveStart(string house_name, bool local = true)
    {
        QueryHouseMoveStart query = null;

        do
        {
            chrBehaviorNPC_House house = CharacterRoot.getInstance().findCharacter <chrBehaviorNPC_House>(house_name);

            if (house == null)
            {
                break;
            }

            query = new QueryHouseMoveStart(house_name);

            this.queries.Add(query);
        } while(false);

        // 이사 시작 요청을 보냅니다.
        GameObject netObj = GameObject.Find("Network");

        if (netObj && local)
        {
            // Network 클래스의 컴포넌트 획득합니다.
            Network network = netObj.GetComponent <Network>();
            // 이사 시작 요청을 보냅니다.
            MovingData moving = new MovingData();
            moving.characterId = GameRoot.getInstance().account_name_local;
            moving.houseId     = house_name;
            moving.moving      = true;
            MovingPacket packet = new MovingPacket(moving);
            network.SendReliable <MovingData>(packet);

            // 이사 정보 보존.
            GlobalParam.get().local_moving = moving;
        }

        return(query);
    }