diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /utils/nvtristriplib/vertexcache.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'utils/nvtristriplib/vertexcache.h')
| -rw-r--r-- | utils/nvtristriplib/vertexcache.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/utils/nvtristriplib/vertexcache.h b/utils/nvtristriplib/vertexcache.h new file mode 100644 index 0000000..3b06665 --- /dev/null +++ b/utils/nvtristriplib/vertexcache.h @@ -0,0 +1,79 @@ + +#ifndef VERTEX_CACHE_H + +#define VERTEX_CACHE_H + +class VertexCache +{ + +public: + + VertexCache(int size) + { + numEntries = size; + + entries = new int[numEntries]; + + for(int i = 0; i < numEntries; i++) + entries[i] = -1; + } + + VertexCache() { VertexCache(16); } + ~VertexCache() { delete[] entries; entries = 0; } + + bool InCache(int entry) + { + bool returnVal = false; + for(int i = 0; i < numEntries; i++) + { + if(entries[i] == entry) + { + returnVal = true; + break; + } + } + + return returnVal; + } + + int AddEntry(int entry) + { + int removed; + + removed = entries[numEntries - 1]; + + //push everything right one + for(int i = numEntries - 2; i >= 0; i--) + { + entries[i + 1] = entries[i]; + } + + entries[0] = entry; + + return removed; + } + + void Clear() + { + memset(entries, -1, sizeof(int) * numEntries); + } + + void Copy(VertexCache* inVcache) + { + for(int i = 0; i < numEntries; i++) + { + inVcache->Set(i, entries[i]); + } + } + + int At(int index) { return entries[index]; } + void Set(int index, int value) { entries[index] = value; } + +private: + + int *entries; + int numEntries; + +}; + +#endif |