コード例 #1
0
ファイル: ChunkGrain.cs プロジェクト: mweilb/Research
        public Task <string> UpdatePlayer(string playerSessionID, IPlayerObserver playerObserver, Vec3 position)
        {
            int idx = mActivePlayers.FindIndex(item => (item.mID == playerSessionID));

            if (idx >= 0)
            {
                if ((position.x < mMinLocation.x) || (position.y < mMinLocation.y) || (position.z < mMinLocation.z) ||
                    (position.x > mMaxLocation.x) || (position.y > mMaxLocation.y) || (position.z > mMaxLocation.z))
                {
                    IChunkGrain transfer = TransferPlayerTo(playerSessionID, playerObserver, ref position, mActivePlayers[idx].mPosition);
                    if (transfer != null)
                    {
                        LeavePlayer(playerSessionID);
                        return(Task.FromResult <string>(transfer.GetPrimaryKeyString()));
                    }
                }

                mActivePlayers[idx].mPosition = position;
                mActivePlayers[idx].mVersion  = MinecraftVersion.GetNext();
                return(Task.FromResult <string>(this.GetPrimaryKeyString()));
            }


            return(Task.FromResult <string>(null));
        }