Пример #1
0
        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));
        }
Пример #2
0
 public IEnumerable <GlobalGeometryPartBlockNew> GetOpaqueParts(TagGlobalKey shaderKey)
 {
     return(OpaquePatches.ContainsKey(shaderKey)
         ? OpaquePatches[shaderKey]
         : Enumerable.Empty <GlobalGeometryPartBlockNew>( ));
 }