diff --git a/Engine/source/T3D/lighting/reflectionProbe.cpp b/Engine/source/T3D/lighting/reflectionProbe.cpp index 6fccb3d05..8c6f11cfe 100644 --- a/Engine/source/T3D/lighting/reflectionProbe.cpp +++ b/Engine/source/T3D/lighting/reflectionProbe.cpp @@ -89,7 +89,11 @@ ImplementEnumType(ReflectionModeEnum, //----------------------------------------------------------------------------- // Object setup and teardown //----------------------------------------------------------------------------- -ReflectionProbe::ReflectionProbe() +ReflectionProbe::ReflectionProbe() : + cubeDescId(0), + reflectorDesc(nullptr), + mSphereVertCount(0), + mSpherePrimitiveCount(0) { // Flag this object so that it will always // be sent across the network to clients @@ -247,11 +251,11 @@ bool ReflectionProbe::_setReflectionMode(void *object, const char *index, const { ReflectionProbe* probe = reinterpret_cast(object); - if (data == "Static Cubemap") + if (!dStrcmp(data,"Static Cubemap")) { probe->mReflectionModeType = StaticCubemap; } - else if (data == "Baked Cubemap") + else if (!dStrcmp(data, "Baked Cubemap")) { //Clear our cubemap if we changed it to be baked, just for cleanliness probe->mReflectionModeType = BakedCubemap; @@ -589,6 +593,8 @@ void ReflectionProbe::processDynamicCubemap() else mProbeInfo->mIsEnabled = false; + mCubemapDirty = false; + //Update the probe manager with our new texture! //if (!mProbeInfo->mIsSkylight && mProbeInfo->mPrefilterCubemap->isInitialized() && mProbeInfo->mIrradianceCubemap->isInitialized()) // PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx); @@ -637,9 +643,10 @@ void ReflectionProbe::processBakedCubemap() { mProbeInfo->mIsEnabled = true; + mCubemapDirty = false; + //Update the probe manager with our new texture! - if (!mProbeInfo->mIsSkylight) - PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx); + PROBEMGR->updateProbeTexture(mProbeInfo); } } @@ -729,9 +736,10 @@ void ReflectionProbe::processStaticCubemap() { mProbeInfo->mIsEnabled = true; + mCubemapDirty = false; + //Update the probe manager with our new texture! - if (!mProbeInfo->mIsSkylight) - PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx); + PROBEMGR->updateProbeTexture(mProbeInfo); } } @@ -739,7 +747,7 @@ bool ReflectionProbe::createClientResources() { if (mProbeInfo == nullptr) { - mProbeInfo = PROBEMGR->registerProbe(mProbeShapeType == ProbeRenderInst::Skylight); + mProbeInfo = PROBEMGR->registerProbe(); if (!mProbeInfo) return false; diff --git a/Engine/source/T3D/lighting/reflectionProbe.h b/Engine/source/T3D/lighting/reflectionProbe.h index 61d0b58db..4c40f5e2b 100644 --- a/Engine/source/T3D/lighting/reflectionProbe.h +++ b/Engine/source/T3D/lighting/reflectionProbe.h @@ -151,9 +151,6 @@ protected: U32 mDynamicLastBakeMS; U32 mRefreshRateMS; - GBitmap* mCubeFaceBitmaps[6]; - U32 mCubemapResolution; - F32 mMaxDrawDistance; bool mResourcesCreated; diff --git a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp index 1451df186..abf26218d 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp @@ -26,7 +26,7 @@ #include "gfx/D3D11/gfxD3D11EnumTranslate.h" #include "gfx/bitmap/imageUtils.h" -GFXD3D11Cubemap::GFXD3D11Cubemap() : mTexture(NULL), mSRView(NULL), mDSView(NULL) +GFXD3D11Cubemap::GFXD3D11Cubemap() : mTexture(NULL), mSRView(NULL), mDSView(NULL), mTexSize(0) { mDynamic = false; mAutoGenMips = false; @@ -568,4 +568,4 @@ void GFXD3D11CubemapArray::zombify() void GFXD3D11CubemapArray::resurrect() { // Static cubemaps are handled by D3D -} \ No newline at end of file +} diff --git a/Engine/source/gfx/gfxCardProfile.cpp b/Engine/source/gfx/gfxCardProfile.cpp index c223aca11..066dd3b3a 100644 --- a/Engine/source/gfx/gfxCardProfile.cpp +++ b/Engine/source/gfx/gfxCardProfile.cpp @@ -41,17 +41,22 @@ void GFXCardProfiler::loadProfileScript(const char* aScriptName) void *data = NULL; U32 dataSize = 0; + Torque::FS::ReadFile( scriptName.c_str(), data, dataSize, true ); if(data == NULL) { +#if TORQUE_DEBUG Con::warnf(" - No card profile %s exists", scriptName.c_str()); +#endif return; } const char *script = static_cast(data); +#if TORQUE_DEBUG Con::printf(" - Loaded card profile %s", scriptName.c_str()); +#endif Con::evaluate(script, false, NULL); delete[] script; diff --git a/Engine/source/gui/controls/guiSliderCtrl.cpp b/Engine/source/gui/controls/guiSliderCtrl.cpp index ad9316216..d84d6311b 100644 --- a/Engine/source/gui/controls/guiSliderCtrl.cpp +++ b/Engine/source/gui/controls/guiSliderCtrl.cpp @@ -89,6 +89,7 @@ IMPLEMENT_CALLBACK( GuiSliderCtrl, onMouseDragged, void, (), (), GuiSliderCtrl::GuiSliderCtrl() : mRange( 0., 1.f ), mTicks( 10 ), + mRenderTicks(true), mSnap( false ), mValue( 0.5f ), mThumbSize( 8, 20 ), @@ -98,7 +99,9 @@ GuiSliderCtrl::GuiSliderCtrl() mDisplayValue( false ), mMouseOver( false ), mDepressed( false ), - mMouseDragged( false ) + mMouseDragged( false ), + mUseFillBar(false), + mFillBarColor(ColorI(255,255,255)) { } @@ -117,6 +120,12 @@ void GuiSliderCtrl::initPersistFields() addProtectedField( "value", TypeF32, Offset( mValue, GuiSliderCtrl ), _setValue, defaultProtectedGetFn, "The value corresponding to the current slider position." ); + addField("useFillBar", TypeBool, Offset(mUseFillBar, GuiSliderCtrl), + "Whether to render the tick marks."); + addField("fillBarColor", TypeColorI, Offset(mFillBarColor, GuiSliderCtrl), + "Whether to render the tick marks."); + addField("renderTicks", TypeBool, Offset(mRenderTicks, GuiSliderCtrl), + "Whether to render the tick marks."); endGroup( "Slider" ); @@ -365,9 +374,18 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect) GFXDrawUtil* drawUtil = GFX->getDrawUtil(); + if (mUseFillBar) + { + + drawUtil->drawRectFill(RectI(offset.x, offset.y, getWidth() * mValue, getHeight()), mFillBarColor); + + renderChildControls(offset, updateRect); + return; + } + if( mHasTexture ) { - if(mTicks > 0) + if(mTicks > 0 && mRenderTicks) { // TODO: tick marks should be positioned based on the bitmap dimensions. Point2I mid(ext.x, ext.y/2); @@ -443,11 +461,14 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect) PrimBuild::vertex2i( pos.x + mid.x, pos.y + mid.y ); // tick marks - for( U32 t = 0; t <= ( mTicks + 1 ); t++ ) + if (mRenderTicks) { - S32 x = (S32)( F32( mid.x - 1 ) / F32( mTicks + 1 ) * F32( t ) ); - PrimBuild::vertex2i( pos.x + x, pos.y + mid.y - mShiftPoint ); - PrimBuild::vertex2i( pos.x + x, pos.y + mid.y + mShiftPoint ); + for (U32 t = 0; t <= (mTicks + 1); t++) + { + S32 x = (S32)(F32(mid.x - 1) / F32(mTicks + 1) * F32(t)); + PrimBuild::vertex2i(pos.x + x, pos.y + mid.y - mShiftPoint); + PrimBuild::vertex2i(pos.x + x, pos.y + mid.y + mShiftPoint); + } } PrimBuild::end(); } @@ -462,11 +483,14 @@ void GuiSliderCtrl::onRender(Point2I offset, const RectI &updateRect) PrimBuild::vertex2i( pos.x + mid.x, pos.y + mid.y ); // tick marks - for( U32 t = 0; t <= ( mTicks + 1 ); t++ ) + if (mRenderTicks) { - S32 y = (S32)( F32( mid.y - 1 ) / F32( mTicks + 1 ) * F32( t ) ); - PrimBuild::vertex2i( pos.x + mid.x - mShiftPoint, pos.y + y ); - PrimBuild::vertex2i( pos.x + mid.x + mShiftPoint, pos.y + y ); + for (U32 t = 0; t <= (mTicks + 1); t++) + { + S32 y = (S32)(F32(mid.y - 1) / F32(mTicks + 1) * F32(t)); + PrimBuild::vertex2i(pos.x + mid.x - mShiftPoint, pos.y + y); + PrimBuild::vertex2i(pos.x + mid.x + mShiftPoint, pos.y + y); + } } PrimBuild::end(); mDisplayValue = false; diff --git a/Engine/source/gui/controls/guiSliderCtrl.h b/Engine/source/gui/controls/guiSliderCtrl.h index 9a70c512e..a8f8b667c 100644 --- a/Engine/source/gui/controls/guiSliderCtrl.h +++ b/Engine/source/gui/controls/guiSliderCtrl.h @@ -39,6 +39,7 @@ class GuiSliderCtrl : public GuiControl Point2F mRange; U32 mTicks; + bool mRenderTicks; bool mSnap; F32 mValue; RectI mThumb; @@ -51,6 +52,8 @@ class GuiSliderCtrl : public GuiControl bool mMouseOver; bool mMouseDragged; bool mHasTexture; + bool mUseFillBar; + ColorI mFillBarColor; enum { diff --git a/Engine/source/gui/controls/guiTextEditCtrl.cpp b/Engine/source/gui/controls/guiTextEditCtrl.cpp index 65bb331a6..076eddc90 100644 --- a/Engine/source/gui/controls/guiTextEditCtrl.cpp +++ b/Engine/source/gui/controls/guiTextEditCtrl.cpp @@ -1246,7 +1246,7 @@ void GuiTextEditCtrl::onLoseFirstResponder() //execute the validate command if( mValidateCommand.isNotEmpty() ) - evaluate( mValidateCommand ); + evaluate( mValidateCommand.c_str() ); onValidate_callback(); diff --git a/Engine/source/gui/editor/popupMenu.cpp b/Engine/source/gui/editor/popupMenu.cpp index 9aef352ca..2c9765f09 100644 --- a/Engine/source/gui/editor/popupMenu.cpp +++ b/Engine/source/gui/editor/popupMenu.cpp @@ -286,7 +286,7 @@ void PopupMenu::showPopup(GuiCanvas *owner, S32 x /* = -1 */, S32 y /* = -1 */) Sim::findObject("PopUpMenuControl", backgroundCtrl); GuiControlProfile* profile; - Sim::findObject("GuiMenubarProfile", profile); + Sim::findObject("ToolsGuiMenuBarProfile", profile); if (!profile) return; diff --git a/Engine/source/materials/processedCustomMaterial.cpp b/Engine/source/materials/processedCustomMaterial.cpp index 7c3b04bd6..a6c03cfba 100644 --- a/Engine/source/materials/processedCustomMaterial.cpp +++ b/Engine/source/materials/processedCustomMaterial.cpp @@ -541,4 +541,4 @@ MaterialParameters* ProcessedCustomMaterial::allocMaterialParameters() } } return ret; -} \ No newline at end of file +} diff --git a/Engine/source/materials/processedShaderMaterial.cpp b/Engine/source/materials/processedShaderMaterial.cpp index 5c911be1e..6b2b0632a 100644 --- a/Engine/source/materials/processedShaderMaterial.cpp +++ b/Engine/source/materials/processedShaderMaterial.cpp @@ -1360,7 +1360,7 @@ void ProcessedShaderMaterial::setSceneInfo(SceneRenderState * state, const Scene LIGHTMGR->setLightInfo(this, mMaterial, sgData, state, pass, shaderConsts); - PROBEMGR->setProbeInfo(this, mMaterial, sgData, state, pass, shaderConsts); + //PROBEMGR->setProbeInfo(this, mMaterial, sgData, state, pass, shaderConsts); } void ProcessedShaderMaterial::setBuffers( GFXVertexBufferHandleBase *vertBuffer, GFXPrimitiveBufferHandle *primBuffer ) diff --git a/Engine/source/postFx/postEffect.cpp b/Engine/source/postFx/postEffect.cpp index d75d170a9..3209192d4 100644 --- a/Engine/source/postFx/postEffect.cpp +++ b/Engine/source/postFx/postEffect.cpp @@ -183,6 +183,16 @@ void PostEffect::EffectConst::set(const F32 &newVal) mValueType = FloatType; } +void PostEffect::EffectConst::set(const int& newVal) +{ + if (mIntVal == newVal) + return; + + mIntVal = newVal; + mDirty = true; + mValueType = IntType; +} + void PostEffect::EffectConst::set(const Point4F &newVal) { if (mPointVal == newVal) @@ -326,6 +336,21 @@ void PostEffect::EffectConst::setToBuffer( GFXShaderConstBufferRef buff ) const char* err = avar("PostEffect::EffectConst::setToBuffer $s type is not implemented", mName.c_str()); Con::errorf(err); GFXAssertFatal(0, err); +#endif + } + } + else if (mValueType == IntType) + { + if (type == GFXSCT_Int) + { + buff->set(mHandle, mIntVal); + } + else + { +#if TORQUE_DEBUG + const char* err = avar("PostEffect::EffectConst::setToBuffer $s type is not implemented", mName.c_str()); + Con::errorf(err); + GFXAssertFatal(0, err); #endif } } @@ -1676,6 +1701,20 @@ void PostEffect::setShaderConst(const String &name, const F32 &val) iter->value->set(val); } +void PostEffect::setShaderConst(const String& name, const int& val) +{ + PROFILE_SCOPE(PostEffect_SetShaderConst_Int); + + EffectConstTable::Iterator iter = mEffectConsts.find(name); + if (iter == mEffectConsts.end()) + { + EffectConst* newConst = new EffectConst(name, val); + iter = mEffectConsts.insertUnique(name, newConst); + } + + iter->value->set(val); +} + void PostEffect::setShaderConst(const String &name, const Point4F &val) { PROFILE_SCOPE(PostEffect_SetShaderConst_Point); diff --git a/Engine/source/postFx/postEffect.h b/Engine/source/postFx/postEffect.h index 84ea55c4f..e1ab050e7 100644 --- a/Engine/source/postFx/postEffect.h +++ b/Engine/source/postFx/postEffect.h @@ -230,6 +230,14 @@ protected: set(val); } + EffectConst(const String& name, const int& val) + : mName(name), + mHandle(NULL), + mDirty(true) + { + set(val); + } + EffectConst(const String &name, const Point4F &val) : mName(name), mHandle(NULL), @@ -264,6 +272,7 @@ protected: void set( const String &newVal ); void set(const F32 &newVal); + void set(const int& newVal); void set(const Point4F &newVal); void set(const MatrixF &newVal); void set(const Vector &newVal); @@ -277,6 +286,7 @@ protected: String mStringVal; + S32 mIntVal; F32 mFloatVal; Point4F mPointVal; MatrixF mMatrixVal; @@ -287,6 +297,7 @@ protected: enum { StringType, + IntType, FloatType, PointType, MatrixType, @@ -427,6 +438,7 @@ public: /// void setShaderConst( const String &name, const String &val ); void setShaderConst(const String &name, const F32 &val); + void setShaderConst(const String& name, const int& val); void setShaderConst(const String &name, const Point4F &val); void setShaderConst(const String &name, const MatrixF &val); void setShaderConst(const String &name, const Vector &val); diff --git a/Engine/source/renderInstance/renderProbeMgr.cpp b/Engine/source/renderInstance/renderProbeMgr.cpp index 878253e93..0b7186f1b 100644 --- a/Engine/source/renderInstance/renderProbeMgr.cpp +++ b/Engine/source/renderInstance/renderProbeMgr.cpp @@ -87,7 +87,8 @@ ProbeRenderInst::ProbeRenderInst() : mAtten(0.0), mCubemapIndex(0), mIsSkylight(false), - mProbeIdx(0) + mProbeIdx(0), + mProbeShapeType(Box) { } @@ -132,7 +133,8 @@ ProbeShaderConstants::ProbeShaderConstants() mBRDFTextureMap(NULL), mSkylightSpecularMap(NULL), mSkylightIrradMap(NULL), - mHasSkylight(NULL) + mHasSkylight(NULL), + mWorldToObjArraySC(NULL) { } @@ -202,7 +204,10 @@ RenderProbeMgr::RenderProbeMgr() mLastShader(nullptr), mLastConstants(nullptr), mProbesDirty(false), - mHasSkylight(false) + mHasSkylight(false), + mSkylightCubemapIdx(-1), + mCubeMapCount(0), + mDefaultSkyLight(nullptr) { mEffectiveProbeCount = 0; mMipCount = 0; @@ -314,51 +319,47 @@ void RenderProbeMgr::addElement(RenderInst *inst) }*/ } -ProbeRenderInst* RenderProbeMgr::registerProbe(const bool &isSkylight) +ProbeRenderInst* RenderProbeMgr::registerProbe() { ProbeRenderInst newProbe; - newProbe.mIsSkylight = isSkylight; mRegisteredProbes.push_back(newProbe); newProbe.mProbeIdx = mRegisteredProbes.size(); - if (!newProbe.mIsSkylight) + const U32 cubeIndex = _findNextEmptyCubeSlot(); + if (cubeIndex == INVALID_CUBE_SLOT) { - const U32 cubeIndex = _findNextEmptyCubeSlot(); - if (cubeIndex == INVALID_CUBE_SLOT) - { - Con::warnf("RenderProbeMgr::addProbe: Invalid cubemap slot."); - return nullptr; - } - - //check if we need to resize the cubemap array - if (cubeIndex >= mCubeSlotCount) - { - //alloc temp array handles - GFXCubemapArrayHandle irr = GFXCubemapArrayHandle(GFX->createCubemapArray()); - GFXCubemapArrayHandle prefilter = GFXCubemapArrayHandle(GFX->createCubemapArray()); - - irr->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, PROBE_IRRAD_SIZE, PROBE_FORMAT); - prefilter->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, PROBE_PREFILTER_SIZE, PROBE_FORMAT); - - mIrradianceArray->copyTo(irr); - mPrefilterArray->copyTo(prefilter); - - //assign the temp handles to the new ones, this will destroy the old ones as well - mIrradianceArray = irr; - mPrefilterArray = prefilter; - - mCubeSlotCount += PROBE_ARRAY_SLOT_BUFFER_SIZE; - } - - newProbe.mCubemapIndex = cubeIndex; - //mark cubemap slot as taken - mCubeMapSlots[cubeIndex] = true; - mCubeMapCount++; - - Con::warnf("RenderProbeMgr::registerProbe: Registered probe %u to cubeIndex %u", newProbe.mProbeIdx, cubeIndex); + Con::warnf("RenderProbeMgr::addProbe: Invalid cubemap slot."); + return nullptr; } + //check if we need to resize the cubemap array + if (cubeIndex >= mCubeSlotCount) + { + //alloc temp array handles + GFXCubemapArrayHandle irr = GFXCubemapArrayHandle(GFX->createCubemapArray()); + GFXCubemapArrayHandle prefilter = GFXCubemapArrayHandle(GFX->createCubemapArray()); + + irr->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, PROBE_IRRAD_SIZE, PROBE_FORMAT); + prefilter->init(mCubeSlotCount + PROBE_ARRAY_SLOT_BUFFER_SIZE, PROBE_PREFILTER_SIZE, PROBE_FORMAT); + + mIrradianceArray->copyTo(irr); + mPrefilterArray->copyTo(prefilter); + + //assign the temp handles to the new ones, this will destroy the old ones as well + mIrradianceArray = irr; + mPrefilterArray = prefilter; + + mCubeSlotCount += PROBE_ARRAY_SLOT_BUFFER_SIZE; + } + + newProbe.mCubemapIndex = cubeIndex; + //mark cubemap slot as taken + mCubeMapSlots[cubeIndex] = true; + mCubeMapCount++; + + Con::warnf("RenderProbeMgr::registerProbe: Registered probe %u to cubeIndex %u", newProbe.mProbeIdx, cubeIndex); + mProbesDirty = true; return &mRegisteredProbes.last(); @@ -380,7 +381,7 @@ void RenderProbeMgr::unregisterProbe(U32 probeIdx) mRegisteredProbes.erase(probeIdx); //rebuild our probe data - _setupStaticParameters(); + mProbesDirty = true; } // @@ -413,9 +414,10 @@ void RenderProbeMgr::_setupStaticParameters() U32 probeCount = mRegisteredProbes.size(); mEffectiveProbeCount = 0; - mMipCount = 0; + mMipCount = 1; mHasSkylight = false; + mSkylightCubemapIdx = -1; if (probePositionsData.size() != MAXPROBECOUNT) { @@ -432,21 +434,7 @@ void RenderProbeMgr::_setupStaticParameters() probeWorldToObjData.fill(MatrixF::Identity); probeBBMinData.fill(Point4F::Zero); probeBBMaxData.fill(Point4F::Zero); - probeConfigData.fill(Point4F::Zero); - - cubeMaps.clear(); - irradMaps.clear(); - Vector cubemapIdxes; - - if (probeCount != 0 && mRegisteredProbes[0].mPrefilterCubemap != nullptr) - { - //Get our mipCount - mMipCount = mRegisteredProbes[0].mPrefilterCubemap.getPointer()->getMipMapLevels(); - } - else - { - mMipCount = 1; - } + probeConfigData.fill(Point4F(-1,0,0,0)); for (U32 i = 0; i < probeCount; i++) { @@ -457,12 +445,12 @@ void RenderProbeMgr::_setupStaticParameters() if (!curEntry.mIsEnabled) continue; - if (curEntry.mProbeShapeType == ProbeRenderInst::ProbeShapeType::Skylight || curEntry.mIsSkylight) + U32 mips = mRegisteredProbes[i].mPrefilterCubemap.getPointer()->getMipMapLevels(); + mMipCount = mips != 0 && mips >= mMipCount ? mips : 0; + + if (curEntry.mIsSkylight) { - skylightPos = curEntry.getPosition(); - skylightPrefilterMap = curEntry.mPrefilterCubemap; - skylightIrradMap = curEntry.mIrradianceCubemap; - mHasSkylight = true; + mSkylightCubemapIdx = curEntry.mCubemapIndex; continue; } @@ -483,32 +471,32 @@ void RenderProbeMgr::_setupStaticParameters() curEntry.mAtten, curEntry.mCubemapIndex); - cubeMaps.push_back(curEntry.mPrefilterCubemap); - irradMaps.push_back(curEntry.mIrradianceCubemap); - - cubemapIdxes.push_back(i); - mEffectiveProbeCount++; } mProbesDirty = false; } -void RenderProbeMgr::updateProbeTexture(U32 probeIdx) +void RenderProbeMgr::updateProbeTexture(ProbeRenderInst* probeInfo) { - if (probeIdx >= mRegisteredProbes.size()) + if (probeInfo->mIrradianceCubemap.isNull() || !probeInfo->mIrradianceCubemap->isInitialized()) + { + Con::errorf("RenderProbeMgr::updateProbeTexture() - tried to update a probe's texture with an invalid or uninitialized irradiance map!"); return; + } - //We don't stuff skylights into the array, so we can just skip out on this if it's a skylight - if (mRegisteredProbes[probeIdx].mIsSkylight) + if (probeInfo->mPrefilterCubemap.isNull() || !probeInfo->mPrefilterCubemap->isInitialized()) + { + Con::errorf("RenderProbeMgr::updateProbeTexture() - tried to update a probe's texture with an invalid or uninitialized specular map!"); return; + } - const U32 cubeIndex = mRegisteredProbes[probeIdx].mCubemapIndex; - mIrradianceArray->updateTexture(mRegisteredProbes[probeIdx].mIrradianceCubemap, cubeIndex); - mPrefilterArray->updateTexture(mRegisteredProbes[probeIdx].mPrefilterCubemap, cubeIndex); + const U32 cubeIndex = probeInfo->mCubemapIndex; + mIrradianceArray->updateTexture(probeInfo->mIrradianceCubemap, cubeIndex); + mPrefilterArray->updateTexture(probeInfo->mPrefilterCubemap, cubeIndex); - Con::warnf("UpdatedProbeTexture - probeIdx: %u on cubeIndex %u, Irrad validity: %d, Prefilter validity: %d", probeIdx, cubeIndex, - mRegisteredProbes[probeIdx].mIrradianceCubemap->isInitialized(), mRegisteredProbes[probeIdx].mPrefilterCubemap->isInitialized()); + Con::warnf("UpdatedProbeTexture - probeIdx: %u on cubeIndex %u, Irrad validity: %d, Prefilter validity: %d", probeInfo->mProbeIdx, cubeIndex, + probeInfo->mIrradianceCubemap->isInitialized(), probeInfo->mPrefilterCubemap->isInitialized()); } void RenderProbeMgr::_setupPerFrameParameters(const SceneRenderState *state) @@ -688,7 +676,7 @@ void RenderProbeMgr::_update4ProbeConsts(const SceneData &sgData, if (curEntry.mIsSkylight) { - if (curEntry.mPrefilterCubemap.isValid() && curEntry.mPrefilterCubemap.isValid()) + if (curEntry.mPrefilterCubemap->isInitialized() && curEntry.mIrradianceCubemap->isInitialized()) { GFX->setCubeTexture(probeShaderConsts->mSkylightSpecularMap->getSamplerRegister(), curEntry.mPrefilterCubemap); GFX->setCubeTexture(probeShaderConsts->mSkylightIrradMap->getSamplerRegister(), curEntry.mIrradianceCubemap); @@ -758,7 +746,7 @@ void RenderProbeMgr::render( SceneRenderState *state ) _setupStaticParameters(); // Early out if nothing to draw. - if (!RenderProbeMgr::smRenderReflectionProbes || !state->isDiffusePass() || (!mRegisteredProbes.size() || mEffectiveProbeCount == 0 || mCubeMapCount != 0 ) && !mHasSkylight) + if (!RenderProbeMgr::smRenderReflectionProbes || !state->isDiffusePass() || (mEffectiveProbeCount == 0 && mSkylightCubemapIdx == -1)) { getProbeArrayEffect()->setSkip(true); return; @@ -772,7 +760,7 @@ void RenderProbeMgr::render( SceneRenderState *state ) // the vector light material as we use lazy creation. //_setupPerFrameParameters(state); - //Visualization + //Visualization String useDebugAtten = Con::getVariable("$Probes::showAttenuation", "0"); mProbeArrayEffect->setShaderMacro("DEBUGVIZ_ATTENUATION", useDebugAtten); @@ -784,36 +772,31 @@ void RenderProbeMgr::render( SceneRenderState *state ) String useDebugContrib = Con::getVariable("$Probes::showProbeContrib", "0"); mProbeArrayEffect->setShaderMacro("DEBUGVIZ_CONTRIB", useDebugContrib); + + if(mHasSkylight && mEffectiveProbeCount == 0) + mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "1"); - //Array rendering - //U32 probeCount = mRegisteredProbes.size(); + mProbeArrayEffect->setTexture(3, mBRDFTexture); + mProbeArrayEffect->setCubemapArrayTexture(4, mPrefilterArray); + mProbeArrayEffect->setCubemapArrayTexture(5, mIrradianceArray); - mProbeArrayEffect->setShaderConst("$hasSkylight", (float)mHasSkylight); - if (mHasSkylight) - { - mProbeArrayEffect->setCubemapTexture(6, skylightPrefilterMap); - mProbeArrayEffect->setCubemapTexture(7, skylightIrradMap); - } - - mProbeArrayEffect->setShaderConst("$numProbes", (float)mEffectiveProbeCount); + mProbeArrayEffect->setShaderConst("$numProbes", (S32)mEffectiveProbeCount); + mProbeArrayEffect->setShaderConst("$skylightCubemapIdx", mSkylightCubemapIdx); mProbeArrayEffect->setShaderConst("$cubeMips", (float)mMipCount); + + //also set up some colors + Vector contribColors; + + contribColors.setSize(MAXPROBECOUNT); + if (mEffectiveProbeCount != 0) { - mProbeArrayEffect->setTexture(3, mBRDFTexture); - mProbeArrayEffect->setCubemapArrayTexture(4, mPrefilterArray); - mProbeArrayEffect->setCubemapArrayTexture(5, mIrradianceArray); - if (useDebugContrib == String("1")) { MRandomLCG RandomGen; RandomGen.setSeed(mEffectiveProbeCount); - //also set up some colors - Vector contribColors; - - contribColors.setSize(MAXPROBECOUNT); - for (U32 i = 0; i < mEffectiveProbeCount; i++) { //we're going to cheat here a little for consistent debugging behavior. The first 3 probes will always have R G and then B for their colors, every other will be random @@ -826,11 +809,11 @@ void RenderProbeMgr::render( SceneRenderState *state ) else contribColors[i] = Point4F(RandomGen.randF(0, 1), RandomGen.randF(0, 1), RandomGen.randF(0, 1), 1); } - - mProbeArrayEffect->setShaderConst("$probeContribColors", contribColors); } } + mProbeArrayEffect->setShaderConst("$probeContribColors", contribColors); + mProbeArrayEffect->setShaderConst("$inProbePosArray", probePositionsData); mProbeArrayEffect->setShaderConst("$inRefPosArray", probeRefPositionsData); mProbeArrayEffect->setShaderConst("$worldToObjArray", probeWorldToObjData); diff --git a/Engine/source/renderInstance/renderProbeMgr.h b/Engine/source/renderInstance/renderProbeMgr.h index 560410188..911e05a21 100644 --- a/Engine/source/renderInstance/renderProbeMgr.h +++ b/Engine/source/renderInstance/renderProbeMgr.h @@ -199,13 +199,9 @@ class RenderProbeMgr : public RenderBinManager Vector probeBBMinData; Vector probeBBMaxData; Vector probeConfigData; - Vector cubeMaps; - Vector irradMaps; - bool mHasSkylight; - GFXCubemapHandle skylightIrradMap; - GFXCubemapHandle skylightPrefilterMap; - Point4F skylightPos; + bool mHasSkylight; + S32 mSkylightCubemapIdx; AlignedArray mProbePositions; AlignedArray mProbeBBMin; @@ -286,7 +282,7 @@ public: /// Returns the active LM. static inline RenderProbeMgr* getProbeManager(); - ProbeRenderInst* registerProbe(const bool& isSkylight); + ProbeRenderInst* registerProbe(); void unregisterProbe(U32 probeIdx); virtual void setProbeInfo(ProcessedMaterial *pmat, @@ -296,7 +292,7 @@ public: U32 pass, GFXShaderConstBuffer *shaderConsts); - void updateProbeTexture(U32 probeIdx); + void updateProbeTexture(ProbeRenderInst* probeInfo); /// Debug rendering static bool smRenderReflectionProbes; diff --git a/Engine/source/util/settings.cpp b/Engine/source/util/settings.cpp index 96fd2d5c8..299898e8d 100644 --- a/Engine/source/util/settings.cpp +++ b/Engine/source/util/settings.cpp @@ -709,4 +709,4 @@ DefineEngineMethod(Settings, clearGroups, void, (), , "settingObj.clearGroups(); DefineEngineMethod(Settings, getCurrentGroups, const char*, (), , "settingObj.getCurrentGroups();") { return object->getCurrentGroups(); -} \ No newline at end of file +} diff --git a/Templates/BaseGame/game/core/Core.cs b/Templates/BaseGame/game/core/Core.cs index 99efdd706..af6f97b8a 100644 --- a/Templates/BaseGame/game/core/Core.cs +++ b/Templates/BaseGame/game/core/Core.cs @@ -27,6 +27,9 @@ function CoreModule::onCreate(%this) ModuleDatabase.LoadExplicit( "Core_GameObjects" ); ModuleDatabase.LoadExplicit( "Core_ClientServer" ); + new Settings(ProjectSettings) { file = "core/settings.xml"; }; + ProjectSettings.read(); + %prefPath = getPrefpath(); if ( isFile( %prefPath @ "/clientPrefs.cs" ) ) exec( %prefPath @ "/clientPrefs.cs" ); diff --git a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Init.cs b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Init.cs index c7d357bb8..b34da6d84 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Init.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Init.cs @@ -47,18 +47,12 @@ function onActivateAdvancedLM() // Enable the offscreen target so that AL will work // with MSAA back buffers and for HDR rendering. AL_FormatToken.enable(); - - // Activate Deferred Shading - AL_DeferredShading.enable(); } function onDeactivateAdvancedLM() { // Disable the offscreen render target. AL_FormatToken.disable(); - - // Deactivate Deferred Shading - AL_DeferredShading.disable(); } function setAdvancedLighting() diff --git a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs index 3a52199b4..bc70856ad 100644 --- a/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs +++ b/Templates/BaseGame/game/core/lighting/scripts/advancedLighting_Shaders.cs @@ -322,8 +322,6 @@ singleton ShaderData( PFX_ReflectionProbeArray ) samplerNames[3] = "$BRDFTexture"; samplerNames[4] = "$specularCubemapAR"; samplerNames[5] = "$irradianceCubemapAR"; - samplerNames[6] = "$skylightSpecularMap"; - samplerNames[7] = "$skylightIrradMap"; pixVersion = 2.0; }; @@ -345,7 +343,6 @@ singleton GFXStateBlockData( PFX_ReflectionProbeArrayStateBlock ) zEnable = false; zWriteEnable = false; - samplersDefined = true; samplerStates[0] = SamplerClampPoint; samplerStates[1] = SamplerClampPoint; @@ -353,6 +350,4 @@ singleton GFXStateBlockData( PFX_ReflectionProbeArrayStateBlock ) samplerStates[3] = SamplerClampPoint; samplerStates[4] = SamplerClampLinear; samplerStates[5] = SamplerClampLinear; - samplerStates[6] = SamplerClampLinear; - samplerStates[7] = SamplerClampLinear; }; \ No newline at end of file diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl index 2298c958c..12d8b3c36 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl @@ -19,7 +19,8 @@ uniform vec3 eyePosWorld; //cubemap arrays require all the same size. so shared mips# value uniform float cubeMips; -uniform float numProbes; +uniform int numProbes; + uniform samplerCubeArray specularCubemapAR; uniform samplerCubeArray irradianceCubemapAR; @@ -34,9 +35,7 @@ uniform vec4 probeConfigData[MAX_PROBES]; //r,g,b/mode,radius,atten uniform vec4 probeContribColors[MAX_PROBES]; #endif -uniform samplerCube skylightSpecularMap; -uniform samplerCube skylightIrradMap; -uniform float hasSkylight; +uniform float skylightCubemapIdx; out vec4 OUT_col; @@ -56,6 +55,7 @@ void main() float alpha = 1; +#if SKYLIGHT_ONLY == 0 int i = 0; float blendFactor[MAX_PROBES]; float blendSum = 0; @@ -64,8 +64,9 @@ void main() float probehits = 0; //Set up our struct data float contribution[MAX_PROBES]; - if (alpha > 0) - { + + //if (alpha > 0) + //{ //Process prooooobes for (i = 0; i < numProbes; ++i) { @@ -83,6 +84,8 @@ void main() if (contribution[i]>0.0) probehits++; } + else + continue; contribution[i] = max(contribution[i],0); @@ -106,20 +109,21 @@ void main() } // Normalize blendVal -#if DEBUGVIZ_ATTENUATION == 0 //this can likely be removed when we fix the above normalization behavior - if (blendFacSum == 0.0f) // Possible with custom weight - { - blendFacSum = 1.0f; - } -#endif + if (blendFacSum == 0.0f) // Possible with custom weight + { + blendFacSum = 1.0f; + } float invBlendSumWeighted = 1.0f / blendFacSum; for (i = 0; i < numProbes; ++i) { blendFactor[i] *= invBlendSumWeighted; contribution[i] *= blendFactor[i]; + alpha -= contribution[i]; } } + else + alpha -= blendSum; #if DEBUGVIZ_ATTENUATION == 1 float contribAlpha = 1; @@ -142,12 +146,14 @@ void main() } //Skylight coloration for anything not covered by probes above - finalContribColor += vec3(0.3, 0.3, 0.3) * contribAlpha; + if(skylightCubemapIdx != -1) + finalContribColor += vec3(0.3, 0.3, 0.3) * contribAlpha; OUT_col = vec4(finalContribColor, 1); return; #endif - } + //} +#endif vec3 irradiance = vec3(0, 0, 0); vec3 specular = vec3(0, 0, 0); @@ -159,27 +165,27 @@ void main() float lod = 0; #endif +#if SKYLIGHT_ONLY == 0 alpha = 1; for (i = 0; i < numProbes; ++i) { float contrib = contribution[i]; if (contrib != 0) { - float cubemapIdx = probeConfigData[i].a; + int cubemapIdx = probeConfigData[i].a; vec3 dir = boxProject(surface.P, surface.R, worldToObjArray[i], bbMinArray[i].xyz, bbMaxArray[i].xyz, inRefPosArray[i].xyz); irradiance += textureLod(irradianceCubemapAR, vec4(dir, cubemapIdx), 0).xyz * contrib; specular += textureLod(specularCubemapAR, vec4(dir, cubemapIdx), lod).xyz * contrib; - //irradiance += vec3(1,1,1) * contrib; - //specular += vec3(1,1,1) * contrib; alpha -= contrib; } } +#endif - if (hasSkylight == 1 && alpha > 0.001) + if (skylightCubemapIdx != -1 && alpha > 0.001) { - irradiance += textureLod(skylightIrradMap, surface.R, 0).xyz * alpha; - specular += textureLod(skylightSpecularMap, surface.R, lod).xyz * alpha; + irradiance += textureLod(irradianceCubemapAR, vec4(surface.R, skylightCubemapIdx), 0).xyz * alpha; + specular += textureLod(specularCubemapAR, vec4(surface.R, skylightCubemapIdx), lod).xyz * alpha; } #if DEBUGVIZ_SPECCUBEMAP == 1 && DEBUGVIZ_DIFFCUBEMAP == 0 diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl index ea2ca7641..df53fa3c9 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl @@ -16,7 +16,8 @@ uniform float3 eyePosWorld; //cubemap arrays require all the same size. so shared mips# value uniform float cubeMips; -uniform float numProbes; +uniform int numProbes; + TORQUE_UNIFORM_SAMPLERCUBEARRAY(specularCubemapAR, 4); TORQUE_UNIFORM_SAMPLERCUBEARRAY(irradianceCubemapAR, 5); @@ -31,9 +32,7 @@ uniform float4 probeConfigData[MAX_PROBES]; //r,g,b/mode,radius,atten uniform float4 probeContribColors[MAX_PROBES]; #endif -TORQUE_UNIFORM_SAMPLERCUBE(skylightSpecularMap, 6); -TORQUE_UNIFORM_SAMPLERCUBE(skylightIrradMap, 7); -uniform float hasSkylight; +uniform float skylightCubemapIdx; float4 main(PFXVertToPix IN) : SV_TARGET { @@ -47,11 +46,12 @@ float4 main(PFXVertToPix IN) : SV_TARGET //early out if emissive if (getFlag(surface.matFlag, 0)) { - discard; + return TORQUE_TEX2D(colorBuffer, IN.uv0.xy); } float alpha = 1; +#if SKYLIGHT_ONLY == 0 int i = 0; float blendFactor[MAX_PROBES]; float blendSum = 0; @@ -60,8 +60,9 @@ float4 main(PFXVertToPix IN) : SV_TARGET float probehits = 0; //Set up our struct data float contribution[MAX_PROBES]; - if (alpha > 0) - { + + //if (alpha > 0) + //{ //Process prooooobes for (i = 0; i < numProbes; ++i) { @@ -79,6 +80,8 @@ float4 main(PFXVertToPix IN) : SV_TARGET if (contribution[i]>0.0) probehits++; } + else + continue; contribution[i] = max(contribution[i],0); @@ -91,34 +94,32 @@ float4 main(PFXVertToPix IN) : SV_TARGET // Weight1 = normalized inverted NDF, so we have 1 at center, 0 at boundary // and respect constraint A. - if (probehits>1.0) - { - for (i = 0; i < numProbes; i++) - { - blendFactor[i] = ((contribution[i] / blendSum)) / probehits; - blendFactor[i] *= ((contribution[i]) / invBlendSum); - blendFactor[i] = saturate(blendFactor[i]); - blendFacSum += blendFactor[i]; - } + if (probehits > 1.0) + { + for (i = 0; i < numProbes; i++) + { + blendFactor[i] = ((contribution[i] / blendSum)) / probehits; + blendFactor[i] *= ((contribution[i]) / invBlendSum); + blendFactor[i] = saturate(blendFactor[i]); + blendFacSum += blendFactor[i]; + } - // Normalize blendVal -#if DEBUGVIZ_ATTENUATION == 0 //this can likely be removed when we fix the above normalization behavior - if (blendFacSum == 0.0f) // Possible with custom weight - { - blendFacSum = 1.0f; - } -#endif + // Normalize blendVal + if (blendFacSum == 0.0f) // Possible with custom weight + { + blendFacSum = 1.0f; + } - float invBlendSumWeighted = 1.0f / blendFacSum; - for (i = 0; i < numProbes; ++i) - { - blendFactor[i] *= invBlendSumWeighted; - contribution[i] *= blendFactor[i]; - alpha -= contribution[i]; - } + float invBlendSumWeighted = 1.0f / blendFacSum; + for (i = 0; i < numProbes; ++i) + { + blendFactor[i] *= invBlendSumWeighted; + contribution[i] *= blendFactor[i]; + alpha -= contribution[i]; + } } else - alpha -= blendSum; + alpha -= blendSum; #if DEBUGVIZ_ATTENUATION == 1 float contribAlpha = 1; @@ -140,11 +141,13 @@ float4 main(PFXVertToPix IN) : SV_TARGET } //Skylight coloration for anything not covered by probes above - finalContribColor += float3(0.3, 0.3, 0.3) * contribAlpha; + if(skylightCubemapIdx != -1) + finalContribColor += float3(0.3, 0.3, 0.3) * contribAlpha; return float4(finalContribColor, 1); #endif - } + //} +#endif float3 irradiance = float3(0, 0, 0); float3 specular = float3(0, 0, 0); @@ -156,6 +159,7 @@ float4 main(PFXVertToPix IN) : SV_TARGET float lod = 0; #endif +#if SKYLIGHT_ONLY == 0 alpha = 1; for (i = 0; i < numProbes; ++i) { @@ -170,11 +174,12 @@ float4 main(PFXVertToPix IN) : SV_TARGET alpha -= contrib; } } +#endif - if (hasSkylight && alpha > 0.001) + if(skylightCubemapIdx != -1 && alpha >= 0.001) { - irradiance += TORQUE_TEXCUBELOD(skylightIrradMap, float4(surface.R, 0)).xyz * alpha; - specular += TORQUE_TEXCUBELOD(skylightSpecularMap, float4(surface.R, lod)).xyz * alpha; + irradiance += TORQUE_TEXCUBEARRAYLOD(irradianceCubemapAR, surface.R, skylightCubemapIdx, 0).xyz * alpha; + specular += TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, surface.R, skylightCubemapIdx, lod).xyz * alpha; } #if DEBUGVIZ_SPECCUBEMAP == 1 && DEBUGVIZ_DIFFCUBEMAP == 0 @@ -198,6 +203,5 @@ float4 main(PFXVertToPix IN) : SV_TARGET float3 diffuse = kD * irradiance * surface.baseColor.rgb; float4 finalColor = float4(diffuse + specular * surface.ao, 1.0); -//finalColor.rgb += abs(surface.N); return finalColor; } diff --git a/Templates/BaseGame/game/core/settings.xml b/Templates/BaseGame/game/core/settings.xml new file mode 100644 index 000000000..7e6bf5e0b --- /dev/null +++ b/Templates/BaseGame/game/core/settings.xml @@ -0,0 +1,13 @@ + + + + + core/ + + + + + a + + + diff --git a/Templates/BaseGame/game/data/ui/art/optionsMenuSliderBitmapArray.png b/Templates/BaseGame/game/data/ui/art/optionsMenuSliderBitmapArray.png new file mode 100644 index 000000000..bd41c15b7 Binary files /dev/null and b/Templates/BaseGame/game/data/ui/art/optionsMenuSliderBitmapArray.png differ diff --git a/Templates/BaseGame/game/data/ui/art/slider - Copy.png b/Templates/BaseGame/game/data/ui/art/slider - Copy.png new file mode 100644 index 000000000..92fee1e9c Binary files /dev/null and b/Templates/BaseGame/game/data/ui/art/slider - Copy.png differ diff --git a/Templates/BaseGame/game/data/ui/scripts/guis/graphicsMenuSettingsSlider.taml b/Templates/BaseGame/game/data/ui/scripts/guis/graphicsMenuSettingsSlider.taml index 4bbc1c982..74a428114 100644 --- a/Templates/BaseGame/game/data/ui/scripts/guis/graphicsMenuSettingsSlider.taml +++ b/Templates/BaseGame/game/data/ui/scripts/guis/graphicsMenuSettingsSlider.taml @@ -89,7 +89,9 @@ isContainer="false" internalName="slider" canSave="true" - canSaveDynamicFields="false" /> + canSaveDynamicFields="false" + renderTicks="false" + useFillBar="true" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui b/Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui index 48f049782..20500af05 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui +++ b/Templates/BaseGame/game/tools/assetBrowser/guis/assetBrowser.gui @@ -323,7 +323,7 @@ minExtent = "64 64"; horizSizing = "relative"; vertSizing = "height"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; @@ -345,7 +345,7 @@ minExtent = "16 16"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; @@ -414,7 +414,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; command = "AssetBrowser.showFilterPopup();"; @@ -530,7 +530,7 @@ minExtent = "16 16"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; @@ -657,7 +657,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; command = "AssetBrowser.toggleTagFilterPopup();"; @@ -798,7 +798,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiDefaultProfile"; + profile = "ToolsGuiDefaultProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/assetBrowser/guis/assetImport.gui b/Templates/BaseGame/game/tools/assetBrowser/guis/assetImport.gui index f337c946f..d7e82723c 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/guis/assetImport.gui +++ b/Templates/BaseGame/game/tools/assetBrowser/guis/assetImport.gui @@ -85,7 +85,7 @@ minExtent = "8 2"; horizSizing = "width"; vertSizing = "height"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; @@ -243,7 +243,7 @@ minExtent = "8 2"; horizSizing = "width"; vertSizing = "height"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; @@ -574,7 +574,7 @@ minExtent = "8 2"; horizSizing = "width"; vertSizing = "height"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/assetBrowser/guis/editAsset.gui b/Templates/BaseGame/game/tools/assetBrowser/guis/editAsset.gui index 45d411f20..483fe0d80 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/guis/editAsset.gui +++ b/Templates/BaseGame/game/tools/assetBrowser/guis/editAsset.gui @@ -66,7 +66,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiScrollProfile"; + profile = "Tools"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/assetBrowser/guis/editModule.gui b/Templates/BaseGame/game/tools/assetBrowser/guis/editModule.gui index 90ff639dd..dbe060f62 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/guis/editModule.gui +++ b/Templates/BaseGame/game/tools/assetBrowser/guis/editModule.gui @@ -66,7 +66,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/assetBrowser/guis/newAsset.gui b/Templates/BaseGame/game/tools/assetBrowser/guis/newAsset.gui index 09fcb997d..379d6a521 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/guis/newAsset.gui +++ b/Templates/BaseGame/game/tools/assetBrowser/guis/newAsset.gui @@ -196,7 +196,7 @@ minExtent = "8 2"; horizSizing = "right"; vertSizing = "bottom"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/assetBrowser/main.cs b/Templates/BaseGame/game/tools/assetBrowser/main.cs index c5272e44a..394cd47f6 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/main.cs +++ b/Templates/BaseGame/game/tools/assetBrowser/main.cs @@ -22,6 +22,7 @@ if( !isObject( ToolsGuiDefaultNonModalProfile ) ) new GuiControlProfile (ToolsGuiDefaultNonModalProfile : ToolsGuiDefaultProfile) { + opaque = false; modal = false; }; diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.cs b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.cs index fd6f85278..49c1941c3 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.cs +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.cs @@ -150,7 +150,7 @@ function AssetBrowser::showDialog( %this, %AssetTypeFilter, %selectCallback, %ta AssetBrowser.fieldTargetObject = %targetObj; AssetBrowser.fieldTargetName = %fieldName; - Canvas.add(AssetBrowser); + Canvas.pushDialog(AssetBrowser); AssetBrowser.setVisible(1); AssetBrowserWindow.setVisible(1); AssetBrowserWindow.selectWindow(); diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.cs b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.cs index b63f5dd22..299ecd030 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.cs +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.cs @@ -497,6 +497,9 @@ function ImportAssetWindow::onWake(%this) return; $AssetBrowser::importConfigsFile = "tools/assetBrowser/assetImportConfigs.xml"; + $AssetBrowser::currentImportConfig = ""; + new Settings(AssetImportSettings) { file = $AssetBrowser::importConfigsFile; }; + AssetImportSettings.read(); %this.reloadImportOptionConfigs(); } @@ -510,17 +513,15 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this) if(%xmlDoc.loadFile($AssetBrowser::importConfigsFile)) { //StateMachine element - %xmlDoc.pushFirstChildElement("AssetImportConfigs"); + %xmlDoc.pushFirstChildElement("AssetImportSettings"); - //Configs + //Config Groups %configCount = 0; while(%xmlDoc.pushChildElement(%configCount)) { - %configObj = new ScriptObject(){}; - - %configObj.Name = %xmlDoc.attribute("Name"); + %configName = %xmlDoc.attribute("name"); - %xmlDoc.pushFirstChildElement("Mesh"); + /*%xmlDoc.pushFirstChildElement("Mesh"); %configObj.ImportMesh = %xmlDoc.attribute("ImportMesh"); %configObj.DoUpAxisOverride = %xmlDoc.attribute("DoUpAxisOverride"); %configObj.UpAxisOverride = %xmlDoc.attribute("UpAxisOverride"); @@ -583,12 +584,12 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this) %configObj.VolumeAdjust = %xmlDoc.attribute("VolumeAdjust"); %configObj.PitchAdjust = %xmlDoc.attribute("PitchAdjust"); %configObj.Compressed = %xmlDoc.attribute("Compressed"); - %xmlDoc.popElement(); + %xmlDoc.popElement();*/ %xmlDoc.popElement(); %configCount++; - ImportAssetWindow.importConfigsList.add(%configObj); + ImportAssetWindow.importConfigsList.add(%configName); } %xmlDoc.popElement(); @@ -596,8 +597,8 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this) for(%i = 0; %i < ImportAssetWindow.importConfigsList.count(); %i++) { - %configObj = ImportAssetWindow.importConfigsList.getKey(%i); - ImportAssetConfigList.add(%configObj.Name); + %configName = ImportAssetWindow.importConfigsList.getKey(%i); + ImportAssetConfigList.add(%configName); } %importConfigIdx = ImportAssetWindow.activeImportConfigIndex; @@ -607,7 +608,7 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this) ImportAssetConfigList.setSelected(%importConfigIdx); } -function ImportAssetWindow::setImportOptions(%this, %optionsObj) +function ImportAssetWindow::setImportOptions(%this, %configName) { //Todo, editor + load from files for preconfigs diff --git a/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui b/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui index bd76a265e..2e737c942 100644 --- a/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/convexEditor/convexEditorToolbar.ed.gui @@ -114,7 +114,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "menubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "bottom"; Position = "195 0"; diff --git a/Templates/BaseGame/game/tools/editorClasses/gui/images/rollout.png b/Templates/BaseGame/game/tools/editorClasses/gui/images/rollout.png index 8ce3f635f..39f7caa7e 100644 Binary files a/Templates/BaseGame/game/tools/editorClasses/gui/images/rollout.png and b/Templates/BaseGame/game/tools/editorClasses/gui/images/rollout.png differ diff --git a/Templates/BaseGame/game/tools/editorClasses/gui/panels/navPanelProfiles.ed.cs b/Templates/BaseGame/game/tools/editorClasses/gui/panels/navPanelProfiles.ed.cs index 4f7b12867..2b690ff79 100644 --- a/Templates/BaseGame/game/tools/editorClasses/gui/panels/navPanelProfiles.ed.cs +++ b/Templates/BaseGame/game/tools/editorClasses/gui/panels/navPanelProfiles.ed.cs @@ -28,7 +28,6 @@ singleton GuiControlProfile (NavPanelProfile) category = "Editor"; }; - singleton GuiControlProfile (NavPanel : NavPanelProfile) { bitmap = "./navPanel"; @@ -64,53 +63,3 @@ singleton GuiControlProfile (NavPanelYellow : NavPanelProfile) bitmap = "./navPanel_yellow"; category = "Editor"; }; -singleton GuiControlProfile (menubarProfile : NavPanelProfile) -{ - bitmap = "./menubar"; - category = "Editor"; - - fillColor = "48 48 48"; - fontColor = "215 215 215"; - fontColorHL = "150 150 150"; - borderColor = "34 34 34"; -}; -singleton GuiControlProfile (editorMenubarProfile : NavPanelProfile) -{ - bitmap = "./editor-menubar"; - category = "Editor"; -}; -singleton GuiControlProfile (editorMenu_wBorderProfile : NavPanelProfile) -{ - bitmap = "./menu-fullborder"; - category = "Editor"; -}; -singleton GuiControlProfile (inspectorStyleRolloutProfile : NavPanelProfile) -{ - bitmap = "./inspector-style-rollout"; - category = "Editor"; -}; -singleton GuiControlProfile (inspectorStyleRolloutListProfile : NavPanelProfile) -{ - bitmap = "./inspector-style-rollout-list"; - category = "Editor"; -}; -singleton GuiControlProfile (inspectorStyleRolloutDarkProfile : NavPanelProfile) -{ - bitmap = "./inspector-style-rollout-dark"; - category = "Editor"; -}; -singleton GuiControlProfile (inspectorStyleRolloutInnerProfile : NavPanelProfile) -{ - bitmap = "./inspector-style-rollout_inner"; - category = "Editor"; -}; -singleton GuiControlProfile (inspectorStyleRolloutNoHeaderProfile : NavPanelProfile) -{ - bitmap = "./inspector-style-rollout-noheader"; - category = "Editor"; -}; -singleton GuiControlProfile (IconDropdownProfile : NavPanelProfile) -{ - bitmap = "./icon-dropdownbar"; - category = "Editor"; -}; diff --git a/Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.cs b/Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.cs index 373739be3..ba15100ee 100644 --- a/Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.cs +++ b/Templates/BaseGame/game/tools/gui/editorSettingsWindow.ed.cs @@ -22,19 +22,31 @@ function ESettingsWindow::startup( %this ) { + new ArrayObject(EditorSettingsPageList); + new ArrayObject(GameSettingsPageList); + + %this.addEditorSettingsPage("Axis", "Axis Gizmo"); + %this.addEditorSettingsPage("General", "General Settings"); + %this.addEditorSettingsPage("Camera", "Camera Settings"); + %this.addEditorSettingsPage("SceneEditor", "Scene Editor"); + %this.addEditorSettingsPage("ShapeEditor", "Shape Editor"); + %this.addEditorSettingsPage("NavEditor", "Navigation Editor"); + %this.addEditorSettingsPage("Theme", "Theme"); + + %this.addGameSettingsPage("GameGeneral", "General"); + %this.addGameSettingsPage("Gameplay", "Gameplay"); + %this.addGameSettingsPage("Paths", "Paths"); + %this.addGameSettingsPage("UI", "UI"); + %this.addGameSettingsPage("LevelDefaults", "Level Defaults"); + %this.addGameSettingsPage("GameOptions", "Game Options"); + %this.addGameSettingsPage("AssetManagement", "Asset Management"); + + %this.mode = "Editor"; } function ESettingsWindow::onWake( %this ) { - new ArrayObject(SettingsPageList); - %this.addSettingsPage("Axis", "Axis Gizmo"); - %this.addSettingsPage("General", "General Settings"); - %this.addSettingsPage("Camera", "Camera Settings"); - %this.addSettingsPage("SceneEditor", "Scene Editor"); - %this.addSettingsPage("ShapeEditor", "Shape Editor"); - %this.addSettingsPage("NavEditor", "Navigation Editor"); - ESettingsWindowList.setSelectedById( 1 ); } function ESettingsWindow::hideDialog( %this ) @@ -47,7 +59,6 @@ function ESettingsWindow::ToggleVisibility() if ( ESettingsWindow.visible ) { ESettingsWindow.setVisible(false); - EditorSettings.write(); } else { @@ -59,19 +70,50 @@ function ESettingsWindow::ToggleVisibility() ESettingsWindowList.setSelectedById( 1 ); } -/*function ESettingsWindow::addTabPage( %this, %page ) +function ESettingsWindow::toggleProjectSettings(%this) { - ESettingsWindowTabBook.add( %page ); - ESettingsWindowList.addRow( ESettingsWindowTabBook.getSelectedPage(), %page.text ); - ESettingsWindowList.sort(0); -}*/ - -function ESettingsWindow::addSettingsPage(%this, %settingsPageName, %settingsPageText) -{ - SettingsPageList.add(%settingsPageName, %settingsPageText); + %this.ToggleVisibility(); - ESettingsWindowList.addRow( SettingsPageList.count(), %settingsPageText ); + %count = GameSettingsPageList.count(); + for(%i=0; %i < %count; %i++) + { + %settingsPageText = GameSettingsPageList.getValue(%i); + ESettingsWindowList.addRow( %i, %settingsPageText ); + } ESettingsWindowList.sort(0); + + ESettingsWindowList.setSelectedById( 1 ); + + %this.mode = "Project"; + ESettingsWindow.text = "Game Project Settings"; +} + +function ESettingsWindow::toggleEditorSettings(%this) +{ + %this.ToggleVisibility(); + + %count = EditorSettingsPageList.count(); + for(%i=0; %i < %count; %i++) + { + %settingsPageText = EditorSettingsPageList.getValue(%i); + ESettingsWindowList.addRow( %i, %settingsPageText ); + } + ESettingsWindowList.sort(0); + + ESettingsWindowList.setSelectedById( 1 ); + + %this.mode = "Editor"; + ESettingsWindow.text = "Editor Settings"; +} + +function ESettingsWindow::addEditorSettingsPage(%this, %settingsPageName, %settingsPageText) +{ + EditorSettingsPageList.add(%settingsPageName, %settingsPageText); +} + +function ESettingsWindow::addGameSettingsPage(%this, %settingsPageName, %settingsPageText) +{ + GameSettingsPageList.add(%settingsPageName, %settingsPageText); } //----------------------------------------------------------------------------- @@ -79,10 +121,49 @@ function ESettingsWindow::addSettingsPage(%this, %settingsPageName, %settingsPag function ESettingsWindowList::onSelect( %this, %id, %text ) { SettingsInspector.clearFields(); - %pageName = SettingsPageList.getKey(SettingsPageList.getIndexFromValue(%text)); + + if(ESettingsWindow.mode $= "Editor") + %pageName = EditorSettingsPageList.getKey(EditorSettingsPageList.getIndexFromValue(%text)); + else + %pageName = GameSettingsPageList.getKey(GameSettingsPageList.getIndexFromValue(%text)); + eval("ESettingsWindow.get" @ %pageName @ "Settings();"); } +//Read/write field functions +function SettingsInspector::addSettingsField(%this, %settingsFieldName, %labelText, %fieldType, %tooltip, %fieldData) +{ + %moddedSettingsFieldName = strreplace(%settingsFieldName, "/", "-"); + + if(ESettingsWindow.mode $= "Editor") + %this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", EditorSettings.value(%settingsFieldName), %fieldData, "changeEditorSetting"); + else + %this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", ProjectSettings.value(%settingsFieldName), %fieldData, "changeEditorSetting"); +} + +function SettingsInspector::changeEditorSetting(%this, %varName, %value) +{ + %varName = strreplace(%varName, "-", "/"); + + echo("Set " @ %varName @ " to be " @ %value); + + if(ESettingsWindow.mode $= "Editor") + EditorSettings.setValue(%varName, %value); + else + ProjectSettings.setValue(%varName, %value); + + //%id = ESettingsWindowList.getSelectedRow(); + //ESettingsWindowList.setSelectedRow(%id); + + if(ESettingsWindow.mode $= "Editor") + %success = EditorSettings.write(); + else + %success = ProjectSettings.write(); +} + +// +// COMMON EDITOR SETTINGS +// function ESettingsWindow::getAxisSettings(%this) { SettingsInspector.startGroup("Gizmo"); @@ -182,21 +263,89 @@ function ESettingsWindow::getShapeEditorSettings(%this) SettingsInspector.endGroup(); } -//Read/write field functions -function SettingsInspector::addSettingsField(%this, %settingsFieldName, %labelText, %fieldType, %tooltip, %fieldData) +function ESettingsWindow::getThemeSettings(%this) { - %moddedSettingsFieldName = strreplace(%settingsFieldName, "/", "-"); - %this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", EditorSettings.value(%settingsFieldName), %fieldData, "changeEditorSetting"); -} + SettingsInspector.startGroup("Colors"); + SettingsInspector.addSettingsField("Theme/headerColor", "Headerbar Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/windowBackgroundColor", "Window Background Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/tabsColor", "Tabs Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/tabsHLColor", "Tabs Highlight Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/tabsSELColor", "Tabs Selected Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/dividerDarkColor", "Divider Dark Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/dividerMidColor", "Divider Mid Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/dividerLightColor", "Divider Light Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/headerTextColor", "Header Text Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/fieldTextColor", "Field Text Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/fieldTextHLColor", "Field Text Highlight Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/fieldTextSELColor", "Field Text Selected Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/fieldBGColor", "Field Background Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/fieldBGHLColor", "Field Background Highlight Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/fieldBGSELColor", "Field Background Selected Color", "ColorI", ""); + + SettingsInspector.addSettingsField("Theme/tooltipBGColor", "Tooltip Background Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/tooltipTextColor", "Tooltip Text Highlight Color", "ColorI", ""); + SettingsInspector.addSettingsField("Theme/tooltipDivColor", "Tooltip Divider Color", "ColorI", ""); + SettingsInspector.endGroup(); +} +// +// COMMON GAME SETTINGS +// +function ESettingsWindow::getGameGeneralSettings(%this) +{ + SettingsInspector.startGroup("General"); + SettingsInspector.addSettingsField("General/ProjectName", "Project Name", "string", ""); + SettingsInspector.endGroup(); +} -function SettingsInspector::changeEditorSetting(%this, %varName, %value) +function ESettingsWindow::getPathsSettings(%this) { - %varName = strreplace(%varName, "-", "/"); + SettingsInspector.startGroup("Paths"); + SettingsInspector.addSettingsField("Paths/splashImagePath", "Splash Image", "filename", ""); + SettingsInspector.addSettingsField("Paths/iconImagePath", "Icon Image", "filename", ""); + SettingsInspector.addSettingsField("Paths/missingTexturePath", "Missing Texture Image", "filename", ""); + SettingsInspector.addSettingsField("Paths/noMaterialPath", "No Material Image", "filename", ""); + SettingsInspector.addSettingsField("Paths/errorMaterialMath", "Error Material Image", "filename", ""); + SettingsInspector.endGroup(); +} + +function ESettingsWindow::getUISettings(%this) +{ + SettingsInspector.startGroup("UI"); + SettingsInspector.addSettingsField("UI/playGUIName", "Play GUI Name", "string", ""); + SettingsInspector.addSettingsField("UI/mainMenuName", "Main Menu GUI Name", "string", ""); + SettingsInspector.endGroup(); +} + +function ESettingsWindow::getAssetManagementSettings(%this) +{ + SettingsInspector.startGroup("Modules"); + SettingsInspector.addSettingsField("AssetManagement/Modules/coreModulePath", "Core Module Path", "string", ""); + SettingsInspector.addSettingsField("AssetManagement/Modules/gameDataModulePath", "Game Data Module Path", "string", ""); + SettingsInspector.addSettingsField("AssetManagement/Modules/moduleExtension", "Module Extension", "string", ""); + SettingsInspector.endGroup(); - echo("Set " @ %varName @ " to be " @ %value); - - EditorSettings.setValue(%varName, %value); - - %id = ESettingsWindowList.getSelectedRow(); - ESettingsWindowList.setSelectedRow(%id); -} \ No newline at end of file + SettingsInspector.startGroup("Assets"); + SettingsInspector.addSettingsField("AssetManagement/Assets/assetExtension", "Asset Extension", "string", ""); + SettingsInspector.addSettingsField("AssetManagement/Assets/datablockCaching", "Cache Datablocks", "bool", ""); + //SettingsInspector.addSettingsField("AssetManagement/Assets/moduleExtension", "Module Extension", "string", ""); + SettingsInspector.endGroup(); +} + +function ESettingsWindow::getGameplaySettings(%this) +{ + SettingsInspector.startGroup("Game Modes"); + SettingsInspector.addSettingsField("Gameplay/GameModes/defaultModeName", "Default Gamemode Name", "string", ""); + SettingsInspector.endGroup(); +} + +function ESettingsWindow::getGameOptionsSettings(%this) +{ + SettingsInspector.startGroup("Game Modes"); + SettingsInspector.addSettingsField("Gameplay/GameModes/defaultModeName", "Default Gamemode Name", "string", ""); + SettingsInspector.endGroup(); +} \ No newline at end of file diff --git a/Templates/BaseGame/game/tools/gui/images/button.png b/Templates/BaseGame/game/tools/gui/images/button.png index 1c7361e25..79c3e391b 100644 Binary files a/Templates/BaseGame/game/tools/gui/images/button.png and b/Templates/BaseGame/game/tools/gui/images/button.png differ diff --git a/Templates/BaseGame/game/tools/gui/images/tab.png b/Templates/BaseGame/game/tools/gui/images/tab.png index 76080d74d..b7b7c9871 100644 Binary files a/Templates/BaseGame/game/tools/gui/images/tab.png and b/Templates/BaseGame/game/tools/gui/images/tab.png differ diff --git a/Templates/BaseGame/game/tools/gui/images/window.png b/Templates/BaseGame/game/tools/gui/images/window.png index 4d264bb24..9aff5d276 100644 Binary files a/Templates/BaseGame/game/tools/gui/images/window.png and b/Templates/BaseGame/game/tools/gui/images/window.png differ diff --git a/Templates/BaseGame/game/tools/gui/messageBoxes/messageBoxOKCancelDetailsDlg.ed.gui b/Templates/BaseGame/game/tools/gui/messageBoxes/messageBoxOKCancelDetailsDlg.ed.gui index bf746ea09..c6c95a821 100644 --- a/Templates/BaseGame/game/tools/gui/messageBoxes/messageBoxOKCancelDetailsDlg.ed.gui +++ b/Templates/BaseGame/game/tools/gui/messageBoxes/messageBoxOKCancelDetailsDlg.ed.gui @@ -99,7 +99,7 @@ }; new GuiScrollCtrl(MBOKCancelDetailsScroll) { canSaveDynamicFields = "0"; - Profile = "GuiScrollProfile"; + Profile = "ToolsGuiScrollProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "8 115"; diff --git a/Templates/BaseGame/game/tools/gui/profiles.ed.cs b/Templates/BaseGame/game/tools/gui/profiles.ed.cs index bb750611c..18bbabf42 100644 --- a/Templates/BaseGame/game/tools/gui/profiles.ed.cs +++ b/Templates/BaseGame/game/tools/gui/profiles.ed.cs @@ -38,26 +38,26 @@ new GuiControlProfile (ToolsGuiDefaultProfile) // fill color opaque = true; - fillColor = "50 50 50"; - fillColorHL = "91 101 116"; - fillColorSEL = "91 101 116"; - fillColorNA = "255 0 255 "; + fillColor = EditorSettings.value("Theme/tabsColor"); + fillColorHL = EditorSettings.value("Theme/tabsGLColor"); + fillColorSEL = EditorSettings.value("Theme/tabsSELColor"); + fillColorNA = EditorSettings.value("Theme/tabsSELColor"); // border color border = 0; - borderColor = "34 34 34"; - borderColorHL = "91 101 116"; - borderColorNA = "32 32 32"; + borderColor = EditorSettings.value("Theme/dividerDarkColor"); + borderColorHL = EditorSettings.value("Theme/dividerMidColor"); + borderColorNA = EditorSettings.value("Theme/dividerLightColor"); // font fontType = "Noto Sans"; fontSize = 14; fontCharset = ANSI; - fontColor = "215 215 215"; - fontColorHL = "215 215 215"; - fontColorNA = "215 215 215"; - fontColorSEL= "255 255 255"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); + fontColorSEL= EditorSettings.value("Theme/fieldTextSELColor"); // bitmap information bitmap = ""; @@ -118,15 +118,15 @@ if( !isObject( ToolsGuiToolTipProfile ) ) new GuiControlProfile (ToolsGuiToolTipProfile) { // fill color - fillColor = "255 255 255"; + fillColor = EditorSettings.value("Theme/tooltipBGColor"); // border color - borderColor = "0 0 0"; + borderColor = EditorSettings.value("Theme/tooltipDivColor"); // font fontType = "Noto Sans"; fontSize = 14; - fontColor = "24 24 24"; + fontColor = EditorSettings.value("Theme/tooltipTextColor"); category = "Tools"; }; @@ -141,7 +141,7 @@ new GuiControlProfile( ToolsGuiModelessDialogProfile ) if( !isObject( ToolsGuiFrameSetProfile ) ) new GuiControlProfile (ToolsGuiFrameSetProfile) { - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); borderColor = "246 245 244"; border = 1; opaque = true; @@ -154,11 +154,11 @@ new GuiControlProfile (ToolsGuiWindowProfile) { opaque = false; border = 1; - fillColor = EditorSettings.value("WorldEditor/Theme/windowTitleBGColor"); - fillColorHL = EditorSettings.value("WorldEditor/Theme/windowTitleBGHLColor"); - fillColorNA = EditorSettings.value("WorldEditor/Theme/windowTitleBGNAColor"); - fontColor = EditorSettings.value("WorldEditor/Theme/windowTitleFontColor"); - fontColorHL = EditorSettings.value("WorldEditor/Theme/windowTitleFontHLColor"); + fillColor = EditorSettings.value("Theme/tabsColor"); + fillColorHL = EditorSettings.value("Theme/tabsColor"); + fillColorNA = EditorSettings.value("Theme/tabsColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/headerTextColor"); bevelColorHL = "255 255 255"; bevelColorLL = "0 0 0"; text = "untitled"; @@ -186,15 +186,16 @@ new GuiControlProfile (ToolsGuiWindowCollapseProfile : ToolsGuiWindowProfile) if( !isObject( ToolsGuiTextProfile ) ) new GuiControlProfile (ToolsGuiTextProfile) { + opaque = true; justify = "left"; - fontColor = "185 185 185"; + fontColor = EditorSettings.value("Theme/headerTextColor"); category = "Tools"; }; if( !isObject( ToolsGuiTextBoldCenterProfile ) ) new GuiControlProfile (ToolsGuiTextBoldCenterProfile : ToolsGuiTextProfile) { - fontColor = "165 165 165"; + fontColor = EditorSettings.value("Theme/headerTextColor"); fontType = "Noto Sans Bold"; fontSize = 16; justify = "center"; @@ -218,7 +219,7 @@ new GuiControlProfile (ToolsGuiTextCenterProfile : ToolsGuiTextProfile) if( !isObject( ToolsGuiInspectorTitleTextProfile ) ) new GuiControlProfile (ToolsGuiInspectorTitleTextProfile) { - fontColor = "100 100 100"; + fontColor = EditorSettings.value("Theme/headerTextColor"); category = "Tools"; }; @@ -245,12 +246,12 @@ new GuiControlProfile( ToolsGuiMLTextProfile ) if( !isObject( ToolsGuiTextArrayProfile ) ) new GuiControlProfile( ToolsGuiTextArrayProfile : ToolsGuiTextProfile ) { - fontColor = "165 165 165"; - fontColorHL = "215 215 215"; - fontColorSEL = "215 215 215"; - fillColor = "200 200 200"; - fillColorHL = "228 228 235"; - fillColorSEL = "200 200 200"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor"); + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor"); + fillColorSEL = EditorSettings.value("Theme/fieldBGSELColor"); border = false; category = "Tools"; }; @@ -272,11 +273,11 @@ new GuiControlProfile( ToolsGuiTextEditProfile ) border = -2; // fix to display textEdit img //borderWidth = "1"; // fix to display textEdit img //borderColor = "100 100 100"; - fillColor = "42 42 42 0"; - fillColorHL = "91 101 116"; - fontColor = "215 215 215"; - fontColorHL = "115 115 115"; - fontColorSEL = "98 100 137"; + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor"); + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor"); fontColorNA = "200 200 200"; textOffset = "4 2"; autoSizeWidth = false; @@ -325,9 +326,9 @@ new GuiControlProfile( ToolsGuiButtonProfile ) { opaque = true; border = true; - fontColor = "165 165 165"; - fontColorHL = "215 215 215"; - fontColorNA = "200 200 200"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fixedExtent = false; justify = "center"; canKeyFocus = false; @@ -348,9 +349,9 @@ new GuiControlProfile( ToolsGuiIconButtonProfile ) { opaque = true; border = true; - fontColor = "165 165 165"; - fontColorHL = "215 215 215"; - fontColorNA = "200 200 200"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fixedExtent = false; justify = "center"; canKeyFocus = false; @@ -371,10 +372,10 @@ new GuiControlProfile(ToolsGuiEditorTabPage) { opaque = true; border = false; - fillColor = "48 48 48"; - fontColor = "215 215 215"; - fontColorHL = "150 150 150"; - borderColor = "34 34 34"; + fillColor = EditorSettings.value("Theme/tabsColor"); + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); fixedExtent = false; justify = "left"; canKeyFocus = false; @@ -387,13 +388,13 @@ if( !isObject( ToolsGuiCheckBoxProfile ) ) new GuiControlProfile( ToolsGuiCheckBoxProfile ) { opaque = false; - fillColor = "232 232 232"; + fillColor = EditorSettings.value("Theme/fieldBGColor"); border = false; - borderColor = "100 100 100"; + borderColor = EditorSettings.value("Theme/dividerDarkColor"); fontSize = 14; - fontColor = "185 185 185"; - fontColorHL = "80 80 80"; - fontColorNA = "200 200 200"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fixedExtent = true; justify = "left"; bitmap = "./images/checkbox"; @@ -417,7 +418,7 @@ new GuiControlProfile( ToolsGuiCheckBoxListFlipedProfile : ToolsGuiCheckBoxProfi if( !isObject( ToolsGuiInspectorCheckBoxTitleProfile ) ) new GuiControlProfile( ToolsGuiInspectorCheckBoxTitleProfile : ToolsGuiCheckBoxProfile ){ - fontColor = "100 100 100"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); category = "Tools"; }; @@ -425,9 +426,9 @@ if( !isObject( ToolsGuiRadioProfile ) ) new GuiControlProfile( ToolsGuiRadioProfile ) { fontSize = 14; - fillColor = "232 232 232"; - fontColor = "185 185 185"; - fontColorHL = "80 80 80"; + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); fixedExtent = true; bitmap = "./images/radioButton"; hasBitmapArray = true; @@ -438,10 +439,10 @@ if( !isObject( ToolsGuiScrollProfile ) ) new GuiControlProfile( ToolsGuiScrollProfile ) { opaque = true; - fillColor = "48 48 48"; - fontColor = "215 215 215"; - fontColorHL = "150 150 150"; - borderColor = "34 34 34"; + fillColor = EditorSettings.value("Theme/tabsColor"); + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); border = true; bitmap = "./images/scrollBar"; hasBitmapArray = true; @@ -452,10 +453,9 @@ if( !isObject( ToolsGuiOverlayProfile ) ) new GuiControlProfile( ToolsGuiOverlayProfile ) { opaque = true; - fillColor = "48 48 48"; - fontColor = "215 215 215"; - fontColorHL = "255 255 255"; - fillColor = "0 0 0 100"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextGLColor"); category = "Tools"; }; @@ -478,9 +478,9 @@ new GuiControlProfile( ToolsGuiPopupMenuItemBorder : ToolsGuiButtonProfile ) { opaque = true; border = true; - fontColor = "215 215 215"; - fontColorHL = "215 215 215"; - fontColorNA = "255 255 255"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextGLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fixedExtent = false; justify = "center"; canKeyFocus = false; @@ -500,13 +500,14 @@ new GuiControlProfile( ToolsGuiPopUpMenuDefault : ToolsGuiDefaultProfile ) bitmap = "./images/scrollbar"; hasBitmapArray = true; profileForChildren = ToolsGuiPopupMenuItemBorder; - fillColor = "48 48 48";//"255 255 255";//100 - fillColorHL = "228 228 235 ";//"91 101 116"; - fillColorSEL = "98 100 137 ";//"91 101 116"; + fillColor = EditorSettings.value("Theme/fieldBGColor");//"255 255 255";//100 + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");//"91 101 116"; + fillColorSEL = EditorSettings.value("Theme/fieldBGSELColor");//"91 101 116"; // font color is black - fontColorHL = "215 215 215 ";//"215 215 215"; - fontColorSEL = "255 255 255";//"215 215 215"; - borderColor = "100 100 100"; + fontColor = EditorSettings.value("Theme/fieldTextColor");//"215 215 215"; + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");//"215 215 215"; + fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor");//"215 215 215"; + borderColor = EditorSettings.value("Theme/dividerDarkColor"); category = "Tools"; }; @@ -548,11 +549,11 @@ new GuiControlProfile( ToolsGuiPopUpMenuEditProfile : ToolsGuiPopUpMenuDefault ) if( !isObject( ToolsGuiListBoxProfile ) ) new GuiControlProfile( ToolsGuiListBoxProfile ) { - fillColorHL = "100 100 100"; - fillColorNA = "150 150 150"; - fontColor = "215 215 215"; - fontColorHL = "215 215 215"; - fontColorNA = "50 50 50"; + fillColorHL = EditorSettings.value("Theme/windowBackgroundColor"); + fillColorNA = EditorSettings.value("Theme/windowBackgroundColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); tab = true; canKeyFocus = true; @@ -562,11 +563,11 @@ new GuiControlProfile( ToolsGuiListBoxProfile ) if( !isObject( ToolsGuiTabBookProfile ) ) new GuiControlProfile( ToolsGuiTabBookProfile ) { - fillColorHL = "100 100 100"; - fillColorNA = "150 150 150"; - fontColor = "215 215 215"; - fontColorHL = "215 215 215"; - fontColorNA = "50 50 50"; + fillColorHL = EditorSettings.value("Theme/windowBackgroundColor"); + fillColorNA = EditorSettings.value("Theme/windowBackgroundColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fontType = "Noto Sans"; fontSize = 14; justify = "center"; @@ -606,7 +607,7 @@ new GuiControlProfile( ToolsGuiTreeViewProfile ) bitmap = "./images/treeView"; autoSizeHeight = true; canKeyFocus = true; - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); fillColorHL = "116 116 116"; fillColorSEL = "91 101 116"; fillColorNA = "40 40 40"; @@ -632,7 +633,7 @@ new GuiControlProfile( ToolsGuiTextPadProfile ) // Deviate from the Default opaque=true; - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); border = 0; category = "Tools"; }; @@ -686,7 +687,7 @@ singleton GuiControlProfile( GuiBackFillProfile ) singleton GuiControlProfile( GuiControlListPopupProfile ) { opaque = true; - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); fillColorHL = "91 101 116"; border = false; //borderColor = "0 0 0"; @@ -719,10 +720,10 @@ singleton GuiControlProfile( GuiInspectorButtonProfile : ToolsGuiButtonProfile ) singleton GuiControlProfile( GuiInspectorSwatchButtonProfile ) { - borderColor = "100 100 100 255"; - borderColorNA = "200 200 200 255"; - fillColorNA = "255 255 255 0"; - borderColorHL = "0 0 0 255"; + borderColor = EditorSettings.value("Theme/dividerDarkColor"); + borderColorNA = EditorSettings.value("Theme/dividerMidColor"); + fillColorNA = EditorSettings.value("Theme/fieldBGColor"); + borderColorHL = EditorSettings.value("Theme/dividerLightColor"); category = "Editor"; }; @@ -730,8 +731,8 @@ singleton GuiControlProfile( GuiInspectorTextEditProfile ) { // Transparent Background opaque = true; - fillColor = "0 0 0 0"; - fillColorHL = "91 101 116"; + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor"); // No Border (Rendered by field control) border = false; @@ -743,10 +744,10 @@ singleton GuiControlProfile( GuiInspectorTextEditProfile ) fontType = "Noto Sans"; fontSize = 14; - fontColor = "215 215 215"; - fontColorSEL = "0 140 220"; - fontColorHL = "240 240 240"; - fontColorNA = "100 100 100"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextSELColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); category = "Editor"; }; singleton GuiControlProfile( GuiDropdownTextEditProfile : ToolsGuiTextEditProfile ) @@ -765,9 +766,9 @@ singleton GuiControlProfile( GuiInspectorGroupProfile ) fontType = "Noto Sans"; fontSize = "14"; - fontColor = "215 215 215 150"; - fontColorHL = "215 215 215 220"; - fontColorNA = "128 128 128"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); justify = "left"; opaque = false; @@ -783,16 +784,16 @@ singleton GuiControlProfile( GuiInspectorGroupProfile ) singleton GuiControlProfile( GuiInspectorFieldProfile) { // fill color - opaque = false; - fillColor = "48 48 48"; - fillColorHL = "91 101 116"; - fillColorNA = "244 244 244"; + opaque = true; + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor"); + fillColorNA = EditorSettings.value("Theme/fieldBGSELColor"); // border color border = false; - borderColor = "190 190 190"; - borderColorHL = "156 156 156"; - borderColorNA = "200 200 200"; + borderColor = EditorSettings.value("Theme/dividerDarkColor"); + borderColorHL = EditorSettings.value("Theme/dividerMidColor"); + borderColorNA = EditorSettings.value("Theme/dividerLightColor"); //bevelColorHL = "255 255 255"; //bevelColorLL = "0 0 0"; @@ -801,9 +802,9 @@ singleton GuiControlProfile( GuiInspectorFieldProfile) fontType = "Noto Sans"; fontSize = 14; - fontColor = "240 240 240"; - fontColorHL = "240 240 240"; - fontColorNA = "190 190 190"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); textOffset = "10 0"; tab = true; @@ -822,15 +823,15 @@ singleton GuiControlProfile( GuiInspectorMultiFieldProfile : GuiInspectorFieldPr singleton GuiControlProfile( GuiInspectorMultiFieldDifferentProfile : GuiInspectorFieldProfile ) { border = true; - borderColor = "190 100 100"; + borderColor = EditorSettings.value("Theme/dividerMidColor"); }; singleton GuiControlProfile( GuiInspectorDynamicFieldProfile : GuiInspectorFieldProfile ) { // Transparent Background opaque = true; - fillColor = "0 0 0 0"; - fillColorHL = "91 101 116"; + fillColor = EditorSettings.value("Theme/fieldBGColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGHLColor"); // No Border (Rendered by field control) border = false; @@ -842,21 +843,21 @@ singleton GuiControlProfile( GuiInspectorDynamicFieldProfile : GuiInspectorField fontType = "Noto Sans"; fontSize = 14; - fontColor = "215 215 215"; - fontColorSEL = "0 140 220"; - fontColorHL = "240 240 240"; - fontColorNA = "100 100 100"; + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextSELColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); category = "Editor"; }; singleton GuiControlProfile( GuiRolloutProfile ) { border = 0; - borderColor = "200 200 200"; + borderColor = EditorSettings.value("Theme/dividerLightColor"); - fontColor = "240 240 240"; - fontColorHL = "240 240 240"; - fontColorNA = "190 190 190"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); hasBitmapArray = true; bitmap = "tools/editorClasses/gui/images/rollout"; @@ -894,12 +895,19 @@ singleton GuiControlProfile( GuiInspectorStackProfile ) opaque = false; border = false; category = "Editor"; + + fillColor = EditorSettings.value("Theme/tabsColor"); + fillColorHL = EditorSettings.value("Theme/tabsHLColor"); + + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); }; singleton GuiControlProfile( GuiInspectorProfile : GuiInspectorFieldProfile ) { opaque = true; - fillColor = "42 42 42 255"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); border = 0; cankeyfocus = true; tab = true; @@ -908,7 +916,7 @@ singleton GuiControlProfile( GuiInspectorProfile : GuiInspectorFieldProfile ) singleton GuiControlProfile( GuiInspectorInfoProfile : GuiInspectorFieldProfile ) { opaque = true; - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); border = 0; cankeyfocus = true; tab = true; @@ -945,7 +953,7 @@ singleton GuiControlProfile( GuiInspectorTypeFileNameProfile ) fontColorHL = "240 240 240"; fontColorNA = "215 215 215"; - fillColor = "48 48 48"; + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); fillColorHL = "91 101 116"; fillColorNA = "244 244 244"; @@ -987,7 +995,7 @@ singleton GuiControlProfile( InspectorTypeCheckboxProfile : GuiInspectorFieldPro singleton GuiControlProfile( GuiToolboxButtonProfile : ToolsGuiButtonProfile ) { justify = "center"; - fontColor = "215 215 215"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); border = 0; textOffset = "0 0"; category = "Editor"; @@ -995,10 +1003,10 @@ singleton GuiControlProfile( GuiToolboxButtonProfile : ToolsGuiButtonProfile ) singleton GuiControlProfile( GuiDirectoryTreeProfile : ToolsGuiTreeViewProfile ) { - fontColor = "240 240 240"; - fontColorSEL= "250 250 250 175"; - fillColorHL = "0 60 150"; - fontColorNA = "240 240 240"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorSEL= EditorSettings.value("Theme/fieldTextSELColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fontType = "Noto Sans"; fontSize = 14; category = "Editor"; @@ -1006,10 +1014,10 @@ singleton GuiControlProfile( GuiDirectoryTreeProfile : ToolsGuiTreeViewProfile ) singleton GuiControlProfile( GuiDirectoryFileListProfile ) { - fontColor = "240 240 240"; - fontColorSEL= "250 250 250 175"; - fillColorHL = "0 60 150"; - fontColorNA = "240 240 240"; + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorSEL= EditorSettings.value("Theme/fieldTextSELColor"); + fillColorHL = EditorSettings.value("Theme/fieldBGColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); fontType = "Noto Sans"; fontSize = 14; category = "Editor"; @@ -1035,13 +1043,17 @@ singleton GuiControlProfile( GuiInspectorFieldInfoMLTextProfile : ToolsGuiMLText border = 0; textOffset = "5 0"; category = "Editor"; + + fontColor = EditorSettings.value("Theme/fieldTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor"); }; singleton GuiControlProfile( GuiEditorScrollProfile ) { opaque = true; - fillcolor = GuiInspectorBackgroundProfile.fillColor; - borderColor = ToolsGuiDefaultProfile.borderColor; + fillcolor = EditorSettings.value("Theme/windowBackgroundColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); border = 1; bitmap = "tools/gui/images/scrollBar"; hasBitmapArray = true; @@ -1077,16 +1089,16 @@ singleton GuiControlProfile( GuiCreatorIconButtonProfile ) category = "Editor"; }; -singleton GuiControlProfile( GuiMenuBarProfile ) +singleton GuiControlProfile( ToolsGuiMenuBarProfile ) { - fillColor = "48 48 48"; - fillcolorHL = "42 42 42"; - borderColor = "30 30 30 255"; - borderColorHL = "30 30 30 255"; - fontColor = "215 215 215"; - fontColorSEL = "43 107 206"; - fontColorHL = "244 244 244"; - fontColorNA = "100 100 100"; + fillColor = EditorSettings.value("Theme/headerColor"); + fillcolorHL = EditorSettings.value("Theme/tabsSELColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); + borderColorHL = EditorSettings.value("Theme/dividerMidColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + fontColorNA = EditorSettings.value("Theme/fieldTextSELColor"); border = 0; borderThickness = 1; opaque = true; @@ -1094,3 +1106,90 @@ singleton GuiControlProfile( GuiMenuBarProfile ) category = "Editor"; bitmap = "tools/gui/images/checkbox-menubar"; }; + +singleton GuiControlProfile( ToolsMenubarProfile : ToolsGuiDefaultProfile ) +{ + bitmap = "./menubar"; + category = "Editor"; + + fillColor = EditorSettings.value("Theme/headerColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); +}; + +singleton GuiControlProfile (menubarProfile) +{ + opaque = false; + border = -2; + category = "Editor"; + + bitmap = "./menubar"; + category = "Editor"; + + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); +}; + +singleton GuiControlProfile (editorMenubarProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./editor-menubar"; + category = "Editor"; +}; +singleton GuiControlProfile (editorMenu_wBorderProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./menu-fullborder"; + category = "Editor"; +}; +singleton GuiControlProfile (inspectorStyleRolloutProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./inspector-style-rollout"; + category = "Editor"; +}; +singleton GuiControlProfile (inspectorStyleRolloutListProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./inspector-style-rollout-list"; + category = "Editor"; +}; +singleton GuiControlProfile (inspectorStyleRolloutDarkProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./inspector-style-rollout-dark"; + + fillColor = EditorSettings.value("Theme/windowBackgroundColor"); + fontColor = EditorSettings.value("Theme/headerTextColor"); + fontColorHL = EditorSettings.value("Theme/fieldTextHLColor"); + borderColor = EditorSettings.value("Theme/dividerDarkColor"); +}; +singleton GuiControlProfile (inspectorStyleRolloutInnerProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./inspector-style-rollout_inner"; + category = "Editor"; +}; +singleton GuiControlProfile (inspectorStyleRolloutNoHeaderProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./inspector-style-rollout-noheader"; + category = "Editor"; +}; +singleton GuiControlProfile (IconDropdownProfile) +{ + border = -2; + category = "Editor"; + bitmap = "./icon-dropdownbar"; + category = "Editor"; +}; \ No newline at end of file diff --git a/Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui b/Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui index cc03cbd07..173589e79 100644 --- a/Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui +++ b/Templates/BaseGame/game/tools/guiEditor/gui/guiEditor.ed.gui @@ -58,7 +58,7 @@ anchorLeft = "1"; anchorRight = "0"; isContainer = "1"; - profile = "menubarProfile"; + profile = "ToolsMenubarProfile"; horizSizing = "right"; vertSizing = "bottom"; position = "0 0"; @@ -755,7 +755,7 @@ }; new GuiControl(GuiEditorSidebar) { isContainer = "1"; - Profile = "menubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "height"; position = "798 0"; @@ -1503,7 +1503,7 @@ canSave = "1"; visible = "1"; isContainer = "1"; - profile = "menubarProfile"; + profile = "ToolsMenubarProfile"; new GuiTextCtrl( GuiEditorStatusBar ) { profile = "ToolsGuiTextProfile"; diff --git a/Templates/BaseGame/game/tools/guiEditor/scripts/guiEditorCanvas.ed.cs b/Templates/BaseGame/game/tools/guiEditor/scripts/guiEditorCanvas.ed.cs index 83317d0d8..aa0c4686f 100644 --- a/Templates/BaseGame/game/tools/guiEditor/scripts/guiEditorCanvas.ed.cs +++ b/Templates/BaseGame/game/tools/guiEditor/scripts/guiEditorCanvas.ed.cs @@ -72,7 +72,7 @@ function GuiEditCanvas::onCreateMenu(%this) extent = "1024 20"; minExtent = "320 20"; horizSizing = "width"; - profile = "GuiMenuBarProfile"; + profile = "ToolsGuiMenuBarProfile"; new PopupMenu() { diff --git a/Templates/BaseGame/game/tools/navEditor/NavEditorSettingsTab.gui b/Templates/BaseGame/game/tools/navEditor/NavEditorSettingsTab.gui index 8611ca3d1..2c3f6d22b 100644 --- a/Templates/BaseGame/game/tools/navEditor/NavEditorSettingsTab.gui +++ b/Templates/BaseGame/game/tools/navEditor/NavEditorSettingsTab.gui @@ -43,7 +43,7 @@ minExtent = "8 2"; horizSizing = "width"; vertSizing = "height"; - profile = "GuiScrollProfile"; + profile = "ToolsGuiScrollProfile"; visible = "1"; active = "1"; tooltipProfile = "GuiToolTipProfile"; diff --git a/Templates/BaseGame/game/tools/settings.xml b/Templates/BaseGame/game/tools/settings.xml index 050bbb71f..42ff2e063 100644 --- a/Templates/BaseGame/game/tools/settings.xml +++ b/Templates/BaseGame/game/tools/settings.xml @@ -1,99 +1,52 @@ - - 0 - 1 - screenCenter - 6 - WorldEditorInspectorPlugin - 40 - 50 - AssetWork_Debug.exe - - 8 - 1 - 0 - 255 - 20 - - - ../../../Documentation/Torque 3D - Script Manual.chm - http://www.garagegames.com/products/torque-3d/documentation/user - ../../../Documentation/Official Documentation.html - http://www.garagegames.com/products/torque-3d/forums - - - 1 - 1 - 1 - 1 - 1 - - - 255 255 255 100 - 0 - 51 51 51 100 - 102 102 102 100 - 1 - - - 2 - 0 - 0 - 1 - 1 - 0 - 100 - - - 48 48 48 255 - 215 215 215 255 - 180 180 180 255 - 255 255 255 255 - 50 50 50 255 - - - 0 0 255 255 - 0 255 0 255 - 255 0 0 255 - 255 255 0 255 - 100 100 100 255 - 255 255 255 255 - 255 255 0 255 - - - tools/worldEditor/images/SelectHandle - tools/worldEditor/images/LockedHandle - tools/worldEditor/images/DefaultHandle - + + 72 70 68 255 + 234 232 230 255 + 100 98 96 255 + 96 94 92 255 + 59 58 57 255 + 50 49 48 255 + 72 70 68 255 + 50 49 48 255 + 240 240 240 255 + 59 58 57 255 + 236 234 232 255 + 50 49 48 255 + 37 36 35 255 + 178 175 172 255 + 43 43 43 255 + 17 16 15 255 + 255 255 255 255 + 32 31 30 255 - 1024 768 tools/gui - - 0 - 0 - 0 - - - 1 - 1 - 1 - 1 - 8 - 2 - 1 - 0 - + 1024 768 + http://www.garagegames.com/products/torque-3d/documentation/user ../../../Documentation/Torque 3D - Script Manual.chm ../../../Documentation/Official Documentation.html - http://www.garagegames.com/products/torque-3d/documentation/user + + + 1 + 2 + 8 + 1 + 1 + 1 + 0 + 1 1 1 + + 0 + 0 + 0 + Categorized @@ -102,25 +55,98 @@ - 0 - 1 - 100 - 15 0 + 1 0.8 + 100 0.8 + 15 + 0 - 0 - 500 - 0 - 255 255 255 20 - 10 10 10 0 + 0 + 0 + 500 + 10 10 10 + 255 255 255 20 + + 0 + 50 + AssetWork_Debug.exe + 40 + screenCenter + 6 + 1 + WorldEditorInspectorPlugin + + 255 255 0 255 + 255 0 0 255 + 255 255 255 255 + 255 255 0 255 + 0 0 255 255 + 0 255 0 255 + 100 100 100 255 + + + 1 + 100 + 0 + 0 + 0 + 1 + 2 + + + 1 + 0 + 255 + 20 + 8 + + + 50 50 50 255 + 215 215 215 255 + 48 48 48 255 + 255 255 255 255 + 180 180 180 255 + + + tools/worldEditor/images/DefaultHandle + tools/worldEditor/images/SelectHandle + tools/worldEditor/images/LockedHandle + + + 1 + 1 + 1 + 1 + 1 + + + 51 51 51 100 + 0 + 255 255 255 100 + 1 + 102 102 102 100 + + + ../../../Documentation/Official Documentation.html + ../../../Documentation/Torque 3D - Script Manual.chm + http://www.garagegames.com/products/torque-3d/documentation/user + http://www.garagegames.com/products/torque-3d/forums + + + + AIPlayer + data/FPSGameplay/levels + + 5 + 25 @@ -129,7 +155,4 @@ Grid_512_Orange - - AIPlayer - diff --git a/Templates/BaseGame/game/tools/shapeEditor/gui/ShapeEditorToolbar.ed.gui b/Templates/BaseGame/game/tools/shapeEditor/gui/ShapeEditorToolbar.ed.gui index 0435e3837..ccaaf03fb 100644 --- a/Templates/BaseGame/game/tools/shapeEditor/gui/ShapeEditorToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/shapeEditor/gui/ShapeEditorToolbar.ed.gui @@ -25,7 +25,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "menubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "bottom"; Position = "0 0"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui index f860bdd42..33433fa68 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/EditorGui.ed.gui @@ -23,7 +23,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "menubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "bottom"; Position = "0 0"; @@ -313,7 +313,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "menubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "top"; Position = "0 578"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui index f57c39be7..1f15e5310 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/ToolsToolbar.ed.gui @@ -4,7 +4,7 @@ Enabled = "0"; internalName = "ToolsToolbar"; isContainer = "1"; - Profile = "editorMenubarProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "right"; VertSizing = "bottom"; Position = "0 31"; @@ -20,7 +20,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "ToolsGuiDefaultProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "bottom"; position = "4 3"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui index 79f34211d..95e48baaf 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorToolbar.ed.gui @@ -4,7 +4,7 @@ internalName = "WorldEditorToolbar"; Enabled = "1"; isContainer = "1"; - Profile = "ToolsGuiDefaultProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "right"; VertSizing = "bottom"; Position = "306 0"; @@ -21,7 +21,7 @@ canSaveDynamicFields = "0"; Enabled = "1"; isContainer = "1"; - Profile = "ToolsGuiDefaultProfile"; + Profile = "ToolsMenubarProfile"; HorizSizing = "width"; VertSizing = "bottom"; Position = "0 3"; @@ -83,7 +83,7 @@ new GuiControl(SnapToBar){ isContainer = "1"; - profile = "ToolsGuiDefaultProfile"; + profile = "ToolsMenubarProfile"; Position = "116 3"; Extent = "123 27"; Padding = "4"; @@ -296,7 +296,7 @@ new GuiControl(ToggleButtonBar){ isContainer = "1"; - profile = "ToolsGuiDefaultProfile"; + profile = "ToolsMenubarProfile"; Position = "313 3"; Extent = "65 27"; @@ -377,7 +377,7 @@ new GuiControl(ToggleNodeBar){ isContainer = "1"; - profile = "ToolsGuiDefaultProfile"; + profile = "ToolsMenubarProfile"; Position = "386 3"; Extent = "63 27"; @@ -441,7 +441,7 @@ new GuiControl(PrefabBar){ isContainer = "1"; - profile = "ToolsGuiDefaultProfile"; + profile = "ToolsMenubarProfile"; Position = "386 3"; Extent = "63 27"; visible = true; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui index cae52e378..92966857f 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/WorldEditorTreeWindow.ed.gui @@ -274,6 +274,7 @@ canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; + profile = "ToolsGuiScrollProfile"; hovertime = "1000"; Docking = "Client"; Margin = "0 0 0 0"; diff --git a/Templates/BaseGame/game/tools/worldEditor/gui/guiWorldEditorCreatorWindow.ed.gui b/Templates/BaseGame/game/tools/worldEditor/gui/guiWorldEditorCreatorWindow.ed.gui index 03a3d6d8a..31652d293 100644 --- a/Templates/BaseGame/game/tools/worldEditor/gui/guiWorldEditorCreatorWindow.ed.gui +++ b/Templates/BaseGame/game/tools/worldEditor/gui/guiWorldEditorCreatorWindow.ed.gui @@ -79,6 +79,7 @@ canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; + profile = "ToolsGuiScrollProfile"; hovertime = "1000"; Docking = "Client"; Margin = "0 0 0 0"; diff --git a/Templates/BaseGame/game/tools/worldEditor/main.cs b/Templates/BaseGame/game/tools/worldEditor/main.cs index fb985b66b..b524f00ae 100644 --- a/Templates/BaseGame/game/tools/worldEditor/main.cs +++ b/Templates/BaseGame/game/tools/worldEditor/main.cs @@ -135,7 +135,12 @@ function initializeWorldEditor() EVisibility.addOption( "Frustum Lock", "$Scene::lockCull", "" ); EVisibility.addOption( "Disable Zone Culling", "$Scene::disableZoneCulling", "" ); EVisibility.addOption( "Disable Terrain Occlusion", "$Scene::disableTerrainOcclusion", "" ); - + + EVisibility.addOption( "Probes: Attenuation", "$Probes::showAttenuation", "" ); + EVisibility.addOption( "Probes: Specular Cubemaps", "$Probes::showSpecularCubemaps", "" ); + EVisibility.addOption( "Probes: Diffuse Cubemaps", "$Probes::showDiffuseCubemaps", "" ); + EVisibility.addOption( "Probes: Contribution", "$Probes::showProbeContrib", "" ); + EVisibility.addOption( "Colorblindness: Protanopia", "$CBV_Protanopia", "toggleColorBlindnessViz" ); EVisibility.addOption( "Colorblindness: Protanomaly", "$CBV_Protanomaly", "toggleColorBlindnessViz" ); EVisibility.addOption( "Colorblindness: Deuteranopia", "$CBV_Deuteranopia", "toggleColorBlindnessViz" ); diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/lightViz.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/lightViz.cs index 574063460..1b2e5de3d 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/lightViz.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/lightViz.cs @@ -51,13 +51,11 @@ function toggleColorBufferViz( %enable ) } else if ( %enable ) { - AL_DeferredShading.disable(); AL_ColorBufferVisualize.enable(); } else if ( !%enable ) { AL_ColorBufferVisualize.disable(); - AL_DeferredShading.enable(); } } @@ -360,12 +358,7 @@ function toggleBackbufferViz( %enable ) if ( %enable $= "" ) { $AL_BackbufferVisualizeVar = AL_DeferredShading.isEnabled() ? true : false; - AL_DeferredShading.toggle(); } - else if ( %enable ) - AL_DeferredShading.disable(); - else if ( !%enable ) - AL_DeferredShading.enable(); } function toggleColorBlindnessViz( %enable ) diff --git a/Templates/BaseGame/game/tools/worldEditor/scripts/menus.ed.cs b/Templates/BaseGame/game/tools/worldEditor/scripts/menus.ed.cs index 7f87df251..43bb65ea4 100644 --- a/Templates/BaseGame/game/tools/worldEditor/scripts/menus.ed.cs +++ b/Templates/BaseGame/game/tools/worldEditor/scripts/menus.ed.cs @@ -116,7 +116,7 @@ function EditorGui::buildMenus(%this) extent = Canvas.extent.x SPC "20"; minExtent = "320 20"; horizSizing = "width"; - profile = "GuiMenuBarProfile"; + profile = "ToolsGuiMenuBarProfile"; }; // File Menu @@ -185,11 +185,12 @@ function EditorGui::buildMenus(%this) Item[9] = "Select..." TAB "" TAB "EditorGui.toggleObjectSelectionsWindow();"; item[10] = "-"; item[11] = "Audio Parameters..." TAB "" TAB "EditorGui.toggleSFXParametersWindow();"; - item[12] = "Editor Settings..." TAB "" TAB "ESettingsWindow.ToggleVisibility();"; - item[13] = "Snap Options..." TAB "" TAB "ESnapOptions.ToggleVisibility();"; - item[14] = "-"; - item[15] = "Game Options..." TAB "" TAB "Canvas.pushDialog(optionsDlg);"; - item[16] = "PostEffect Manager" TAB "" TAB "Canvas.pushDialog(PostFXManager);"; + item[12] = "Editor Settings..." TAB "" TAB "ESettingsWindow.toggleEditorSettings();"; + item[13] = "Game Settings..." TAB "" TAB "ESettingsWindow.toggleProjectSettings();"; + item[14] = "Snap Options..." TAB "" TAB "ESnapOptions.ToggleVisibility();"; + item[15] = "-"; + item[16] = "Game Options..." TAB "" TAB "Canvas.pushDialog(optionsDlg);"; + item[17] = "PostEffect Manager" TAB "" TAB "Canvas.pushDialog(PostFXManager);"; }; %this.menuBar.insert(%editMenu); diff --git a/Templates/Full/game/Full.torsion.opt b/Templates/Full/game/Full.torsion.opt index f41687c47..2e498d182 100644 --- a/Templates/Full/game/Full.torsion.opt +++ b/Templates/Full/game/Full.torsion.opt @@ -8,13 +8,11 @@ art\main.cs core\main.cs -..\..\Empty\game\core\main.cs -..\..\BaseGame\game\core\main.cs core\scripts\client\postFx\MLAA.cs core\scripts\client\postFx\ssao.cs core\scripts\client\postFx\hdr.cs core\scripts\client\postFx\dof.cs core\scripts\client\postFx\caustics.cs -..\..\..\..\..\RnDBuildTest\My Projects\RnDTest\game\modules\TheFactory\components\FakeGISpotlight.cs +tools\worldEditor\main.cs