コード例 #1
0
ファイル: SkyxEditor.cpp プロジェクト: jacmoe/ogitor
//----------------------------------------------------------------------------
//----SKYXEDITORFACTORY-----------------------------------------------------
//----------------------------------------------------------------------------
CSkyxEditorFactory::CSkyxEditorFactory(OgitorsView *view) : CBaseEditorFactory(view)
{
    mTypeName           = "Skyx";
    mEditorType         = ETYPE_SKY_MANAGER;
    mAddToObjectList    = true;
    mIcon               = "caelum.svg";
    mCapabilities       = CAN_DELETE;
    mUsesGizmos = false;
    mUsesHelper = false;

    OgitorsPropertyDef* definition = 0;
    definition = AddPropertyDefinition("options::currenttime",          "Options::Current Time",        "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(24.0f), Ogre::Any(0.25f));
    definition->setTrackChanges(false);
    definition = AddPropertyDefinition("options::time",                 "Options::Day Time",            "", PROP_VECTOR2);
    definition->setFieldNames("Sun Rise", "Sun Set");
    definition->setRange(Ogre::Any(Ogre::Vector2(0, 0)), Ogre::Any(Ogre::Vector2(24, 24)), Ogre::Any(Ogre::Vector2(0.25f, 0.25f)));
    definition = AddPropertyDefinition("options::timemultiplier",       "Options::Time Mult.",          "", PROP_REAL);
    definition->setRange(Ogre::Any(-1000.0f), Ogre::Any(1000.0f), Ogre::Any(0.25f));
    definition = AddPropertyDefinition("options::miemultiplier",        "Options::Mie Mult.",           "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(1.0f), Ogre::Any(0.00025f));
    definition = AddPropertyDefinition("options::rayleighmultiplier",   "Options::Rayleigh Mult.",      "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(1.0f), Ogre::Any(0.00025f));
    definition = AddPropertyDefinition("options::innerradius",          "Options::Inner Radius",        "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(1e9f), Ogre::Any(0.5f));
    definition = AddPropertyDefinition("options::outerradius",          "Options::Outer Radius",        "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(1e9f), Ogre::Any(0.5f));
    definition = AddPropertyDefinition("options::samplecount",          "Options::Sample Count",        "", PROP_INT);
    definition = AddPropertyDefinition("options::height",               "Options::Height",              "", PROP_REAL);
    definition->setStepSize(Ogre::Any(0.05f));
    definition =AddPropertyDefinition("options::exposure",              "Options::Exposure",            "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(15.0f), Ogre::Any(0.25f));
    definition = AddPropertyDefinition("options::eastposition",         "Options::East Position",       "", PROP_VECTOR2);
    definition = AddPropertyDefinition("options::sunintensity",         "Options::Sun Intensity",       "", PROP_REAL);
    definition = AddPropertyDefinition("options::wavelength",           "Options::Wave Length",         "", PROP_COLOUR);
    definition = AddPropertyDefinition("options::g",                    "Options::Phase Function",      "", PROP_REAL);
    definition->setRange(Ogre::Any(-1.0f), Ogre::Any(0.0f), Ogre::Any(0.00025f));
    definition = AddPropertyDefinition("options::moonphase",            "Moon::Moon Phase",             "", PROP_REAL);
    definition->setRange(Ogre::Any(-1.0f), Ogre::Any(1.0f), Ogre::Any(0.02f));

    // SkyX Moon parameters
    definition = AddPropertyDefinition("options::moonsize",             "Moon::Moon Size",              "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(1.0f), Ogre::Any(0.05f));
    definition = AddPropertyDefinition("options::moonhalointensity",    "Moon::Halo Intesity",          "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(5.0f), Ogre::Any(0.1f));
    definition = AddPropertyDefinition("options::moonhalostrength",     "Moon::Halo Strength",          "", PROP_REAL);
    definition->setRange(Ogre::Any(0.1f), Ogre::Any(3.0f), Ogre::Any(0.01f)); 

    // SkyX Volumetric Clouds
    AddPropertyDefinition("vclouds::enable",                            "Volumetric Clouds::Enable",            "", PROP_BOOL);
    AddPropertyDefinition("vclouds::autoupdate",                        "Volumetric Clouds::Auto Update",       "", PROP_BOOL);
    definition = AddPropertyDefinition("vclouds::cloudscale",           "Volumetric Clouds::Cloud Scale",       "", PROP_REAL);
    definition->setRange(Ogre::Any(0.1f), Ogre::Any(10.0f), Ogre::Any(0.1f));
    definition = AddPropertyDefinition("vclouds::noisescale",           "Volumetric Clouds::Noise Scale",       "", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(20.0f), Ogre::Any(0.25f));
    definition = AddPropertyDefinition("vclouds::windspeed",            "Volumetric Clouds::Wind Speed",        "", PROP_INT);
    definition->setRange(Ogre::Any(0), Ogre::Any(10000), Ogre::Any(25));
    definition = AddPropertyDefinition("vclouds::winddirection",        "Volumetric Clouds::Wind Direction",    "", PROP_INT);
    definition->setRange(Ogre::Any(0), Ogre::Any(360), Ogre::Any(10));
    definition = AddPropertyDefinition("vclouds::ambientcolor",         "Volumetric Clouds::Ambient Color",     "", PROP_COLOUR);
    definition = AddPropertyDefinition("vclouds::lightresponse",        "Volumetric Clouds::Light Response",    "", PROP_VECTOR4);
    definition->setFieldNames("Sun light power", "Sun beta multiplier", "Ambient color multiplier", "Distance attenuation");
    definition->setRange(Ogre::Any(Ogre::Vector4(0.0f)), Ogre::Any(Ogre::Vector4(5.0f)), Ogre::Any(Ogre::Vector4(0.02f)));
    definition = AddPropertyDefinition("vclouds::ambientfactors",       "Volumetric Clouds::Ambient Factors",   "", PROP_VECTOR4);
    definition->setFieldNames("Constant", "Linear", "Quadratic", "Cubic");    
    definition->setRange(Ogre::Any(Ogre::Vector4(0.0f)), Ogre::Any(Ogre::Vector4(5.0f)), Ogre::Any(Ogre::Vector4(0.02f)));
    definition = AddPropertyDefinition("vclouds::weather",              "Volumetric Clouds::Weather",           "", PROP_VECTOR2);
    definition->setFieldNames("Humidity", "Average Cloud Size");
    definition->setRange(Ogre::Any(Ogre::Vector2(0, 0)), Ogre::Any(Ogre::Vector2(1, 1)), Ogre::Any(Ogre::Vector2(0.1, 0.1)));
    
    // SkyX Volumetric Clouds Lightning
    definition = AddPropertyDefinition("vclightning::enable",           "Lightning::Enable",                    "", PROP_BOOL);
    definition = AddPropertyDefinition("vclightning::at",               "Lightning::Avg. Aparition Time",       "Average time between lightnings (in seconds)", PROP_REAL);
    definition->setRange(Ogre::Any(0.0f), Ogre::Any(120.0f), Ogre::Any(0.25f));
    definition = AddPropertyDefinition("vclightning::color",            "Lightning::Color",                     "", PROP_COLOUR);
    definition = AddPropertyDefinition("vclightning::tm",               "Lightning::Lightning Time Multiplier", "", PROP_REAL);
    definition->setRange(Ogre::Any(0.1f), Ogre::Any(5.0f), Ogre::Any(0.1f));

    OgitorsPropertyDefMap::iterator it = mPropertyDefs.find("name");
    it->second.setAccess(true, false);

    it = mPropertyDefs.find("layer");
    it->second.setAccess(false, false);
}