/// <summary> /// Initializes a new instance of the <see cref="ModelComponentRenderer" /> class. /// </summary> /// <param name="effectName">Name of the effect.</param> /// <exception cref="System.ArgumentNullException">effectName</exception> public ModelComponentRenderer(string effectName) { if (effectName != null) { EffectName = effectName; } meshesToRender = new FastList <RenderMesh>(); Callbacks = new ModelComponentRendererCallback(); skinningUpdater = new MeshSkinningUpdater(256); }
/// <summary> /// Initializes a new instance of the <see cref="ModelComponentRenderer" /> class. /// </summary> /// <param name="effectName">Name of the effect.</param> /// <exception cref="System.ArgumentNullException">effectName</exception> public ModelComponentRenderer(string effectName) { if (effectName != null) { EffectName = effectName; } meshesToRender = new FastList<RenderMesh>(); Callbacks = new ModelComponentRendererCallback(); skinningUpdater = new MeshSkinningUpdater(256); }
private List <RenderMesh> PrepareModelForRendering(RenderContext context, RenderModel renderModel) { // Create the list of RenderMesh objects var renderMeshes = renderModel.RenderMeshesList[modelRenderSlot]; var modelMeshes = renderModel.ModelComponent.Model.Meshes; // If render mesh is new or the model changed, generate new render mesh if (renderMeshes == null || (renderMeshes.Count == 00 && modelMeshes.Count > 0)) { if (renderMeshes == null) { renderMeshes = new RenderMeshCollection(); renderModel.RenderMeshesList[modelRenderSlot] = renderMeshes; } foreach (var mesh in modelMeshes) { var renderMesh = new RenderMesh(renderModel, mesh); //UpdateEffect(context, renderMesh, null); // Register mesh for rendering renderMeshes.Add(renderMesh); } } // Update RenderModel transform if (!renderMeshes.TransformUpdated) { // Update the model hierarchy var modelViewHierarchy = renderModel.ModelComponent.ModelViewHierarchy; modelViewHierarchy.UpdateToRenderModel(renderModel, modelRenderSlot); // Upload skinning blend matrices MeshSkinningUpdater.Update(modelViewHierarchy, renderModel, modelRenderSlot); renderMeshes.TransformUpdated = true; } return(renderMeshes); }