示例#1
0
        public override void Render(IModelRenderer modelRenderer, IViewState viewState)
        {
            if (Model is SpriteModel spriteModel)
            {
                var renderData = new SpriteModelRenderData
                {
                    Model  = spriteModel,
                    Shared = GetSharedModelRenderData(viewState),
                    Frame  = Frame
                };

                modelRenderer.RenderSpriteModel(ref renderData);
            }
        }
        public void RenderSpriteModel(ref SpriteModelRenderData renderData)
        {
            if (renderData.Model == null)
            {
                throw new ArgumentNullException(nameof(renderData), $"{nameof(renderData.Model)} cannot be null");
            }

            if (!_active)
            {
                throw new InvalidOperationException($"Cannot call {nameof(RenderSpriteModel)} outside the render operation");
            }

            var resources = _resourcesManager.GetResources(renderData.Model);

            SpriteRenderer.Render(
                _renderContext.GraphicsDevice,
                _renderContext.CommandList,
                _renderContext.SceneContext,
                _renderContext.RenderPass,
                (SpriteModelResourceContainer)resources,
                ref renderData);
        }