MCPcopy Create free account
hub / github.com/TheForceEngine/TheForceEngine / getFrame

Function getFrame

TheForceEngine/TFE_Asset/spriteAsset.cpp:126–165  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 }
125
126 Frame* getFrame(const char* name)
127 {
128 FrameMap::iterator iFrame = s_frames.find(name);
129 if (iFrame != s_frames.end())
130 {
131 return iFrame->second;
132 }
133
134 // It doesn't exist yet, try to load the texture.
135 if (!TFE_AssetSystem::readAssetFromArchive(c_defaultGob, ARCHIVE_GOB, name, s_buffer))
136 {
137 return nullptr;
138 }
139
140 Frame* frame = new Frame;
141 u8* data = s_buffer.data();
142 FME_Frame* fme_frame = (FME_Frame*)data;
143 FME_Cell* fme_cell = (FME_Cell *)&data[fme_frame->Cell];
144
145 // Load the image.
146 u8* image = new u8[fme_cell->SizeX * fme_cell->SizeY];
147 const u8* srcData = (u8*)fme_cell + sizeof(FME_Cell);
148 loadCell(fme_cell->SizeX, fme_cell->SizeY, fme_cell->Compressed, fme_cell->DataSize, srcData, image);
149
150 frame->InsertX = fme_frame->InsertX;
151 frame->InsertY = fme_frame->InsertY;
152 frame->Flip = fme_frame->Flip;
153 frame->width = fme_cell->SizeX;
154 frame->height = fme_cell->SizeY;
155 frame->image = image;
156
157 // area.
158 frame->rect[0] = frame->InsertX;
159 frame->rect[1] = -frame->height - frame->InsertY;
160 frame->rect[2] = frame->rect[0] + frame->width;
161 frame->rect[3] = frame->rect[1] + frame->height;
162
163 s_frames[name] = frame;
164 return frame;
165 }
166
167 std::vector<s32> s_tempFrames;
168 std::vector<s32> s_tempCells;

Callers

nothing calls this directly

Calls 4

readAssetFromArchiveFunction · 0.85
loadCellFunction · 0.85
dataMethod · 0.80
endMethod · 0.45

Tested by

no test coverage detected