Beispiel #1
0
        public static ActionHolder UpdateActionsHolder(string roomKey, string userGuid, SceneAction action)
        {
            foreach (var item in ActionsDict.Where(kvp => kvp.Value.TimeStamp < DateTime.Now.AddMinutes(-5)).ToList())
            {
                ActionsDict.Remove(item.Key);
            }
            ActionHolder aHolder = null;

            if (!ActionsDict.TryGetValue(roomKey, out aHolder))
            {
                aHolder = new ActionHolder();
                aHolder.ActionsOwnerId = userGuid;
            }

            if (action != null)
            {
                if (action.GoName == "slam_start_recording")
                {
                    if (aHolder.Actions.Find(x => x.GoName == "slam_end_recording") != null)
                    {
                        aHolder.Actions.Clear();
                        aHolder.ActionsOwnerId = userGuid;
                    }
                }
                if (aHolder.ActionsOwnerId != userGuid)
                {
                    return(null);
                }
                //if (action.GoName == "slam_end_recording")
                //{
                //    ActionsDict.Remove(roomKey);
                //    return null;
                //}

                var ac = aHolder.Actions.Find(x => x.GoName == action.GoName && x.SceneTime == action.SceneTime);
                if (ac == null)
                {
                    aHolder.Actions.Add(action);
                }
                aHolder.TimeStamp    = DateTime.Now; //update time
                ActionsDict[roomKey] = aHolder;
            }
            return(aHolder);
        }
Beispiel #2
0
 public static string UpdateTransFormHolder(string roomKey, string userGuid, TransFormHolder transformHolder, SceneAction action, string userPosStr, PostI post, int Timezone_Offset, List <ServerObjectTransform> sot)
 {
     lock (thisLock)
     {
         Dictionary <string, TransFormHolder> tList = null;
         if (!TransFormDict.TryGetValue(roomKey, out tList))
         {
             tList = new Dictionary <string, TransFormHolder>();
         }
         foreach (var item in tList.Where(kvp => kvp.Value.TimeStamp < DateTime.Now.AddSeconds(-4)).ToList())
         {
             tList.Remove(item.Key);
         }
         //check idlecount
         if (tList.ContainsKey(userGuid))
         {
             var lastTransform = tList[userGuid];
             if (lastTransform != null && lastTransform.Rotation == transformHolder.Rotation)
             {
                 transformHolder.IdleCount = lastTransform.IdleCount + 1;
             }
         }
         tList[userGuid]        = transformHolder;
         TransFormDict[roomKey] = tList;
         ActionHolder ah = null;
         ah = UpdateActionsHolder(roomKey, userGuid, action);
         List <ServerObjectTransform> sotRes  = HandleServerObjects(roomKey, userGuid, sot);
         SlmControls.Vector3          userPos = SlmControls.Vector3.FromString(userPosStr);
         return(MakeXml(tList, ah, userPos, post, Timezone_Offset, sotRes));
     }
 }