Example #1
0
 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);
     }
 }
Example #2
0
        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;
                    }
                }
            });
        }