//----------------------------------------------------------------------------------------- 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); }
//----------------------------------------------------------------------------------------- //------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); }
//----------------------------------------------------------------------------------------- //---------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); }
//---------------------------------------------------------------------------- //----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); }
//---------------------------------------------------------------------------- //----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); }