コード例 #1
0
        private OperationResponse ItemOperationAttachInterestArea(
            Item item, AttachInterestArea operation, InterestArea interestArea, SendParameters sendParameters)
        {
            if (item.Disposed)
            {
                return(operation.GetOperationResponse((int)ReturnCode.ItemNotFound, "ItemNotFound"));
            }

            lock (interestArea.SyncRoot)
            {
                interestArea.Detach();
                interestArea.AttachToItem(item);
                interestArea.UpdateInterestManagement();
            }

            // use item channel to ensure that this event arrives before any move or subscribe events
            OperationResponse response = operation.GetOperationResponse(MethodReturnValue.Ok);

            sendParameters.ChannelId = Settings.ItemEventChannel;
            this.Peer.SendOperationResponse(response, sendParameters);

            operation.OnComplete();
            return(null);
        }
コード例 #2
0
        private static OperationResponse ItemOperationAddInterestArea(Item item, AddInterestArea operation, InterestArea interestArea)
        {
            if (item.Disposed)
            {
                return(operation.GetOperationResponse((int)ReturnCode.ItemNotFound, "ItemNotFound"));
            }

            lock (interestArea.SyncRoot)
            {
                interestArea.AttachToItem(item);
                interestArea.ViewDistanceEnter = operation.ViewDistanceEnter;
                interestArea.ViewDistanceExit  = operation.ViewDistanceExit;
                interestArea.UpdateInterestManagement();
            }

            operation.OnComplete();
            return(operation.GetOperationResponse(MethodReturnValue.Ok));
        }
コード例 #3
0
 public MmoActorOperationHandler(PeerBase peer, World world, InterestArea interestArea)
     : base(peer, world)
 {
     this.AddInterestArea(interestArea);
 }
コード例 #4
0
 public RequestItemExitMessage(InterestArea interestArea)
 {
     this.InterestArea = interestArea;
 }
コード例 #5
0
 public bool TryGetInterestArea(byte interestAreaId, out InterestArea interestArea)
 {
     return(this.interestAreas.TryGetValue(interestAreaId, out interestArea));
 }
コード例 #6
0
 public void AddInterestArea(InterestArea interestArea)
 {
     this.interestAreas.Add(interestArea.Id, interestArea);
 }
コード例 #7
0
ファイル: MmoActor.cs プロジェクト: geosohal/Mmo
 public void AddInterestArea(InterestArea interestArea)
 {
     log.InfoFormat("interest area add");
     this.interestAreas.Add(interestArea.Id, interestArea);
 }