コード例 #1
0
//-----------------------------------------------------------------------------------------
void CBillboardSetEditor::_addBillboard()
{
    Ogre::String propName;
    Ogre::String propName2;
    OgitorsPropertyDef *definition;

    int count = mBillboardCount->get();

    Ogre::Billboard *pBillboard = 0;
    if(mBillboardSetHandle)
        pBillboard = mBillboardSetHandle->createBillboard(Ogre::Vector3::ZERO);

    Ogre::String sCount1 = "Billboards::Billboard" + Ogre::StringConverter::toString(count);
    Ogre::String sCount2 = "billboard" + Ogre::StringConverter::toString(count);

    mFactory->AddPropertyDefinition(sCount2 + "::position", sCount1 + "::Position", "Billboard position.", PROP_VECTOR3);
    mFactory->AddPropertyDefinition(sCount2 + "::colour", sCount1 + "::Colour", "Billboard colour.", PROP_COLOUR);
    mFactory->AddPropertyDefinition(sCount2 + "::rotation", sCount1 + "::Rotation", "Billboard rotation.", PROP_REAL);
    definition = mFactory->AddPropertyDefinition(sCount2 + "::dimensions", sCount1 + "::Dimensions", "Billboard dimensions.", PROP_VECTOR2);
    definition->setFieldNames("Width","Height");
    mFactory->AddPropertyDefinition(sCount2 + "::texcoordindex", sCount1 + "::TexCoordIndex", "Billboard texture coordination index.", PROP_INT);
    definition = mFactory->AddPropertyDefinition(sCount2 + "::texrect", sCount1 + "::TexRect", "Billboard texture mapping rect.", PROP_VECTOR4);
    definition->setFieldNames("U1","V1","U2","V2");
    
    PROPERTY(sCount2 + "::position", Ogre::Vector3  , Ogre::Vector3::ZERO, count, SETTER(Ogre::Vector3, CBillboardSetEditor, _setBillboardPosition)); 
    PROPERTY(sCount2 + "::dimensions", Ogre::Vector2, Ogre::Vector2(mDefaultWidth->get(),mDefaultHeight->get()) , count, SETTER(Ogre::Vector2, CBillboardSetEditor, _setBillboardDimensions)); 
    PROPERTY(sCount2 + "::colour", Ogre::ColourValue, Ogre::ColourValue(1,1,1), count, SETTER(Ogre::ColourValue, CBillboardSetEditor, _setBillboardColour)); 
    PROPERTY(sCount2 + "::rotation", Ogre::Real     , 0                  , count, SETTER(Ogre::Real, CBillboardSetEditor, _setBillboardRotation)); 
    PROPERTY(sCount2 + "::texcoordindex", int       , 0                  , count, SETTER(int, CBillboardSetEditor, _setBillboardTexCoordIndex)); 
    PROPERTY(sCount2 + "::texrect", Ogre::Vector4   , Ogre::Vector4::ZERO, count, SETTER(Ogre::Vector4, CBillboardSetEditor, _setBillboardTexRect)); 

    mBillboardCount->set(mBillboardCount->get() + 1);
}
コード例 #2
0
//-----------------------------------------------------------------------------------------
//------CMATERIALEDITORFACTORY-----------------------------------------------------------------
//-----------------------------------------------------------------------------------------
CPGInstanceManagerFactory::CPGInstanceManagerFactory(OgitorsView *view) : CBaseEditorFactory(view)
{
    mTypeName = "PGInstance Manager Object";
    mEditorType = ETYPE_CUSTOM_MANAGER;
    mAddToObjectList = false;
    mRequirePlacement = false;
    mIcon = "Icons/pagedgeometry.svg";
    mCapabilities = CAN_UNDO | CAN_DELETE;

    OgitorsPropertyDef *definition = AddPropertyDefinition("model", "Model", "The model to be used.", PROP_STRING);
    definition->setOptions(OgitorsRoot::getSingletonPtr()->GetModelNames());
    AddPropertyDefinition("pagesize", "Page Size", "Size of batch pages.",PROP_INT);
    AddPropertyDefinition("batchdistance", "Batch Distance", "Batch Distance.",PROP_INT);
    AddPropertyDefinition("impostordistance", "Impostor Distance", "Impostor Distance.",PROP_INT);
    definition = AddPropertyDefinition("bounds", "Bounds", "The dimensions of the bounding area.",PROP_VECTOR4);
    definition->setFieldNames("X1","Z1","X2","Z2");
    AddPropertyDefinition("castshadows","Cast Shadows","Do the instances cast shadows?",PROP_BOOL);
    AddPropertyDefinition("tempmodified", "", "Is it temporarily modified.", PROP_BOOL);

    AddPropertyDefinition("randomizer::minscale", "Randomizer::Min. Scale", "Minimum Scale of new objects.",PROP_REAL);
    AddPropertyDefinition("randomizer::maxscale", "Randomizer::Max. Scale", "Maximum Scale of new objects.",PROP_REAL);
    AddPropertyDefinition("randomizer::minyaw", "Randomizer::Min. Yaw", "Minimum Yaw of new objects.",PROP_REAL);
    AddPropertyDefinition("randomizer::maxyaw", "Randomizer::Max. Yaw", "Maximum Yaw of new objects.",PROP_REAL);


    OgitorsPropertyDefMap::iterator it = mPropertyDefs.find("name");
    it->second.setAccess(true, false);
}
コード例 #3
0
ファイル: LightEditor.cpp プロジェクト: xubingyue/Ogitor
//-----------------------------------------------------------------------------------------
//---------CLIGHTEDITORFACTORY-------------------------------------------------------------
//-----------------------------------------------------------------------------------------
CLightEditorFactory::CLightEditorFactory(OgitorsView *view) : CBaseEditorFactory(view)
{
    mTypeName = "Light";
    mEditorType = ETYPE_LIGHT;
    mAddToObjectList = true;
    mRequirePlacement = true;
    mIcon = "light.svg";
    mCapabilities = CAN_MOVE | CAN_ROTATE | CAN_CLONE | CAN_DELETE  | CAN_FOCUS | CAN_DRAG | CAN_UNDO | CAN_ACCEPTCOPY;
    mUsesGizmos = true;
    mUsesHelper = true;

    mLightTypes.clear();
    mLightTypes.push_back(PropertyOption("LT_POINT",Ogre::Any((int)Ogre::Light::LT_POINT)));
    mLightTypes.push_back(PropertyOption("LT_DIRECTIONAL",Ogre::Any((int)Ogre::Light::LT_DIRECTIONAL)));
    mLightTypes.push_back(PropertyOption("LT_SPOTLIGHT",Ogre::Any((int)Ogre::Light::LT_SPOTLIGHT)));

    OgitorsPropertyDef *definition;

    AddPropertyDefinition("position", "Position", "The position of the object.",PROP_VECTOR3);
    AddPropertyDefinition("orientation","Orientation", "The orientation of the object.",PROP_QUATERNION, true, false);
    AddPropertyDefinition("direction", "Direction", "The direction of the object.",PROP_VECTOR3);
    
    definition = AddPropertyDefinition("lighttype", "Light Type", "The light object's type.",PROP_INT);
    definition->setOptions(&mLightTypes);
    AddPropertyDefinition("diffuse", "Diffuse", "The light object's diffuse colour.",PROP_COLOUR);
    AddPropertyDefinition("specular", "Specular", "The light object's specular colour.",PROP_COLOUR);

    definition = AddPropertyDefinition("lightrange", "Range", "The light object's range.",PROP_VECTOR3);
    definition->setFieldNames("InnerAngle", "OuterAngle", "Falloff");

    definition = AddPropertyDefinition("attenuation", "Attenuation", "The light object's attenuation.",PROP_VECTOR4);
    definition->setFieldNames("Distance", "Constant Mult.", "Linear Mult.", "Quadratic Mult.");

    AddPropertyDefinition("power", "Power", "The light object's power.",PROP_REAL);
    AddPropertyDefinition("castshadows", "Cast Shadows", "Does the object cast shadows?",PROP_BOOL);

    OgitorsPropertyDefMap::iterator it = mPropertyDefs.find("updatescript");
    it->second.setAccess(true, true);
}
コード例 #4
0
//----------------------------------------------------------------------------
//----HYDRAXEDITORFACTORY-----------------------------------------------------
//----------------------------------------------------------------------------
CSkyxEditorFactory::CSkyxEditorFactory(OgitorsView *view) : CBaseEditorFactory(view)
{
    mTypeName = "Skyx Object";
    mEditorType = ETYPE_SKY_MANAGER;
    mAddToObjectList = true;
    mIcon = "Icons/caelum.svg";
    mCapabilities = CAN_DELETE;

    AddPropertyDefinition("timemultiplier","Time Mult.","",PROP_REAL);
    AddPropertyDefinition("options::rayleighmultiplier","Options::Rayleigh Mult.","",PROP_REAL);
    AddPropertyDefinition("options::miemultiplier","Options::Mie Mult.","",PROP_REAL);
    AddPropertyDefinition("options::samplecount","Options::Sample Count","",PROP_INT);
    AddPropertyDefinition("options::height","Options::Height","",PROP_REAL);
    AddPropertyDefinition("options::exposure","Options::Exposure","",PROP_REAL);
    AddPropertyDefinition("options::innerradius","Options::Inner Radius","",PROP_REAL);
    AddPropertyDefinition("options::outerradius","Options::Outer Radius","",PROP_REAL);

    OgitorsPropertyDef * definition = AddPropertyDefinition("options::time","Options::Time","",PROP_VECTOR3);
    definition->setFieldNames("Current", "Sun Rise", "Sun Set");
    AddPropertyDefinition("options::eastposition","Options::East Position","",PROP_VECTOR2);
    AddPropertyDefinition("options::sunintensity","Options::Sun Intensity","",PROP_REAL);
    definition = AddPropertyDefinition("options::wavelength","Options::Wave Length","",PROP_VECTOR3);
    definition->setFieldNames("R Mult.", "G Mult.", "B Mult.");
    AddPropertyDefinition("options::g","Options::G","",PROP_REAL);


    AddPropertyDefinition("vclouds::noisescale","VClouds::Noise Scale","",PROP_REAL);
    AddPropertyDefinition("vclouds::windspeed","VClouds::Wind Speed","",PROP_REAL);
    AddPropertyDefinition("vclouds::winddirection","VClouds::Wind Direction","",PROP_REAL);


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

    it = mPropertyDefs.find("layer");
    it->second.setAccess(false, false);
}
コード例 #5
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);
}