//----------------------------------------------------------------------------- // Destroy any fields. //----------------------------------------------------------------------------- void FieldBrushObject::destroyFields() { // Fetch Dynamic-Field Dictionary. SimFieldDictionary* pFieldDictionary = getFieldDictionary(); // Any Field Dictionary? if ( pFieldDictionary == NULL ) { // No, so we're done. return; } // Iterate fields. for ( SimFieldDictionaryIterator itr(pFieldDictionary); *itr; ++itr ) { // Fetch Field Entry. SimFieldDictionary::Entry* fieldEntry = *itr; // Internal Field? if ( dStrstr( fieldEntry->slotName, INTERNAL_FIELD_PREFIX ) == fieldEntry->slotName ) { // Yes, so remove it. pFieldDictionary->setFieldValue( fieldEntry->slotName, "" ); } } }
void Settings::clearAllFields() { // Fetch Dynamic-Field Dictionary. SimFieldDictionary* pFieldDictionary = getFieldDictionary(); // Any Field Dictionary? if ( pFieldDictionary == NULL ) { // No, so we're done. return; } // Iterate fields. for ( SimFieldDictionaryIterator itr(pFieldDictionary); *itr; ++itr ) { // Fetch Field Entry. SimFieldDictionary::Entry* fieldEntry = *itr; // don't remove default field values if (dStrEndsWith(fieldEntry->slotName, "_default")) continue; // remove it. pFieldDictionary->setFieldValue( fieldEntry->slotName, "" ); } }
void Settings::remove(const UTF8 *settingName, bool includeDefaults) { // Fetch Dynamic-Field Dictionary. SimFieldDictionary* pFieldDictionary = getFieldDictionary(); // Any Field Dictionary? if ( pFieldDictionary == NULL ) { // No, so we're done. return; } String name; buildGroupString(name, settingName); StringTableEntry nameEntry = StringTable->insert(name.c_str()); StringTableEntry nameEntryDefault = StringTable->insert( String::ToString("%s%s",name.c_str(), "_default") ); // Iterate fields. for ( SimFieldDictionaryIterator itr(pFieldDictionary); *itr; ++itr ) { // Fetch Field Entry. SimFieldDictionary::Entry* fieldEntry = *itr; // is this a field of our current group if ( (dStrcmp(nameEntry, "") == 0) || dStrcmp( nameEntry, fieldEntry->slotName ) == 0 || (includeDefaults && dStrcmp( nameEntryDefault, fieldEntry->slotName ) == 0) ) { // Yes, so remove it. pFieldDictionary->setFieldValue( fieldEntry->slotName, "" ); } } }
bool TSStatic::onAdd() { PROFILE_SCOPE(TSStatic_onAdd); if ( isServerObject() ) { // Handle the old "usePolysoup" field SimFieldDictionary* fieldDict = getFieldDictionary(); if ( fieldDict ) { StringTableEntry slotName = StringTable->insert( "usePolysoup" ); SimFieldDictionary::Entry * entry = fieldDict->findDynamicField( slotName ); if ( entry ) { // Was "usePolysoup" set? bool usePolysoup = dAtob( entry->value ); // "usePolysoup" maps to the new VisibleMesh type if ( usePolysoup ) mCollisionType = VisibleMesh; // Remove the field in favor on the new "collisionType" field fieldDict->setFieldValue( slotName, "" ); } } } if ( !Parent::onAdd() ) return false; // Setup the shape. if ( !_createShape() ) { Con::errorf( "TSStatic::onAdd() - Shape creation failed!" ); return false; } setRenderTransform(mObjToWorld); // Register for the resource change signal. ResourceManager::get().getChangedSignal().notify( this, &TSStatic::_onResourceChanged ); addToScene(); _updateShouldTick(); // Accumulation if ( isClientObject() && mShapeInstance ) { if ( mShapeInstance->hasAccumulation() ) AccumulationVolume::addObject(this); } return true; }