| 173 | } |
| 174 | |
| 175 | void 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; |
nothing calls this directly
no test coverage detected