public bool IsInDisplayGroup(DrawGroup disp) { if (AlwaysVisible || disp.AlwaysVisible) { return(true); } bool isAllZero = true; for (int i = 0; i < Drawgroups.Length && i < disp.Drawgroups.Length; i++) { if ((Drawgroups[i] & disp.Drawgroups[i]) != 0) { return(true); } if (Drawgroups[i] != 0) { isAllZero = false; } } if (isAllZero) { return(true); } return(false); }
public void ProcessSceneVisibility(RenderFilter filter, DrawGroup dispGroup) { bool alwaysVis = dispGroup != null ? dispGroup.AlwaysVisible : true; for (int i = 0; i < SYSTEM_SIZE; i++) { if (cCulled[i]) { continue; } if ((cSceneVis[i]._renderFilter & filter) == 0) { cCulled[i] = true; continue; } if (!alwaysVis && cSceneVis[i]._drawGroup != null && !cSceneVis[i]._drawGroup.IsInDisplayGroup(dispGroup)) { cCulled[i] = true; } } }