MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xModelBucket_InsertBucket

Function xModelBucket_InsertBucket

src/SB/Core/x/xModelBucket.cpp:175–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

173}
174
175void xModelBucket_InsertBucket(RpAtomic* data, U32 pipeFlags, U32 subObjects)
176{
177 S32 numbuckets;
178 S32 pipeSetting[2];
179 RpAtomic* extraData;
180
181 pipeFlags = (pipeFlags & ~0x3) | 0x2;
182
183 switch (pipeFlags & 0x3)
184 {
185 case 1:
186 numbuckets = 1;
187 pipeSetting[0] = 1;
188 break;
189 case 2:
190 numbuckets = 1;
191 pipeSetting[0] = 2;
192 break;
193 case 3:
194 numbuckets = 2;
195 pipeSetting[0] = 2;
196 pipeSetting[1] = 1;
197 break;
198 case 0:
199 default:
200 if (iModelNumBones(data))
201 {
202 numbuckets = 1;
203 pipeSetting[0] = 1;
204 }
205 else
206 {
207 numbuckets = 2;
208 pipeSetting[0] = 2;
209 pipeSetting[1] = 1;
210 }
211 break;
212 }
213
214 extraData = NULL;
215
216 do
217 {
218 if (subObjects & 0x1)
219 {
220 sBucketClipCullList[sBucketClipCullCurr] = &sBucketList[sBucketCurr];
221 sBucketClipCullList[sBucketClipCullCurr + 1] = &sBucketList[sBucketCurr];
222 sBucketList[sBucketCurr].Data = data;
223 sBucketList[sBucketCurr].OriginalData = data;
224 sBucketList[sBucketCurr].List = NULL;
225 sBucketList[sBucketCurr].ClipFlags = pipeSetting[0];
226 sBucketList[sBucketCurr].PipeFlags = pipeFlags;
227 if (numbuckets == 2)
228 {
229 FullAtomicDupe(data, 1, &extraData);
230 sBucketList[sBucketCurr + 1].Data = extraData;
231 sBucketList[sBucketCurr + 1].OriginalData = data;
232 sBucketList[sBucketCurr + 1].List = NULL;

Callers

nothing calls this directly

Calls 3

iModelNumBonesFunction · 0.85
FullAtomicDupeFunction · 0.70
iModelFile_RWMultiAtomicFunction · 0.50

Tested by

no test coverage detected