| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285 |
- /******************************************************************************/
- #include "stdafx.h"
- /******************************************************************************/
- EnvEditor EnvEdit;
- /******************************************************************************/
- /******************************************************************************/
- void EnvEditor::PreChanged(C Property &prop) {EnvEdit.undos.set(&prop);}
- void EnvEditor::Changed(C Property &prop) {EnvEdit.setChanged();}
- void EnvEditor::PropWin::Hide(PropWin &pw)
- {
- if(&pw==&EnvEdit.ambient)EnvEdit.bambient.push();
- if(&pw==&EnvEdit.bloom )EnvEdit.bbloom .push();
- if(&pw==&EnvEdit.clouds )EnvEdit.bclouds .push();
- if(&pw==&EnvEdit.fog )EnvEdit.bfog .push();
- if(&pw==&EnvEdit.sky )EnvEdit.bsky .push();
- if(&pw==&EnvEdit.sun )EnvEdit.bsun .push();
- }
- ::EnvEditor::PropWin& EnvEditor::PropWin::create(C Str &name, flt value_width)
- {
- ::PropWin::create(name, Vec2(0.02f, -0.02f), 0.036f, 0.043f, value_width); changed(Changed, PreChanged); button[2].func(Hide, T).show();
- return T;
- }
- void EnvEditor::Change::create(ptr user)
- {
- env=EnvEdit.edit;
- EnvEdit.undoVis();
- }
- void EnvEditor::Change::apply(ptr user)
- {
- EnvEdit.edit.undo(env);
- EnvEdit.setChanged();
- EnvEdit.toGui();
- EnvEdit.undoVis();
- }
- void EnvEditor::undoVis() {SetUndo(undos, undo, redo);}
- void EnvEditor::AmbientColor( EditEnv &env, C Str &text) {env.ambient.color=TextVec(text); env.ambient_color_time.getUTC();}
- Str EnvEditor::AmbientColor(C EditEnv &env ) {return Vec4(env.ambient.color, 1);}
- void EnvEditor::NightShadeColor( EditEnv &env, C Str &text) {env.ambient.night_shade_color=TextVec(text); env.night_shade_color_time.getUTC();}
- Str EnvEditor::NightShadeColor(C EditEnv &env ) {return Vec4(env.ambient.night_shade_color, 1);}
- void EnvEditor::BloomOriginal( EditEnv &env, C Str &text) {env.bloom.original=TextFlt(text); env.bloom_original_time.getUTC();}
- Str EnvEditor::BloomOriginal(C EditEnv &env ) {return env.bloom.original;}
- void EnvEditor::BloomScale( EditEnv &env, C Str &text) {env.bloom.scale=TextFlt(text); env.bloom_scale_time.getUTC();}
- Str EnvEditor::BloomScale(C EditEnv &env ) {return env.bloom.scale;}
- void EnvEditor::BloomCut( EditEnv &env, C Str &text) {env.bloom.cut=TextFlt(text); env.bloom_cut_time.getUTC();}
- Str EnvEditor::BloomCut(C EditEnv &env ) {return env.bloom.cut;}
- void EnvEditor::BloomSaturate( EditEnv &env, C Str &text) {env.bloom.saturate=TextBool(text); env.bloom_saturate_time.getUTC();}
- Str EnvEditor::BloomSaturate(C EditEnv &env ) {return env.bloom.saturate;}
- void EnvEditor::BloomMaximum( EditEnv &env, C Str &text) {env.bloom.maximum=TextBool(text); env.bloom_maximum_time.getUTC();}
- Str EnvEditor::BloomMaximum(C EditEnv &env ) {return env.bloom.maximum;}
- void EnvEditor::BloomHalf( EditEnv &env, C Str &text) {env.bloom.half=TextBool(text); env.bloom_half_time.getUTC();}
- Str EnvEditor::BloomHalf(C EditEnv &env ) {return env.bloom.half;}
- void EnvEditor::BloomBlurs( EditEnv &env, C Str &text) {env.bloom.blurs=TextInt(text); env.bloom_blurs_time.getUTC();}
- Str EnvEditor::BloomBlurs(C EditEnv &env ) {return env.bloom.blurs;}
- void EnvEditor::CloudsScaleY( EditEnv &env, C Str &text) {env.clouds.vertical_scale=TextFlt(text); env.clouds_vertical_scale_time.getUTC();}
- Str EnvEditor::CloudsScaleY(C EditEnv &env ) {return env.clouds.vertical_scale;}
- void EnvEditor::CloudsRayMask( EditEnv &env, C Str &text) {env.clouds.ray_mask_contrast=TextFlt(text); env.clouds_ray_mask_contrast_time.getUTC();}
- Str EnvEditor::CloudsRayMask(C EditEnv &env ) {return env.clouds.ray_mask_contrast;}
- void EnvEditor::FogSky( EditEnv &env, C Str &text) {env.fog.affect_sky=TextBool(text); env.fog_affect_sky_time.getUTC();}
- Str EnvEditor::FogSky(C EditEnv &env ) {return env.fog.affect_sky;}
- void EnvEditor::FogDensity( EditEnv &env, C Str &text) {env.fog.density=TextFlt(text); env.fog_density_time.getUTC();}
- Str EnvEditor::FogDensity(C EditEnv &env ) {return (dbl)env.fog.density;}
- void EnvEditor::FogColor( EditEnv &env, C Str &text) {env.fog.color=TextVec(text); env.fog_color_time.getUTC();}
- Str EnvEditor::FogColor(C EditEnv &env ) {return Vec4(env.fog.color, 1);}
- void EnvEditor::SkyFrac( EditEnv &env, C Str &text) {env.sky.frac=TextFlt(text); env.sky_frac_time.getUTC();}
- Str EnvEditor::SkyFrac(C EditEnv &env ) {return env.sky.frac;}
- void EnvEditor::SkyDnsExp( EditEnv &env, C Str &text) {env.sky.atmospheric_density_exponent=TextFlt(text); env.sky_atmospheric_density_exponent_time.getUTC();}
- Str EnvEditor::SkyDnsExp(C EditEnv &env ) {return (dbl)env.sky.atmospheric_density_exponent;}
- void EnvEditor::SkyHorExp( EditEnv &env, C Str &text) {env.sky.atmospheric_horizon_exponent=TextFlt(text); env.sky_atmospheric_horizon_exponent_time.getUTC();}
- Str EnvEditor::SkyHorExp(C EditEnv &env ) {return env.sky.atmospheric_horizon_exponent;}
- void EnvEditor::SkyHorCol( EditEnv &env, C Str &text) {env.sky.atmospheric_horizon_color=TextVec4(text); env.sky_atmospheric_horizon_color_time.getUTC();}
- Str EnvEditor::SkyHorCol(C EditEnv &env ) {return env.sky.atmospheric_horizon_color;}
- void EnvEditor::SkySkyCol( EditEnv &env, C Str &text) {env.sky.atmospheric_sky_color=TextVec4(text); env.sky_atmospheric_sky_color_time.getUTC();}
- Str EnvEditor::SkySkyCol(C EditEnv &env ) {return env.sky.atmospheric_sky_color;}
- void EnvEditor::SkyStars( EditEnv &env, C Str &text) {env.star_id=Proj.findElmImageID(text); env.sky_atmospheric_stars_time.getUTC();}
- Str EnvEditor::SkyStars(C EditEnv &env ) {return Proj.elmFullName(env.star_id);}
- void EnvEditor::SkyBox( EditEnv &env, C Str &text) {env.skybox_id=Proj.findElmImageID(text); env.sky_skybox_time.getUTC();}
- Str EnvEditor::SkyBox(C EditEnv &env ) {return Proj.elmFullName(env.skybox_id);}
- void EnvEditor::SunBlend( EditEnv &env, C Str &text) {env.sun.blend=TextBool(text); env.sun_blend_time.getUTC();}
- Str EnvEditor::SunBlend(C EditEnv &env ) {return env.sun.blend;}
- void EnvEditor::SunGlow( EditEnv &env, C Str &text) {env.sun.glow=TextInt(text); env.sun_glow_time.getUTC();}
- Str EnvEditor::SunGlow(C EditEnv &env ) {return env.sun.glow;}
- void EnvEditor::SunSize( EditEnv &env, C Str &text) {env.sun.size=TextFlt(text); env.sun_size_time.getUTC();}
- Str EnvEditor::SunSize(C EditEnv &env ) {return env.sun.size;}
- void EnvEditor::SunImage( EditEnv &env, C Str &text) {env.sun_id=Proj.findElmImageID(text); env.sun_image_time.getUTC();}
- Str EnvEditor::SunImage(C EditEnv &env ) {return Proj.elmFullName(env.sun_id);}
- void EnvEditor::SunImageC( EditEnv &env, C Str &text) {env.sun.image_color=TextVec4(text); env.sun_image_color_time.getUTC();}
- Str EnvEditor::SunImageC(C EditEnv &env ) {return env.sun.image_color;}
- void EnvEditor::SunLight( EditEnv &env, C Str &text) {env.sun.light_color=TextVec(text); env.sun_light_color_time.getUTC();}
- Str EnvEditor::SunLight(C EditEnv &env ) {return Vec4(env.sun.light_color, 1);}
- void EnvEditor::SunLitF( EditEnv &env, C Str &text) {env.sun.highlight_front=TextFlt(text); env.sun_highlight_front_time.getUTC();}
- Str EnvEditor::SunLitF(C EditEnv &env ) {return env.sun.highlight_front;}
- void EnvEditor::SunLitB( EditEnv &env, C Str &text) {env.sun.highlight_back=TextFlt(text); env.sun_highlight_back_time.getUTC();}
- Str EnvEditor::SunLitB(C EditEnv &env ) {return env.sun.highlight_back;}
- void EnvEditor::SunRays( EditEnv &env, C Str &text) {env.sun.rays_color=TextVec(text); env.sun_rays_color_time.getUTC();}
- Str EnvEditor::SunRays(C EditEnv &env ) {return Vec4(env.sun.rays_color, 1);}
- void EnvEditor::SunAngleX( EditEnv &env, C Str &text) {EnvEdit.setSunAngle(DegToRad(TextFlt(text)), EnvEdit.sun_angle.y);}
- Str EnvEditor::SunAngleX(C EditEnv &env ) {return TextReal(RadToDeg(EnvEdit.sun_angle.x), 1);}
- void EnvEditor::SunAngleY( EditEnv &env, C Str &text) {EnvEdit.setSunAngle(EnvEdit.sun_angle.x, DegToRad(TextFlt(text)));}
- Str EnvEditor::SunAngleY(C EditEnv &env ) {return TextReal(RadToDeg(EnvEdit.sun_angle.y), 1);}
- void EnvEditor::CAmbient(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.ambient.on^=1; ee.edit.ambient_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::CBloom(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.bloom .on^=1; ee.edit. bloom_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::CClouds(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.clouds .on^=1; ee.edit. clouds_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::CFog(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.fog .on^=1; ee.edit. fog_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::CSun(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.sun .on^=1; ee.edit. sun_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::CSky(EnvEditor &ee) {EnvEdit.undos.set(null, true); ee.edit.sky .on^=1; ee.edit. sky_on_time.getUTC(); ee.setChanged();}
- void EnvEditor::BAmbient(EnvEditor &ee) {ee.toggleWin(ee.ambient);}
- void EnvEditor::BBloom(EnvEditor &ee) {ee.toggleWin(ee.bloom );}
- void EnvEditor::BClouds(EnvEditor &ee) {ee.toggleWin(ee.clouds );}
- void EnvEditor::BFog(EnvEditor &ee) {ee.toggleWin(ee.fog );}
- void EnvEditor::BSun(EnvEditor &ee) {ee.toggleWin(ee.sun );}
- void EnvEditor::BSky(EnvEditor &ee) {ee.toggleWin(ee.sky );}
- void EnvEditor::Undo(EnvEditor &editor) {editor.undos.undo();}
- void EnvEditor::Redo(EnvEditor &editor) {editor.undos.redo();}
- void EnvEditor::Locate(EnvEditor &editor) {Proj.elmLocate(editor.elm_id);}
- Environment* EnvEditor::cur() {return (visible() && elm) ? game() : null;}
- Rect EnvEditor::getRect(C Rect &rect)
- {
- Memt<Rect> rects; rects.add(T .rect());
- if(ambient.visible())rects.add(ambient.rect());
- if(bloom .visible())rects.add(bloom .rect());
- if(clouds .visible())rects.add(clouds .rect());
- if(fog .visible())rects.add(fog .rect());
- if(sun .visible())rects.add(sun .rect());
- if(sky .visible())rects.add(sky .rect());
- REPAO(rects).extend(0.05f); // ~ shadow border
- return GetRect(rect, rects);
- }
- void EnvEditor::toggleWin(GuiObj &obj)
- {
- if(obj.hidden())obj.rect(getRect(obj.rect()));
- obj.visibleToggleActivate();
- }
- void EnvEditor::setSunAngle(flt x, flt y)
- {
- sun_angle.set(x, y); edit.sun.pos=Matrix3().setRotateXY(-y, x).z; edit.sun_pos_time.getUTC();
- }
- void EnvEditor::create()
- {
- Gui+=::EE::Window::create("Environment").hide(); button[2].func(HideProjAct, SCAST(GuiObj, T)).show();
- rect(Rect_RU(D.w(), D.h(), defaultBarFullWidth(), 0.45f));
- flt y=-0.095f, h=0.052f, c=0.044f, p=0.02f, x=0.07f, w=clientWidth()-x-p;
- T+=undo .create(Rect_LU(0.02f, -0.01f , 0.05f, 0.05f)).func(Undo, T).focusable(false).desc("Undo"); undo.image="Gui/Misc/undo.img";
- T+=redo .create(Rect_LU(undo.rect().ru(), 0.05f, 0.05f)).func(Redo, T).focusable(false).desc("Redo"); redo.image="Gui/Misc/redo.img";
- T+=locate.create(Rect_LU(redo.rect().ru()+Vec2(0.01f, 0), 0.14f, 0.05f), "Locate").func(Locate, T).focusable(false).desc("Locate this element in the Project");
- T+=cambient.create(Rect_L(p, y, c, c)).func(CAmbient, T); T+=bambient.create(Rect_L(x, y, w, h), "Ambient").func(BAmbient, T).focusable(false); bambient.mode=BUTTON_TOGGLE; y-=h;
- T+=cbloom .create(Rect_L(p, y, c, c)).func(CBloom , T); T+=bbloom .create(Rect_L(x, y, w, h), "Bloom" ).func(BBloom , T).focusable(false); bbloom .mode=BUTTON_TOGGLE; y-=h;
- T+=cclouds .create(Rect_L(p, y, c, c)).func(CClouds , T); T+=bclouds .create(Rect_L(x, y, w, h), "Clouds" ).func(BClouds , T).focusable(false); bclouds .mode=BUTTON_TOGGLE; y-=h;
- T+=cfog .create(Rect_L(p, y, c, c)).func(CFog , T); T+=bfog .create(Rect_L(x, y, w, h), "Fog" ).func(BFog , T).focusable(false); bfog .mode=BUTTON_TOGGLE; y-=h;
- T+=csun .create(Rect_L(p, y, c, c)).func(CSun , T); T+=bsun .create(Rect_L(x, y, w, h), "Sun" ).func(BSun , T).focusable(false); bsun .mode=BUTTON_TOGGLE; y-=h;
- T+=csky .create(Rect_L(p, y, c, c)).func(CSky , T); T+=bsky .create(Rect_L(x, y, w, h), "Sky" ).func(BSky , T).focusable(false); bsky .mode=BUTTON_TOGGLE; y-=h;
-
- ambient.add("Color" , MemberDesc(DATA_VEC).setFunc( AmbientColor, AmbientColor)).setColor();
- ambient.add("Night Shade", MemberDesc(DATA_VEC).setFunc(NightShadeColor, NightShadeColor)).setColor();
- ambient.autoData(&edit); ambient.create("Ambient", 0.2f);
- bloom.add("Original", MemberDesc(DATA_REAL).setFunc(BloomOriginal, BloomOriginal)).range(0, 2).mouseEditSpeed(0.5f);
- bloom.add("Scale" , MemberDesc(DATA_REAL).setFunc(BloomScale , BloomScale )).range(0, 2).mouseEditSpeed(0.5f);
- bloom.add("Cut" , MemberDesc(DATA_REAL).setFunc(BloomCut , BloomCut )).range(0, 1).mouseEditSpeed(0.4f);
- bloom.add("Saturate", MemberDesc(DATA_BOOL).setFunc(BloomSaturate, BloomSaturate));
- bloom.add("Maximum" , MemberDesc(DATA_BOOL).setFunc(BloomMaximum , BloomMaximum ));
- bloom.add("Half Res", MemberDesc(DATA_BOOL).setFunc(BloomHalf , BloomHalf ));
- bloom.add("Blurs" , MemberDesc(DATA_INT ).setFunc(BloomBlurs , BloomBlurs )).range(0, 4).mouseEditSpeed(3);
- bloom.autoData(&edit); bloom.create("Bloom", 0.14f);
- clouds.add("Vertical Scale" , MemberDesc(DATA_REAL).setFunc(CloudsScaleY , CloudsScaleY )).range(1, 2);
- clouds.add("Ray Mask Contrast", MemberDesc(DATA_REAL).setFunc(CloudsRayMask, CloudsRayMask)).min(1);
- clouds.add();
- clouds.add("Layer 1 Color" , MemberDesc(DATA_VEC4).setFunc(CloudsColor<0>, CloudsColor<0>)).setColor();
- clouds.add("Layer 1 Scale" , MemberDesc(DATA_REAL).setFunc(CloudsScale<0>, CloudsScale<0>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 1 Velocity", MemberDesc(DATA_VEC2).setFunc(CloudsVel <0>, CloudsVel <0>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 1 Image" , MemberDesc(DATA_STR ).setFunc(CloudsImage<0>, CloudsImage<0>)).elmType(ELM_IMAGE);
- clouds.add();
- clouds.add("Layer 2 Color" , MemberDesc(DATA_VEC4).setFunc(CloudsColor<1>, CloudsColor<1>)).setColor();
- clouds.add("Layer 2 Scale" , MemberDesc(DATA_REAL).setFunc(CloudsScale<1>, CloudsScale<1>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 2 Velocity", MemberDesc(DATA_VEC2).setFunc(CloudsVel <1>, CloudsVel <1>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 2 Image" , MemberDesc(DATA_STR ).setFunc(CloudsImage<1>, CloudsImage<1>)).elmType(ELM_IMAGE);
- clouds.add();
- clouds.add("Layer 3 Color" , MemberDesc(DATA_VEC4).setFunc(CloudsColor<2>, CloudsColor<2>)).setColor();
- clouds.add("Layer 3 Scale" , MemberDesc(DATA_REAL).setFunc(CloudsScale<2>, CloudsScale<2>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 3 Velocity", MemberDesc(DATA_VEC2).setFunc(CloudsVel <2>, CloudsVel <2>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 3 Image" , MemberDesc(DATA_STR ).setFunc(CloudsImage<2>, CloudsImage<2>)).elmType(ELM_IMAGE);
- clouds.add();
- clouds.add("Layer 4 Color" , MemberDesc(DATA_VEC4).setFunc(CloudsColor<3>, CloudsColor<3>)).setColor();
- clouds.add("Layer 4 Scale" , MemberDesc(DATA_REAL).setFunc(CloudsScale<3>, CloudsScale<3>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 4 Velocity", MemberDesc(DATA_VEC2).setFunc(CloudsVel <3>, CloudsVel <3>)).mouseEditSpeed(0.2f);
- clouds.add("Layer 4 Image" , MemberDesc(DATA_STR ).setFunc(CloudsImage<3>, CloudsImage<3>)).elmType(ELM_IMAGE);
- clouds.autoData(&edit); clouds.create("Clouds", PropElmNameWidth);
- fog.add("Affect Sky", MemberDesc(DATA_BOOL ).setFunc(FogSky , FogSky ));
- fog.add("Density" , MemberDesc(DATA_REAL, 0, SIZE(dbl)).setFunc(FogDensity, FogDensity)).range(0, 1).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- fog.add("Color" , MemberDesc(DATA_VEC ).setFunc(FogColor , FogColor )).setColor();
- fog.autoData(&edit); fog.create("Fog", 0.23f);
- sky.add("Fraction" , MemberDesc(DATA_REAL ).setFunc(SkyFrac , SkyFrac )).range(0, 1).mouseEditSpeed(0.4f);
- sky.add();
- sky.add("Density Exponent", MemberDesc(DATA_REAL, 0, SIZE(dbl)).setFunc(SkyDnsExp, SkyDnsExp)).range(0, 1).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- sky.add("Horizon Exponent", MemberDesc(DATA_REAL ).setFunc(SkyHorExp, SkyHorExp)).min (0 ).mouseEditMode(PROP_MOUSE_EDIT_SCALAR);
- sky.add("Horizon Color" , MemberDesc(DATA_VEC4 ).setFunc(SkyHorCol, SkyHorCol)).setColor();
- sky.add("Sky Color" , MemberDesc(DATA_VEC4 ).setFunc(SkySkyCol, SkySkyCol)).setColor();
- sky.add("Stars" , MemberDesc(DATA_STR ).setFunc(SkyStars , SkyStars )).elmType(ELM_IMAGE);
- sky.add();
- sky.add("Skybox" , MemberDesc(DATA_STR ).setFunc(SkyBox , SkyBox )).elmType(ELM_IMAGE);
- sky.autoData(&edit); sky.create("Sky", PropElmNameWidth);
- sun.add("Blend" , MemberDesc(DATA_BOOL).setFunc(SunBlend , SunBlend )).desc("If use blending for image.\nIf true then image will be applied using alpha blending,\nif false then image will be added onto the screen.");
- sun.add("Glow" , MemberDesc(DATA_INT ).setFunc(SunGlow , SunGlow )).range(0, 255);
- sun.add("Size" , MemberDesc(DATA_REAL).setFunc(SunSize , SunSize )).range(0, 1);
- sun.add("Image" , MemberDesc(DATA_STR ).setFunc(SunImage , SunImage )).elmType(ELM_IMAGE);
- sun.add("Image Color" , MemberDesc(DATA_VEC4).setFunc(SunImageC, SunImageC)).setColor();
- sun.add("Light Color" , MemberDesc(DATA_VEC4).setFunc(SunLight , SunLight )).setColor();
- sun.add("Highlight Front", MemberDesc(DATA_REAL).setFunc(SunLitF , SunLitF )).range(0, 1);
- sun.add("Highlight Back" , MemberDesc(DATA_REAL).setFunc(SunLitB , SunLitB )).range(0, 1);
- sun.add("Rays Color" , MemberDesc(DATA_VEC4).setFunc(SunRays , SunRays )).setColor();
- sun.add("Angle X" , MemberDesc(DATA_REAL).setFunc(SunAngleX, SunAngleX)).mouseEditSpeed(20);
- sun.add("Angle Y" , MemberDesc(DATA_REAL).setFunc(SunAngleY, SunAngleY)).mouseEditSpeed(20);
- sun.autoData(&edit); sun.create("Sun", PropElmNameWidth);
- }
- void EnvEditor::toGame() {edit.copyTo(*game, Proj);}
- void EnvEditor::toGui()
- {
- sun_angle=Matrix3().setDir(edit.sun.pos).angles().yx(); CHS(sun_angle.y);
- cambient.set(edit.ambient.on, QUIET); ambient.toGui();
- cbloom .set(edit.bloom .on, QUIET); bloom .toGui();
- cclouds .set(edit.clouds .on, QUIET); clouds .toGui();
- cfog .set(edit.fog .on, QUIET); fog .toGui();
- csky .set(edit.sky .on, QUIET); sky .toGui();
- csun .set(edit.sun .on, QUIET); sun .toGui();
- toGame();
- }
- EnvEditor& EnvEditor::hide(){set(null); ambient.hide(); bloom.hide(); clouds.hide(); fog.hide(); sun.hide(); sky.hide(); ::EE::Window::hide(); return T;}
- EnvEditor& EnvEditor::show(){if(bambient())ambient.show(); if(bbloom())bloom.show(); if(bclouds())clouds.show(); if(bfog())fog.show(); if(bsun())sun.show(); if(bsky())sky.show(); ::EE::Window::show(); return T;}
- void EnvEditor::flush()
- {
- if(elm && changed)
- {
- if(ElmEnv *data=elm->envData()){data->newVer(); data->from(edit);} // modify just before saving/sending in case we've received data from server after edit
- Save( edit, Proj.editPath(*elm)); // edit
- Save(*game, Proj.gamePath(*elm)); Proj.savedGame(*elm); // game
- Server.setElmLong(elm->id);
- }
- changed=false;
- }
- void EnvEditor::setChanged()
- {
- if(elm)
- {
- changed=true;
- if(ElmEnv *data=elm->envData()){data->newVer(); data->from(edit);}
- toGame();
- }
- }
- void EnvEditor::set(Elm *elm)
- {
- if(elm && elm->type!=ELM_ENV)elm=null;
- if(T.elm!=elm)
- {
- flush();
- undos.del(); undoVis();
- T.elm =elm;
- T.elm_id=(elm ? elm->id : UIDZero);
- if(elm)edit.load(Proj.editPath(*elm ));else edit.reset();
- if(elm)game= Proj.gamePath( elm->id) ;else game=&temp;
- toGui();
- Proj.refresh(false, false);
- visible(T.elm!=null).moveToTop();
- }
- }
- void EnvEditor::activate(Elm *elm) {set(elm); if(T.elm)::EE::GuiObj::activate();}
- void EnvEditor::toggle(Elm *elm) {if(elm==T.elm)elm=null; set(elm);}
- void EnvEditor::elmChanged(C UID &elm_id)
- {
- if(elm && elm->id==elm_id)
- {
- undos.set(null, true);
- EditEnv temp; if(temp.load(Proj.editPath(*elm)))if(edit.sync(temp))toGui();
- }
- }
- void EnvEditor::erasing(C UID &elm_id) {if(elm && elm->id==elm_id)set(null);}
- EnvEditor::EnvEditor() : elm_id(UIDZero), elm(null), changed(false), game(&temp), sun_angle(0), undos(true) {}
- /******************************************************************************/
|