Exemplo n.º 1
0
    public bool CheckDefine(string define, bool invertFlag)
    {
        bool result;

        if (definesCache != null)
        {
            for (int i = 0; i < definesCache.Count; i++)
            {
                RTP_shaderDefineCacheItem item = definesCache[i] as RTP_shaderDefineCacheItem;
                if (item.define == define && item.invertFlag == invertFlag)
                {
                    return(item.result);
                }
            }
        }
        // calling hundred times shader_code.IndexOf() is sloooow, that's why we need to cache results
        if (CheckDefine("//#define " + define))
        {
            result = invertFlag ? true : false;
        }
        else if (CheckDefine("#define " + define))
        {
            result = invertFlag ? false : true;
        }
        else
        {
            result = false;
        }

        RTP_shaderDefineCacheItem new_item = new RTP_shaderDefineCacheItem(define, invertFlag, result);

        definesCache.Add(new_item);

        return(result);
    }
    public bool CheckDefine(string define, bool invertFlag)
    {
        bool result;
        if (definesCache!=null)
        {
            for(int i=0; i<definesCache.Count; i++)
            {
                RTP_shaderDefineCacheItem item = definesCache[i] as RTP_shaderDefineCacheItem;
                if (item.define==define && item.invertFlag == invertFlag)
                {
                    return item.result;
                }
            }
        }
        // calling hundred times shader_code.IndexOf() is sloooow, that's why we need to cache results
        if (CheckDefine("//#define " + define)) result = invertFlag ? true : false;
        else if (CheckDefine("#define " + define)) result = invertFlag ? false : true;
        else result = false;

        RTP_shaderDefineCacheItem new_item = new RTP_shaderDefineCacheItem(define, invertFlag, result);
        definesCache.Add(new_item);

        return result;
    }