void _PlanOperation::addField(const Json::Value &field) { if (field.isNumeric()) { addField(field.asUInt()); } else if (field.isString()) { addNamedField(field.asString()); } else throw std::runtime_error("Can't parse field name, neither numeric nor std::string"); }
void ProjectileData::initPersistFields() { addNamedField(particleEmitter, TypeParticleEmitterDataPtr, ProjectileData); addNamedField(particleWaterEmitter, TypeParticleEmitterDataPtr, ProjectileData); addNamedField(projectileShapeName, TypeFilename, ProjectileData); addNamedField(scale, TypePoint3F, ProjectileData); addNamedField(sound, TypeSFXProfilePtr, ProjectileData); addNamedField(explosion, TypeExplosionDataPtr, ProjectileData); addNamedField(waterExplosion, TypeExplosionDataPtr, ProjectileData); addNamedField(splash, TypeSplashDataPtr, ProjectileData); addNamedField(decal, TypeDecalDataPtr, ProjectileData); addNamedField(lightDesc, TypeLightDescriptionPtr, ProjectileData ); static FRangeValidator lightRadiusValidator( 1, 20 ); static FRangeValidator velInheritFactorValidator( 0, 1 ); static FRangeValidator muzzleVelocityValidator( 0, 10000 ); addNamedField(isBallistic, TypeBool, ProjectileData); addNamedFieldV(velInheritFactor, TypeF32, ProjectileData, &velInheritFactorValidator ); addNamedFieldV(muzzleVelocity, TypeF32, ProjectileData, &muzzleVelocityValidator ); addNamedField(impactForce, TypeF32, ProjectileData); static IRangeValidatorScaled lifetimeValidator( TickMs, 0, Projectile::MaxLivingTicks ); static IRangeValidatorScaled armingDelayValidator( TickMs, 0, Projectile::MaxLivingTicks ); static IRangeValidatorScaled fadeDelayValidator( TickMs, 0, Projectile::MaxLivingTicks ); char message[1024]; dSprintf(message, sizeof(message), "Milliseconds, values will be adjusted to fit %d millisecond tick intervals", TickMs); addProtectedField("lifetime", TypeS32, Offset(lifetime, ProjectileData), &setLifetime, &getScaledValue, message); addProtectedField("armingDelay", TypeS32, Offset(armingDelay, ProjectileData), &setArmingDelay, &getScaledValue, message); addProtectedField("fadeDelay", TypeS32, Offset(fadeDelay, ProjectileData), &setFadeDelay, &getScaledValue, message); static FRangeValidator bounceElasticityValidator( 0, 0.999f ); static FRangeValidator bounceFrictionValidator( 0, 1 ); static FRangeValidator gravityModValidator( 0, 1 ); addNamedFieldV(bounceElasticity, TypeF32, ProjectileData, &bounceElasticityValidator ); addNamedFieldV(bounceFriction, TypeF32, ProjectileData, &bounceFrictionValidator ); addNamedFieldV(gravityMod, TypeF32, ProjectileData, &gravityModValidator ); Parent::initPersistFields(); }