Example #1
0
        /// <summary>
        ///     Returns true iff we stored the delta.
        /// </summary>
        public bool ProcessDelta(RailStateDelta delta)
        {
            if (knownEntities.TryGetValue(delta.EntityId, out RailEntityClient entity) == false)
            {
                RailDebug.Assert(delta.IsFrozen == false, "Frozen unknown entity");
                if (delta.IsFrozen || delta.IsRemoving)
                {
                    return(false);
                }

                entity = delta.ProduceEntity(Resource) as RailEntityClient;
                if (entity == null)
                {
                    throw new TypeAccessException(
                              "Got unexpected instance from RailResource. Internal error in type RailRegistry and/or RailResource.");
                }

                entity.AssignId(delta.EntityId);
                entity.PrimeState(delta);
                pendingEntities.Add(entity.Id, entity);
                knownEntities.Add(entity.Id, entity);
            }

            // If we're already removing the entity, we don't care about other deltas
            bool stored = false;

            if (entity.IsRemoving == false)
            {
                stored = entity.ReceiveDelta(delta);
            }
            return(stored);
        }
Example #2
0
    private void ProcessDelta(RailStateDelta delta)
    {
      RailEntity entity;
      if (this.knownEntities.TryGetValue(delta.EntityId, out entity) == false)
      {
        RailDebug.Assert(delta.IsFrozen == false, "Frozen unknown entity");
        if (delta.IsFrozen)
          return;
          
        entity = delta.ProduceEntity();
        entity.AssignId(delta.EntityId);
        this.pendingEntities.Add(entity.Id, entity);
        this.knownEntities.Add(entity.Id, entity);
      }

      entity.ReceiveDelta(delta);
      this.UpdateControlStatus(entity, delta);
    }