| 640 | //----------------------------------------------------------------------------- |
| 641 | |
| 642 | bool SimObject::registerObject() |
| 643 | { |
| 644 | AssertFatal( !mFlags.test( Added ), "reigsterObject - Object already registered!"); |
| 645 | mFlags.clear(Deleted | Removed); |
| 646 | |
| 647 | if(smForceId) |
| 648 | { |
| 649 | setId(smForcedId); |
| 650 | smForceId = false; |
| 651 | } |
| 652 | |
| 653 | if( !mId ) |
| 654 | { |
| 655 | mId = Sim::gNextObjectId++; |
| 656 | dSprintf( mIdString, sizeof( mIdString ), "%u", mId ); |
| 657 | } |
| 658 | |
| 659 | AssertFatal(Sim::gIdDictionary && Sim::gNameDictionary, |
| 660 | "SimObject::registerObject - tried to register an object before Sim::init()!"); |
| 661 | |
| 662 | Sim::gIdDictionary->insert(this); |
| 663 | |
| 664 | Sim::gNameDictionary->insert(this); |
| 665 | |
| 666 | // Notify object |
| 667 | bool ret = onAdd(); |
| 668 | |
| 669 | if(!ret) |
| 670 | unregisterObject(); |
| 671 | |
| 672 | AssertFatal(!ret || isProperlyAdded(), "Object did not call SimObject::onAdd()"); |
| 673 | return ret; |
| 674 | } |
| 675 | |
| 676 | //----------------------------------------------------------------------------- |
| 677 | |