public override void SubmitMessage(IReadOnlyMailItem originalMailItem, EmailMessage message, OrganizationId organizationId, Guid externalOrganizationId, bool suppressDSNs) { try { TransportMailItem mailItem = SubmitHelper.CreateTransportMailItem(originalMailItem, message, this.Name, this.Version, (base.AssociatedAgent != null) ? base.AssociatedAgent.Name : "StoreDriverServer", null, null, organizationId, externalOrganizationId, false); this.SubmitMailItem(mailItem, suppressDSNs); } catch (Exception innerException) { throw new StoreDriverAgentTransientException(Strings.StoreDriverAgentTransientExceptionEmail, innerException); } }
protected override void OnUpdate() { if (!EnsureInitialized()) { return; } // get all MeshRenderer, cull them, and add them to graph nodes that need them // any mesh renderer MUST have a shared component data that has a list of passes to render to // this list is usually very shared - all opaque meshes will render to all ZOnly and Opaque passes // this shared data is not dynamically updated - other systems are responsible to update them if needed // simple Entities.WithAll <TextRenderer>().ForEach((Entity e, ref MeshRenderer mr, ref LocalToWorld tx, ref WorldBounds wb, ref WorldBoundingSphere wbs) => { if (!EntityManager.HasComponent <RenderToPasses>(e)) { return; } RenderToPasses toPassesRef = EntityManager.GetSharedComponentData <RenderToPasses>(e); DynamicBuffer <RenderToPassesEntry> toPasses = EntityManager.GetBufferRO <RenderToPassesEntry>(toPassesRef.e); for (int i = 0; i < toPasses.Length; i++) { Entity ePass = toPasses[i].e; var pass = EntityManager.GetComponentData <RenderPass>(ePass); if (Culling.Cull(in wbs, in pass.frustum) == Culling.CullingResult.Outside) { continue; } var mesh = EntityManager.GetComponentData <MeshBGFX>(mr.mesh); uint depth = 0; switch (pass.passType) { case RenderPassType.ZOnly: // TODO -- need to do alpha kill to get the proper depth written here (and to support shadows) SubmitHelper.SubmitZOnlyMeshDirect(m_BGFXInstance, pass.viewId, ref mesh, ref tx.Value, mr.startIndex, mr.indexCount, pass.GetFlipCulling()); break; case RenderPassType.Transparent: depth = pass.ComputeSortDepth(tx.Value.c3); goto case RenderPassType.Opaque; case RenderPassType.Opaque: if (EntityManager.HasComponent <TextMaterialBGFX>(mr.material)) { var material = EntityManager.GetComponentData <TextMaterialBGFX>(mr.material); SubmitTextDirect(pass.viewId, ref mesh, ref tx.Value, ref material, mr.startIndex, mr.indexCount, depth, pass.GetFlipCulling()); } else if (EntityManager.HasComponent <TextSDFMaterialBGFX>(mr.material)) { var material = EntityManager.GetComponentData <TextSDFMaterialBGFX>(mr.material); SubmitTextSDFDirect(pass.viewId, ref mesh, ref tx.Value, ref material, mr.startIndex, mr.indexCount, depth, pass.GetFlipCulling()); } break; case RenderPassType.ShadowMap: // TODO -- text doesn't cast shadows right now default: // Unknown pass, text doesn't render break; } } }); }