Esempio n. 1
0
        /// <summary>
        /// 初始化文件系统的新实例。
        /// </summary>
        /// <param name="fullPath">文件系统完整路径。</param>
        /// <param name="access">文件系统访问方式。</param>
        /// <param name="stream">文件系统流。</param>
        private FileSystem(string fullPath, FileSystemAccess access, FileSystemStream stream)
        {
            if (string.IsNullOrEmpty(fullPath))
            {
                throw new GameFrameworkException("Full path is invalid.");
            }

            if (access == FileSystemAccess.Unspecified)
            {
                throw new GameFrameworkException("Access is invalid.");
            }

            if (stream == null)
            {
                throw new GameFrameworkException("Stream is invalid.");
            }

            m_FullPath         = fullPath;
            m_Access           = access;
            m_Stream           = stream;
            m_FileDatas        = new Dictionary <string, int>(StringComparer.Ordinal);
            m_BlockDatas       = new List <BlockData>();
            m_FreeBlockIndexes = new GameFrameworkMultiDictionary <int, int>();
            m_StringDatas      = new SortedDictionary <int, StringData>();
            m_FreeStringDatas  = new Queue <KeyValuePair <int, StringData> >();

            m_HeaderData       = default(HeaderData);
            m_BlockDataOffset  = 0;
            m_StringDataOffset = 0;
            m_FileDataOffset   = 0;

            Utility.Marshal.EnsureCachedHGlobalSize(CachedBytesLength);
        }
Esempio n. 2
0
 /// <summary>
 /// 初始化对象池的新实例。
 /// </summary>
 /// <param name="name">对象池名称。</param>
 /// <param name="allowMultiSpawn">是否允许对象被多次获取。</param>
 /// <param name="autoReleaseInterval">对象池自动释放可释放对象的间隔秒数。</param>
 /// <param name="capacity">对象池的容量。</param>
 /// <param name="expireTime">对象池对象过期秒数。</param>
 /// <param name="priority">对象池的优先级。</param>
 public ObjectPool(string name, bool allowMultiSpawn, float autoReleaseInterval, int capacity, float expireTime, int priority)
     : base(name)
 {
     m_Objects   = new GameFrameworkMultiDictionary <string, Object <T> >();
     m_ObjectMap = new Dictionary <object, Object <T> >();
     m_DefaultReleaseObjectFilterCallback = DefaultReleaseObjectFilterCallback;
     m_CachedCanReleaseObjects            = new List <T>();
     m_CachedToReleaseObjects             = new List <T>();
     m_AllowMultiSpawn     = allowMultiSpawn;
     m_AutoReleaseInterval = autoReleaseInterval;
     Capacity          = capacity;
     ExpireTime        = expireTime;
     m_Priority        = priority;
     m_AutoReleaseTime = 0f;
 }
 public EventSubscriber()
 {
     dicEventHandler = new GameFrameworkMultiDictionary <int, EventHandler <GameEventArgs> >();
     Owner           = null;
 }
Esempio n. 4
0
 /// <summary>
 /// 初始化文件系统管理器的新实例。
 /// </summary>
 public FileSystemManager()
 {
     m_FileSystems           = new Dictionary <string, FileSystem>();
     m_RegisteredFileSystems = new GameFrameworkMultiDictionary <string, FileSystem>();
 }