| 437 | } |
| 438 | |
| 439 | void Block_DefineCustom(BlockID block, cc_bool checkSprite) { |
| 440 | PackedCol black = PackedCol_Make(0, 0, 0, 255); |
| 441 | cc_string name = Block_UNSAFE_GetName(block); |
| 442 | /* necessary if servers redefined core blocks, before extended collide types were added */ |
| 443 | cc_uint8 collide = DefaultSet_MapOldCollide(block, Blocks.Collide[block]); |
| 444 | Blocks.Tinted[block] = Blocks.FogCol[block] != black && String_IndexOf(&name, '#') >= 0; |
| 445 | |
| 446 | Block_SetCollide(block, collide); |
| 447 | Block_SetDrawType(block, Blocks.Draw[block]); |
| 448 | Block_CalcRenderBounds(block); |
| 449 | Block_UpdateCulling(block); |
| 450 | Block_CalcLightOffset(block); |
| 451 | |
| 452 | Inventory_AddDefault(block); |
| 453 | Block_SetCustomDefined(block, true); |
| 454 | Event_RaiseVoid(&BlockEvents.BlockDefChanged); |
| 455 | |
| 456 | if (!checkSprite) return; /* TODO eliminate this */ |
| 457 | /* Update sprite BoundingBox if necessary */ |
| 458 | if (Blocks.Draw[block] == DRAW_SPRITE) Block_RecalculateBB(block); |
| 459 | } |
| 460 | |
| 461 | void Block_UndefineCustom(BlockID block) { |
| 462 | Block_ResetProps(block); |
no test coverage detected