void AuthModel::reset() { if (baseAuth()->identityPolicy() == IdentityPolicy::EmailAddress) addField(LoginNameField, WString::tr("Wt.Auth.email-info")); else addField(LoginNameField, WString::tr("Wt.Auth.user-name-info")); addField(PasswordField, WString::tr("Wt.Auth.password-info")); int days = baseAuth()->authTokenValidity() / 24 / 60; WString info; if (days % 7 != 0) info = WString::trn("Wt.Auth.remember-me-info.days", days).arg(days); else info = WString::trn("Wt.Auth.remember-me-info.weeks", days/7).arg(days/7); addField(RememberMeField, info); setValidation(RememberMeField, WValidator::Result(ValidationState::Valid, info)); }
GvBool GvFieldData::readFieldTypes(GvInput *in, GvNode *object) { GvBool gotChar; GvName fieldType, fieldName; char c; if (! ((gotChar = in->read(c)) || c != OPEN_BRACE_CHAR)) return FALSE; if (in->read(c) && c == CLOSE_BRACE_CHAR) return TRUE; in->putBack(c); GvBool alreadyHasFields = (object->isBuiltIn || getNumFields() != 0); while (TRUE) { if (! in->read(fieldType, TRUE) || ! in->read(fieldName, TRUE)) return FALSE; if (! alreadyHasFields) { GvField *fld = GvField::createInstanceFromName(fieldType); if (fld == NULL) { GvReadError::post(in,GV_RE_UNKNOWN_FIELD, "%s No such field type \"%s\" ",fieldName.getString(), fieldType.getString()); return FALSE; // hg 16.11.99 } else { fld->setContainer(object); addField(object, fieldName.getString(), fld); delete fld; fld = NULL; } } if (! in->read(c)) return FALSE; if (c == VALUE_SEPARATOR_CHAR) { if (in->read(c)) { if (c == CLOSE_BRACE_CHAR) return TRUE; else in->putBack(c); } } else if (c == CLOSE_BRACE_CHAR) return TRUE; else return FALSE; } }
//----------------------------------------------------------------------------- // Object Editing //----------------------------------------------------------------------------- void CoverPoint::initPersistFields() { addGroup("CoverPoint"); addField("size", TYPEID<CoverPointSize>(), Offset(mSize, CoverPoint), "The size of this cover point."); addField("quality", TypeF32, Offset(mQuality, CoverPoint), "Reliability of this point as solid cover. (0...1)"); addField("peekLeft", TypeBool, Offset(mPeekLeft, CoverPoint), "Can characters look left around this cover point?"); addField("peekRight", TypeBool, Offset(mPeekRight, CoverPoint), "Can characters look right around this cover point?"); addField("peekOver", TypeBool, Offset(mPeekOver, CoverPoint), "Can characters look over the top of this cover point?"); endGroup("CoverPoint"); Parent::initPersistFields(); }
void MainWindow::gotForm(HtmlForm form) { // form -> main window clearFormData(); for(QHash<QString, QString>::const_iterator it = form.fields.begin(); it != form.fields.end(); ++it) { addField(); fieldForms.last()->setFieldName(it.key()); fieldForms.last()->setFullValue(it.value()); } urlEdit->setText(form.targetUrl); }
//-------------------------------------------------------------------------- void GuiColorPickerCtrl::initPersistFields() { addGroup("ColorPicker"); addField("baseColor", TypeColorF, Offset(mBaseColor, GuiColorPickerCtrl)); addField("pickColor", TypeColorF, Offset(mPickColor, GuiColorPickerCtrl)); addField("selectorGap", TypeS32, Offset(mSelectorGap, GuiColorPickerCtrl)); addField("displayMode", TYPEID< PickMode >(), Offset(mDisplayMode, GuiColorPickerCtrl) ); addField("actionOnMove", TypeBool,Offset(mActionOnMove, GuiColorPickerCtrl)); addField("showReticle", TypeBool, Offset(mShowReticle, GuiColorPickerCtrl)); endGroup("ColorPicker"); Parent::initPersistFields(); // Copyright (C) 2013 WinterLeaf Entertainment LLC. // @Copyright start removeField( "controlFontColor" ); removeField( "controlFillColor" ); removeField( "backgroundColor" ); removeField( "contextFontColor" ); removeField( "contextBackColor" ); removeField( "contextFillColor" ); // @Copyright end }
void CQGnuPlotLoadFileDialog:: createWidgets(QWidget *) { addField("Style", new CQEnumCombo(this, enum_, "plotStyle")); dimensionGroup_ = addRadioButtons("Dimension", {"2D", "3D"}, this, SLOT(dimensionSlot())); binaryCheck_ = addCheckBox("Binary", this, SLOT(binarySlot())); parametricCheck_ = addCheckBox("Parametric", this, SLOT(parametricSlot())); file_ = new CQGnuPlotFilename; addField("Filename", file_); addField("XMin", (xminEdit_ = new CQRealSpin)); addField("XMax", (xmaxEdit_ = new CQRealSpin)); addField("Using", (usingEdit_ = new QLineEdit)); addField("Line Type", (lineTypeEdit_ = new CQIntegerSpin)); xminEdit_ ->setValue(-10); xmaxEdit_ ->setValue(10); lineTypeEdit_->setValue(1); addStretch(); }
void GuiRolloutCtrl::initPersistFields() { addGroup( "Rollout" ); addField( "caption", TypeRealString, Offset( mCaption, GuiRolloutCtrl ), "Text label to display on the rollout header." ); addField( "margin", TypeRectI, Offset( mMargin, GuiRolloutCtrl ), "Margin to put around child control." ); addField( "defaultHeight", TypeS32, Offset( mDefaultHeight, GuiRolloutCtrl ), "Default height of the client area. This is used when no child control has been added to the rollout." ); addProtectedField( "expanded", TypeBool, Offset( mIsExpanded, GuiRolloutCtrl), &setExpanded, &defaultProtectedGetFn, "The current rollout expansion state." ); addField( "clickCollapse", TypeBool, Offset( mCanCollapse, GuiRolloutCtrl ), "Whether the rollout can be collapsed by clicking its header." ); addField( "hideHeader", TypeBool, Offset( mHideHeader, GuiRolloutCtrl ), "Whether to render the rollout header.\n\n" "@note If this is false, the user cannot toggle the rollout state with the mouse." ); addField( "autoCollapseSiblings", TypeBool, Offset( mAutoCollapseSiblings, GuiRolloutCtrl ), "Whether to automatically collapse sibling rollouts.\n\n" "If this is true, the rollout will automatically collapse all sibling rollout controls when it " "is expanded. If this is false, the auto-collapse behavior can be triggered by CTRL (CMD on MAC) " "clicking the rollout header. CTRL/CMD clicking also works if this is false, in which case the " "auto-collapsing of sibling controls will be temporarily deactivated." ); endGroup( "Rollout" ); Parent::initPersistFields(); }
TEST(SerializeList, unpack) { const uint8_t data[] = { 1, 9, 2, 8, 3, 7, 0xFF, 0xFF }; serialize::Buffer buffer(data, data + sizeof(data)); // Create the value schema auto pair = new serialize::Structure; auto first = new serialize::Byte; auto second = new serialize::Byte; pair->addField("first", first); pair->addField("second", second); // Create the sentinel value auto sentinel = new serialize::StructureValue(pair); sentinel->setField("first", new serialize::ByteValue(first, 0xFF)); sentinel->setField("second", new serialize::ByteValue(second, 0xFF)); // Create the final list schema serialize::List schema(pair, sentinel); // Unpack the data serialize::Value* value = schema.unpack(buffer, 0); // Build array std::vector<int> output; auto& list = *dynamic_cast<serialize::ListValue*>(value); for (auto& element : list) { auto& pair = *dynamic_cast<serialize::StructureValue*>(element); auto& first = *dynamic_cast<serialize::ByteValue*>(pair.getField("first")); auto& second = *dynamic_cast<serialize::ByteValue*>(pair.getField("second")); output.push_back(first.getValue()); output.push_back(second.getValue()); } ASSERT_THAT(output, testing::ElementsAre(1, 9, 2, 8, 3, 7)); delete value; }
// add a category to last by name void Procview::addField(char *name) // interface { // QString str=sl[i]; int id = field_id_by_name(name); if (id >= 0) addField(id); // add to last return; Category *cat = cat_by_name(name); if (cat) cats.append(cat); }
void CubemapData::initPersistFields() { addField( "cubeFace", TypeStringFilename, Offset(mCubeFaceFile, CubemapData), 6, "@brief The 6 cubemap face textures for a static cubemap.\n\n" "They are in the following order:\n" " - cubeFace[0] is -X\n" " - cubeFace[1] is +X\n" " - cubeFace[2] is -Z\n" " - cubeFace[3] is +Z\n" " - cubeFace[4] is -Y\n" " - cubeFace[5] is +Y\n" ); Parent::initPersistFields(); }
void CLIPSExtractValueInstructionBuilder::addFields(ExtractValueInst* inst, KnowledgeConstruction *kc, char* parent) { CLIPSUnaryInstructionBuilder::addFields((UnaryInstruction*)inst, kc, parent); addField("AggregateOperand", kc->route(inst->getAggregateOperand(), getNamer())); openField("Indices"); for(ExtractValueInst::idx_iterator i = inst->idx_begin(), e = inst->idx_end(); i != e; ++i) { char* buf = CharBuffer(32); sprintf(buf, "%d", *i); appendValue(buf); free(buf); } closeField(); }
void SimPlanet::initPersistFields() { //Parent::initPersistFields(); addField("textureTag", TypeInt, Offset(textureTag,SimPlanet)); addField("azimuth", TypeFloat, Offset(azimuth,SimPlanet)); addField("incidence", TypeFloat, Offset(incidence, SimPlanet)); addField("castShadows", TypeBool, Offset(castShadows, SimPlanet)); addField("useLensFlare", TypeBool, Offset(useLensFlare, SimPlanet)); addField("intensity", TypePoint3F, Offset(intensity, SimPlanet)); addField("ambient", TypePoint3F, Offset(ambient, SimPlanet)); }
// NOTE: the original buffer gets mangled!!! // bool URLEncodeParser::parse(DataRepos *repository, char *buffer, int length) { if(length) { // we have a length of at least 1, so this will always return something // char *key=strtok(buffer, "&\n"); if(key) { addField(repository, key); // get more tokens // while((key=strtok(NULL, "&\n"))!=NULL) { addField(repository, key); } } } return true; }
group_siteObject(openLogin &lin, cgiScript & script):objectBase(lin,script) { // add fields addField( "id", FIELD_TYPE_LONGLONG ); addField( "group_id", FIELD_TYPE_LONGLONG ); addField( "site_id", FIELD_TYPE_LONGLONG ); // add controls addControl( "id", staticEntry( "id", "10" ) ); addControl( "group_id", cmboEntry( "group_id", "select id, name from groups order by name", "Select a group: " ) ); addControl( "site_id", cmboEntry( "site_id", "select id, name from sites order by name", "Select a site: " ) ); // set name setName("group_sites"); }
// Data fields -- always keep in sync with TDBDefine_Order void registerAllFields() { // 万得代码(AG1312.SHF) addField("WindCode", new SymbolAccessor(&tdb_result_type::chWindCode)); // 交易所代码(ag1312) addField("Code", new SymbolAccessor(&tdb_result_type::chCode)); // 日期(自然日)格式YYMMDD addField("Date", new DateAccessor(&tdb_result_type::nDate)); // 时间(HHMMSSmmm)例如94500000 表示 9点45分00秒000毫秒 addField("Time", new TimeAccessor(&tdb_result_type::nTime)); // 成交编号(从1开始,递增1) addField("Index", new IntAccessor(&tdb_result_type::nIndex)); // 交易所委托号 addField("OrderID", new IntAccessor(&tdb_result_type::nOrder)); // 委托类别 addField("OrderType", new CharAccessor(&tdb_result_type::chOrderKind)); // 委托代码, B, S, C addField("Function", new CharAccessor(&tdb_result_type::chFunctionCode)); // 成交价格 addField("Price", new FloatAccessor(&tdb_result_type::nOrderPrice, .0001)); // 成交数量 addField("Size", new FloatAccessor(&tdb_result_type::nOrderVolume)); }
void CollisionComponent::initPersistFields() { Parent::initPersistFields(); addGroup("Collision"); addField("CollisionType", TypeCollisionMeshMeshType, Offset(mCollisionType, CollisionComponent), "The type of mesh data to use for collision queries."); addField("LineOfSightType", TypeCollisionMeshMeshType, Offset(mLOSType, CollisionComponent), "The type of mesh data to use for collision queries."); addField("DecalType", TypeCollisionMeshMeshType, Offset(mDecalType, CollisionComponent), "The type of mesh data to use for collision queries."); addField("CollisionMeshPrefix", TypeString, Offset(colisionMeshPrefix, CollisionComponent), "The type of mesh data to use for collision queries."); addField("BlockCollisions", TypeBool, Offset(mBlockColliding, CollisionComponent), ""); endGroup("Collision"); }
void DeclarativeSettingsPageImpl::addRealField(const QString &key, const DeclarativeSettingsPage::Entry &entry) { QDoubleSpinBox * control = new QDoubleSpinBox(pClass_); control->setDecimals(6); if (entry.defaultValue.isValid()) control->setValue(entry.defaultValue.toDouble()); if (entry.minimumValue.isValid()) control->setMinimum(entry.minimumValue.toDouble()); if (entry.maximumValue.isValid()) control->setMaximum(entry.maximumValue.toDouble()); widgets_[key] = control; addField(entry.title, control); }
void GuiBitmapCtrl::initPersistFields() { addGroup( "Bitmap" ); addProtectedField( "bitmap", TypeImageFilename, Offset( mBitmapName, GuiBitmapCtrl ), &setBitmapName, &defaultProtectedGetFn, "The bitmap file to display in the control." ); addField( "wrap", TypeBool, Offset( mWrap, GuiBitmapCtrl ), "If true, the bitmap is tiled inside the control rather than stretched to fit." ); endGroup( "Bitmap" ); Parent::initPersistFields(); }
// Setup entity fields void Fish::setupFields() { // Set table setTable("fish"); // Add fields addField("fish_id"); addField("best_video_id"); addField("best_frame"); //addField("best_bounding_box"); //addField("best_contour"); addField("best_bb_cc"); addField("component_id"); // Set key addKey("fish_id"); // Set blob setBlob("best_bb_cc"); // Add read modifiers for polygon //addReadModifier("best_bounding_box", "AsText(best_bounding_box) AS best_bounding_box"); //addReadModifier("best_contour", "AsText(best_contour) AS best_contour"); // Add write modifiers for polygon //addWriteModifier("best_bounding_box", "GeomFromText(", ")"); //addWriteModifier("best_contour", "GeomFromText(", ")"); }
void ConsoleObject::addField(const char* in_pFieldname, const U32 in_fieldType, const dsize_t in_fieldOffset, const char* in_pFieldDocs, U32 flags ) { addField( in_pFieldname, in_fieldType, in_fieldOffset, 1, in_pFieldDocs, flags ); }
void RenderFormatToken::initPersistFields() { addProtectedField("format", TypeEnum, Offset(mColorFormat, RenderFormatToken), &_setFmt, &defaultProtectedGetFn, 1, &gTextureFormatEnumTable, "Sets the color buffer format for this token."); addProtectedField("depthFormat", TypeEnum, Offset(mDepthFormat, RenderFormatToken), &_setFmt, &defaultProtectedGetFn, 1, &gTextureFormatEnumTable, "Sets the depth/stencil buffer format for this token."); addField("copyEffect", TypeSimObjectPtr, Offset(mCopyPostEffect, RenderFormatToken), "This PostEffect will be run when the render target is changed to the format specified " "by this token. It is used to copy/format data into the token rendertarget"); addField("resolveEffect", TypeSimObjectPtr, Offset(mResolvePostEffect, RenderFormatToken), "This PostEffect will be run when the render target is changed back to the format " "active prior to this token. It is used to copy/format data from the token rendertarget to the backbuffer."); addField("aaLevel", TypeS32, Offset(mTargetAALevel, RenderFormatToken), "Anti-ailiasing level for the this token. 0 disables, -1 uses adapter default."); Parent::initPersistFields(); }
void SimInterior::initPersistFields() { addField("xformFlags", TypeInt, Offset(renderImage.transform.flags, SimInterior)); addField("xformXAxis", TypePoint3F, Offset(renderImage.transform.m[0][0], SimInterior)); addField("xformYAxis", TypePoint3F, Offset(renderImage.transform.m[1][0], SimInterior)); addField("xformZAxis", TypePoint3F, Offset(renderImage.transform.m[2][0], SimInterior)); addField("xformTranslate", TypePoint3F, Offset(renderImage.transform.p, SimInterior)); addField("filename", TypeString, Offset(m_pFilename, SimInterior)); }
/*! Performs persistency layer saves. */ void cUObject::save() { bool havetags_ = ( tags_.size() > 0 ); // uobjectmap fields initSave; // If the type is changed somewhere in the code // That part needs to take care of delete/recreate // So we never update the type EVER here.. if( !isPersistent ) { setTable( "uobjectmap" ); addField( "serial", serial_ ); addStrField( "type", objectID() ); addCondition( "serial", serial_ ); saveFields; clearFields; } // uobject fields if ( changed_ ) { setTable( "uobject" ); addStrField( "name", name_ ); addField( "serial", serial_ ); addField( "multis", multis_ ); addField( "pos_x", pos_.x ); addField( "pos_y", pos_.y ); addField( "pos_z", pos_.z ); addField( "pos_map", pos_.map ); addStrField( "events", eventList_.join( "," ) ); addStrField( "bindmenu", bindmenu_ ); addCondition( "serial", serial_ ); addField( "havetags", havetags_ ); saveFields; } if( havetags_ ) { tags_.save( serial_ ); } PersistentObject::save(); changed_ = false; }
void ProximityMineData::initPersistFields() { addGroup( "Arming" ); addField( "armingDelay", TypeF32, Offset(armingDelay, ProximityMineData), "Delay (in seconds) from when the mine is placed to when it becomes active." ); addField( "armingSound", TypeSFXTrackName, Offset(armingSound, ProximityMineData), "Sound to play when the mine is armed (starts at the same time as " "the <i>armed</i> sequence if defined)." ); endGroup( "Arming" ); addGroup( "Triggering" ); addField( "autoTriggerDelay", TypeF32, Offset(autoTriggerDelay, ProximityMineData), "@brief Delay (in seconds) from arming until the mine automatically " "triggers and explodes, even if no object has entered the trigger area.\n\n" "Set to 0 to disable." ); addField( "triggerOnOwner", TypeBool, Offset(triggerOnOwner, ProximityMineData), "@brief Controls whether the mine can be triggered by the object that owns it.\n\n" "For example, a player could deploy mines that are only dangerous to other " "players and not himself." ); addField( "triggerRadius", TypeF32, Offset(triggerRadius, ProximityMineData), "Distance at which an activated mine will detect other objects and explode." ); addField( "triggerSpeed", TypeF32, Offset(triggerSpeed, ProximityMineData), "Speed above which moving objects within the trigger radius will trigger the mine" ); addField( "triggerDelay", TypeF32, Offset(triggerDelay, ProximityMineData), "Delay (in seconds) from when the mine is triggered until it explodes." ); addField( "triggerSound", TypeSFXTrackName, Offset(triggerSound, ProximityMineData), "Sound to play when the mine is triggered (starts at the same time as " "the <i>triggered</i> sequence if defined)." ); endGroup( "Triggering" ); addGroup( "Explosion" ); addField( "explosionOffset", TypeF32, Offset(explosionOffset, ProximityMineData), "@brief Offset from the mine's origin where the explosion emanates from." "Sometimes a thrown mine may be slightly sunk into the ground. This can be just " "enough to cause the explosion to occur under the ground, especially on flat " "ground, which can end up blocking the explosion. This offset along the mine's " "'up' normal allows you to raise the explosion origin to a better height."); endGroup( "Explosion" ); Parent::initPersistFields(); }
void GuiTextEditCtrl::initPersistFields() { addGroup( "Text Input" ); addField("validate", TypeRealString,Offset(mValidateCommand, GuiTextEditCtrl), "Script command to be called when the first validater is lost.\n"); addField("escapeCommand", TypeRealString,Offset(mEscapeCommand, GuiTextEditCtrl), "Script command to be called when the Escape key is pressed.\n"); addField("historySize", TypeS32, Offset(mHistorySize, GuiTextEditCtrl), "How large of a history buffer to maintain.\n"); addField("tabComplete", TypeBool, Offset(mTabComplete, GuiTextEditCtrl), "If true, when the 'tab' key is pressed, it will act as if the Enter key was pressed on the control.\n"); addField("deniedSound", TypeSFXTrackName, Offset(mDeniedSound, GuiTextEditCtrl), "If the attempted text cannot be entered, this sound effect will be played.\n"); addField("sinkAllKeyEvents", TypeBool, Offset(mSinkAllKeyEvents, GuiTextEditCtrl), "If true, every key event will act as if the Enter key was pressed.\n"); addField("password", TypeBool, Offset(mPasswordText, GuiTextEditCtrl), "If true, all characters entered will be stored in the control, however will display as the character stored in passwordMask.\n"); addField("passwordMask", TypeString, Offset(mPasswordMask, GuiTextEditCtrl), "If 'password' is true, this is the character that will be used to mask the characters in the control.\n"); endGroup( "Text Input" ); Parent::initPersistFields(); }
void Sky::initPersistFields() { //Parent::initPersistFields(); addField("dmlName", TypeString, Offset(dmlName,Sky)); addField("skyColor", TypePoint3F, Offset(skyColor,Sky)); addField("hazeColor", TypePoint3F, Offset(hazeColor,Sky)); addField("featurePosition", TypeFloat, Offset(featurePosition, Sky)); addField("size", TypeFloat, Offset(size, Sky)); addField("textures", TypeInt, Offset(textures, Sky), 16); }
void MainWindow::openFile() { QSettings fileToOpen(QFileDialog::getOpenFileName(this, tr("Open form"), QString(), tr("Form data (*.ini)")), QSettings::IniFormat, this); urlEdit->setText(fileToOpen.value("url").toString()); clearFormData(); int size=fileToOpen.beginReadArray("fields"); for(int i=0; i < size; ++i) { fileToOpen.setArrayIndex(i); addField(); fieldForms.last()->setFieldName(fileToOpen.value("name").toString()); fieldForms.last()->setFullValue(fileToOpen.value("value").toString()); fieldForms.last()->setRandom(fileToOpen.value("random").toBool()); } fileToOpen.endArray(); }
void CLIPSStoreInstructionBuilder::addFields(StoreInst* target, KnowledgeConstruction *kc, char* parent) { CLIPSInstructionBuilder::addFields((Instruction*)target, kc, parent, false); addField("Alignment", target->getAlignment()); if(target->isAtomic()) addTrueField("IsAtomic"); if(target->isSimple()) addTrueField("IsSimple"); if(target->isUnordered()) addTrueField("IsUnordered"); if(target->isVolatile()) addTrueField("IsVolatile"); openField("DestinationRegisters"); Value* pointer = target->getPointerOperand(); if(pointer->hasName()) { appendValue(pointer->getName()); } else { appendValue(kc->route(pointer, getNamer())); } closeField(); }
void GuiColorPickerCtrl::initPersistFields() { addGroup("ColorPicker"); addField("baseColor", TypeColorF, Offset(mBaseColor, GuiColorPickerCtrl)); addField("pickColor", TypeColorF, Offset(mPickColor, GuiColorPickerCtrl)); addField("useSRGB", TypeBool, Offset(mUseSRGB, GuiColorPickerCtrl), "Render using sRGB scale"); addField("selectorGap", TypeS32, Offset(mSelectorGap, GuiColorPickerCtrl)); addField("displayMode", TYPEID< PickMode >(), Offset(mDisplayMode, GuiColorPickerCtrl) ); addField("actionOnMove", TypeBool,Offset(mActionOnMove, GuiColorPickerCtrl)); addField("showReticle", TypeBool, Offset(mShowReticle, GuiColorPickerCtrl)); endGroup("ColorPicker"); Parent::initPersistFields(); }
void CloudLayer::initPersistFields() { addGroup( "CloudLayer" ); addField( "texture", TypeImageFilename, Offset( mTextureName, CloudLayer ), "An RGBA texture which should contain normals and opacity (density)." ); addArray( "Textures", TEX_COUNT ); addField( "texScale", TypeF32, Offset( mTexScale, CloudLayer ), TEX_COUNT, "Controls the texture repeat of this slot." ); addField( "texDirection", TypePoint2F, Offset( mTexDirection, CloudLayer ), TEX_COUNT, "Controls the direction this slot scrolls." ); addField( "texSpeed", TypeF32, Offset( mTexSpeed, CloudLayer ), TEX_COUNT, "Controls the speed this slot scrolls." ); endArray( "Textures" ); addField( "baseColor", TypeColorF, Offset( mBaseColor, CloudLayer ), "Base cloud color before lighting." ); addField( "exposure", TypeF32, Offset( mExposure, CloudLayer ), "Brightness scale so CloudLayer can be overblown if desired." ); addField( "coverage", TypeF32, Offset( mCoverage, CloudLayer ), "Fraction of sky covered by clouds 0-1." ); addField( "windSpeed", TypeF32, Offset( mWindSpeed, CloudLayer ), "Overall scalar to texture scroll speed." ); addField( "height", TypeF32, Offset( mHeight, CloudLayer ), "Abstract number which controls the curvature and height of the dome mesh." ); endGroup( "CloudLayer" ); Parent::initPersistFields(); }