| 1100 | } |
| 1101 | |
| 1102 | bool loadshadows(const char *filename) |
| 1103 | { |
| 1104 | stream *f = opengzfile(filename, "rb"); |
| 1105 | if(!f) return false; |
| 1106 | shadowheader hdr; |
| 1107 | if(f->read(&hdr, sizeof(shadowheader))!=sizeof(shadowheader)) { delete f; return false; } |
| 1108 | lilswap(&hdr.size, 1); |
| 1109 | lilswap(&hdr.frames, 1); |
| 1110 | if(hdr.size!=(1<<dynshadowsize) || hdr.frames!=numframes) { delete f; return false; } |
| 1111 | lilswap(&hdr.height, 1); |
| 1112 | lilswap(&hdr.rad, 1); |
| 1113 | |
| 1114 | uchar *buf = new uchar[hdr.size*hdr.size*hdr.frames]; |
| 1115 | if(f->read(buf, hdr.size*hdr.size*hdr.frames)!=hdr.size*hdr.size*hdr.frames) { delete f; delete[] buf; return false; } |
| 1116 | |
| 1117 | shadowrad = hdr.rad; |
| 1118 | shadows = new GLuint[hdr.frames]; |
| 1119 | glGenTextures(hdr.frames, shadows); |
| 1120 | |
| 1121 | loopi(hdr.frames) createtexture(shadows[i], hdr.size, hdr.size, &buf[i*hdr.size*hdr.size], 3, true, false, GL_ALPHA); |
| 1122 | |
| 1123 | delete[] buf; |
| 1124 | delete f; |
| 1125 | |
| 1126 | return true; |
| 1127 | } |
| 1128 | |
| 1129 | void rendershadow(int anim, int varseed, float speed, int basetime, const vec &o, float yaw) |
| 1130 | { |
nothing calls this directly
no test coverage detected