/// <summary>
        /// Are resources loaded for the given device?
        /// </summary>
        /// <param name="device">The device to check for.</param>
        public override bool IsLoaded(EngineDevice device)
        {
            if (!m_localResources.HasObjectAt(device.DeviceIndex))
            {
                return(false);
            }

            GeometryResource geoResource = m_localResources[device.DeviceIndex];

            if (geoResource.Key != m_resGeometryKey)
            {
                return(false);
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Registers the given view on this scene object.
        /// This method is meant to be called by RenderLoop class.
        /// </summary>
        /// <param name="viewInformation">The view to register.</param>
        internal void RegisterView(ViewInformation viewInformation)
        {
            viewInformation.EnsureNotNull(nameof(viewInformation));

            bool isFirstView = m_registeredViews.Count == 0;

            InitializeResourceDictionaries(true);

            // Register device on this scene if not done before
            //  -> This registration is forever, no deregister is made!
            EngineDevice givenDevice = viewInformation.Device;

            if (!m_registeredResourceDicts.HasObjectAt(givenDevice.DeviceIndex))
            {
                throw new SeeingSharpGraphicsException("ResourceDictionary of device " + givenDevice.AdapterDescription + " not loaded in this scene!");
            }

            // Check for already done registration of this view
            // If there is any, then caller made an error
            if (m_registeredViews.Contains(viewInformation))
            {
                throw new SeeingSharpGraphicsException("The given view is already registered on this scene!");
            }

            // Register this view on this scene and on all layers
            int viewIndex = m_registeredViews.AddObject(viewInformation);

            foreach (SceneLayer actLayer in m_sceneLayers)
            {
                actLayer.RegisterView(viewIndex, viewInformation, m_registeredResourceDicts[givenDevice.DeviceIndex]);
            }
            viewInformation.ViewIndex = viewIndex;

            // Mark this scene for deletion if we don't have any other view registered
            if (isFirstView)
            {
                GraphicsCore.Current.MainLoop.DeregisterSceneForUnload(this);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Are resources loaded for the given device?
 /// </summary>
 /// <param name="device"></param>
 public override bool IsLoaded(EngineDevice device)
 {
     return(m_texturePainterHelpers.HasObjectAt(device.DeviceIndex));
 }
Beispiel #4
0
 /// <summary>
 /// Are resources loaded for the given device?
 /// </summary>
 /// <param name="device">The device for which to check.</param>
 public override bool IsLoaded(EngineDevice device)
 {
     return(m_localResources.HasObjectAt(device.DeviceIndex));
 }