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; }