public void Sort(Camera eye) { OpaquePatches.Clear( ); TransparentPatches.Clear( ); var opaqueParts = InstanceManager.Parts.Where( e => e.Type == GlobalGeometryPartBlockNew.TypeEnum.OpaqueShadowCasting || e.Type == GlobalGeometryPartBlockNew.TypeEnum.OpaqueShadowOnly || e.Type == GlobalGeometryPartBlockNew.TypeEnum.OpaqueNonshadowing); var globalGeometryPartBlockNews = opaqueParts as GlobalGeometryPartBlockNew[] ?? opaqueParts.ToArray( ); foreach (var part in globalGeometryPartBlockNews) { var key = _shaderDictionary[part]; if (!OpaquePatches.ContainsKey(key)) { OpaquePatches[key] = new List <GlobalGeometryPartBlockNew>( ); } OpaquePatches[key].Add(part); } var transparentParts = InstanceManager.Parts.Where(e => e.Type == GlobalGeometryPartBlockNew.TypeEnum.Transparent) .ToList( ); TransparentPatches = new List <PatchData>(SortTransparentParts(transparentParts, eye)); }
public IEnumerable <GlobalGeometryPartBlockNew> GetOpaqueParts(TagGlobalKey shaderKey) { return(OpaquePatches.ContainsKey(shaderKey) ? OpaquePatches[shaderKey] : Enumerable.Empty <GlobalGeometryPartBlockNew>( )); }