internal void ClearMonitor(string lvlName, List <TR2Entities> entities)
        {
            lock (_lock)
            {
                TexturePositionMonitor monitor = GetMonitor(lvlName);
                if (monitor == null)
                {
                    return;
                }

                List <StaticTextureSource> sources = GetSourcesToMonitor(entities);
                monitor.RemoveSources(sources);
            }
        }
        internal List <TR2Entities> GetIgnoredEntities(string lvlName)
        {
            TexturePositionMonitor monitor = GetMonitor(lvlName);

            if (monitor != null && monitor.RemovedTextures != null)
            {
                List <TR2Entities> entities = new List <TR2Entities>();
                foreach (TR2Entities entity in monitor.RemovedTextures)
                {
                    entities.Add(TR2EntityUtilities.GetAliasForLevel(lvlName, entity));
                }
                return(entities);
            }
            return(null);
        }
        internal TexturePositionMonitor CreateMonitor(string lvlName, List <TR2Entities> entities)
        {
            lock (_lock)
            {
                List <StaticTextureSource> sources = GetSourcesToMonitor(entities);
                TexturePositionMonitor     monitor = GetMonitor(lvlName);
                if (monitor == null)
                {
                    monitor            = new TexturePositionMonitor(sources);
                    _monitors[lvlName] = monitor;
                }
                else
                {
                    monitor.AppendSources(sources);
                }

                return(monitor);
            }
        }
        internal Dictionary <StaticTextureSource, List <StaticTextureTarget> > GetLevelMapping(string lvlName)
        {
            TexturePositionMonitor monitor = GetMonitor(lvlName);

            return(monitor?.PreparedLevelMapping);
        }