Example #1
0
        public void Update(TimeSpan frameTime)
        {
            List <object> toRemove = new List <object>();

            foreach (KeyValuePair <ValueAccess, Dictionary <object, ValueChangeRequest> > buffer in
                     FieldChangeBuffer.BufferedChanges)
            {
                ValueAccess access = buffer.Key;
                foreach (KeyValuePair <object, ValueChangeRequest> instanceBuffer in buffer.Value)
                {
                    object instance = instanceBuffer.Key;
                    if (CheckShouldRemove(access, instance, instanceBuffer.Value))
                    {
                        toRemove.Add(instanceBuffer.Key);
                    }
                    else if (!instanceBuffer.Value.RequestProcessed)
                    {
                        access.GetHandler(instance)?.Invoke(instanceBuffer.Value.RequestedValue);
                        instanceBuffer.Value.RequestProcessed = true;
                    }
                }

                toRemove.ForEach(o => buffer.Value.Remove(o));
                toRemove.Clear();
            }

            m_RailClient.Update();
        }