예제 #1
0
        /// <summary>
        /// Remove component by interface
        /// </summary>
        /// <typeparam name="T"></typeparam>
        internal void Remove <T>()
        {
            var  t      = typeof(T);
            bool isTrue = _components.TryGet(t.FullName, out ComponentBase c);

            if (isTrue)
            {
                _components.TryRemove(t.FullName);
                c.OnDestroy();
            }
            else
            {
                AssertThat.Fail("ComponentBase is not exist" + t.FullName.ToString());
            }
        }
예제 #2
0
        public void ResetIndex()
        {
            switch (State)
            {
            case EState.ReadWriteAreEqual:
                ReadPosition = WritePosition = 0;
                break;

            case EState.WriteAhead:
                var length = WritePosition - ReadPosition;
                for (int i = 0; i < length; i++)
                {
                    Buffer[i] = Buffer[ReadPosition + i];
                }
                ReadPosition  = 0;
                WritePosition = length;
                break;

            case EState.ReadAhead:
                AssertThat.Fail("Read and write position error");
                break;
            }
        }