Beispiel #1
0
        /// <summary>
        /// Releases a an instance of the info by decreasing the ref-count if the model exists in the table
        /// </summary>
        /// <param name="modelName">Path of the modelfile</param>
        public void ReleaseInfo(string modelName)
        {
            int hash = modelName.ToLower().GetHashCode();

            lock (mInfoLock)
            {
                if (cacheTable.ContainsKey(hash))
                {
                    M2CacheEntry ent = cacheTable[hash];
                    --ent.numRefs;
                    if (ent.numRefs == 0)
                    {
                        cacheTable.Remove(hash);
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Get the info of a model name
        /// </summary>
        /// <param name="modelName"></param>
        /// <returns></returns>
        public M2Info GetInfo(string modelName)
        {
            int hash = modelName.ToLower().GetHashCode();
            lock (mInfoLock)
            {
                if (cacheTable.ContainsKey(hash))
                {
                    M2CacheEntry ret = cacheTable[hash];
                    ++ret.numRefs;
                    return ret.Info;
                }
            }

            M2CacheEntry ent = new M2CacheEntry();
            ent.Info = new M2Info(modelName);
            ent.numRefs = 1;

            lock (mInfoLock) cacheTable.Add(hash, ent);
            return ent.Info;
        }
Beispiel #3
0
        /// <summary>
        /// Get the info of a model name
        /// </summary>
        /// <param name="modelName"></param>
        /// <returns></returns>
        public M2Info GetInfo(string modelName)
        {
            int hash = modelName.ToLower().GetHashCode();

            lock (mInfoLock)
            {
                if (cacheTable.ContainsKey(hash))
                {
                    M2CacheEntry ret = cacheTable[hash];
                    ++ret.numRefs;
                    return(ret.Info);
                }
            }

            M2CacheEntry ent = new M2CacheEntry();

            ent.Info    = new M2Info(modelName);
            ent.numRefs = 1;

            lock (mInfoLock) cacheTable.Add(hash, ent);
            return(ent.Info);
        }