diff --git a/Source/Engine/Networking/NetworkReplicationHierarchy.h b/Source/Engine/Networking/NetworkReplicationHierarchy.h index 7e9978635..9db851996 100644 --- a/Source/Engine/Networking/NetworkReplicationHierarchy.h +++ b/Source/Engine/Networking/NetworkReplicationHierarchy.h @@ -69,7 +69,7 @@ API_STRUCT(NoDefault, Namespace="FlaxEngine.Networking") struct FLAXENGINE_API N API_FIELD() uint64 Word1 = 0; // All bits set for all clients. - API_FIELD() static NetworkClientsMask All; + API_FIELD(ReadOnly) static NetworkClientsMask All; FORCE_INLINE bool HasBit(int32 bitIndex) const { diff --git a/Source/Engine/Particles/Particles.cpp b/Source/Engine/Particles/Particles.cpp index bfbf35f29..487bc4b03 100644 --- a/Source/Engine/Particles/Particles.cpp +++ b/Source/Engine/Particles/Particles.cpp @@ -1146,8 +1146,7 @@ void Particles::DrawParticles(RenderContextBatch& renderContextBatch, ParticleEf bounds.Center -= viewOrigin; // Cull particles against all views - uint64 viewsMask = 0; - ASSERT_LOW_LAYER(renderContextBatch.Contexts.Count() <= 64); + bool drawAnyView = false, drawMainView = false; DrawPass viewsDrawModes = DrawPass::None; for (int32 i = 0; i < renderContextBatch.Contexts.Count(); i++) { @@ -1155,11 +1154,12 @@ void Particles::DrawParticles(RenderContextBatch& renderContextBatch, ParticleEf const bool visible = (view.Pass & effect->DrawModes) != DrawPass::None && (view.IsCullingDisabled || view.CullingFrustum.Intersects(bounds)); if (visible) { - viewsMask |= 1ull << (uint64)i; + drawAnyView = true; + drawMainView |= i == 0; viewsDrawModes |= view.Pass; } } - if (viewsMask == 0) + if (drawAnyView == false) return; viewsDrawModes &= effect->DrawModes; @@ -1175,7 +1175,7 @@ void Particles::DrawParticles(RenderContextBatch& renderContextBatch, ParticleEf const int8 sortOrder = effect->SortOrder; // Draw lights (only to into the main view) - if ((viewsMask & 1) == 1 && renderContextBatch.GetMainContext().View.Pass != DrawPass::Depth) + if (drawMainView && renderContextBatch.GetMainContext().View.Pass != DrawPass::Depth) { for (int32 emitterIndex = 0; emitterIndex < effect->Instance.Emitters.Count(); emitterIndex++) { @@ -1275,7 +1275,7 @@ void Particles::DrawParticles(RenderContextBatch& renderContextBatch, ParticleEf !material->IsReady() || material->GetInfo().Domain != MaterialDomain::VolumeParticle || (renderContextBatch.GetMainContext().View.Flags & ViewFlags::Fog) == ViewFlags::None || - (viewsMask & 1) == 0 + drawMainView ) break; renderModulesIndices |= 1u << moduleIndex;