private void WaitFor(MyPlanetEnvironmentClipmapProxy proxy)
        {
            if (proxy.LodSet == -1) return;

            m_dependencies.Add(proxy);
            proxy.m_dependants.Add(this);
        }
 internal void UnregisterOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     if (!OutgoingProxies.Remove(proxy.Id))
     {
         Debug.Fail("OutgoingProxies proxy was already unregistered");
     }
 }
 internal void UnmarkProxyOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     if (!OutgoingProxies.Remove(proxy.Id))
     {
         Debug.Fail("Proxy was already unmarked outgoing");
     }
     Proxies.Add(proxy.Id, proxy);
 }
 internal int QueuedLod(MyPlanetEnvironmentClipmapProxy sector)
 {
     MyPlanetEnvironmentComponent.Operation op;
     if (m_sectorOperations.TryGetValue(sector.Id, out op))
     {
         return(op.LodToSet);
     }
     return(sector.Lod);
 }
        internal void MarkProxyOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
        {
            if (!Proxies.Remove(proxy.Id))
            {
                Debug.Fail("Proxy was already marked outgoing");
            }
            Debug.Assert(!OutgoingProxies.ContainsKey(proxy.Id) || OutgoingProxies[proxy.Id] == proxy);

            OutgoingProxies[proxy.Id] = proxy;
        }
        private void Notify(MyPlanetEnvironmentClipmapProxy proxy, bool clipmapUpdate)
        {
            if (m_dependencies.Count == 0) return;

            m_dependencies.Remove(proxy);

            if (m_dependencies.Count == 0 && m_closed)
            {
                EnqueueClose(clipmapUpdate);
                if (EnvironmentSector.IsClosed || EnvironmentSector.LodLevel == -1)
                {
                    CloseCommit(clipmapUpdate);
                }
            }
        }
        internal void EnqueueOperation(MyPlanetEnvironmentClipmapProxy proxy, int lod, bool close = false)
        {
            long id = proxy.Id;

            MyPlanetEnvironmentComponent.Operation op;
            if (m_sectorOperations.TryGetValue(id, out op))
            {
                op.LodToSet            = lod;
                op.ShouldClose         = close;
                m_sectorOperations[id] = op;
            }
            else
            {
                op.LodToSet    = lod;
                op.Proxy       = proxy;
                op.ShouldClose = close;
                m_sectorOperations.Add(id, op);
            }
        }
        internal void MarkProxyOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
        {
            if (!Proxies.Remove(proxy.Id))
                Debug.Fail("Proxy was already marked outgoing");
            Debug.Assert(!OutgoingProxies.ContainsKey(proxy.Id) || OutgoingProxies[proxy.Id] == proxy);

            OutgoingProxies[proxy.Id] = proxy;
        }
 internal void RegisterProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     Proxies.Add(proxy.Id, proxy);
 }
        internal void EnqueueOperation(MyPlanetEnvironmentClipmapProxy proxy, int lod, bool close = false)
        {
            long id = proxy.Id;

            MyPlanetEnvironmentComponent.Operation op;
            if (m_sectorOperations.TryGetValue(id, out op))
            {
                op.LodToSet = lod;
                op.ShouldClose = close;
                m_sectorOperations[id] = op;
            }
            else
            {
                op.LodToSet = lod;
                op.Proxy = proxy;
                op.ShouldClose = close;
                m_sectorOperations.Add(id, op);
            }
        }
 internal int QueuedLod(MyPlanetEnvironmentClipmapProxy sector)
 {
     MyPlanetEnvironmentComponent.Operation op;
     if (m_sectorOperations.TryGetValue(sector.Id, out op))
         return op.LodToSet;
     return sector.Lod;
 }
 internal bool IsQueued(MyPlanetEnvironmentClipmapProxy sector)
 {
     return m_sectorOperations.ContainsKey(sector.Id);
 }
        private void Notify(MyPlanetEnvironmentClipmapProxy proxy, bool clipmapUpdate)
        {
            if (m_dependencies.Count == 0) return;

            m_dependencies.Remove(proxy);

            if (m_dependencies.Count == 0 && m_closed)
            {
                EnqueueClose(clipmapUpdate);
                if (EnvironmentSector.IsClosed || EnvironmentSector.LodLevel == -1)
                {
                    CloseCommit(clipmapUpdate);
                }
            }
        }
 internal void RegisterProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     Proxies.Add(proxy.Id, proxy);
 }
 internal void UnmarkProxyOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     if (!OutgoingProxies.Remove(proxy.Id))
         Debug.Fail("Proxy was already unmarked outgoing");
     Proxies.Add(proxy.Id, proxy);
 }
        private void WaitFor(MyPlanetEnvironmentClipmapProxy proxy)
        {
            if (proxy.LodSet == -1) return;

            m_dependencies.Add(proxy);
            proxy.m_dependants.Add(this);
        }
 internal void UnregisterOutgoingProxy(MyPlanetEnvironmentClipmapProxy proxy)
 {
     if (!OutgoingProxies.Remove(proxy.Id))
         Debug.Fail("OutgoingProxies proxy was already unregistered");
 }
 internal bool IsQueued(MyPlanetEnvironmentClipmapProxy sector)
 {
     return(m_sectorOperations.ContainsKey(sector.Id));
 }