From e47402246d555b334d730dfb12ba4f63790b788d Mon Sep 17 00:00:00 2001 From: Andrey Syrokomsky Date: Thu, 23 Jan 2014 12:59:47 +0200 Subject: [PATCH 01/75] Fixed a chaotic crash when indices or vertices of decals exceeds the fixed limits. Have an attempt work with the many (kilo)meters of decals. --- Engine/source/T3D/decal/decalManager.cpp | 46 +++++++++++++++++++----- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/Engine/source/T3D/decal/decalManager.cpp b/Engine/source/T3D/decal/decalManager.cpp index a39e4bf8d..b5631d018 100644 --- a/Engine/source/T3D/decal/decalManager.cpp +++ b/Engine/source/T3D/decal/decalManager.cpp @@ -1235,8 +1235,30 @@ void DecalManager::prepRenderImage( SceneRenderState* state ) currentBatch = &batches.last(); currentBatch->startDecal = i; currentBatch->decalCount = 1; - currentBatch->iCount = decal->mIndxCount; - currentBatch->vCount = decal->mVertCount; + + // Shrink and warning: preventing a potential crash. + currentBatch->iCount = + (decal->mIndxCount > smMaxIndices) ? smMaxIndices : decal->mIndxCount; + currentBatch->vCount = + (decal->mVertCount > smMaxVerts) ? smMaxVerts : decal->mVertCount; +#ifdef TORQUE_DEBUG + // we didn't mean send a spam to the console + static U32 countMsgIndx = 0; + if ( (decal->mIndxCount > smMaxIndices) && ((countMsgIndx++ % 1024) == 0) ) { + Con::warnf( + "DecalManager::prepRenderImage() - Shrinked indices of decal." + " Lost %u.", (decal->mIndxCount - smMaxIndices) + ); + } + static U32 countMsgVert = 0; + if ( (decal->mVertCount > smMaxVerts) && ((countMsgVert++ % 1024) == 0) ) { + Con::warnf( + "DecalManager::prepRenderImage() - Shrinked vertices of decal." + " Lost %u.", (decal->mVertCount - smMaxVerts) + ); + } +#endif + currentBatch->mat = mat; currentBatch->matInst = decal->mDataBlock->getMaterialInstance(); currentBatch->priority = decal->getRenderPriority(); @@ -1299,15 +1321,21 @@ void DecalManager::prepRenderImage( SceneRenderState* state ) { DecalInstance *dinst = mDecalQueue[j]; - for ( U32 k = 0; k < dinst->mIndxCount; k++ ) + const U32 indxCount = + (dinst->mIndxCount > currentBatch.iCount) ? + currentBatch.iCount : dinst->mIndxCount; + for ( U32 k = 0; k < indxCount; k++ ) { *( pbPtr + ioffset + k ) = dinst->mIndices[k] + voffset; } - ioffset += dinst->mIndxCount; + ioffset += indxCount; - dMemcpy( vpPtr + voffset, dinst->mVerts, sizeof( DecalVertex ) * dinst->mVertCount ); - voffset += dinst->mVertCount; + const U32 vertCount = + (dinst->mVertCount > currentBatch.vCount) ? + currentBatch.vCount : dinst->mVertCount; + dMemcpy( vpPtr + voffset, dinst->mVerts, sizeof( DecalVertex ) * vertCount ); + voffset += vertCount; // Ugly hack for ProjectedShadow! if ( (dinst->mFlags & CustomDecal) && dinst->mCustomTex != NULL ) @@ -1357,8 +1385,10 @@ void DecalManager::prepRenderImage( SceneRenderState* state ) pb->lock( &pbPtr ); // Memcpy from system to video memory. - dMemcpy( vpPtr, vertData, sizeof( DecalVertex ) * currentBatch.vCount ); - dMemcpy( pbPtr, indexData, sizeof( U16 ) * currentBatch.iCount ); + const U32 vpCount = sizeof( DecalVertex ) * currentBatch.vCount; + dMemcpy( vpPtr, vertData, vpCount ); + const U32 pbCount = sizeof( U16 ) * currentBatch.iCount; + dMemcpy( pbPtr, indexData, pbCount ); pb->unlock(); vb->unlock(); From 3c56bf3a56c499562b3b2257bcb48c5f94d52a79 Mon Sep 17 00:00:00 2001 From: rextimmy Date: Thu, 3 Jul 2014 17:56:47 +1000 Subject: [PATCH 02/75] Fix to allow parallax mapping with dxtnm textures via the red channel. --- .../source/materials/processedShaderMaterial.cpp | 6 ++---- Engine/source/shaderGen/HLSL/bumpHLSL.cpp | 12 ++++++++++-- Engine/source/terrain/hlsl/terrFeatureHLSL.cpp | 12 ++++++++++-- Templates/Empty/game/shaders/common/torque.hlsl | 15 +++++++++++++++ Templates/Full/game/shaders/common/torque.hlsl | 15 +++++++++++++++ 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/Engine/source/materials/processedShaderMaterial.cpp b/Engine/source/materials/processedShaderMaterial.cpp index 410773d7e..8a704c6e2 100644 --- a/Engine/source/materials/processedShaderMaterial.cpp +++ b/Engine/source/materials/processedShaderMaterial.cpp @@ -389,11 +389,9 @@ void ProcessedShaderMaterial::_determineFeatures( U32 stageNum, // cannot do on SM 2.0 and below. if ( shaderVersion > 2.0f ) { - // Only allow parallax if we have a normal map and - // we're not using DXTnm compression. + if ( mMaterial->mParallaxScale[stageNum] > 0.0f && - fd.features[ MFT_NormalMap ] && - !fd.features[ MFT_IsDXTnm ] ) + fd.features[ MFT_NormalMap ] ) fd.features.addFeature( MFT_Parallax ); // If not parallax then allow per-pixel specular if diff --git a/Engine/source/shaderGen/HLSL/bumpHLSL.cpp b/Engine/source/shaderGen/HLSL/bumpHLSL.cpp index 2d6dc8464..b167db102 100644 --- a/Engine/source/shaderGen/HLSL/bumpHLSL.cpp +++ b/Engine/source/shaderGen/HLSL/bumpHLSL.cpp @@ -345,8 +345,16 @@ void ParallaxFeatHLSL::processPix( Vector &componentList, Var *normalMap = getNormalMapTex(); // Call the library function to do the rest. - meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @ );\r\n", - texCoord, normalMap, texCoord, negViewTS, parallaxInfo ) ); + if(fd.features.hasFeature( MFT_IsDXTnm, getProcessIndex() )) + { + meta->addStatement( new GenOp( " @.xy += parallaxOffsetDxtnm( @, @.xy, @, @ );\r\n", + texCoord, normalMap, texCoord, negViewTS, parallaxInfo ) ); + } + else + { + meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @ );\r\n", + texCoord, normalMap, texCoord, negViewTS, parallaxInfo ) ); + } // TODO: Fix second UV maybe? diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index 6c94e0743..37ad1730d 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -456,8 +456,16 @@ void TerrainDetailMapFeatHLSL::processPix( Vector &component Var *normalMap = _getNormalMapTex(); // Call the library function to do the rest. - meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n", - inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend ) ); + if(fd.features.hasFeature( MFT_IsDXTnm, detailIndex ) ) + { + meta->addStatement( new GenOp( " @.xy += parallaxOffsetDxtnm( @, @.xy, @, @.z * @ );\r\n", + inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend ) ); + } + else + { + meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n", + inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend ) ); + } } // If this is a prepass then we skip color. diff --git a/Templates/Empty/game/shaders/common/torque.hlsl b/Templates/Empty/game/shaders/common/torque.hlsl index 3821ce693..1d253936b 100644 --- a/Templates/Empty/game/shaders/common/torque.hlsl +++ b/Templates/Empty/game/shaders/common/torque.hlsl @@ -151,6 +151,21 @@ float2 parallaxOffset( sampler2D texMap, float2 texCoord, float3 negViewTS, floa return offset; } +/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha +float2 parallaxOffsetDxtnm(sampler2D texMap, float2 texCoord, float3 negViewTS, float depthScale) +{ + float depth = tex2D(texMap, texCoord).r; + float2 offset = negViewTS.xy * (depth * depthScale); + + for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) + { + depth = (depth + tex2D(texMap, texCoord + offset).r) * 0.5; + offset = negViewTS.xy * (depth * depthScale); + } + + return offset; +} + /// The maximum value for 16bit per component integer HDR encoding. static const float HDR_RGB16_MAX = 100.0; diff --git a/Templates/Full/game/shaders/common/torque.hlsl b/Templates/Full/game/shaders/common/torque.hlsl index 3821ce693..1d253936b 100644 --- a/Templates/Full/game/shaders/common/torque.hlsl +++ b/Templates/Full/game/shaders/common/torque.hlsl @@ -151,6 +151,21 @@ float2 parallaxOffset( sampler2D texMap, float2 texCoord, float3 negViewTS, floa return offset; } +/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha +float2 parallaxOffsetDxtnm(sampler2D texMap, float2 texCoord, float3 negViewTS, float depthScale) +{ + float depth = tex2D(texMap, texCoord).r; + float2 offset = negViewTS.xy * (depth * depthScale); + + for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) + { + depth = (depth + tex2D(texMap, texCoord + offset).r) * 0.5; + offset = negViewTS.xy * (depth * depthScale); + } + + return offset; +} + /// The maximum value for 16bit per component integer HDR encoding. static const float HDR_RGB16_MAX = 100.0; From 62b5c9fcfdf16fbc896106b5c84ebf2ff58ad5db Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 14:42:28 -0800 Subject: [PATCH 03/75] Fixed issue with string replace String replace doesn't always work correctly this fixes it. --- Engine/source/console/consoleFunctions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/console/consoleFunctions.cpp b/Engine/source/console/consoleFunctions.cpp index a5ea49f33..82bd5c566 100644 --- a/Engine/source/console/consoleFunctions.cpp +++ b/Engine/source/console/consoleFunctions.cpp @@ -480,7 +480,7 @@ DefineConsoleFunction( strreplace, const char*, ( const char* source, const char if(!scan) { dStrcpy(ret + dstp, source + scanp); - break; + return ret; } U32 len = scan - (source + scanp); dStrncpy(ret + dstp, source + scanp, len); From d5a6e15cfe9770be6900da3e9b5ec81e05e89e21 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 14:43:02 -0800 Subject: [PATCH 04/75] Fixed comment fixed an incomplete comment/documentation for displaySplashWindow. --- Engine/source/console/consoleFunctions.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Engine/source/console/consoleFunctions.cpp b/Engine/source/console/consoleFunctions.cpp index 82bd5c566..a721700ac 100644 --- a/Engine/source/console/consoleFunctions.cpp +++ b/Engine/source/console/consoleFunctions.cpp @@ -1598,6 +1598,7 @@ DefineEngineFunction( gotoWebPage, void, ( const char* address ),, DefineEngineFunction( displaySplashWindow, bool, (const char* path), ("art/gui/splash.bmp"), "Display a startup splash window suitable for showing while the engine still starts up.\n\n" "@note This is currently only implemented on Windows.\n\n" + "@param path relative path to splash screen image to display.\n" "@return True if the splash window could be successfully initialized.\n\n" "@ingroup Platform" ) { From 42126937e6c81c8c956c5f82d1c76cbfec5046dc Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 14:53:20 -0800 Subject: [PATCH 05/75] Fixed warning Fixed a compile warning about casting. --- Engine/source/console/typeValidators.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/console/typeValidators.cpp b/Engine/source/console/typeValidators.cpp index 0b679a2ec..11249daf7 100644 --- a/Engine/source/console/typeValidators.cpp +++ b/Engine/source/console/typeValidators.cpp @@ -101,7 +101,7 @@ void Point3NormalizeValidator::validateType(SimObject *object, void *typePtr) namespace CommonValidators { FRangeValidator PositiveFloat(0.0f, F32_MAX); - FRangeValidator PositiveNonZeroFloat(F32( POINT_EPSILON ) , F32_MAX); + FRangeValidator PositiveNonZeroFloat((F32)POINT_EPSILON, F32_MAX); FRangeValidator NormalizedFloat(0.0f, 1.0f); Point3NormalizeValidator NormalizedPoint3(1.0f); }; From ac0ba277536a69adaf12a6e23e81b86e8047b376 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 15:18:00 -0800 Subject: [PATCH 06/75] Fixed degree symbol not displaying Fixed bug with degree symbol not displaying correctly in torque thanks to the forums: http://www.garagegames.com/community/forums/viewthread/125190/1#comment-804996 --- Engine/source/gfx/gFont.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Engine/source/gfx/gFont.cpp b/Engine/source/gfx/gFont.cpp index 7c838915d..4d6478541 100644 --- a/Engine/source/gfx/gFont.cpp +++ b/Engine/source/gfx/gFont.cpp @@ -568,6 +568,7 @@ void GFont::wrapString(const UTF8 *txt, U32 lineWidth, Vector &startLineOff for (U32 i = 0; i < len;) { + U32 wide = 0; startLine = i; startLineOffset.push_back(startLine); @@ -584,6 +585,10 @@ void GFont::wrapString(const UTF8 *txt, U32 lineWidth, Vector &startLineOff else if(isValidChar(txt[i])) { lineStrWidth += getCharInfo(txt[i]).xIncrement; + if(txt[i] < 0) // symbols which code > 127 + { + wide++; i++; + } if( lineStrWidth > lineWidth ) { needsNewLine = true; @@ -595,7 +600,7 @@ void GFont::wrapString(const UTF8 *txt, U32 lineWidth, Vector &startLineOff if (!needsNewLine) { // we are done! - lineLen.push_back(i - startLine); + lineLen.push_back(i - startLine - wide); return; } @@ -628,7 +633,7 @@ void GFont::wrapString(const UTF8 *txt, U32 lineWidth, Vector &startLineOff } } - lineLen.push_back(j - startLine); + lineLen.push_back(j - startLine - wide); i = j; // Now we need to increment through any space characters at the From 1903413a5494362c54193f76e86471794dc107ee Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 15:48:11 -0800 Subject: [PATCH 07/75] Removed unused variables Removed unused variables. --- Engine/source/gui/containers/guiContainer.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/Engine/source/gui/containers/guiContainer.cpp b/Engine/source/gui/containers/guiContainer.cpp index 45bc09d93..2429014c4 100644 --- a/Engine/source/gui/containers/guiContainer.cpp +++ b/Engine/source/gui/containers/guiContainer.cpp @@ -128,9 +128,6 @@ bool GuiContainer::reOrder(SimObject* obj, SimObject* target) bool GuiContainer::resize( const Point2I &newPosition, const Point2I &newExtent ) { - RectI oldBounds = getBounds(); - Point2I minExtent = getMinExtent(); - if( !Parent::resize( newPosition, newExtent ) ) return false; From fe544597e3ce12dcac42797b656551db309f6e77 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 15:52:10 -0800 Subject: [PATCH 08/75] onScroll not always called onScroll callback wasn't always being called, fixed that. --- Engine/source/gui/containers/guiScrollCtrl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Engine/source/gui/containers/guiScrollCtrl.cpp b/Engine/source/gui/containers/guiScrollCtrl.cpp index 91e86a770..97de975bf 100644 --- a/Engine/source/gui/containers/guiScrollCtrl.cpp +++ b/Engine/source/gui/containers/guiScrollCtrl.cpp @@ -493,6 +493,8 @@ void GuiScrollCtrl::calcThumbs() void GuiScrollCtrl::scrollDelta(S32 deltaX, S32 deltaY) { scrollTo(mChildRelPos.x + deltaX, mChildRelPos.y + deltaY); + + onScroll_callback(); } //----------------------------------------------------------------------------- From 789cc47b67676178cc2fc9ed3ac9eff49dde989c Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 29 Jan 2015 15:58:41 -0800 Subject: [PATCH 09/75] Fixed null profile crash If the profile was null it would crash. --- Engine/source/gui/containers/guiTabBookCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/containers/guiTabBookCtrl.cpp b/Engine/source/gui/containers/guiTabBookCtrl.cpp index d4dd4db43..6b77209aa 100644 --- a/Engine/source/gui/containers/guiTabBookCtrl.cpp +++ b/Engine/source/gui/containers/guiTabBookCtrl.cpp @@ -622,7 +622,7 @@ S32 GuiTabBookCtrl::calculatePageTabWidth( GuiTabPageCtrl *page ) const char* text = page->getText(); - if( !text || dStrlen(text) == 0 || mProfile->mFont == NULL ) + if( !text || dStrlen(text) == 0 || mProfile == NULL || mProfile->mFont == NULL ) return mMinTabWidth; GFont *font = mProfile->mFont; From 722008570a9e2141f6b3b5ad7744b474f8ab2751 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 12:02:56 -0800 Subject: [PATCH 10/75] Fixed bug with console expression result Fixed a bug with the result of a console expression not always displaying. --- Engine/source/gui/controls/guiConsoleTextCtrl.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Engine/source/gui/controls/guiConsoleTextCtrl.cpp b/Engine/source/gui/controls/guiConsoleTextCtrl.cpp index 617099646..f7242e3a2 100644 --- a/Engine/source/gui/controls/guiConsoleTextCtrl.cpp +++ b/Engine/source/gui/controls/guiConsoleTextCtrl.cpp @@ -115,6 +115,9 @@ void GuiConsoleTextCtrl::onPreRender() { mResult = Con::evaluatef( "$guiConsoleTextCtrlTemp = %s;", mConsoleExpression.c_str() ); + //Fixes a bug with the above not always grabbing the console text. + mResult = Con::getVariable("$guiConsoleTextCtrlTemp"); + // Of the resulting string we will be printing, // Find the number of lines and length of each. mProfile->mFont->wrapString( mResult, U32_MAX, mStartLineOffset, mLineLen ); From b11bc8e93a95afde4bc4cbbcaeb1fffe17272b41 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 12:17:38 -0800 Subject: [PATCH 11/75] Fixed some positioning bugs Fixed some cursor positioning bugs in the MLTextCtrl. Also removed parameters from function that doesn't actually take parameters. --- Engine/source/gui/controls/guiMLTextCtrl.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Engine/source/gui/controls/guiMLTextCtrl.cpp b/Engine/source/gui/controls/guiMLTextCtrl.cpp index 4233190c6..62141540a 100644 --- a/Engine/source/gui/controls/guiMLTextCtrl.cpp +++ b/Engine/source/gui/controls/guiMLTextCtrl.cpp @@ -168,7 +168,7 @@ DefineEngineMethod( GuiMLTextCtrl, scrollToTag, void, (S32 tagID),, object->scrollToTag( tagID ); } -DefineEngineMethod( GuiMLTextCtrl, scrollToTop, void, ( S32 param1, S32 param2),, +DefineEngineMethod( GuiMLTextCtrl, scrollToTop, void, (),, "@brief Scroll to the top of the text.\n\n" "@tsexample\n" "// Inform GuiMLTextCtrl object to scroll to its top\n" @@ -631,7 +631,7 @@ bool GuiMLTextCtrl::setCursorPosition(const S32 newPosition) mCursorPosition = 0; return true; } - else if (newPosition >= mTextBuffer.length()) + else if (newPosition >= mTextBuffer.length() - 1) { mCursorPosition = mTextBuffer.length(); return true; @@ -669,11 +669,11 @@ void GuiMLTextCtrl::getCursorPositionAndColor(Point2I &cursorTop, Point2I &curso { S32 x = 0; S32 y = 0; - S32 height = mProfile->mFont->getHeight(); + S32 height = mProfile && mProfile->mFont ? mProfile->mFont->getHeight() : 0; color = mProfile->mCursorColor; for(Line *walk = mLineList; walk; walk = walk->next) { - if ((mCursorPosition <= walk->textStart + walk->len) || (walk->next == NULL)) + if ((mCursorPosition < walk->textStart + walk->len) || (walk->next == NULL)) { // it's in the atoms on this line... y = walk->y; @@ -768,7 +768,7 @@ void GuiMLTextCtrl::onMouseDown(const GuiEvent& event) mSelectionAnchorDropped = event.mousePoint; if (mSelectionAnchor < 0) mSelectionAnchor = 0; - else if (mSelectionAnchor >= mTextBuffer.length()) + else if (mSelectionAnchor >= mTextBuffer.length() - 1) mSelectionAnchor = mTextBuffer.length(); mVertMoveAnchorValid = false; From 77b9600303ac952cd3a5153ce2cbf5809d5034b3 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 13:54:56 -0800 Subject: [PATCH 12/75] IsActive fix & code cleanup Now if a text edit is set to inactive you can't mouse down. changed code to use setVariable so code is a bit cleaner. Fixed some small spacing issues. --- Engine/source/gui/controls/guiTextEditCtrl.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Engine/source/gui/controls/guiTextEditCtrl.cpp b/Engine/source/gui/controls/guiTextEditCtrl.cpp index c451400b7..a68104bcd 100644 --- a/Engine/source/gui/controls/guiTextEditCtrl.cpp +++ b/Engine/source/gui/controls/guiTextEditCtrl.cpp @@ -212,8 +212,7 @@ void GuiTextEditCtrl::execConsoleCallback() Parent::execConsoleCallback(); // Update the console variable: - if ( mConsoleVariable[0] ) - Con::setVariable( mConsoleVariable, mTextBuffer.getPtr8() ); + setVariable(mTextBuffer.getPtr8()); } void GuiTextEditCtrl::updateHistory( StringBuffer *inTxt, bool moveIndex ) @@ -374,6 +373,8 @@ S32 GuiTextEditCtrl::calculateCursorPos( const Point2I &globalPos ) void GuiTextEditCtrl::onMouseDown( const GuiEvent &event ) { + if(!isActive()) + return; mDragHit = false; // If we have a double click, select all text. Otherwise From d0972c9be15e84c7bb9e511ef15824612a7b79da Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:27:56 -0800 Subject: [PATCH 13/75] Small crash fix Crash fix when font isn't set. --- Engine/source/gui/core/guiControl.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Engine/source/gui/core/guiControl.cpp b/Engine/source/gui/core/guiControl.cpp index 86dfbee6e..56861dc77 100644 --- a/Engine/source/gui/core/guiControl.cpp +++ b/Engine/source/gui/core/guiControl.cpp @@ -602,6 +602,8 @@ void GuiControl::setUpdate() void GuiControl::renderJustifiedText(Point2I offset, Point2I extent, const char *text) { GFont *font = mProfile->mFont; + if(!font) + return; S32 textWidth = font->getStrWidthPrecise((const UTF8*)text); U32 textHeight = font->getHeight(); From ae706b240772a80fba796c8dbb1e857c74956cce Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:40:51 -0800 Subject: [PATCH 14/75] Removed unused parameters I am not sure why there were parameters for this method when they weren't being used (perhaps leftover from before?), but I removed them. --- Engine/source/gui/editor/guiMenuBar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/editor/guiMenuBar.cpp b/Engine/source/gui/editor/guiMenuBar.cpp index 3ecf7960c..c3ba8818f 100644 --- a/Engine/source/gui/editor/guiMenuBar.cpp +++ b/Engine/source/gui/editor/guiMenuBar.cpp @@ -159,7 +159,7 @@ IMPLEMENT_CALLBACK( GuiMenuBar, onSubmenuSelect, void, ( const char* submenuId, // console methods //------------------------------------------------------------------------------ -DefineEngineMethod( GuiMenuBar, clearMenus, void, ( S32 param1, S32 param2),, +DefineEngineMethod( GuiMenuBar, clearMenus, void, (),, "@brief Clears all the menus from the menu bar.\n\n" "@tsexample\n" "// Inform the GuiMenuBar control to clear all menus from itself.\n" From f039c98f0827b24d5a0d9d895e6808328295fc12 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:46:26 -0800 Subject: [PATCH 15/75] Fixed bug with dash character in menu item Fixed a bug where if the text for a menu item started with - then it would auto be disabled. --- Engine/source/gui/editor/guiMenuBar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/editor/guiMenuBar.cpp b/Engine/source/gui/editor/guiMenuBar.cpp index c3ba8818f..56eec13c0 100644 --- a/Engine/source/gui/editor/guiMenuBar.cpp +++ b/Engine/source/gui/editor/guiMenuBar.cpp @@ -1018,7 +1018,7 @@ void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, const char *text, newMenuItem->checkGroup = checkGroup; newMenuItem->nextMenuItem = NULL; newMenuItem->acceleratorIndex = 0; - newMenuItem->enabled = text[0] != '-'; + newMenuItem->enabled = (dStrlen(text) > 1 || text[0] != '-'); newMenuItem->visible = true; newMenuItem->bitmapIndex = -1; From 2458ecad9b018cfcfce8bbafc3c29581e5574f40 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:48:05 -0800 Subject: [PATCH 16/75] Fixed bug with bad index Fixed a crash that would occur if an incorrect index was passed to renderNodeName or renderNodeAxes. --- Engine/source/gui/editor/guiShapeEdPreview.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Engine/source/gui/editor/guiShapeEdPreview.cpp b/Engine/source/gui/editor/guiShapeEdPreview.cpp index 098ff38f3..548634eeb 100644 --- a/Engine/source/gui/editor/guiShapeEdPreview.cpp +++ b/Engine/source/gui/editor/guiShapeEdPreview.cpp @@ -1603,6 +1603,8 @@ void GuiShapeEdPreview::renderNodes() const void GuiShapeEdPreview::renderNodeAxes(S32 index, const ColorF& nodeColor) const { + if(mModel->mNodeTransforms.size() <= index || index < 0) + return; const Point3F xAxis( 1.0f, 0.15f, 0.15f ); const Point3F yAxis( 0.15f, 1.0f, 0.15f ); const Point3F zAxis( 0.15f, 0.15f, 1.0f ); @@ -1626,6 +1628,8 @@ void GuiShapeEdPreview::renderNodeAxes(S32 index, const ColorF& nodeColor) const void GuiShapeEdPreview::renderNodeName(S32 index, const ColorF& textColor) const { + if(index < 0 || index >= mModel->getShape()->nodes.size() || index >= mProjectedNodes.size()) + return; const TSShape::Node& node = mModel->getShape()->nodes[index]; const String& nodeName = mModel->getShape()->getName( node.nameIndex ); From c85b5b99991be4984b5715bdedc2759f818bcc4d Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:54:01 -0800 Subject: [PATCH 17/75] Fixed odd callback bugs Fixed bugs with callbacks, I couldn't seem to use U8 correctly in script for some reason, but S32 works. I may have needed to use some extra operators or something maybe, it was so long ago I can't remember what I got in script as it was so long ago. --- .../source/gui/utility/guiMouseEventCtrl.cpp | 18 +++++++++--------- Engine/source/gui/utility/guiMouseEventCtrl.h | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Engine/source/gui/utility/guiMouseEventCtrl.cpp b/Engine/source/gui/utility/guiMouseEventCtrl.cpp index cde0359e9..e0df98af0 100644 --- a/Engine/source/gui/utility/guiMouseEventCtrl.cpp +++ b/Engine/source/gui/utility/guiMouseEventCtrl.cpp @@ -46,7 +46,7 @@ ConsoleDocClass( GuiMouseEventCtrl, ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDown, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDown, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse is pressed down while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -70,7 +70,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDown, void, ( U8 modifier, Point2I "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseUp, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseUp, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse is released while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -94,7 +94,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseUp, void, ( U8 modifier, Point2I m "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseMove, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseMove, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse is moved (without dragging) while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -118,7 +118,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseMove, void, ( U8 modifier, Point2I "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDragged, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDragged, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse is dragged while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -142,7 +142,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseDragged, void, ( U8 modifier, Poi "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseEnter, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseEnter, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse enters this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -166,7 +166,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseEnter, void, ( U8 modifier, Point "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseLeave, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseLeave, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse leaves this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -190,7 +190,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onMouseLeave, void, ( U8 modifier, Point "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseDown, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseDown, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the right mouse button is pressed while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -214,7 +214,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseDown, void, ( U8 modifier, P "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseUp, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseUp, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the right mouse button is released while in this control.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" @@ -238,7 +238,7 @@ IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseUp, void, ( U8 modifier, Poi "@see GuiControl\n\n" ); -IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseDragged, void, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount ), +IMPLEMENT_CALLBACK( GuiMouseEventCtrl, onRightMouseDragged, void, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount ), ( modifier, mousePoint, mouseClickCount ), "@brief Callback that occurs whenever the mouse is dragged in this control while the right mouse button is pressed.\n\n" "@param modifier Key that was pressed during this callback. Values are:\n\n" diff --git a/Engine/source/gui/utility/guiMouseEventCtrl.h b/Engine/source/gui/utility/guiMouseEventCtrl.h index 0a8bf7257..dfb21482d 100644 --- a/Engine/source/gui/utility/guiMouseEventCtrl.h +++ b/Engine/source/gui/utility/guiMouseEventCtrl.h @@ -41,15 +41,15 @@ class GuiMouseEventCtrl : public GuiControl GuiMouseEventCtrl(); - DECLARE_CALLBACK( void, onMouseDown, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onMouseUp, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onMouseMove, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onMouseDragged, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onMouseEnter, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onMouseLeave, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onRightMouseDown, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onRightMouseUp, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); - DECLARE_CALLBACK( void, onRightMouseDragged, ( U8 modifier, Point2I mousePoint,U8 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseDown, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseUp, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseMove, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseDragged, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseEnter, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onMouseLeave, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onRightMouseDown, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onRightMouseUp, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); + DECLARE_CALLBACK( void, onRightMouseDragged, ( S32 modifier, Point2I mousePoint, S32 mouseClickCount )); // GuiControl void onMouseDown(const GuiEvent & event); From 105c2b68f769ad1987f7fd83fb7a8a087558980a Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Mon, 2 Feb 2015 15:55:07 -0800 Subject: [PATCH 18/75] Removed unused code removed some unused code. --- Engine/source/gui/utility/guiMouseEventCtrl.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Engine/source/gui/utility/guiMouseEventCtrl.cpp b/Engine/source/gui/utility/guiMouseEventCtrl.cpp index e0df98af0..6c3024214 100644 --- a/Engine/source/gui/utility/guiMouseEventCtrl.cpp +++ b/Engine/source/gui/utility/guiMouseEventCtrl.cpp @@ -270,11 +270,6 @@ GuiMouseEventCtrl::GuiMouseEventCtrl() //------------------------------------------------------------------------------ void GuiMouseEventCtrl::sendMouseEvent(const char * name, const GuiEvent & event) { - char buf[3][32]; - dSprintf(buf[0], 32, "%d", event.modifier); - dSprintf(buf[1], 32, "%d %d", event.mousePoint.x, event.mousePoint.y); - dSprintf(buf[2], 32, "%d", event.mouseClickCount); - if(dStricmp(name,"onMouseDown") == 0) onMouseDown_callback(event.modifier, event.mousePoint, event.mouseClickCount); else if(dStricmp(name,"onMouseUp") == 0) From c7e0d83587ebd18e8b870669db8e17aa69a5b6ea Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Tue, 3 Feb 2015 12:13:06 -0800 Subject: [PATCH 19/75] Fixed possible divide by zero issues. Fixed several areas in the point class that could have a divide by zero issue. --- Engine/source/math/mPoint3.h | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Engine/source/math/mPoint3.h b/Engine/source/math/mPoint3.h index 5a85c6cd0..8ba244767 100644 --- a/Engine/source/math/mPoint3.h +++ b/Engine/source/math/mPoint3.h @@ -233,11 +233,13 @@ class Point3D bool isZero() const; F64 len() const; F64 lenSquared() const; + F64 magnitudeSafe() const; //-------------------------------------- Mathematical mutators public: void neg(); void normalize(); + void normalizeSafe(); void normalize(F64 val); void convolve(const Point3D&); void convolveInverse(const Point3D&); @@ -728,11 +730,13 @@ inline Point3F& Point3F::operator*=(const Point3F &_vec) inline Point3F Point3F::operator/(const Point3F &_vec) const { + AssertFatal(_vec.x != 0.0f && _vec.y != 0.0f && _vec.z != 0.0f, "Error, div by zero attempted"); return Point3F(x / _vec.x, y / _vec.y, z / _vec.z); } inline Point3F& Point3F::operator/=(const Point3F &_vec) { + AssertFatal(_vec.x != 0.0f && _vec.y != 0.0f && _vec.z != 0.0f, "Error, div by zero attempted"); x /= _vec.x; y /= _vec.y; z /= _vec.z; @@ -855,7 +859,8 @@ inline F64 Point3D::lenSquared() const inline F64 Point3D::len() const { - return mSqrtD(x*x + y*y + z*z); + F64 temp = x*x + y*y + z*z; + return (temp > 0.0) ? mSqrtD(x*x + y*y + z*z) : 0.0; } inline void Point3D::normalize() @@ -863,6 +868,28 @@ inline void Point3D::normalize() m_point3D_normalize(*this); } +inline F64 Point3D::magnitudeSafe() const +{ + if( isZero() ) + { + return 0.0; + } + else + { + return len(); + } +} + +inline void Point3D::normalizeSafe() +{ + F64 vmag = magnitudeSafe(); + + if( vmag > POINT_EPSILON ) + { + *this *= F64(1.0 / vmag); + } +} + inline void Point3D::normalize(F64 val) { m_point3D_normalize_f(*this, val); From ad267f050503447a275b40fc4c047878a161ae97 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Tue, 3 Feb 2015 12:16:06 -0800 Subject: [PATCH 20/75] Fixed angle conversion issues Fixed a variable name and method that should be const. Also fixed several angle conversion functions that didn't convert the angle correct. --- Engine/source/math/mMatrix.cpp | 2 +- Engine/source/math/mQuat.cpp | 67 +++++++++++++++++++++------------- Engine/source/math/mQuat.h | 2 +- 3 files changed, 43 insertions(+), 28 deletions(-) diff --git a/Engine/source/math/mMatrix.cpp b/Engine/source/math/mMatrix.cpp index 12af818ea..da1c137ca 100644 --- a/Engine/source/math/mMatrix.cpp +++ b/Engine/source/math/mMatrix.cpp @@ -163,7 +163,7 @@ EulerF MatrixF::toEuler() const const F32 * mat = m; EulerF r; - r.x = mAsin(mat[MatrixF::idx(2,1)]); + r.x = mAsin(mClampF(mat[MatrixF::idx(2,1)], -1.0, 1.0)); if(mCos(r.x) != 0.f) { diff --git a/Engine/source/math/mQuat.cpp b/Engine/source/math/mQuat.cpp index 7ffc4eaa3..29180d837 100644 --- a/Engine/source/math/mQuat.cpp +++ b/Engine/source/math/mQuat.cpp @@ -32,33 +32,48 @@ const QuatF QuatF::Identity(0.0f,0.0f,0.0f,1.0f); QuatF& QuatF::set( const EulerF & e ) { - F32 cx, sx; - F32 cy, sy; - F32 cz, sz; - mSinCos( e.x * 0.5f, sx, cx ); - mSinCos( e.y * 0.5f, sy, cy ); - mSinCos( e.z * 0.5f, sz, cz ); + /* + F32 cx, sx; + F32 cy, sy; + F32 cz, sz; + mSinCos( -e.x * 0.5f, sx, cx ); + mSinCos( -e.y * 0.5f, sy, cy ); + mSinCos( -e.z * 0.5f, sz, cz ); - // Qyaw(z) = [ (0, 0, sin z/2), cos z/2 ] - // Qpitch(x) = [ (sin x/2, 0, 0), cos x/2 ] - // Qroll(y) = [ (0, sin y/2, 0), cos y/2 ] - // this = Qresult = Qyaw*Qpitch*Qroll ZXY - // - // The code that folows is a simplification of: - // roll*=pitch; - // roll*=yaw; - // *this = roll; - F32 cycz, sysz, sycz, cysz; - cycz = cy*cz; - sysz = sy*sz; - sycz = sy*cz; - cysz = cy*sz; - w = cycz*cx - sysz*sx; - x = cycz*sx + sysz*cx; - y = sycz*cx + cysz*sx; - z = cysz*cx - sycz*sx; + // Qyaw(z) = [ (0, 0, sin z/2), cos z/2 ] + // Qpitch(x) = [ (sin x/2, 0, 0), cos x/2 ] + // Qroll(y) = [ (0, sin y/2, 0), cos y/2 ] + // this = Qresult = Qyaw*Qpitch*Qroll ZXY + // + // The code that folows is a simplification of: + // roll*=pitch; + // roll*=yaw; + // *this = roll; + F32 cycz, sysz, sycz, cysz; + cycz = cy*cz; + sysz = sy*sz; + sycz = sy*cz; + cysz = cy*sz; + w = cycz*cx + sysz*sx; + x = cycz*sx + sysz*cx; + y = sycz*cx - cysz*sx; + z = cysz*cx - sycz*sx; + */ + // Assuming the angles are in radians. + F32 c1 = mCos(e.y/2.0f); + F32 s1 = mSin(e.y/2.0f); + F32 c2 = mCos(e.z/2.0f); + F32 s2 = mSin(e.z/2.0f); + F32 c3 = mCos(e.x/2.0f); + F32 s3 = mSin(e.x/2.0f); + F32 c1c2 = c1*c2; + F32 s1s2 = s1*s2; + w =c1c2*c3 - s1s2*s3; + x =c1c2*s3 + s1s2*c3; + y =s1*c2*c3 + c1*s2*s3; + z =c1*s2*c3 - s1*c2*s3; - return *this; + return *this; } QuatF& QuatF::operator *=( const QuatF & b ) @@ -289,7 +304,7 @@ QuatF & QuatF::interpolate( const QuatF & q1, const QuatF & q2, F32 t ) return *this; } -Point3F & QuatF::mulP(const Point3F& p, Point3F* r) +Point3F & QuatF::mulP(const Point3F& p, Point3F* r) const { QuatF qq; QuatF qi = *this; diff --git a/Engine/source/math/mQuat.h b/Engine/source/math/mQuat.h index 433b30155..2ea1b94c1 100644 --- a/Engine/source/math/mQuat.h +++ b/Engine/source/math/mQuat.h @@ -81,7 +81,7 @@ public: QuatF& interpolate( const QuatF & q1, const QuatF & q2, F32 t ); F32 angleBetween( const QuatF & q ); - Point3F& mulP(const Point3F& a, Point3F* b); // r = p * this + Point3F& mulP(const Point3F& a, Point3F* r) const; // r = p * this QuatF& mul(const QuatF& a, const QuatF& b); // This = a * b // Vectors passed in must be normalized From 1372b4f600d4bffc6e06bfb65075577a9eeb40dc Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Tue, 3 Feb 2015 14:14:02 -0800 Subject: [PATCH 21/75] Fixed raycast bug start x position is NaN Fixed bug in _castRay when the start x position is NaN. --- Engine/source/scene/sceneContainer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Engine/source/scene/sceneContainer.cpp b/Engine/source/scene/sceneContainer.cpp index 5d81cc0bd..e9fd51812 100644 --- a/Engine/source/scene/sceneContainer.cpp +++ b/Engine/source/scene/sceneContainer.cpp @@ -1012,6 +1012,11 @@ bool SceneContainer::_castRay( U32 type, const Point3F& start, const Point3F& en F32 currStartX = normalStart.x; AssertFatal(currStartX != normalEnd.x, "This is going to cause problems in SceneContainer::castRay"); + if(_isnan(currStartX)) + { + PROFILE_END(); + return false; + } while (currStartX != normalEnd.x) { F32 currEndX = getMin(currStartX + csmTotalBinSize, normalEnd.x); From 50f875a2f57687966a98c4cad4332b58c46c85ac Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Tue, 3 Feb 2015 14:18:06 -0800 Subject: [PATCH 22/75] Fixed bug with comparison cases of getRenderEnabled For some reason returning true/false rather that 1/0 from _getRenderEnabled would cause errors in some comparison cases to see if it was true or not (would treat it as if it was a string/word rather than a bool or int). --- Engine/source/scene/sceneObject.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/scene/sceneObject.cpp b/Engine/source/scene/sceneObject.cpp index 80e2ba338..1420bac11 100644 --- a/Engine/source/scene/sceneObject.cpp +++ b/Engine/source/scene/sceneObject.cpp @@ -720,9 +720,9 @@ const char* SceneObject::_getRenderEnabled( void* object, const char* data ) { SceneObject* obj = reinterpret_cast< SceneObject* >( object ); if( obj->mObjectFlags.test( RenderEnabledFlag ) ) - return "true"; + return "1"; else - return "false"; + return "0"; } //----------------------------------------------------------------------------- From e3dc606623a19105929803980e12a308c68e00a5 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Tue, 3 Feb 2015 15:07:12 -0800 Subject: [PATCH 23/75] Fixed small warning Fixed small warning about unused local variable. --- Engine/lib/libvorbis/lib/codebook.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/lib/libvorbis/lib/codebook.c b/Engine/lib/libvorbis/lib/codebook.c index ecb8b6878..3d68781fd 100644 --- a/Engine/lib/libvorbis/lib/codebook.c +++ b/Engine/lib/libvorbis/lib/codebook.c @@ -450,7 +450,7 @@ long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){ } } }else{ - int i,j; + int i; for(i=0;i Date: Wed, 11 Feb 2015 09:57:36 -0800 Subject: [PATCH 24/75] Fixed incorrect file size returned According to https://msdn.microsoft.com/en-us/library/windows/desktop/aa365740%28v=vs.85%29.aspx to return the actual file size you need to use the high and low file size. --- Engine/source/platformWin32/winFileio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/platformWin32/winFileio.cpp b/Engine/source/platformWin32/winFileio.cpp index 7296ed32e..337c5b51e 100644 --- a/Engine/source/platformWin32/winFileio.cpp +++ b/Engine/source/platformWin32/winFileio.cpp @@ -998,7 +998,7 @@ S32 Platform::getFileSize(const char *pFilePath) return -1; // must be a real file then - return findData.nFileSizeLow; + return ((findData.nFileSizeHigh * (MAXDWORD+1)) + findData.nFileSizeLow); } From 246df9c454bf6c83d980ed3c8d86214d556c26e7 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 12 Feb 2015 08:25:16 -0800 Subject: [PATCH 25/75] Added parenthesis Added parenthesis to avoid turning height into a true/false evaluation result. --- Engine/source/gui/controls/guiMLTextCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/controls/guiMLTextCtrl.cpp b/Engine/source/gui/controls/guiMLTextCtrl.cpp index 62141540a..72a5258f7 100644 --- a/Engine/source/gui/controls/guiMLTextCtrl.cpp +++ b/Engine/source/gui/controls/guiMLTextCtrl.cpp @@ -669,7 +669,7 @@ void GuiMLTextCtrl::getCursorPositionAndColor(Point2I &cursorTop, Point2I &curso { S32 x = 0; S32 y = 0; - S32 height = mProfile && mProfile->mFont ? mProfile->mFont->getHeight() : 0; + S32 height = (mProfile && mProfile->mFont) ? mProfile->mFont->getHeight() : 0; color = mProfile->mCursorColor; for(Line *walk = mLineList; walk; walk = walk->next) { From 57bad98569492a642eebd76a79b8709f3a586a2c Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 12 Feb 2015 08:31:54 -0800 Subject: [PATCH 26/75] Fixed spacing and optimized Fixed tab vs 3 spaces and optimized the code a bit. --- Engine/source/math/mPoint3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/math/mPoint3.h b/Engine/source/math/mPoint3.h index 8ba244767..12af91c4b 100644 --- a/Engine/source/math/mPoint3.h +++ b/Engine/source/math/mPoint3.h @@ -859,8 +859,8 @@ inline F64 Point3D::lenSquared() const inline F64 Point3D::len() const { - F64 temp = x*x + y*y + z*z; - return (temp > 0.0) ? mSqrtD(x*x + y*y + z*z) : 0.0; + F64 temp = x*x + y*y + z*z; + return (temp > 0.0) ? mSqrtD(temp) : 0.0; } inline void Point3D::normalize() From 32a4365ea947a91dfd920db58fdaa89bd1ce24f1 Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 12 Feb 2015 11:00:25 -0800 Subject: [PATCH 27/75] Optimized code Since floating point division is the most expensive operation, it was optimized. --- Engine/source/math/mQuat.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Engine/source/math/mQuat.cpp b/Engine/source/math/mQuat.cpp index 29180d837..d2b1a6ae6 100644 --- a/Engine/source/math/mQuat.cpp +++ b/Engine/source/math/mQuat.cpp @@ -60,12 +60,12 @@ QuatF& QuatF::set( const EulerF & e ) z = cysz*cx - sycz*sx; */ // Assuming the angles are in radians. - F32 c1 = mCos(e.y/2.0f); - F32 s1 = mSin(e.y/2.0f); - F32 c2 = mCos(e.z/2.0f); - F32 s2 = mSin(e.z/2.0f); - F32 c3 = mCos(e.x/2.0f); - F32 s3 = mSin(e.x/2.0f); + F32 c1 = mCos(e.y * 0.5f); + F32 s1 = mSin(e.y * 0.5f); + F32 c2 = mCos(e.z * 0.5f); + F32 s2 = mSin(e.z * 0.5f); + F32 c3 = mCos(e.x * 0.5f); + F32 s3 = mSin(e.x * 0.5f); F32 c1c2 = c1*c2; F32 s1s2 = s1*s2; w =c1c2*c3 - s1s2*s3; From 7809e595edfeacf7b18205d238a07289d5624c9b Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 12 Feb 2015 11:05:44 -0800 Subject: [PATCH 28/75] Fixed tab vs spaces Fixed tab vs spaces --- Engine/source/scene/sceneContainer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/scene/sceneContainer.cpp b/Engine/source/scene/sceneContainer.cpp index e9fd51812..90ac7c235 100644 --- a/Engine/source/scene/sceneContainer.cpp +++ b/Engine/source/scene/sceneContainer.cpp @@ -1012,7 +1012,7 @@ bool SceneContainer::_castRay( U32 type, const Point3F& start, const Point3F& en F32 currStartX = normalStart.x; AssertFatal(currStartX != normalEnd.x, "This is going to cause problems in SceneContainer::castRay"); - if(_isnan(currStartX)) + if(_isnan(currStartX)) { PROFILE_END(); return false; From 87bb479c8c23841fa9486f5a9d79a2595649e33f Mon Sep 17 00:00:00 2001 From: Nathan Bowhay Date: Thu, 12 Feb 2015 11:39:47 -0800 Subject: [PATCH 29/75] Check now platform independent Now it uses a Torque function to check so it compiles on Linux. --- Engine/source/scene/sceneContainer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/scene/sceneContainer.cpp b/Engine/source/scene/sceneContainer.cpp index 90ac7c235..0391ff669 100644 --- a/Engine/source/scene/sceneContainer.cpp +++ b/Engine/source/scene/sceneContainer.cpp @@ -1012,7 +1012,7 @@ bool SceneContainer::_castRay( U32 type, const Point3F& start, const Point3F& en F32 currStartX = normalStart.x; AssertFatal(currStartX != normalEnd.x, "This is going to cause problems in SceneContainer::castRay"); - if(_isnan(currStartX)) + if(mIsNaN_F(currStartX)) { PROFILE_END(); return false; From 7b2cb8d04f72fc0083eb039057ffd0e90ef06052 Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 5 Jul 2015 12:40:50 +1000 Subject: [PATCH 30/75] Add a method to see whether a WorkItem has executed yet. --- Engine/source/platform/threads/threadPool.cpp | 1 + Engine/source/platform/threads/threadPool.h | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Engine/source/platform/threads/threadPool.cpp b/Engine/source/platform/threads/threadPool.cpp index 5b96b495b..15cfcd9e0 100644 --- a/Engine/source/platform/threads/threadPool.cpp +++ b/Engine/source/platform/threads/threadPool.cpp @@ -120,6 +120,7 @@ void ThreadPool::Context::updateAccumulatedPriorityBiases() void ThreadPool::WorkItem::process() { execute(); + mExecuted = true; } //-------------------------------------------------------------------------- diff --git a/Engine/source/platform/threads/threadPool.h b/Engine/source/platform/threads/threadPool.h index 2f18a5bee..b77244034 100644 --- a/Engine/source/platform/threads/threadPool.h +++ b/Engine/source/platform/threads/threadPool.h @@ -194,6 +194,9 @@ class ThreadPool /// This is the primary function to implement by subclasses. virtual void execute() = 0; + /// This flag is set after the execute() method has completed. + bool mExecuted; + public: /// Construct a new work item. @@ -201,7 +204,8 @@ class ThreadPool /// @param context The work context in which the item should be placed. /// If NULL, the root context will be used. WorkItem( Context* context = 0 ) - : mContext( context ? context : Context::ROOT_CONTEXT() ) + : mContext( context ? context : Context::ROOT_CONTEXT() ), + mExecuted( false ) { } @@ -229,6 +233,12 @@ class ThreadPool /// Return the item's base priority value. /// @return item priority; defaults to 1.0. virtual F32 getPriority(); + + /// Has this work item been executed already? + bool hasExecuted() const + { + return mExecuted; + } }; typedef ThreadSafeRef< WorkItem > WorkItemPtr; From 0995520d6f08174380c8a58bf1794c7c4347338c Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 5 Jul 2015 12:59:16 +1000 Subject: [PATCH 31/75] Add a method to wait for all pending items in a ThreadPool. --- Engine/source/platform/threads/threadPool.cpp | 27 ++++++++++++++++++- Engine/source/platform/threads/threadPool.h | 15 +++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/Engine/source/platform/threads/threadPool.cpp b/Engine/source/platform/threads/threadPool.cpp index 15cfcd9e0..81e40894e 100644 --- a/Engine/source/platform/threads/threadPool.cpp +++ b/Engine/source/platform/threads/threadPool.cpp @@ -282,6 +282,8 @@ void ThreadPool::WorkerThread::run( void* arg ) Platform::outputDebugString( "[ThreadPool::WorkerThread] thread '%i' takes item '0x%x'", getId(), *workItem ); #endif workItem->process(); + + dFetchAndAdd( mPool->mNumPendingItems, ( U32 ) -1 ); } else waitForSignal = true; @@ -319,6 +321,7 @@ ThreadPool::ThreadPool( const char* name, U32 numThreads ) : mName( name ), mNumThreads( numThreads ), mNumThreadsAwake( 0 ), + mNumPendingItems( 0 ), mThreads( 0 ), mSemaphore( 0 ) { @@ -410,7 +413,7 @@ void ThreadPool::queueWorkItem( WorkItem* item ) else { // Put the item in the queue. - + dFetchAndAdd( mNumPendingItems, 1 ); mWorkItemQueue.insert( item->getPriority(), item ); mSemaphore.release(); @@ -441,6 +444,28 @@ void ThreadPool::flushWorkItems( S32 timeOut ) } } +void ThreadPool::waitForAllItems( S32 timeOut ) +{ + AssertFatal( mNumPendingItems, "ThreadPool::waitForAllItems() - no items pending" ); + + U32 endTime = 0; + if( timeOut != -1 ) + endTime = Platform::getRealMilliseconds() + timeOut; + + // Spinlock until there are no items that have not been processed. + + while( dAtomicRead( mNumPendingItems ) ) + { + Platform::sleep( 25 ); + + // Stop if we have exceeded our processing time budget. + + if( timeOut != -1 + && Platform::getRealMilliseconds() >= endTime ) + break; + } +} + //-------------------------------------------------------------------------- void ThreadPool::queueWorkItemOnMainThread( WorkItem* item ) diff --git a/Engine/source/platform/threads/threadPool.h b/Engine/source/platform/threads/threadPool.h index b77244034..5fb8cc60b 100644 --- a/Engine/source/platform/threads/threadPool.h +++ b/Engine/source/platform/threads/threadPool.h @@ -264,6 +264,9 @@ class ThreadPool /// Number of worker threads guaranteed to be non-blocking. U32 mNumThreadsReady; + + /// Number of work items that have not yet completed execution. + U32 mNumPendingItems; /// Semaphore used to wake up threads, if necessary. Semaphore mSemaphore; @@ -316,6 +319,18 @@ class ThreadPool /// the queue to flush out. -1 = infinite. void flushWorkItems( S32 timeOut = -1 ); + /// If you're using a non-global thread pool to parallelise some work, you + /// may want to block until all the parallel work is complete. As with + /// flushWorkItems, this method may block indefinitely if new items keep + /// getting added to the pool before old ones finish. + /// + /// This method will not wait for items queued on the main thread using + /// queueWorkItemOnMainThread! + /// + /// @param timeOut Soft limit on the number of milliseconds to wait for + /// all items to complete. -1 = infinite. + void waitForAllItems( S32 timeOut = -1 ); + /// Add a work item to the main thread's work queue. /// /// The main thread's work queue will be processed each frame using From b491d7bbc01aa0771da8804d7c7f29ab6b12e9d5 Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 5 Jul 2015 12:41:25 +1000 Subject: [PATCH 32/75] Fix ThreadPool tests to account for asynchronicity. --- .../platform/threads/test/threadPoolTest.cpp | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/Engine/source/platform/threads/test/threadPoolTest.cpp b/Engine/source/platform/threads/test/threadPoolTest.cpp index cfb5c5dd4..c5b035bfb 100644 --- a/Engine/source/platform/threads/test/threadPoolTest.cpp +++ b/Engine/source/platform/threads/test/threadPoolTest.cpp @@ -44,6 +44,20 @@ public: mResults[mIndex] = mIndex; } }; + + // A worker that delays for some time. We'll use this to test the ThreadPool's + // synchronous and asynchronous operations. + struct DelayItem : public ThreadPool::WorkItem + { + U32 ms; + DelayItem(U32 _ms) : ms(_ms) {} + + protected: + virtual void execute() + { + Platform::sleep(ms); + } + }; }; TEST_FIX(ThreadPool, BasicAPI) @@ -63,8 +77,7 @@ TEST_FIX(ThreadPool, BasicAPI) pool->queueWorkItem(item); } - // Wait for all items to complete. - pool->flushWorkItems(); + pool->waitForAllItems(); // Verify. for (U32 i = 0; i < numItems; i++) @@ -72,4 +85,37 @@ TEST_FIX(ThreadPool, BasicAPI) results.clear(); } +TEST_FIX(ThreadPool, Asynchronous) +{ + const U32 delay = 500; //ms + + // Launch a single delaying work item. + ThreadPool* pool = &ThreadPool::GLOBAL(); + ThreadSafeRef item(new DelayItem(delay)); + pool->queueWorkItem(item); + + // The thread should not yet be finished. + EXPECT_EQ(false, item->hasExecuted()); + + // Wait til the item should have completed. + Platform::sleep(delay * 2); + + EXPECT_EQ(true, item->hasExecuted()); +} + +TEST_FIX(ThreadPool, Synchronous) +{ + const U32 delay = 500; //ms + + // Launch a single delaying work item. + ThreadPool* pool = &ThreadPool::GLOBAL(); + ThreadSafeRef item(new DelayItem(delay)); + pool->queueWorkItem(item); + + // Wait for the item to complete. + pool->waitForAllItems(); + + EXPECT_EQ(true, item->hasExecuted()); +} + #endif \ No newline at end of file From e75a9fa0816c3c0f35b9acc5818d43577a89b5f0 Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 5 Jul 2015 14:11:24 +1000 Subject: [PATCH 33/75] Don't assert; sometimes there aren't any jobs to wait for! --- Engine/source/platform/threads/threadPool.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Engine/source/platform/threads/threadPool.cpp b/Engine/source/platform/threads/threadPool.cpp index 81e40894e..feaa52ae0 100644 --- a/Engine/source/platform/threads/threadPool.cpp +++ b/Engine/source/platform/threads/threadPool.cpp @@ -446,8 +446,6 @@ void ThreadPool::flushWorkItems( S32 timeOut ) void ThreadPool::waitForAllItems( S32 timeOut ) { - AssertFatal( mNumPendingItems, "ThreadPool::waitForAllItems() - no items pending" ); - U32 endTime = 0; if( timeOut != -1 ) endTime = Platform::getRealMilliseconds() + timeOut; From d68c9036bffa6e425747d6502ec3240857f76aa5 Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 5 Jul 2015 14:11:58 +1000 Subject: [PATCH 34/75] Include thread tests in CMake. --- Tools/CMake/torque3d.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 1dce72d21..08d5fd561 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -200,6 +200,7 @@ if( NOT TORQUE_DEDICATED ) endif() addPath("${srcDir}/platform/test") addPath("${srcDir}/platform/threads") +addPath("${srcDir}/platform/threads/test") addPath("${srcDir}/platform/async") addPath("${srcDir}/platform/async/test") addPath("${srcDir}/platform/input") From 4bba5d87d0613ef572c0e87336664be701dc9f91 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 16 Jul 2015 21:51:37 -0500 Subject: [PATCH 35/75] partly addresses https://msdn.microsoft.com/en-us/library/y775w13y.aspx?f=255&MSPPError=-2147217396 violations --- Engine/source/console/dynamicTypes.h | 8 ++++ Engine/source/console/enginePrimitives.h | 18 ++++----- Engine/source/console/engineStructs.h | 12 +++--- Engine/source/console/engineTypeInfo.h | 2 +- Engine/source/console/engineTypes.h | 48 +++++++++++++++++++++++- 5 files changed, 71 insertions(+), 17 deletions(-) diff --git a/Engine/source/console/dynamicTypes.h b/Engine/source/console/dynamicTypes.h index 105b2f1ef..58d69fef0 100644 --- a/Engine/source/console/dynamicTypes.h +++ b/Engine/source/console/dynamicTypes.h @@ -318,6 +318,10 @@ const EngineTypeInfo* _MAPTYPE() { return TYPE< T >(); } DECLARE_ENUM( type ); \ DefineConsoleType( Type ## type, type ); +#define DefineEnumType_R( type ) \ + DECLARE_ENUM_R( type ); \ + DefineConsoleType( Type ## type, type ); + #define _ConsoleEnumType( typeName, type, nativeType ) \ S32 type; \ ImplementConsoleTypeCasters( type, nativeType ) \ @@ -347,6 +351,10 @@ const EngineTypeInfo* _MAPTYPE() { return TYPE< T >(); } DECLARE_BITFIELD( type ); \ DefineConsoleType( Type ## type, type ); +#define DefineBitfieldType_R( type ) \ + DECLARE_BITFIELD_R( type ); \ + DefineConsoleType( Type ## type, type ); + #define _ConsoleBitfieldType( typeName, type, nativeType ) \ S32 type; \ ImplementConsoleTypeCasters( type, nativeType ) \ diff --git a/Engine/source/console/enginePrimitives.h b/Engine/source/console/enginePrimitives.h index e37fcfa4a..72f1899e7 100644 --- a/Engine/source/console/enginePrimitives.h +++ b/Engine/source/console/enginePrimitives.h @@ -34,14 +34,14 @@ -DECLARE_PRIMITIVE( bool ); -DECLARE_PRIMITIVE( S8 ); -DECLARE_PRIMITIVE( U8 ); -DECLARE_PRIMITIVE( S32 ); -DECLARE_PRIMITIVE( U32 ); -DECLARE_PRIMITIVE( F32 ); -DECLARE_PRIMITIVE( F64 ); -DECLARE_PRIMITIVE( void* ); +DECLARE_PRIMITIVE_R( bool ); +DECLARE_PRIMITIVE_R(S8); +DECLARE_PRIMITIVE_R(U8); +DECLARE_PRIMITIVE_R(S32); +DECLARE_PRIMITIVE_R(U32); +DECLARE_PRIMITIVE_R(F32); +DECLARE_PRIMITIVE_R(F64); +DECLARE_PRIMITIVE_R(void*); //FIXME: this allows String to be used as a struct field type @@ -52,7 +52,7 @@ DECLARE_PRIMITIVE( void* ); // are considered to be owned by the API layer itself. The rule here is that such // a string is only valid until the next API call is made. Usually, control layers // will immediately copy and convert strings to their own string type. -_DECLARE_TYPE( String ); +_DECLARE_TYPE_R(String); template<> struct EngineTypeTraits< String > : public _EnginePrimitiveTypeTraits< String > { diff --git a/Engine/source/console/engineStructs.h b/Engine/source/console/engineStructs.h index c77530af1..00ea098ee 100644 --- a/Engine/source/console/engineStructs.h +++ b/Engine/source/console/engineStructs.h @@ -41,11 +41,11 @@ class ColorI; class ColorF; -DECLARE_STRUCT( Vector< bool > ); -DECLARE_STRUCT( Vector< S32 > ); -DECLARE_STRUCT( Vector< F32 > ); -DECLARE_STRUCT( Torque::UUID ); -DECLARE_STRUCT( ColorI ); -DECLARE_STRUCT( ColorF ); +DECLARE_STRUCT_R(Vector< bool >); +DECLARE_STRUCT_R(Vector< S32 >); +DECLARE_STRUCT_R(Vector< F32 >); +DECLARE_STRUCT_R(Torque::UUID); +DECLARE_STRUCT_R(ColorI); +DECLARE_STRUCT_R(ColorF); #endif // !_ENGINESTRUCTS_H_ diff --git a/Engine/source/console/engineTypeInfo.h b/Engine/source/console/engineTypeInfo.h index 01ca40a76..88d78eed7 100644 --- a/Engine/source/console/engineTypeInfo.h +++ b/Engine/source/console/engineTypeInfo.h @@ -44,7 +44,7 @@ enum EngineTypeKind EngineTypeKindClass ///< Pointer to opaque EngineObject. }; -DECLARE_ENUM( EngineTypeKind ); +DECLARE_ENUM_R( EngineTypeKind ); /// Flags for an EngineTypeInfo. enum EngineTypeFlags diff --git a/Engine/source/console/engineTypes.h b/Engine/source/console/engineTypes.h index 400a05b50..482a097a6 100644 --- a/Engine/source/console/engineTypes.h +++ b/Engine/source/console/engineTypes.h @@ -416,6 +416,16 @@ namespace _Private { #define _DECLARE_TYPE( type ) \ + template<> const EngineTypeInfo* TYPE< type >(); \ + template<> struct _SCOPE< type > { \ + EngineExportScope& operator()() const { \ + return *static_cast< EngineExportScope* >( \ + const_cast< EngineTypeInfo* >( ( TYPE< type >() ) ) \ + ); \ + } \ + }; + +#define _DECLARE_TYPE_R( type ) \ template<> const EngineTypeInfo* TYPE< type >(); \ template<> struct _SCOPE< type > { \ EngineExportScope& operator()() const { \ @@ -432,22 +442,42 @@ namespace _Private { _DECLARE_TYPE( type ) \ template<> \ struct EngineTypeTraits< type > : public _EnginePrimitiveTypeTraits< type > {}; + +#define _DECLARE_PRIMITIVE_R( type ) \ + _DECLARE_TYPE_R( type ) \ + template<> \ + struct EngineTypeTraits< type > : public _EnginePrimitiveTypeTraits< type > {}; #define _DECLARE_ENUM( type ) \ _DECLARE_TYPE( type ) \ template<> \ struct _EngineTypeTraits< type > : public _EngineEnumTypeTraits< type > {}; - + +#define _DECLARE_ENUM_R( type ) \ + _DECLARE_TYPE_R( type ) \ + template<> \ + struct _EngineTypeTraits< type > : public _EngineEnumTypeTraits< type > {}; + #define _DECLARE_BITFIELD( type ) \ _DECLARE_TYPE( type ) \ template<> \ struct _EngineTypeTraits< type > : public _EngineBitfieldTypeTraits< type > {}; +#define _DECLARE_BITFIELD_R( type ) \ + _DECLARE_TYPE_R( type ) \ + template<> \ + struct _EngineTypeTraits< type > : public _EngineBitfieldTypeTraits< type > {}; + + #define _DECLARE_STRUCT( type ) \ _DECLARE_TYPE( type ) \ template<> \ struct _EngineTypeTraits< type > : public _EngineStructTypeTraits< type > {}; +#define _DECLARE_STRUCT_R( type ) \ + _DECLARE_TYPE_R( type ) \ + template<> \ + struct _EngineTypeTraits< type > : public _EngineStructTypeTraits< type > {}; #define _IMPLEMENT_TYPE( type, exportName ) \ template<> \ @@ -524,6 +554,10 @@ namespace _Private { #define DECLARE_PRIMITIVE( type ) \ _DECLARE_PRIMITIVE( type ) +/// +#define DECLARE_PRIMITIVE_R( type ) \ + _DECLARE_PRIMITIVE_R( type ) + /// #define IMPLEMENT_PRIMITIVE( type, exportName, scope, doc ) \ _IMPLEMENT_PRIMITIVE( type, exportName, scope, doc ) @@ -531,11 +565,19 @@ namespace _Private { /// #define DECLARE_ENUM( type ) \ _DECLARE_ENUM( type ) + +/// +#define DECLARE_ENUM_R( type ) \ + _DECLARE_ENUM_R( type ) /// #define DECLARE_BITFIELD( type ) \ _DECLARE_BITFIELD( type ) +/// +#define DECLARE_BITFIELD_R( type ) \ + _DECLARE_BITFIELD_R( type ) + /// #define IMPLEMENT_ENUM( type, exportName, scope, doc ) \ _IMPLEMENT_ENUM( type, exportName, scope, doc ) @@ -556,6 +598,10 @@ namespace _Private { #define DECLARE_STRUCT( type ) \ _DECLARE_STRUCT( type ) +/// +#define DECLARE_STRUCT_R( type ) \ + _DECLARE_STRUCT_R( type ) + /// #define IMPLEMENT_STRUCT( type, exportName, scope, doc ) \ _IMPLEMENT_STRUCT( type, exportName, scope, doc ) From a22672dd7af00c78e78b65d39568a174c5a4cc94 Mon Sep 17 00:00:00 2001 From: MusicMonkey5555 Date: Fri, 17 Jul 2015 16:40:39 -0700 Subject: [PATCH 36/75] Update guiConsoleTextCtrl.cpp Removed redundant assignment. --- Engine/source/gui/controls/guiConsoleTextCtrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/controls/guiConsoleTextCtrl.cpp b/Engine/source/gui/controls/guiConsoleTextCtrl.cpp index f7242e3a2..5001663fd 100644 --- a/Engine/source/gui/controls/guiConsoleTextCtrl.cpp +++ b/Engine/source/gui/controls/guiConsoleTextCtrl.cpp @@ -113,7 +113,7 @@ void GuiConsoleTextCtrl::onPreRender() { if ( mConsoleExpression.isNotEmpty() ) { - mResult = Con::evaluatef( "$guiConsoleTextCtrlTemp = %s;", mConsoleExpression.c_str() ); + Con::evaluatef( "$guiConsoleTextCtrlTemp = %s;", mConsoleExpression.c_str() ); //Fixes a bug with the above not always grabbing the console text. mResult = Con::getVariable("$guiConsoleTextCtrlTemp"); From 859e653bd78653abf0b62224486642ae5e09f42f Mon Sep 17 00:00:00 2001 From: Areloch Date: Tue, 28 Jul 2015 00:53:58 -0500 Subject: [PATCH 37/75] Redux of Winterleaf's PR 1001, with the suggested updated values. --- Engine/source/console/sim.h | 2 +- Engine/source/sim/netConnection.cpp | 2 +- Engine/source/sim/netConnection.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Engine/source/console/sim.h b/Engine/source/console/sim.h index 682bab0c9..681552df4 100644 --- a/Engine/source/console/sim.h +++ b/Engine/source/console/sim.h @@ -64,7 +64,7 @@ typedef U32 SimObjectId; enum SimObjectsConstants { DataBlockObjectIdFirst = 3, - DataBlockObjectIdBitSize = 10, + DataBlockObjectIdBitSize = 14, DataBlockObjectIdLast = DataBlockObjectIdFirst + (1 << DataBlockObjectIdBitSize) - 1, MessageObjectIdFirst = DataBlockObjectIdLast + 1, diff --git a/Engine/source/sim/netConnection.cpp b/Engine/source/sim/netConnection.cpp index e882ef869..0608d3123 100644 --- a/Engine/source/sim/netConnection.cpp +++ b/Engine/source/sim/netConnection.cpp @@ -215,7 +215,7 @@ U32 NetConnection::getSequence() static U32 gPacketRateToServer = 32; static U32 gPacketUpdateDelayToServer = 32; static U32 gPacketRateToClient = 10; -static U32 gPacketSize = 200; +static U32 gPacketSize = 508; void NetConnection::consoleInit() { diff --git a/Engine/source/sim/netConnection.h b/Engine/source/sim/netConnection.h index b220d187c..bed7163f0 100644 --- a/Engine/source/sim/netConnection.h +++ b/Engine/source/sim/netConnection.h @@ -818,7 +818,7 @@ public: /// Some configuration values. enum GhostConstants { - GhostIdBitSize = 12, + GhostIdBitSize = 18, //262,144 ghosts MaxGhostCount = 1 << GhostIdBitSize, //4096, GhostLookupTableSize = 1 << GhostIdBitSize, //4096 GhostIndexBitSize = 4 // number of bits GhostIdBitSize-3 fits into From a487583946bfa391e5175514356d8613e9d57256 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Tue, 28 Jul 2015 18:42:20 -0500 Subject: [PATCH 38/75] =?UTF-8?q?From=20Du=C5=A1an=20Joci=C4=87:=20convexD?= =?UTF-8?q?ecomp=20vs2015+=20compatibility=20patch=20(Verified=20with=20ht?= =?UTF-8?q?tps://github.com/GarageGames/Torque3D/pull/1376=20for=20sub=20v?= =?UTF-8?q?s2015)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Engine/lib/convexDecomp/NvRemoveTjunctions.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Engine/lib/convexDecomp/NvRemoveTjunctions.cpp b/Engine/lib/convexDecomp/NvRemoveTjunctions.cpp index f9ac21ce8..30631afcf 100644 --- a/Engine/lib/convexDecomp/NvRemoveTjunctions.cpp +++ b/Engine/lib/convexDecomp/NvRemoveTjunctions.cpp @@ -60,8 +60,12 @@ NvRemoveTjunctions.cpp : A code snippet to remove tjunctions from a triangle mes #include #ifdef __APPLE__ #include -#else +#elif LINUX #include +#elif _MSC_VER < 1500 + #include +#elif _MSC_VER > 1800 + #include #endif #include "NvUserMemAlloc.h" #include "NvHashMap.h" From 3a18819e1e983432c73b63ebb5e43a7224ddbf34 Mon Sep 17 00:00:00 2001 From: Areloch Date: Tue, 28 Jul 2015 23:19:59 -0500 Subject: [PATCH 39/75] Issue found by PVS Studio: Several instances where we utilize a pointer variable without properly testing that they aren't null first. --- Engine/source/T3D/convexShape.cpp | 2 +- .../source/T3D/examples/renderMeshExample.cpp | 2 +- Engine/source/console/consoleObject.cpp | 3 +- Engine/source/gfx/D3D9/pc/gfxPCD3D9Device.cpp | 2 +- .../source/gui/containers/guiWindowCtrl.cpp | 2 +- Engine/source/gui/core/guiControl.cpp | 61 +++++++++++-------- Engine/source/gui/worldEditor/worldEditor.cpp | 2 +- Engine/source/postFx/postEffect.cpp | 2 +- .../renderInstance/renderPrePassMgr.cpp | 5 +- 9 files changed, 44 insertions(+), 37 deletions(-) diff --git a/Engine/source/T3D/convexShape.cpp b/Engine/source/T3D/convexShape.cpp index 27a88ef79..aae119d8a 100644 --- a/Engine/source/T3D/convexShape.cpp +++ b/Engine/source/T3D/convexShape.cpp @@ -502,7 +502,7 @@ void ConvexShape::prepRenderImage( SceneRenderState *state ) } */ - if ( mVertexBuffer.isNull() ) + if ( mVertexBuffer.isNull() || !state) return; // If we don't have a material instance after the override then diff --git a/Engine/source/T3D/examples/renderMeshExample.cpp b/Engine/source/T3D/examples/renderMeshExample.cpp index 42a5ec950..42f48b049 100644 --- a/Engine/source/T3D/examples/renderMeshExample.cpp +++ b/Engine/source/T3D/examples/renderMeshExample.cpp @@ -269,7 +269,7 @@ void RenderMeshExample::prepRenderImage( SceneRenderState *state ) createGeometry(); // If we have no material then skip out. - if ( !mMaterialInst ) + if ( !mMaterialInst || !state) return; // If we don't have a material instance after the override then diff --git a/Engine/source/console/consoleObject.cpp b/Engine/source/console/consoleObject.cpp index 4469910d7..b5ca03189 100644 --- a/Engine/source/console/consoleObject.cpp +++ b/Engine/source/console/consoleObject.cpp @@ -847,12 +847,13 @@ DefineEngineFunction(linkNamespaces, bool, ( String childNSName, String parentNS Namespace *childNS = Namespace::find(childNSSTE); Namespace *parentNS = Namespace::find(parentNSSTE); - Namespace *currentParent = childNS->getParent(); if (!childNS) { return false; } + + Namespace *currentParent = childNS->getParent(); // Link to new NS if applicable diff --git a/Engine/source/gfx/D3D9/pc/gfxPCD3D9Device.cpp b/Engine/source/gfx/D3D9/pc/gfxPCD3D9Device.cpp index 4f0c280e2..3dfcfe1d4 100644 --- a/Engine/source/gfx/D3D9/pc/gfxPCD3D9Device.cpp +++ b/Engine/source/gfx/D3D9/pc/gfxPCD3D9Device.cpp @@ -66,7 +66,7 @@ void GFXPCD3D9Device::createDirect3D9(LPDIRECT3D9 &d3d9, LPDIRECT3D9EX &d3d9ex) if (pfnCreate9Ex) { - if (!FAILED(pfnCreate9Ex(D3D_SDK_VERSION, &d3d9ex)) && d3d9ex) + if (d3d9ex && !FAILED(pfnCreate9Ex(D3D_SDK_VERSION, &d3d9ex))) d3d9ex->QueryInterface(__uuidof(IDirect3D9), reinterpret_cast(&d3d9)); } diff --git a/Engine/source/gui/containers/guiWindowCtrl.cpp b/Engine/source/gui/containers/guiWindowCtrl.cpp index 63f741428..84be45148 100644 --- a/Engine/source/gui/containers/guiWindowCtrl.cpp +++ b/Engine/source/gui/containers/guiWindowCtrl.cpp @@ -1212,7 +1212,7 @@ void GuiWindowCtrl::onMouseUp(const GuiEvent &event) // We're either moving out of a collapse group or moving to another one // Not valid for windows not previously in a group if( mCollapseGroup >= 0 && - ( snapType == -1 || ( snapType >= 0 && mCollapseGroup != hitWindow->mCollapseGroup) ) ) + (snapType == -1 || (hitWindow && snapType >= 0 && mCollapseGroup != hitWindow->mCollapseGroup))) moveFromCollapseGroup(); // No window to connect to diff --git a/Engine/source/gui/core/guiControl.cpp b/Engine/source/gui/core/guiControl.cpp index fcbed44fa..9e75da03c 100644 --- a/Engine/source/gui/core/guiControl.cpp +++ b/Engine/source/gui/core/guiControl.cpp @@ -1755,41 +1755,48 @@ void GuiControl::write(Stream &stream, U32 tabStop, U32 flags) { //note: this will return false if either we, or any of our parents, are non-save controls bool bCanSave = ( flags & IgnoreCanSave ) || ( flags & NoCheckParentCanSave && getCanSave() ) || getCanSaveParent(); - StringTableEntry steName = mAddGroup->getInternalName(); - if(bCanSave && mAddGroup && (steName != NULL) && (steName != StringTable->insert("null")) && getName() ) + + if (bCanSave && mAddGroup) { - MutexHandle handle; - handle.lock(mMutex); + StringTableEntry steName = mAddGroup->getInternalName(); - // export selected only? - if((flags & SelectedOnly) && !isSelected()) + if ((steName != NULL) && (steName != StringTable->insert("null")) && getName()) { - for(U32 i = 0; i < size(); i++) - (*this)[i]->write(stream, tabStop, flags); + MutexHandle handle; + handle.lock(mMutex); + + // export selected only? + if ((flags & SelectedOnly) && !isSelected()) + { + for (U32 i = 0; i < size(); i++) + (*this)[i]->write(stream, tabStop, flags); + + return; + + } + + stream.writeTabs(tabStop); + char buffer[1024]; + dSprintf(buffer, sizeof(buffer), "new %s(%s,%s) {\r\n", getClassName(), getName() ? getName() : "", mAddGroup->getInternalName()); + stream.write(dStrlen(buffer), buffer); + writeFields(stream, tabStop + 1); + + if (size()) + { + stream.write(2, "\r\n"); + for (U32 i = 0; i < size(); i++) + (*this)[i]->write(stream, tabStop + 1, flags); + } + + stream.writeTabs(tabStop); + stream.write(4, "};\r\n"); return; - } - - stream.writeTabs(tabStop); - char buffer[1024]; - dSprintf(buffer, sizeof(buffer), "new %s(%s,%s) {\r\n", getClassName(), getName() ? getName() : "", mAddGroup->getInternalName()); - stream.write(dStrlen(buffer), buffer); - writeFields(stream, tabStop + 1); - - if(size()) - { - stream.write(2, "\r\n"); - for(U32 i = 0; i < size(); i++) - (*this)[i]->write(stream, tabStop + 1, flags); - } - - stream.writeTabs(tabStop); - stream.write(4, "};\r\n"); } - else if (bCanSave) + + if (bCanSave) Parent::write( stream, tabStop, flags ); - } //============================================================================= diff --git a/Engine/source/gui/worldEditor/worldEditor.cpp b/Engine/source/gui/worldEditor/worldEditor.cpp index f0755a70b..0273ffeb4 100644 --- a/Engine/source/gui/worldEditor/worldEditor.cpp +++ b/Engine/source/gui/worldEditor/worldEditor.cpp @@ -2655,7 +2655,7 @@ void WorldEditor::renderScene( const RectI &updateRect ) // Probably should test the entire icon screen-rect instead of just the centerpoint // but would need to move some code from renderScreenObj to here. - if ( mDragSelect ) + if (mDragSelect && selection) if ( mDragRect.pointInRect(sPosI) && !selection->objInSet(obj) ) mDragSelected->addObject(obj); diff --git a/Engine/source/postFx/postEffect.cpp b/Engine/source/postFx/postEffect.cpp index 000bf1600..62c35baf6 100644 --- a/Engine/source/postFx/postEffect.cpp +++ b/Engine/source/postFx/postEffect.cpp @@ -737,7 +737,7 @@ void PostEffect::_setupConstants( const SceneRenderState *state ) mShaderConsts->set( mMatPrevScreenToWorldSC, tempMat ); } - if ( mAmbientColorSC->isValid() ) + if (mAmbientColorSC->isValid() && state) { const ColorF &sunlight = state->getAmbientLightColor(); Point3F ambientColor( sunlight.red, sunlight.green, sunlight.blue ); diff --git a/Engine/source/renderInstance/renderPrePassMgr.cpp b/Engine/source/renderInstance/renderPrePassMgr.cpp index 4bf1870f1..35bbbaf07 100644 --- a/Engine/source/renderInstance/renderPrePassMgr.cpp +++ b/Engine/source/renderInstance/renderPrePassMgr.cpp @@ -203,12 +203,11 @@ void RenderPrePassMgr::addElement( RenderInst *inst ) matInst = static_cast(inst)->matInst; // Skip decals if they don't have normal maps. - if ( isDecalMeshInst && !matInst->hasNormalMap() ) + if (!matInst || isDecalMeshInst && !matInst->hasNormalMap()) return; // If its a custom material and it refracts... skip it. - if ( matInst && - matInst->isCustomMaterial() && + if ( matInst->isCustomMaterial() && static_cast( matInst->getMaterial() )->mRefract ) return; From 555610f69f87796faaddae926925ef561bbc8c0d Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 03:03:27 -0500 Subject: [PATCH 40/75] Addresses roughly half of the C4189 errors though the following methodologies: 1) truly unused vars removed 2) vars leading to remmed out code for debugging remmed in turn. left out: vars in macros. --- Engine/source/console/astNodes.cpp | 4 ---- Engine/source/console/compiledEval.cpp | 7 ++++--- Engine/source/gui/3d/guiTSControl.cpp | 2 -- Engine/source/math/mSphere.cpp | 3 +++ Engine/source/navigation/guiNavEditorCtrl.cpp | 1 - Engine/source/terrain/glsl/terrFeatureGLSL.cpp | 2 -- Engine/source/terrain/hlsl/terrFeatureHLSL.cpp | 1 - Engine/source/ts/tsMesh.cpp | 4 ++-- 8 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Engine/source/console/astNodes.cpp b/Engine/source/console/astNodes.cpp index ba47a804a..3fc8c04c9 100644 --- a/Engine/source/console/astNodes.cpp +++ b/Engine/source/console/astNodes.cpp @@ -258,7 +258,6 @@ void IfStmtNode::propagateSwitchExpr(ExprNode *left, bool string) U32 IfStmtNode::compileStmt(CodeStream &codeStream, U32 ip) { - U32 start = ip; U32 endifIp, elseIp; addBreakLine(codeStream); @@ -340,7 +339,6 @@ U32 LoopStmtNode::compileStmt(CodeStream &codeStream, U32 ip) addBreakLine(codeStream); codeStream.pushFixScope(true); - U32 start = ip; if(initExpr) ip = initExpr->compile(codeStream, ip, TypeReqNone); @@ -1565,8 +1563,6 @@ U32 FunctionDeclStmtNode::compileStmt(CodeStream &codeStream, U32 ip) CodeBlock::smInFunction = false; - - U32 start = ip; codeStream.emit(OP_FUNC_DECL); codeStream.emitSTE(fnName); codeStream.emitSTE(nameSpace); diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 8d9f5dfcd..52dfff1e9 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -435,11 +435,12 @@ static void setFieldComponent( SimObject* object, StringTableEntry field, const ConsoleValueRef CodeBlock::exec(U32 ip, const char *functionName, Namespace *thisNamespace, U32 argc, ConsoleValueRef *argv, bool noCalls, StringTableEntry packageName, S32 setFrame) { +/* #ifdef TORQUE_DEBUG U32 stackStart = STR.mStartStackSize; U32 consoleStackStart = CSTK.mStackPos; #endif - +*/ //Con::printf("CodeBlock::exec(%s,%u)", functionName ? functionName : "??", ip); static char traceBuffer[1024]; @@ -2244,12 +2245,12 @@ execFinished: } decRefCount(); - +/* #ifdef TORQUE_DEBUG //AssertFatal(!(STR.mStartStackSize > stackStart), "String stack not popped enough in script exec"); //AssertFatal(!(STR.mStartStackSize < stackStart), "String stack popped too much in script exec"); #endif - +*/ return returnValue; } diff --git a/Engine/source/gui/3d/guiTSControl.cpp b/Engine/source/gui/3d/guiTSControl.cpp index 285be625f..63f4d236d 100644 --- a/Engine/source/gui/3d/guiTSControl.cpp +++ b/Engine/source/gui/3d/guiTSControl.cpp @@ -578,14 +578,12 @@ void GuiTSCtrl::onRender(Point2I offset, const RectI &updateRect) GFXTextureObject *texObject = mStereoGuiTarget->getTexture(0); const FovPort *currentFovPort = GFX->getStereoFovPort(); const MatrixF *eyeTransforms = GFX->getStereoEyeTransforms(); - const MatrixF *worldEyeTransforms = GFX->getInverseStereoEyeTransforms(); const Point3F *eyeOffset = GFX->getStereoEyeOffsets(); for (U32 i=0; i<2; i++) { GFX->activateStereoTarget(i); Frustum gfxFrustum = originalFrustum; - const F32 frustumDepth = gfxFrustum.getNearDist(); MathUtils::makeFovPortFrustum(&gfxFrustum, true, gfxFrustum.getNearDist(), gfxFrustum.getFarDist(), currentFovPort[i], eyeTransforms[i]); GFX->setFrustum(gfxFrustum); diff --git a/Engine/source/math/mSphere.cpp b/Engine/source/math/mSphere.cpp index c1edbd91d..971127fb5 100644 --- a/Engine/source/math/mSphere.cpp +++ b/Engine/source/math/mSphere.cpp @@ -77,8 +77,11 @@ bool SphereF::intersectsRay( const Point3F &start, const Point3F &end ) const // value for getting the exact // intersection point, by interpolating // start to end by t. + + /* F32 t = 0; TORQUE_UNUSED(t); + */ // if t1 is less than zero, the object is in the ray's negative direction // and consequently the ray misses the sphere diff --git a/Engine/source/navigation/guiNavEditorCtrl.cpp b/Engine/source/navigation/guiNavEditorCtrl.cpp index 872afdb45..82981cf0d 100644 --- a/Engine/source/navigation/guiNavEditorCtrl.cpp +++ b/Engine/source/navigation/guiNavEditorCtrl.cpp @@ -308,7 +308,6 @@ void GuiNavEditorCtrl::on3DMouseDown(const Gui3DMouseEvent & event) U8 keys = Input::getModifierKeys(); bool shift = keys & SI_LSHIFT; bool ctrl = keys & SI_LCTRL; - bool alt = keys & SI_LALT; if(mMode == mLinkMode && !mMesh.isNull()) { diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index eba99371a..64a8e7469 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -812,12 +812,10 @@ void TerrainMacroMapFeatGLSL::processPix( Vector &componentL meta->addStatement( new GenOp( " @ *= @.y * @.w;\r\n", detailColor, detailInfo, inDet ) ); - Var *baseColor = (Var*)LangElement::find( "baseColor" ); Var *outColor = (Var*)LangElement::find( "col" ); meta->addStatement( new GenOp( " @ = lerp( @, @ + @, @ );\r\n", outColor, outColor, outColor, detailColor, detailBlend ) ); - //outColor, outColor, baseColor, detailColor, detailBlend ) ); meta->addStatement( new GenOp( " }\r\n" ) ); diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index 6292bd32a..0f2e03ebe 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -542,7 +542,6 @@ void TerrainDetailMapFeatHLSL::processPix( Vector &component meta->addStatement( new GenOp( " @ *= @.y * @.w;\r\n", detailColor, detailInfo, inDet ) ); - Var *baseColor = (Var*)LangElement::find( "baseColor" ); Var *outColor = (Var*)LangElement::find( "col" ); meta->addStatement( new GenOp( " @ += @ * @;\r\n", diff --git a/Engine/source/ts/tsMesh.cpp b/Engine/source/ts/tsMesh.cpp index 02eb6e4c7..fa449079a 100644 --- a/Engine/source/ts/tsMesh.cpp +++ b/Engine/source/ts/tsMesh.cpp @@ -223,7 +223,7 @@ void TSMesh::innerRender( TSMaterialList *materials, const TSRenderState &rdata, // We need to have a material. if ( draw.matIndex & TSDrawPrimitive::NoMaterial ) continue; - +/* #ifdef TORQUE_DEBUG // for inspection if you happen to be running in a debugger and can't do bit // operations in your head. @@ -238,7 +238,7 @@ void TSMesh::innerRender( TSMaterialList *materials, const TSRenderState &rdata, TORQUE_UNUSED(indexed); TORQUE_UNUSED(type); #endif - +*/ const U32 matIndex = draw.matIndex & TSDrawPrimitive::MaterialMask; BaseMatInstance *matInst = materials->getMaterialInst( matIndex ); From 3c1c88d96b0396531cc69aa822db2e5f9f30993f Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 04:46:36 -0500 Subject: [PATCH 41/75] TORQUE_VALIDATE_STACK define for console stack debugging --- Engine/source/console/compiledEval.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 52dfff1e9..2eddf0873 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -435,12 +435,12 @@ static void setFieldComponent( SimObject* object, StringTableEntry field, const ConsoleValueRef CodeBlock::exec(U32 ip, const char *functionName, Namespace *thisNamespace, U32 argc, ConsoleValueRef *argv, bool noCalls, StringTableEntry packageName, S32 setFrame) { -/* -#ifdef TORQUE_DEBUG + +#ifdef TORQUE_VALIDATE_STACK U32 stackStart = STR.mStartStackSize; U32 consoleStackStart = CSTK.mStackPos; #endif -*/ + //Con::printf("CodeBlock::exec(%s,%u)", functionName ? functionName : "??", ip); static char traceBuffer[1024]; @@ -2245,12 +2245,12 @@ execFinished: } decRefCount(); -/* -#ifdef TORQUE_DEBUG - //AssertFatal(!(STR.mStartStackSize > stackStart), "String stack not popped enough in script exec"); - //AssertFatal(!(STR.mStartStackSize < stackStart), "String stack popped too much in script exec"); + +#ifdef TORQUE_VALIDATE_STACK + AssertFatal(!(STR.mStartStackSize > stackStart), "String stack not popped enough in script exec"); + AssertFatal(!(STR.mStartStackSize < stackStart), "String stack popped too much in script exec"); #endif -*/ + return returnValue; } From 5615b642df2713e75cc3efcd5655e602fb53fcff Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 29 Jul 2015 08:41:36 -0500 Subject: [PATCH 42/75] suggested revision --- Engine/source/ts/tsMesh.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Engine/source/ts/tsMesh.cpp b/Engine/source/ts/tsMesh.cpp index fa449079a..72ee74461 100644 --- a/Engine/source/ts/tsMesh.cpp +++ b/Engine/source/ts/tsMesh.cpp @@ -223,8 +223,8 @@ void TSMesh::innerRender( TSMaterialList *materials, const TSRenderState &rdata, // We need to have a material. if ( draw.matIndex & TSDrawPrimitive::NoMaterial ) continue; -/* -#ifdef TORQUE_DEBUG + +#ifdef TORQUE_DEBUG_BREAK_INSPECT // for inspection if you happen to be running in a debugger and can't do bit // operations in your head. S32 triangles = draw.matIndex & TSDrawPrimitive::Triangles; @@ -237,8 +237,9 @@ void TSMesh::innerRender( TSMaterialList *materials, const TSRenderState &rdata, TORQUE_UNUSED(fan); TORQUE_UNUSED(indexed); TORQUE_UNUSED(type); + //define TORQUE_DEBUG_BREAK_INSPECT, and insert debug break here to inspect the above elements at runtime #endif -*/ + const U32 matIndex = draw.matIndex & TSDrawPrimitive::MaterialMask; BaseMatInstance *matInst = materials->getMaterialInst( matIndex ); From a5b48225c75c3398fc9dfa31dbb3047c0e71662b Mon Sep 17 00:00:00 2001 From: Areloch Date: Wed, 29 Jul 2015 10:14:19 -0500 Subject: [PATCH 43/75] Corrected the terrain issue caused by unwanted early-outing due to prior changes. --- .../renderInstance/renderPrePassMgr.cpp | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Engine/source/renderInstance/renderPrePassMgr.cpp b/Engine/source/renderInstance/renderPrePassMgr.cpp index 35bbbaf07..326f346a0 100644 --- a/Engine/source/renderInstance/renderPrePassMgr.cpp +++ b/Engine/source/renderInstance/renderPrePassMgr.cpp @@ -202,20 +202,20 @@ void RenderPrePassMgr::addElement( RenderInst *inst ) if ( isMeshInst || isDecalMeshInst ) matInst = static_cast(inst)->matInst; - // Skip decals if they don't have normal maps. - if (!matInst || isDecalMeshInst && !matInst->hasNormalMap()) - return; - - // If its a custom material and it refracts... skip it. - if ( matInst->isCustomMaterial() && - static_cast( matInst->getMaterial() )->mRefract ) - return; - - // Make sure we got a prepass material. - if ( matInst ) + if (matInst) { - matInst = getPrePassMaterial( matInst ); - if ( !matInst || !matInst->isValid() ) + // Skip decals if they don't have normal maps. + if (isDecalMeshInst && !matInst->hasNormalMap()) + return; + + // If its a custom material and it refracts... skip it. + if (matInst->isCustomMaterial() && + static_cast(matInst->getMaterial())->mRefract) + return; + + // Make sure we got a prepass material. + matInst = getPrePassMaterial(matInst); + if (!matInst || !matInst->isValid()) return; } @@ -240,7 +240,7 @@ void RenderPrePassMgr::addElement( RenderInst *inst ) elem.key = *((U32*)&invSortDistSq); // Next sort by pre-pass material if its a mesh... use the original sort key. - if ( isMeshInst ) + if (isMeshInst && matInst) elem.key2 = matInst->getStateHint(); else elem.key2 = originalKey; From 6d121299ec876a49d31a5ca7e8b047157f3f0238 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Mon, 3 Aug 2015 17:09:53 -0500 Subject: [PATCH 44/75] -wall leads to incredibly long compile times (we're talking 5 minutes vs 80, here) --- Tools/CMake/torque3d.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tools/CMake/torque3d.cmake b/Tools/CMake/torque3d.cmake index 1dce72d21..7e853ed7c 100644 --- a/Tools/CMake/torque3d.cmake +++ b/Tools/CMake/torque3d.cmake @@ -29,8 +29,8 @@ if(UNIX) #set(CXX_FLAG32 "-m32") #uncomment for build x32 on OSx64 # default compiler flags - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wall -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wall -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CXX_FLAG32} -Wundef -msse -pipe -Wfatal-errors ${TORQUE_ADDITIONAL_LINKER_FLAGS} -Wl,-rpath,'$$ORIGIN'") # for asm files SET (CMAKE_ASM_NASM_OBJECT_FORMAT "elf") From b614d87e78274fdcd7776cda39d5b7f565951fad Mon Sep 17 00:00:00 2001 From: Areloch Date: Tue, 4 Aug 2015 22:57:25 -0500 Subject: [PATCH 45/75] Fixes the menubar functionality when using SDL. This resolves menu order, cleanup and close/re-open issues, as well as crashes on close. It also modifies the look slightly to look closer to the windows menubar to keep a cohesive look regardless of platform. --- Engine/source/gui/editor/guiMenuBar.cpp | 125 ++++++++++-------- Engine/source/gui/editor/guiMenuBar.h | 7 +- .../source/platformSDL/menus/menuBarSDL.cpp | 74 +++++++++-- .../gui/guiPlatformGenericMenubar.ed.gui | 4 +- Templates/Empty/game/tools/gui/profiles.ed.cs | 6 +- .../gui/guiPlatformGenericMenubar.ed.gui | 4 +- Templates/Full/game/tools/gui/profiles.ed.cs | 6 +- 7 files changed, 151 insertions(+), 75 deletions(-) diff --git a/Engine/source/gui/editor/guiMenuBar.cpp b/Engine/source/gui/editor/guiMenuBar.cpp index 2b0f51373..233ffceef 100644 --- a/Engine/source/gui/editor/guiMenuBar.cpp +++ b/Engine/source/gui/editor/guiMenuBar.cpp @@ -795,14 +795,14 @@ GuiMenuBar::Menu* GuiMenuBar::sCreateMenu(const char *menuText, U32 menuId) return newMenu; } -void GuiMenuBar::addMenu(GuiMenuBar::Menu *newMenu) +void GuiMenuBar::addMenu(GuiMenuBar::Menu *newMenu, S32 pos) { // add it to the menu list menuBarDirty = true; - Menu **walk; - for(walk = &menuList; *walk; walk = &(*walk)->nextMenu) - ; - *walk = newMenu; + if (pos == -1) + mMenuList.push_back(newMenu); + else + mMenuList.insert(pos, newMenu); } void GuiMenuBar::addMenu(const char *menuText, U32 menuId) @@ -817,16 +817,16 @@ GuiMenuBar::Menu *GuiMenuBar::findMenu(const char *menu) if(dIsdigit(menu[0])) { U32 id = dAtoi(menu); - for(Menu *walk = menuList; walk; walk = walk->nextMenu) - if(id == walk->id) - return walk; + for (U32 i = 0; i < mMenuList.size(); ++i) + if (id == mMenuList[i]->id) + return mMenuList[i]; return NULL; } else { - for(Menu *walk = menuList; walk; walk = walk->nextMenu) - if(!dStricmp(menu, walk->text)) - return walk; + for (U32 i = 0; i < mMenuList.size(); ++i) + if (!dStricmp(menu, mMenuList[i]->text)) + return mMenuList[i]; return NULL; } } @@ -854,16 +854,15 @@ void GuiMenuBar::removeMenu(Menu *menu) { menuBarDirty = true; clearMenuItems(menu); - for(Menu **walk = &menuList; *walk; walk = &(*walk)->nextMenu) + + for (U32 i = 0; i < mMenuList.size(); ++i) { - if(*walk == menu) + if (mMenuList[i] == menu) { - *walk = menu->nextMenu; + mMenuList.erase(i); break; } } - dFree(menu->text); - delete menu; } void GuiMenuBar::removeMenuItem(Menu *menu, MenuItem *menuItem) @@ -945,8 +944,26 @@ void GuiMenuBar::clearMenuItems(Menu *menu) void GuiMenuBar::clearMenus() { - while(menuList) - removeMenu(menuList); + mMenuList.clear(); +} + +void GuiMenuBar::attachToMenuBar(Menu* menu, S32 pos) +{ + addMenu(menu, pos); +} + +void GuiMenuBar::removeFromMenuBar(Menu* menu) +{ + menuBarDirty = true; + + for (U32 i = 0; i < mMenuList.size(); ++i) + { + if (mMenuList[i] == menu) + { + mMenuList.erase(i); + break; + } + } } //------------------------------------------------------------------------------ @@ -1083,7 +1100,7 @@ void GuiMenuBar::clearSubmenuItems(MenuItem *menuitem) GuiMenuBar::GuiMenuBar() { - menuList = NULL; + mMenuList.clear(); menuBarDirty = true; mouseDownMenu = NULL; mouseOverMenu = NULL; @@ -1140,9 +1157,9 @@ GuiMenuBar::Menu *GuiMenuBar::findHitMenu(Point2I mousePoint) { Point2I pos = globalToLocalCoord(mousePoint); - for(Menu *walk = menuList; walk; walk = walk->nextMenu) - if(walk->visible && walk->bounds.pointInRect(pos)) - return walk; + for (U32 i = 0; i < mMenuList.size(); ++i) + if (mMenuList[i]->visible && mMenuList[i]->bounds.pointInRect(pos)) + return mMenuList[i]; return NULL; } @@ -1153,35 +1170,35 @@ void GuiMenuBar::onPreRender() { menuBarDirty = false; U32 curX = mPadding; - for(Menu *walk = menuList; walk; walk = walk->nextMenu) + for (U32 i = 0; i < mMenuList.size(); ++i) { - if(!walk->visible) + if (!mMenuList[i]->visible) continue; // Bounds depends on if there is a bitmap to be drawn or not - if(walk->bitmapIndex == -1) + if (mMenuList[i]->bitmapIndex == -1) { // Text only - walk->bounds.set(curX, 0, mProfile->mFont->getStrWidth(walk->text) + (mHorizontalMargin * 2), getHeight() - (mVerticalMargin * 2)); + mMenuList[i]->bounds.set(curX, 0, mProfile->mFont->getStrWidth(mMenuList[i]->text) + (mHorizontalMargin * 2), getHeight() - (mVerticalMargin * 2)); } else { // Will the bitmap and text be draw? - if(!walk->drawBitmapOnly) + if (!mMenuList[i]->drawBitmapOnly) { // Draw the bitmap and the text RectI *bitmapBounds = mProfile->mBitmapArrayRects.address(); - walk->bounds.set(curX, 0, bitmapBounds[walk->bitmapIndex].extent.x + mProfile->mFont->getStrWidth(walk->text) + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2)); + mMenuList[i]->bounds.set(curX, 0, bitmapBounds[mMenuList[i]->bitmapIndex].extent.x + mProfile->mFont->getStrWidth(mMenuList[i]->text) + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2)); } else { // Only the bitmap will be drawn RectI *bitmapBounds = mProfile->mBitmapArrayRects.address(); - walk->bounds.set(curX, 0, bitmapBounds[walk->bitmapIndex].extent.x + mBitmapMargin + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2)); + mMenuList[i]->bounds.set(curX, 0, bitmapBounds[mMenuList[i]->bitmapIndex].extent.x + mBitmapMargin + (mHorizontalMargin * 2), getHeight() + (mVerticalMargin * 2)); } } - curX += walk->bounds.extent.x; + curX += mMenuList[i]->bounds.extent.x; } mouseOverMenu = NULL; mouseDownMenu = NULL; @@ -1290,58 +1307,58 @@ void GuiMenuBar::onRender(Point2I offset, const RectI &updateRect) if (mProfile->mBorder) renderBorder(ctrlRect, mProfile); - for(Menu *walk = menuList; walk; walk = walk->nextMenu) + for (U32 i = 0; i < mMenuList.size(); ++i) { - if(!walk->visible) + if (!mMenuList[i]->visible) continue; ColorI fontColor = mProfile->mFontColor; - RectI bounds = walk->bounds; + RectI bounds = mMenuList[i]->bounds; bounds.point += offset; Point2I start; - start.x = walk->bounds.point.x + mHorizontalMargin; - start.y = walk->bounds.point.y + ( walk->bounds.extent.y - mProfile->mFont->getHeight() ) / 2; + start.x = mMenuList[i]->bounds.point.x + mHorizontalMargin; + start.y = mMenuList[i]->bounds.point.y + (mMenuList[i]->bounds.extent.y - mProfile->mFont->getHeight()) / 2; // Draw the border - if(walk->drawBorder) + if (mMenuList[i]->drawBorder) { RectI highlightBounds = bounds; highlightBounds.inset(1,1); - if(walk == mouseDownMenu) + if (mMenuList[i] == mouseDownMenu) renderFilledBorder(highlightBounds, mProfile->mBorderColorHL, mProfile->mFillColorHL ); - else if(walk == mouseOverMenu && mouseDownMenu == NULL) - renderFilledBorder(highlightBounds, mProfile->mBorderColor, mProfile->mFillColor ); + else if (mMenuList[i] == mouseOverMenu && mouseDownMenu == NULL) + renderFilledBorder(highlightBounds, mProfile->mBorderColorHL, mProfile->mFillColorHL); } // Do we draw a bitmap? - if(walk->bitmapIndex != -1) + if (mMenuList[i]->bitmapIndex != -1) { - S32 index = walk->bitmapIndex * 3; - if(walk == mouseDownMenu) + S32 index = mMenuList[i]->bitmapIndex * 3; + if (mMenuList[i] == mouseDownMenu) ++index; - else if(walk == mouseOverMenu && mouseDownMenu == NULL) + else if (mMenuList[i] == mouseOverMenu && mouseDownMenu == NULL) index += 2; RectI rect = mProfile->mBitmapArrayRects[index]; Point2I bitmapstart(start); - bitmapstart.y = walk->bounds.point.y + ( walk->bounds.extent.y - rect.extent.y ) / 2; + bitmapstart.y = mMenuList[i]->bounds.point.y + (mMenuList[i]->bounds.extent.y - rect.extent.y) / 2; drawUtil->clearBitmapModulation(); drawUtil->drawBitmapSR( mProfile->mTextureObject, offset + bitmapstart, rect); // Should we also draw the text? - if(!walk->drawBitmapOnly) + if (!mMenuList[i]->drawBitmapOnly) { start.x += mBitmapMargin; drawUtil->setBitmapModulation( fontColor ); - drawUtil->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors ); + drawUtil->drawText(mProfile->mFont, start + offset, mMenuList[i]->text, mProfile->mFontColors); } } else { drawUtil->setBitmapModulation( fontColor ); - drawUtil->drawText( mProfile->mFont, start + offset, walk->text, mProfile->mFontColors ); + drawUtil->drawText(mProfile->mFont, start + offset, mMenuList[i]->text, mProfile->mFontColors); } } @@ -1354,9 +1371,9 @@ void GuiMenuBar::buildWindowAcceleratorMap( WindowInputGenerator &inputGenerator // add all our keys: mCurAcceleratorIndex = 1; - for(Menu *menu = menuList; menu; menu = menu->nextMenu) + for (U32 i = 0; i < mMenuList.size(); ++i) { - for(MenuItem *item = menu->firstMenuItem; item; item = item->nextMenuItem) + for (MenuItem *item = mMenuList[i]->firstMenuItem; item; item = item->nextMenuItem) { if(!item->accelerator) { @@ -1384,20 +1401,20 @@ void GuiMenuBar::acceleratorKeyPress(U32 index) { // loop through all the menus // and find the item that corresponds to the accelerator index - for(Menu *menu = menuList; menu; menu = menu->nextMenu) + for (U32 i = 0; i < mMenuList.size(); ++i) { - if(!menu->visible) + if (!mMenuList[i]->visible) continue; - for(MenuItem *item = menu->firstMenuItem; item; item = item->nextMenuItem) + for (MenuItem *item = mMenuList[i]->firstMenuItem; item; item = item->nextMenuItem) { if(item->acceleratorIndex == index) { // first, call the script callback for menu selection: - onMenuSelect_callback(menu->id, menu->text); + onMenuSelect_callback(mMenuList[i]->id, mMenuList[i]->text); if(item->visible) - menuItemSelected(menu, item); + menuItemSelected(mMenuList[i], item); return; } } diff --git a/Engine/source/gui/editor/guiMenuBar.h b/Engine/source/gui/editor/guiMenuBar.h index a6dfeb6fd..a41455a16 100644 --- a/Engine/source/gui/editor/guiMenuBar.h +++ b/Engine/source/gui/editor/guiMenuBar.h @@ -133,7 +133,7 @@ public: GuiSubmenuBackgroundCtrl *mSubmenuBackground; // Background for a submenu GuiMenuTextListCtrl *mSubmenuTextList; // Text list for a submenu - Menu *menuList; + Vector mMenuList; Menu *mouseDownMenu; Menu *mouseOverMenu; @@ -164,7 +164,7 @@ public: // internal menu handling functions // these are used by the script manipulation functions to add/remove/change menu items static Menu* sCreateMenu(const char *menuText, U32 menuId); - void addMenu(Menu *menu); + void addMenu(Menu *menu, S32 pos = -1); void addMenu(const char *menuText, U32 menuId); Menu *findMenu(const char *menu); // takes either a menu text or a string id static MenuItem *findMenuItem(Menu *menu, const char *menuItem); // takes either a menu text or a string id @@ -175,6 +175,9 @@ public: static void clearMenuItems(Menu *menu); void clearMenus(); + void attachToMenuBar(Menu* menu, S32 pos = -1); + void removeFromMenuBar(Menu* menu); + // Methods to deal with submenus static MenuItem* findSubmenuItem(Menu *menu, const char *menuItem, const char *submenuItem); static MenuItem* findSubmenuItem(MenuItem *menuItem, const char *submenuItem); diff --git a/Engine/source/platformSDL/menus/menuBarSDL.cpp b/Engine/source/platformSDL/menus/menuBarSDL.cpp index 3139b743c..211f7bb07 100644 --- a/Engine/source/platformSDL/menus/menuBarSDL.cpp +++ b/Engine/source/platformSDL/menus/menuBarSDL.cpp @@ -112,15 +112,37 @@ void MenuBar::updateMenuBar(PopupMenu *popupMenu /* = NULL */) GuiPlatformGenericMenuBar* menuBarGui = _FindMenuBarCtrl(); popupMenu->mData->mMenuBar = this; - AssertFatal( dStrcmp( popupMenu->mData->mMenuGui->text, popupMenu->getBarTitle() ) == 0, ""); - GuiMenuBar::Menu* menuGui = menuBarGui->findMenu( popupMenu->getBarTitle() ); - if(!menuGui) - { - menuBarGui->addMenu( popupMenu->mData->mMenuGui ); - menuGui = menuBarGui->findMenu( popupMenu->getBarTitle() ); - } + String menuTitle = popupMenu->getBarTitle(); - PlatformPopupMenuData::mMenuMap[ menuGui ] = popupMenu; + //Next, find out if we're still in the list of entries + SimSet::iterator itr = find(begin(), end(), popupMenu); + + GuiMenuBar::Menu* menuGui = menuBarGui->findMenu(menuTitle); + if (!menuGui) + { + //This is our first time setting this particular menu up, so we'll OK it. + if (itr == end()) + menuBarGui->attachToMenuBar(popupMenu->mData->mMenuGui); + else + menuBarGui->attachToMenuBar(popupMenu->mData->mMenuGui, itr - begin()); + } + else + { + //Not our first time through, so we're really updating it. + + //So, first, remove it from the menubar + menuBarGui->removeFromMenuBar(menuGui); + + //Next, find out if we're still in the list of entries + SimSet::iterator itr = find(begin(), end(), popupMenu); + + //if we're no longer in the list, we're pretty much done here + if (itr == end()) + return; + + //We're still here, so this is a valid menu for our current bar configuration, so add us back in. + menuBarGui->attachToMenuBar(menuGui, itr - begin()); + } } //----------------------------------------------------------------------------- @@ -154,17 +176,47 @@ void MenuBar::attachToCanvas(GuiCanvas *owner, S32 pos) mCanvas->setMenuBar( base ); } + + for (S32 i = 0; i < size(); ++i) + { + PopupMenu *mnu = dynamic_cast(at(i)); + if (mnu == NULL) + { + Con::warnf("MenuBar::attachToMenuBar - Non-PopupMenu object in set"); + continue; + } + + if (mnu->isAttachedToMenuBar()) + mnu->removeFromMenuBar(); + + mnu->attachToMenuBar(owner, pos + i); + } } void MenuBar::removeFromCanvas() { - _FindMenuBarCtrl()->clearMenus(); + if (mCanvas == NULL || !isAttachedToCanvas()) + return; + + //_FindMenuBarCtrl()->clearMenus(); + + // Add the items + for (S32 i = 0; i < size(); ++i) + { + PopupMenu *mnu = dynamic_cast(at(i)); + if (mnu == NULL) + { + Con::warnf("MenuBar::removeFromMenuBar - Non-PopupMenu object in set"); + continue; + } + + mnu->removeFromMenuBar(); + } mCanvas->setMenuBar(NULL); - if(mCanvas == NULL || !isAttachedToCanvas()) - return; + mCanvas = NULL; } #endif diff --git a/Templates/Empty/game/tools/gui/guiPlatformGenericMenubar.ed.gui b/Templates/Empty/game/tools/gui/guiPlatformGenericMenubar.ed.gui index 03e21afc4..8d2cbcd74 100644 --- a/Templates/Empty/game/tools/gui/guiPlatformGenericMenubar.ed.gui +++ b/Templates/Empty/game/tools/gui/guiPlatformGenericMenubar.ed.gui @@ -5,8 +5,8 @@ new GuiPlatformGenericMenuBar() { internalName = "menubar"; - extent = "1024 32"; - minExtent = "320 32"; + extent = "1024 20"; + minExtent = "320 20"; horizSizing = "width"; profile = "GuiMenuBarProfile"; }; diff --git a/Templates/Empty/game/tools/gui/profiles.ed.cs b/Templates/Empty/game/tools/gui/profiles.ed.cs index 3104fbd35..04e8df5b2 100644 --- a/Templates/Empty/game/tools/gui/profiles.ed.cs +++ b/Templates/Empty/game/tools/gui/profiles.ed.cs @@ -1067,8 +1067,10 @@ singleton GuiControlProfile( GuiCreatorIconButtonProfile ) singleton GuiControlProfile( GuiMenuBarProfile ) { fillcolor = "255 255 255"; - borderColor = "0 0 0"; - border = 1; + fillcolorHL = "213 231 248"; + borderColor = "98 163 229"; + borderColorHL = "122 177 232"; + border = 0; borderThickness = 1; opaque = true; mouseOverSelected = true; diff --git a/Templates/Full/game/tools/gui/guiPlatformGenericMenubar.ed.gui b/Templates/Full/game/tools/gui/guiPlatformGenericMenubar.ed.gui index 03e21afc4..8d2cbcd74 100644 --- a/Templates/Full/game/tools/gui/guiPlatformGenericMenubar.ed.gui +++ b/Templates/Full/game/tools/gui/guiPlatformGenericMenubar.ed.gui @@ -5,8 +5,8 @@ new GuiPlatformGenericMenuBar() { internalName = "menubar"; - extent = "1024 32"; - minExtent = "320 32"; + extent = "1024 20"; + minExtent = "320 20"; horizSizing = "width"; profile = "GuiMenuBarProfile"; }; diff --git a/Templates/Full/game/tools/gui/profiles.ed.cs b/Templates/Full/game/tools/gui/profiles.ed.cs index 3104fbd35..04e8df5b2 100644 --- a/Templates/Full/game/tools/gui/profiles.ed.cs +++ b/Templates/Full/game/tools/gui/profiles.ed.cs @@ -1067,8 +1067,10 @@ singleton GuiControlProfile( GuiCreatorIconButtonProfile ) singleton GuiControlProfile( GuiMenuBarProfile ) { fillcolor = "255 255 255"; - borderColor = "0 0 0"; - border = 1; + fillcolorHL = "213 231 248"; + borderColor = "98 163 229"; + borderColorHL = "122 177 232"; + border = 0; borderThickness = 1; opaque = true; mouseOverSelected = true; From 3aba4a7259455c2eafa74cec6055fb07a2e1bdb6 Mon Sep 17 00:00:00 2001 From: Areloch Date: Tue, 4 Aug 2015 23:01:59 -0500 Subject: [PATCH 46/75] SDL mouse wheel speed fix. Default scroll speed wasn't delta-modified, so scroll gui controls were very slow when scrolled via mouse wheel.. This corrects the issue. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 140673313..10f4cce4a 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -434,7 +434,7 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) { - wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y); + wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * WHEEL_DELTA); } void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) From 8248ecdeac1e7acf564427cfa3cdf020bbbbef3c Mon Sep 17 00:00:00 2001 From: Areloch Date: Wed, 5 Aug 2015 17:44:55 -0500 Subject: [PATCH 47/75] Looks like WHEEL_DELTA is defined for win and osx, but not linux. Retooling to utilize a $pref instead, as that will let the scroll speed be modifiable for any projects that need it. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 2 +- Templates/Empty/game/core/scripts/client/defaults.cs | 1 + Templates/Full/game/core/scripts/client/defaults.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 10f4cce4a..1d92c6f2e 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -434,7 +434,7 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) { - wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * WHEEL_DELTA); + wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * Con::getIntVariable("$pref::Input::MouseWheelSpeed")); } void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) diff --git a/Templates/Empty/game/core/scripts/client/defaults.cs b/Templates/Empty/game/core/scripts/client/defaults.cs index 87a77b295..0142a9410 100644 --- a/Templates/Empty/game/core/scripts/client/defaults.cs +++ b/Templates/Empty/game/core/scripts/client/defaults.cs @@ -41,6 +41,7 @@ $pref::Input::KeyboardEnabled = 1; $pref::Input::MouseEnabled = 1; $pref::Input::JoystickEnabled = 0; $pref::Input::KeyboardTurnSpeed = 0.1; +$pref::Input::MouseWheelSpeed = 120; $sceneLighting::cacheSize = 20000; $sceneLighting::purgeMethod = "lastCreated"; diff --git a/Templates/Full/game/core/scripts/client/defaults.cs b/Templates/Full/game/core/scripts/client/defaults.cs index 87a77b295..0142a9410 100644 --- a/Templates/Full/game/core/scripts/client/defaults.cs +++ b/Templates/Full/game/core/scripts/client/defaults.cs @@ -41,6 +41,7 @@ $pref::Input::KeyboardEnabled = 1; $pref::Input::MouseEnabled = 1; $pref::Input::JoystickEnabled = 0; $pref::Input::KeyboardTurnSpeed = 0.1; +$pref::Input::MouseWheelSpeed = 120; $sceneLighting::cacheSize = 20000; $sceneLighting::purgeMethod = "lastCreated"; From 2f33de36158476af3daa749aeca3a69e6907c341 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 6 Aug 2015 04:00:56 -0500 Subject: [PATCH 48/75] case sensitivity fixe for linux --- .../common/lighting/advanced/gl/dbgGlowVisualizeP.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates/Full/game/shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl b/Templates/Full/game/shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl index 9e93db397..fa573f07f 100644 --- a/Templates/Full/game/shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl +++ b/Templates/Full/game/shaders/common/lighting/advanced/gl/dbgGlowVisualizeP.glsl @@ -22,7 +22,7 @@ #include "../../../gl/hlslCompat.glsl" #include "shadergen:/autogenConditioners.h" -#include "../../../postfx/gl/postFx.glsl" +#include "../../../postFx/gl/postFX.glsl" uniform sampler2D glowBuffer; @@ -31,4 +31,4 @@ out vec4 OUT_FragColor0; void main() { OUT_FragColor0 = texture(glowBuffer, uv0); -} \ No newline at end of file +} From 68a2c9fa894d89c4c421325f0c9704e90dd2d763 Mon Sep 17 00:00:00 2001 From: Areloch Date: Thu, 6 Aug 2015 18:29:01 -0500 Subject: [PATCH 49/75] Added a default value just in case the pref is not defined. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 1d92c6f2e..a0d57905e 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -434,7 +434,7 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) { - wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * Con::getIntVariable("$pref::Input::MouseWheelSpeed")); + wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * Con::getIntVariable("$pref::Input::MouseWheelSpeed", 120)); } void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) From af38320300832f93bfa429d5300fbe0273253912 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 6 Aug 2015 20:52:48 -0500 Subject: [PATCH 50/75] warning C4706: assignment within conditional expression --- Engine/source/forest/forestWindEmitter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Engine/source/forest/forestWindEmitter.cpp b/Engine/source/forest/forestWindEmitter.cpp index 67dc3fc12..eaab18665 100644 --- a/Engine/source/forest/forestWindEmitter.cpp +++ b/Engine/source/forest/forestWindEmitter.cpp @@ -522,8 +522,9 @@ void ForestWindEmitter::_renderEmitterInfo( ObjectRenderInst *ri, SceneRenderSta // If the camera is close to the sphere, shrink the sphere so it remains visible. GameConnection* gc = GameConnection::getConnectionToServer(); GameBase* gb; - if ( gc && (gb = gc->getCameraObject()) ) + if (gc && (gc->getCameraObject())) { + gb = gc->getCameraObject(); F32 camDist = (gb->getPosition() - getPosition()).len(); if ( camDist < mWindRadius ) useRadius = camDist; From 5bc926e97c90472e1a88d82dd9eac3adf2c130d0 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 6 Aug 2015 21:01:20 -0500 Subject: [PATCH 51/75] warning C4005: 'WIN32' : macro redefinition --- Engine/source/ts/tsMeshFit.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/ts/tsMeshFit.cpp b/Engine/source/ts/tsMeshFit.cpp index bf4225406..6d11f773a 100644 --- a/Engine/source/ts/tsMeshFit.cpp +++ b/Engine/source/ts/tsMeshFit.cpp @@ -28,9 +28,9 @@ #include "console/engineAPI.h" // define macros required for ConvexDecomp headers -#if defined( _WIN32 ) +#if defined( _WIN32 ) && !defined( WIN32 ) #define WIN32 -#elif defined( __MACOSX__ ) +#elif defined( __MACOSX__ ) && !defined( APPLE ) #define APPLE #endif From c100d7f932d3d37e3b2bbf80f643b9247599d488 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 6 Aug 2015 21:56:46 -0500 Subject: [PATCH 52/75] suggested revision --- Engine/source/forest/forestWindEmitter.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Engine/source/forest/forestWindEmitter.cpp b/Engine/source/forest/forestWindEmitter.cpp index eaab18665..20ad621cf 100644 --- a/Engine/source/forest/forestWindEmitter.cpp +++ b/Engine/source/forest/forestWindEmitter.cpp @@ -521,10 +521,9 @@ void ForestWindEmitter::_renderEmitterInfo( ObjectRenderInst *ri, SceneRenderSta { // If the camera is close to the sphere, shrink the sphere so it remains visible. GameConnection* gc = GameConnection::getConnectionToServer(); - GameBase* gb; - if (gc && (gc->getCameraObject())) + GameBase *gb = gc ? gc->getCameraObject() : NULL; + if (gb) { - gb = gc->getCameraObject(); F32 camDist = (gb->getPosition() - getPosition()).len(); if ( camDist < mWindRadius ) useRadius = camDist; From 5efc04dd472dbf0ca91f2411d22978e0ec618059 Mon Sep 17 00:00:00 2001 From: Areloch Date: Thu, 6 Aug 2015 22:18:10 -0500 Subject: [PATCH 53/75] Also apply scroll strength to horizontal scrolling. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index a0d57905e..60c3c4065 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -434,7 +434,8 @@ void PlatformWindowSDL::_triggerMouseLocationNotify(const SDL_Event& evt) void PlatformWindowSDL::_triggerMouseWheelNotify(const SDL_Event& evt) { - wheelEvent.trigger(getWindowId(), 0, evt.wheel.x, evt.wheel.y * Con::getIntVariable("$pref::Input::MouseWheelSpeed", 120)); + S32 wheelDelta = Con::getIntVariable("$pref::Input::MouseWheelSpeed", 120); + wheelEvent.trigger(getWindowId(), 0, evt.wheel.x * wheelDelta, evt.wheel.y * wheelDelta); } void PlatformWindowSDL::_triggerMouseButtonNotify(const SDL_Event& event) From ac515a9ab12e1295e4836740f30344fb623e3b08 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Mon, 10 Aug 2015 21:54:30 -0500 Subject: [PATCH 54/75] release the mouse from window constraints when poping up a window prompt like, say, assertfatal, to allow clicking in the popup. --- Engine/source/platformSDL/sdlMsgBox.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Engine/source/platformSDL/sdlMsgBox.cpp b/Engine/source/platformSDL/sdlMsgBox.cpp index 6bb5b0bda..b9466f768 100644 --- a/Engine/source/platformSDL/sdlMsgBox.cpp +++ b/Engine/source/platformSDL/sdlMsgBox.cpp @@ -76,6 +76,10 @@ S32 Platform::messageBox(const UTF8 *title, const UTF8 *message, MBButtons butto initMsgBox_ButtonData(); SDL_Window *window = WindowManager->getFirstWindow() ? SDL_GetWindowFromID( WindowManager->getFirstWindow()->getWindowId() ) : NULL; + + if (window) //release the mouse from the window constaints + SDL_SetWindowGrab(window, SDL_FALSE); + if(buttons == MBOk) return SDL_ShowSimpleMessageBox(0, title, message, window ); From 7df625ea14b676a915f1704608d80beade694f89 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 12 Aug 2015 16:17:08 -0500 Subject: [PATCH 55/75] Adds data to vector out of bounds reports Like say, if it's crashing out due to being passed a -1, or adding past the end. --- Engine/source/core/util/tVector.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Engine/source/core/util/tVector.h b/Engine/source/core/util/tVector.h index 5042c4ba8..0280db5f5 100644 --- a/Engine/source/core/util/tVector.h +++ b/Engine/source/core/util/tVector.h @@ -684,13 +684,13 @@ template inline void Vector::pop_back() template inline T& Vector::operator[](U32 index) { - AssertFatal(index < mElementCount, "Vector::operator[] - out of bounds array access!"); + AssertFatal(index < mElementCount, avar("Vector::operator[%i/%i] - out of bounds array access!", index, mElementCount)); return mArray[index]; } template inline const T& Vector::operator[](U32 index) const { - AssertFatal(index < mElementCount, "Vector::operator[] - out of bounds array access!"); + AssertFatal(index < mElementCount, avar("Vector::operator[%i/%i] - out of bounds array access!", index, mElementCount)); return mArray[index]; } From 1df7e47a89c28eba9e63176632fb7b0241c6155d Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 13 Aug 2015 15:34:41 -0500 Subject: [PATCH 56/75] From @LuisAntonRebollo -Stymies infinite loop on exit with SDL2+opengl on windows. --- Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h b/Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h index 6524a75f5..c291cb229 100644 --- a/Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h +++ b/Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h @@ -14,7 +14,9 @@ public: ~GLFenceRange() { - AssertFatal( mSync == 0, ""); + //the order of creation/destruction of static variables is indetermined... depends on detail of the build + //looks like for some reason on windows + sdl + opengl the order make invalid / wrong the process TODO: Refactor -LAR + //AssertFatal( mSync == 0, ""); } void init(U32 start, U32 end) @@ -87,7 +89,9 @@ public: ~GLOrderedFenceRangeManager( ) { - waitAllRanges( ); + //the order of creation/destruction of static variables is indetermined... depends on detail of the build + //looks like for some reason on windows + sdl + opengl the order make invalid / wrong the process TODO: Refactor -LAR + //waitAllRanges( ); } void protectOrderedRange( U32 start, U32 end ) From 03e0874f9ce2d22e66975cfdb32bc5c67197fd08 Mon Sep 17 00:00:00 2001 From: Duion Date: Thu, 13 Aug 2015 23:39:15 +0200 Subject: [PATCH 57/75] Update messageBox.ed.cs Must be "Canvas" instead of "0" --- .../Full/game/core/scripts/gui/messageBoxes/messageBox.ed.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates/Full/game/core/scripts/gui/messageBoxes/messageBox.ed.cs b/Templates/Full/game/core/scripts/gui/messageBoxes/messageBox.ed.cs index 13c855927..b4192ecb1 100644 --- a/Templates/Full/game/core/scripts/gui/messageBoxes/messageBox.ed.cs +++ b/Templates/Full/game/core/scripts/gui/messageBoxes/messageBox.ed.cs @@ -21,7 +21,7 @@ //----------------------------------------------------------------------------- if($GameCanvas == OculusCanvas) - $GameCanvas = 0; + $GameCanvas = Canvas; // Cleanup Dialog created by 'core' if( isObject( MessagePopupDlg ) ) From 242d317a315e9e7b091a122f5c6a609c08214941 Mon Sep 17 00:00:00 2001 From: Areloch Date: Thu, 13 Aug 2015 23:38:59 -0500 Subject: [PATCH 58/75] Adds a debug visualization mode for the active physics world. Allows you to see the active collision info for the physics engine. --- Templates/Empty/game/tools/worldEditor/main.cs | 2 ++ .../game/tools/worldEditor/scripts/visibilityLayer.ed.cs | 8 ++++++++ Templates/Full/game/tools/worldEditor/main.cs | 1 + .../game/tools/worldEditor/scripts/visibilityLayer.ed.cs | 8 ++++++++ 4 files changed, 19 insertions(+) diff --git a/Templates/Empty/game/tools/worldEditor/main.cs b/Templates/Empty/game/tools/worldEditor/main.cs index ed4453cdc..a6ecb2872 100644 --- a/Templates/Empty/game/tools/worldEditor/main.cs +++ b/Templates/Empty/game/tools/worldEditor/main.cs @@ -114,11 +114,13 @@ function initializeWorldEditor() EVisibility.addOption( "Debug Render: Decals", "$Decals::debugRender", "" ); EVisibility.addOption( "Debug Render: Light Frustums", "$Light::renderLightFrustums", "" ); EVisibility.addOption( "Debug Render: Bounding Boxes", "$Scene::renderBoundingBoxes", "" ); + EVisibility.addOption( "Debug Render: Physics World", "$PhysicsWorld::render", "togglePhysicsDebugViz" ); EVisibility.addOption( "AL: Disable Shadows", "$Shadows::disable", "" ); EVisibility.addOption( "AL: Light Color Viz", "$AL_LightColorVisualizeVar", "toggleLightColorViz" ); EVisibility.addOption( "AL: Light Specular Viz", "$AL_LightSpecularVisualizeVar", "toggleLightSpecularViz" ); EVisibility.addOption( "AL: Normals Viz", "$AL_NormalsVisualizeVar", "toggleNormalsViz" ); EVisibility.addOption( "AL: Depth Viz", "$AL_DepthVisualizeVar", "toggleDepthViz" ); + EVisibility.addOption( "AL: Glow Buffer", "$AL_GlowVisualizeVar", "toggleGlowViz" ); EVisibility.addOption( "AL: PSSM Cascade Viz", "$AL::PSSMDebugRender", "" ); EVisibility.addOption( "Frustum Lock", "$Scene::lockCull", "" ); EVisibility.addOption( "Disable Zone Culling", "$Scene::disableZoneCulling", "" ); diff --git a/Templates/Empty/game/tools/worldEditor/scripts/visibilityLayer.ed.cs b/Templates/Empty/game/tools/worldEditor/scripts/visibilityLayer.ed.cs index ed6709568..268e4b0b3 100644 --- a/Templates/Empty/game/tools/worldEditor/scripts/visibilityLayer.ed.cs +++ b/Templates/Empty/game/tools/worldEditor/scripts/visibilityLayer.ed.cs @@ -191,3 +191,11 @@ function EVisibility::addClassOptions( %this ) %selList.addGuiControl( %selCheckBox ); } } + +function togglePhysicsDebugViz( %enable ) +{ + if(physicsPluginPresent()) + { + physicsDebugDraw(%enable); + } +} diff --git a/Templates/Full/game/tools/worldEditor/main.cs b/Templates/Full/game/tools/worldEditor/main.cs index 77ce64a9b..a6ecb2872 100644 --- a/Templates/Full/game/tools/worldEditor/main.cs +++ b/Templates/Full/game/tools/worldEditor/main.cs @@ -114,6 +114,7 @@ function initializeWorldEditor() EVisibility.addOption( "Debug Render: Decals", "$Decals::debugRender", "" ); EVisibility.addOption( "Debug Render: Light Frustums", "$Light::renderLightFrustums", "" ); EVisibility.addOption( "Debug Render: Bounding Boxes", "$Scene::renderBoundingBoxes", "" ); + EVisibility.addOption( "Debug Render: Physics World", "$PhysicsWorld::render", "togglePhysicsDebugViz" ); EVisibility.addOption( "AL: Disable Shadows", "$Shadows::disable", "" ); EVisibility.addOption( "AL: Light Color Viz", "$AL_LightColorVisualizeVar", "toggleLightColorViz" ); EVisibility.addOption( "AL: Light Specular Viz", "$AL_LightSpecularVisualizeVar", "toggleLightSpecularViz" ); diff --git a/Templates/Full/game/tools/worldEditor/scripts/visibilityLayer.ed.cs b/Templates/Full/game/tools/worldEditor/scripts/visibilityLayer.ed.cs index ed6709568..268e4b0b3 100644 --- a/Templates/Full/game/tools/worldEditor/scripts/visibilityLayer.ed.cs +++ b/Templates/Full/game/tools/worldEditor/scripts/visibilityLayer.ed.cs @@ -191,3 +191,11 @@ function EVisibility::addClassOptions( %this ) %selList.addGuiControl( %selCheckBox ); } } + +function togglePhysicsDebugViz( %enable ) +{ + if(physicsPluginPresent()) + { + physicsDebugDraw(%enable); + } +} From 826be7287a88e3755a94c81869efa7a3df32cd02 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Fri, 14 Aug 2015 18:00:36 -0500 Subject: [PATCH 59/75] case sensitivity script fixes --- Templates/Empty/game/tools/debugger/main.cs | 16 ++++++++-------- Templates/Empty/game/tools/navEditor/main.cs | 2 +- Templates/Full/game/tools/debugger/main.cs | 16 ++++++++-------- Templates/Full/game/tools/navEditor/main.cs | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Templates/Empty/game/tools/debugger/main.cs b/Templates/Empty/game/tools/debugger/main.cs index 8fad76509..f51222665 100644 --- a/Templates/Empty/game/tools/debugger/main.cs +++ b/Templates/Empty/game/tools/debugger/main.cs @@ -33,15 +33,15 @@ function initializeDebugger() echo(" % - Initializing Debugger"); // Load the scripts. - exec("./Scripts/debugger.ed.cs"); + exec("./scripts/debugger.ed.cs"); // And the guis. - exec("./Gui/breakConditionDlg.ed.gui"); - exec("./Gui/connectDlg.ed.gui"); - exec("./Gui/editWatchDlg.ed.gui"); - exec("./Gui/findDlg.ed.gui"); - exec("./Gui/debugger.ed.gui"); - exec("./Gui/watchDlg.ed.gui"); + exec("./gui/breakConditionDlg.ed.gui"); + exec("./gui/connectDlg.ed.gui"); + exec("./gui/editWatchDlg.ed.gui"); + exec("./gui/findDlg.ed.gui"); + exec("./gui/debugger.ed.gui"); + exec("./gui/watchDlg.ed.gui"); } function destroyDebugger() @@ -64,5 +64,5 @@ function startDebugger() // Set up the GUI. DebuggerConsoleView.setActive(false); - Canvas.pushDialog(DebuggerGui); + $GameCanvas.pushDialog(DebuggerGui); } diff --git a/Templates/Empty/game/tools/navEditor/main.cs b/Templates/Empty/game/tools/navEditor/main.cs index b47752efc..bcc9cac59 100644 --- a/Templates/Empty/game/tools/navEditor/main.cs +++ b/Templates/Empty/game/tools/navEditor/main.cs @@ -34,7 +34,7 @@ function initializeNavEditor() echo(" % - Initializing Navigation Editor"); // Execute all relevant scripts and GUIs. - exec("./NavEditor.cs"); + exec("./navEditor.cs"); exec("./NavEditorGui.gui"); exec("./NavEditorToolbar.gui"); exec("./NavEditorConsoleDlg.gui"); diff --git a/Templates/Full/game/tools/debugger/main.cs b/Templates/Full/game/tools/debugger/main.cs index 8fad76509..f51222665 100644 --- a/Templates/Full/game/tools/debugger/main.cs +++ b/Templates/Full/game/tools/debugger/main.cs @@ -33,15 +33,15 @@ function initializeDebugger() echo(" % - Initializing Debugger"); // Load the scripts. - exec("./Scripts/debugger.ed.cs"); + exec("./scripts/debugger.ed.cs"); // And the guis. - exec("./Gui/breakConditionDlg.ed.gui"); - exec("./Gui/connectDlg.ed.gui"); - exec("./Gui/editWatchDlg.ed.gui"); - exec("./Gui/findDlg.ed.gui"); - exec("./Gui/debugger.ed.gui"); - exec("./Gui/watchDlg.ed.gui"); + exec("./gui/breakConditionDlg.ed.gui"); + exec("./gui/connectDlg.ed.gui"); + exec("./gui/editWatchDlg.ed.gui"); + exec("./gui/findDlg.ed.gui"); + exec("./gui/debugger.ed.gui"); + exec("./gui/watchDlg.ed.gui"); } function destroyDebugger() @@ -64,5 +64,5 @@ function startDebugger() // Set up the GUI. DebuggerConsoleView.setActive(false); - Canvas.pushDialog(DebuggerGui); + $GameCanvas.pushDialog(DebuggerGui); } diff --git a/Templates/Full/game/tools/navEditor/main.cs b/Templates/Full/game/tools/navEditor/main.cs index b47752efc..bcc9cac59 100644 --- a/Templates/Full/game/tools/navEditor/main.cs +++ b/Templates/Full/game/tools/navEditor/main.cs @@ -34,7 +34,7 @@ function initializeNavEditor() echo(" % - Initializing Navigation Editor"); // Execute all relevant scripts and GUIs. - exec("./NavEditor.cs"); + exec("./navEditor.cs"); exec("./NavEditorGui.gui"); exec("./NavEditorToolbar.gui"); exec("./NavEditorConsoleDlg.gui"); From a0aa826f16ea3fd10fbcceec55336b1fedcd7d78 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Tue, 18 Aug 2015 06:12:37 -0500 Subject: [PATCH 60/75] Adds a verifyCompatibility method to the Win32FileSystem to report case-sensitivity issues -triggered during debug only -still need to expand that to handle bad directories. --- Engine/source/platformWin32/winVolume.cpp | 11 +++++++++++ Engine/source/platformWin32/winVolume.h | 1 + 2 files changed, 12 insertions(+) diff --git a/Engine/source/platformWin32/winVolume.cpp b/Engine/source/platformWin32/winVolume.cpp index 9f5eb3459..af0bf96bc 100644 --- a/Engine/source/platformWin32/winVolume.cpp +++ b/Engine/source/platformWin32/winVolume.cpp @@ -236,6 +236,14 @@ Win32FileSystem::~Win32FileSystem() { } +void Win32FileSystem::verifyCompatibility(const Path& _path, WIN32_FIND_DATAW _info) +{ + if (_path.getFullFileName().isNotEmpty() && _path.getFullFileName().compare(String(_info.cFileName)) != 0) + { + Con::warnf("Linux Compatibility Warning: %s != %s", String(_info.cFileName).c_str(), _path.getFullFileName().c_str()); + } +} + FileNodeRef Win32FileSystem::resolve(const Path& path) { String file = _BuildFileName(mVolume,path); @@ -245,6 +253,9 @@ FileNodeRef Win32FileSystem::resolve(const Path& path) ::FindClose(handle); if (handle != INVALID_HANDLE_VALUE) { +#ifdef TORQUE_DEBUG + verifyCompatibility(path, info); +#endif if (S_ISREG(info.dwFileAttributes)) return new Win32File(path,file); if (S_ISDIR(info.dwFileAttributes)) diff --git a/Engine/source/platformWin32/winVolume.h b/Engine/source/platformWin32/winVolume.h index b4211898d..4b3160a25 100644 --- a/Engine/source/platformWin32/winVolume.h +++ b/Engine/source/platformWin32/winVolume.h @@ -45,6 +45,7 @@ public: String getTypeStr() const { return "Win32"; } FileNodeRef resolve(const Path& path); + void verifyCompatibility(const Path& _path, WIN32_FIND_DATAW _info); FileNodeRef create(const Path& path,FileNode::Mode); bool remove(const Path& path); bool rename(const Path& from,const Path& to); From dd89f9b82a3011d0c00ef115fdb2384709e379e3 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Tue, 18 Aug 2015 06:22:21 -0500 Subject: [PATCH 61/75] git hates batch renames pt1 --- .../Empty/game/tools/classIcons/CreatorTree.png | Bin 196 -> 0 bytes .../game/tools/classIcons/ForestBrushElement.png | Bin 409 -> 0 bytes .../Empty/game/tools/classIcons/GameTSCtrl.png | Bin 558 -> 0 bytes .../game/tools/classIcons/GuiAutoScrollCtrl.png | Bin 252 -> 0 bytes .../game/tools/classIcons/GuiBitmapBorderCtrl.png | Bin 480 -> 0 bytes .../game/tools/classIcons/GuiBitmapButtonCtrl.png | Bin 756 -> 0 bytes .../tools/classIcons/GuiBitmapButtonTextCtrl.png | Bin 726 -> 0 bytes .../Empty/game/tools/classIcons/GuiBitmapCtrl.png | Bin 520 -> 0 bytes .../game/tools/classIcons/GuiBorderButtonCtrl.png | Bin 144 -> 0 bytes .../Empty/game/tools/classIcons/GuiButtonCtrl.png | Bin 292 -> 0 bytes .../game/tools/classIcons/GuiCheckBoxCtrl.png | Bin 459 -> 0 bytes .../game/tools/classIcons/GuiColorPickerCtrl.png | Bin 396 -> 0 bytes .../Empty/game/tools/classIcons/GuiContainer.png | Bin 138 -> 0 bytes .../tools/classIcons/GuiControlArrayControl.png | Bin 194 -> 0 bytes .../game/tools/classIcons/GuiCrossHairHud.png | Bin 439 -> 0 bytes .../Empty/game/tools/classIcons/GuiDecoyCtrl.png | Bin 178 -> 0 bytes .../tools/classIcons/GuiDragAndDropControl.png | Bin 479 -> 0 bytes .../classIcons/GuiDynamicCtrlArrayControl.png | Bin 248 -> 0 bytes .../game/tools/classIcons/GuiFadeInBitmapCtrl.png | Bin 596 -> 0 bytes .../game/tools/classIcons/GuiFileTreeCtrl.png | Bin 196 -> 0 bytes .../Empty/game/tools/classIcons/GuiFilterCtrl.png | Bin 227 -> 0 bytes .../Empty/game/tools/classIcons/GuiFormCtrl.png | Bin 183 -> 0 bytes .../game/tools/classIcons/GuiFrameSetCtrl.png | Bin 233 -> 0 bytes .../tools/classIcons/GuiGradientSwatchCtrl.png | Bin 176 -> 0 bytes .../Empty/game/tools/classIcons/GuiGraphCtrl.png | Bin 466 -> 0 bytes .../game/tools/classIcons/GuiHealthBarHud.png | Bin 153 -> 0 bytes .../game/tools/classIcons/GuiIconButtonCtrl.png | Bin 424 -> 0 bytes .../game/tools/classIcons/GuiListBoxCtrl.png | Bin 326 -> 0 bytes .../Empty/game/tools/classIcons/GuiMLTextCtrl.png | Bin 156 -> 0 bytes .../game/tools/classIcons/GuiMLTextEditCtrl.png | Bin 181 -> 0 bytes .../Empty/game/tools/classIcons/GuiMenuBar.png | Bin 171 -> 0 bytes .../Empty/game/tools/classIcons/GuiObjectView.png | Bin 407 -> 0 bytes .../Empty/game/tools/classIcons/GuiPanel.png | Bin 182 -> 0 bytes .../game/tools/classIcons/GuiPopUpMenuCtrl.png | Bin 230 -> 0 bytes .../game/tools/classIcons/GuiPopUpMenuCtrlEx.png | Bin 248 -> 0 bytes .../tools/classIcons/GuiProgressBitmapCtrl.png | Bin 263 -> 0 bytes .../game/tools/classIcons/GuiProgressCtrl.png | Bin 185 -> 0 bytes .../Empty/game/tools/classIcons/GuiRadioCtrl.png | Bin 505 -> 0 bytes .../game/tools/classIcons/GuiRectHandles.png | Bin 204 -> 0 bytes .../game/tools/classIcons/GuiRolloutCtrl.png | Bin 225 -> 0 bytes .../Empty/game/tools/classIcons/GuiScrollCtrl.png | Bin 313 -> 0 bytes .../game/tools/classIcons/GuiSplitContainer.png | Bin 174 -> 0 bytes .../game/tools/classIcons/GuiStackControl.png | Bin 219 -> 0 bytes .../game/tools/classIcons/GuiSwatchButtonCtrl.png | Bin 176 -> 0 bytes .../game/tools/classIcons/GuiTabBookCtrl.png | Bin 466 -> 0 bytes .../game/tools/classIcons/GuiTabPageCtrl.png | Bin 331 -> 0 bytes .../Empty/game/tools/classIcons/GuiTextCtrl.png | Bin 206 -> 0 bytes .../game/tools/classIcons/GuiTextEditCtrl.png | Bin 247 -> 0 bytes .../tools/classIcons/GuiTextEditSliderCtrl.png | Bin 289 -> 0 bytes .../game/tools/classIcons/GuiTextListCtrl.png | Bin 153 -> 0 bytes .../Empty/game/tools/classIcons/GuiTheoraCtrl.png | Bin 636 -> 0 bytes .../game/tools/classIcons/GuiTreeViewCtrl.png | Bin 196 -> 0 bytes .../tools/classIcons/GuiWindowCollapseCtrl.png | Bin 235 -> 0 bytes .../Empty/game/tools/classIcons/GuiWindowCtrl.png | Bin 235 -> 0 bytes Templates/Empty/game/tools/classIcons/NavMesh.png | Bin 106 -> 0 bytes Templates/Empty/game/tools/classIcons/NavPath.png | Bin 241 -> 0 bytes Templates/Empty/game/tools/classIcons/PxCloth.png | Bin 573 -> 0 bytes .../Empty/game/tools/classIcons/SimDataBlock.png | Bin 575 -> 0 bytes .../game/tools/classIcons/TSForestItemData.png | Bin 436 -> 0 bytes .../Empty/game/tools/classIcons/basicClouds.png | Bin 502 -> 0 bytes Templates/Empty/game/tools/classIcons/camera.png | Bin 526 -> 0 bytes .../game/tools/classIcons/cameraBookmark.png | Bin 526 -> 0 bytes .../Empty/game/tools/classIcons/cameraSpawn.png | Bin 778 -> 0 bytes .../Empty/game/tools/classIcons/cloudLayer.png | Bin 652 -> 0 bytes .../Empty/game/tools/classIcons/convexShape.png | Bin 374 -> 0 bytes Templates/Empty/game/tools/classIcons/decal.png | Bin 567 -> 0 bytes .../Empty/game/tools/classIcons/decalNode.png | Bin 693 -> 0 bytes .../Empty/game/tools/classIcons/decalRoad.png | Bin 514 -> 0 bytes Templates/Empty/game/tools/classIcons/default.png | Bin 356 -> 0 bytes Templates/Empty/game/tools/classIcons/forest.png | Bin 800 -> 0 bytes .../Empty/game/tools/classIcons/forestBrush.png | Bin 710 -> 0 bytes .../game/tools/classIcons/fxFoliageReplicator.png | Bin 538 -> 0 bytes .../game/tools/classIcons/fxshapereplicator.png | Bin 560 -> 0 bytes .../Empty/game/tools/classIcons/groundCover.png | Bin 368 -> 0 bytes .../Empty/game/tools/classIcons/groundPlane.png | Bin 132 -> 0 bytes .../Empty/game/tools/classIcons/guiControl.png | Bin 233 -> 0 bytes .../game/tools/classIcons/interiorInstance.png | Bin 418 -> 0 bytes Templates/Empty/game/tools/classIcons/item.png | Bin 766 -> 0 bytes .../Empty/game/tools/classIcons/levelInfo.png | Bin 744 -> 0 bytes .../Empty/game/tools/classIcons/lightning.png | Bin 470 -> 0 bytes Templates/Empty/game/tools/classIcons/marker.png | Bin 169 -> 0 bytes .../Empty/game/tools/classIcons/meshRoad.png | Bin 430 -> 0 bytes .../Empty/game/tools/classIcons/missionArea.png | Bin 591 -> 0 bytes .../tools/classIcons/particleEffecterObject.png | Bin 727 -> 0 bytes .../game/tools/classIcons/particleEmitter.png | Bin 773 -> 0 bytes .../game/tools/classIcons/particleEmitterNode.png | Bin 426 -> 0 bytes .../tools/classIcons/particleEmitterObject.png | Bin 773 -> 0 bytes .../game/tools/classIcons/particleSimulation.png | Bin 766 -> 0 bytes Templates/Empty/game/tools/classIcons/path.png | Bin 323 -> 0 bytes .../Empty/game/tools/classIcons/pathMarker.png | Bin 169 -> 0 bytes .../Empty/game/tools/classIcons/physicalZone.png | Bin 464 -> 0 bytes Templates/Empty/game/tools/classIcons/player.png | Bin 480 -> 0 bytes .../Empty/game/tools/classIcons/pointLight.png | Bin 503 -> 0 bytes Templates/Empty/game/tools/classIcons/portal.png | Bin 390 -> 0 bytes .../Empty/game/tools/classIcons/precipitation.png | Bin 381 -> 0 bytes Templates/Empty/game/tools/classIcons/prefab.png | Bin 688 -> 0 bytes Templates/Empty/game/tools/classIcons/river.png | Bin 789 -> 0 bytes .../Empty/game/tools/classIcons/scatterSky.png | Bin 624 -> 0 bytes .../Empty/game/tools/classIcons/sceneobject.png | Bin 369 -> 0 bytes .../Empty/game/tools/classIcons/sfxEmitter.png | Bin 368 -> 0 bytes .../Empty/game/tools/classIcons/simObject.png | Bin 358 -> 0 bytes Templates/Empty/game/tools/classIcons/simSet.png | Bin 236 -> 0 bytes Templates/Empty/game/tools/classIcons/skyBox.png | Bin 749 -> 0 bytes .../Empty/game/tools/classIcons/spawnsphere.png | Bin 748 -> 0 bytes .../Empty/game/tools/classIcons/spotLight.png | Bin 732 -> 0 bytes Templates/Empty/game/tools/classIcons/sun.png | Bin 419 -> 0 bytes .../Empty/game/tools/classIcons/terrainBlock.png | Bin 607 -> 0 bytes .../Empty/game/tools/classIcons/timeofday.png | Bin 744 -> 0 bytes Templates/Empty/game/tools/classIcons/trigger.png | Bin 513 -> 0 bytes .../Empty/game/tools/classIcons/tsStatic.png | Bin 767 -> 0 bytes .../Empty/game/tools/classIcons/volumeLight.png | Bin 665 -> 0 bytes .../Empty/game/tools/classIcons/waterBlock.png | Bin 543 -> 0 bytes .../Empty/game/tools/classIcons/waterPlane.png | Bin 787 -> 0 bytes Templates/Empty/game/tools/classIcons/zone.png | Bin 406 -> 0 bytes .../Full/game/tools/classIcons/CreatorTree.png | Bin 196 -> 0 bytes .../game/tools/classIcons/ForestBrushElement.png | Bin 409 -> 0 bytes .../Full/game/tools/classIcons/GameTSCtrl.png | Bin 558 -> 0 bytes .../game/tools/classIcons/GuiAutoScrollCtrl.png | Bin 252 -> 0 bytes .../game/tools/classIcons/GuiBitmapBorderCtrl.png | Bin 480 -> 0 bytes .../game/tools/classIcons/GuiBitmapButtonCtrl.png | Bin 756 -> 0 bytes .../tools/classIcons/GuiBitmapButtonTextCtrl.png | Bin 726 -> 0 bytes .../Full/game/tools/classIcons/GuiBitmapCtrl.png | Bin 520 -> 0 bytes .../game/tools/classIcons/GuiBorderButtonCtrl.png | Bin 144 -> 0 bytes .../Full/game/tools/classIcons/GuiButtonCtrl.png | Bin 292 -> 0 bytes .../game/tools/classIcons/GuiCheckBoxCtrl.png | Bin 459 -> 0 bytes .../game/tools/classIcons/GuiColorPickerCtrl.png | Bin 396 -> 0 bytes .../Full/game/tools/classIcons/GuiContainer.png | Bin 138 -> 0 bytes .../tools/classIcons/GuiControlArrayControl.png | Bin 194 -> 0 bytes .../game/tools/classIcons/GuiCrossHairHud.png | Bin 439 -> 0 bytes .../Full/game/tools/classIcons/GuiDecoyCtrl.png | Bin 178 -> 0 bytes .../tools/classIcons/GuiDragAndDropControl.png | Bin 479 -> 0 bytes .../classIcons/GuiDynamicCtrlArrayControl.png | Bin 248 -> 0 bytes .../game/tools/classIcons/GuiFadeInBitmapCtrl.png | Bin 596 -> 0 bytes .../game/tools/classIcons/GuiFileTreeCtrl.png | Bin 196 -> 0 bytes .../Full/game/tools/classIcons/GuiFilterCtrl.png | Bin 227 -> 0 bytes .../Full/game/tools/classIcons/GuiFormCtrl.png | Bin 183 -> 0 bytes .../game/tools/classIcons/GuiFrameSetCtrl.png | Bin 233 -> 0 bytes .../tools/classIcons/GuiGradientSwatchCtrl.png | Bin 176 -> 0 bytes .../Full/game/tools/classIcons/GuiGraphCtrl.png | Bin 466 -> 0 bytes .../game/tools/classIcons/GuiHealthBarHud.png | Bin 153 -> 0 bytes .../game/tools/classIcons/GuiIconButtonCtrl.png | Bin 424 -> 0 bytes .../Full/game/tools/classIcons/GuiListBoxCtrl.png | Bin 326 -> 0 bytes .../Full/game/tools/classIcons/GuiMLTextCtrl.png | Bin 156 -> 0 bytes .../game/tools/classIcons/GuiMLTextEditCtrl.png | Bin 181 -> 0 bytes .../Full/game/tools/classIcons/GuiMenuBar.png | Bin 171 -> 0 bytes .../Full/game/tools/classIcons/GuiObjectView.png | Bin 407 -> 0 bytes Templates/Full/game/tools/classIcons/GuiPanel.png | Bin 182 -> 0 bytes .../game/tools/classIcons/GuiPopUpMenuCtrl.png | Bin 230 -> 0 bytes .../game/tools/classIcons/GuiPopUpMenuCtrlEx.png | Bin 248 -> 0 bytes .../tools/classIcons/GuiProgressBitmapCtrl.png | Bin 263 -> 0 bytes .../game/tools/classIcons/GuiProgressCtrl.png | Bin 185 -> 0 bytes .../Full/game/tools/classIcons/GuiRadioCtrl.png | Bin 505 -> 0 bytes .../Full/game/tools/classIcons/GuiRectHandles.png | Bin 204 -> 0 bytes .../Full/game/tools/classIcons/GuiRolloutCtrl.png | Bin 225 -> 0 bytes .../Full/game/tools/classIcons/GuiScrollCtrl.png | Bin 313 -> 0 bytes .../game/tools/classIcons/GuiSplitContainer.png | Bin 174 -> 0 bytes .../game/tools/classIcons/GuiStackControl.png | Bin 219 -> 0 bytes .../game/tools/classIcons/GuiSwatchButtonCtrl.png | Bin 176 -> 0 bytes .../Full/game/tools/classIcons/GuiTabBookCtrl.png | Bin 466 -> 0 bytes .../Full/game/tools/classIcons/GuiTabPageCtrl.png | Bin 331 -> 0 bytes .../Full/game/tools/classIcons/GuiTextCtrl.png | Bin 206 -> 0 bytes .../game/tools/classIcons/GuiTextEditCtrl.png | Bin 247 -> 0 bytes .../tools/classIcons/GuiTextEditSliderCtrl.png | Bin 289 -> 0 bytes .../game/tools/classIcons/GuiTextListCtrl.png | Bin 153 -> 0 bytes .../Full/game/tools/classIcons/GuiTheoraCtrl.png | Bin 636 -> 0 bytes .../game/tools/classIcons/GuiTreeViewCtrl.png | Bin 196 -> 0 bytes .../tools/classIcons/GuiWindowCollapseCtrl.png | Bin 235 -> 0 bytes .../Full/game/tools/classIcons/GuiWindowCtrl.png | Bin 235 -> 0 bytes Templates/Full/game/tools/classIcons/NavMesh.png | Bin 106 -> 0 bytes Templates/Full/game/tools/classIcons/NavPath.png | Bin 241 -> 0 bytes Templates/Full/game/tools/classIcons/PxCloth.png | Bin 573 -> 0 bytes .../Full/game/tools/classIcons/SimDataBlock.png | Bin 575 -> 0 bytes .../game/tools/classIcons/TSForestItemData.png | Bin 436 -> 0 bytes .../Full/game/tools/classIcons/basicClouds.png | Bin 502 -> 0 bytes Templates/Full/game/tools/classIcons/camera.png | Bin 526 -> 0 bytes .../Full/game/tools/classIcons/cameraBookmark.png | Bin 526 -> 0 bytes .../Full/game/tools/classIcons/cameraSpawn.png | Bin 778 -> 0 bytes .../Full/game/tools/classIcons/cloudLayer.png | Bin 652 -> 0 bytes .../Full/game/tools/classIcons/convexShape.png | Bin 374 -> 0 bytes Templates/Full/game/tools/classIcons/decal.png | Bin 567 -> 0 bytes .../Full/game/tools/classIcons/decalNode.png | Bin 693 -> 0 bytes .../Full/game/tools/classIcons/decalRoad.png | Bin 514 -> 0 bytes Templates/Full/game/tools/classIcons/default.png | Bin 356 -> 0 bytes Templates/Full/game/tools/classIcons/forest.png | Bin 800 -> 0 bytes .../Full/game/tools/classIcons/forestBrush.png | Bin 710 -> 0 bytes .../game/tools/classIcons/fxFoliageReplicator.png | Bin 538 -> 0 bytes .../game/tools/classIcons/fxshapereplicator.png | Bin 560 -> 0 bytes .../Full/game/tools/classIcons/groundCover.png | Bin 368 -> 0 bytes .../Full/game/tools/classIcons/groundPlane.png | Bin 132 -> 0 bytes .../Full/game/tools/classIcons/guiControl.png | Bin 233 -> 0 bytes .../game/tools/classIcons/interiorInstance.png | Bin 418 -> 0 bytes Templates/Full/game/tools/classIcons/item.png | Bin 766 -> 0 bytes .../Full/game/tools/classIcons/levelInfo.png | Bin 744 -> 0 bytes .../Full/game/tools/classIcons/lightning.png | Bin 470 -> 0 bytes Templates/Full/game/tools/classIcons/marker.png | Bin 169 -> 0 bytes Templates/Full/game/tools/classIcons/meshRoad.png | Bin 430 -> 0 bytes .../Full/game/tools/classIcons/missionArea.png | Bin 591 -> 0 bytes .../tools/classIcons/particleEffecterObject.png | Bin 727 -> 0 bytes .../game/tools/classIcons/particleEmitter.png | Bin 773 -> 0 bytes .../game/tools/classIcons/particleEmitterNode.png | Bin 426 -> 0 bytes .../tools/classIcons/particleEmitterObject.png | Bin 773 -> 0 bytes .../game/tools/classIcons/particleSimulation.png | Bin 766 -> 0 bytes Templates/Full/game/tools/classIcons/path.png | Bin 323 -> 0 bytes .../Full/game/tools/classIcons/pathMarker.png | Bin 169 -> 0 bytes .../Full/game/tools/classIcons/physicalZone.png | Bin 464 -> 0 bytes Templates/Full/game/tools/classIcons/player.png | Bin 480 -> 0 bytes .../Full/game/tools/classIcons/pointLight.png | Bin 503 -> 0 bytes Templates/Full/game/tools/classIcons/portal.png | Bin 390 -> 0 bytes .../Full/game/tools/classIcons/precipitation.png | Bin 381 -> 0 bytes Templates/Full/game/tools/classIcons/prefab.png | Bin 688 -> 0 bytes Templates/Full/game/tools/classIcons/river.png | Bin 789 -> 0 bytes .../Full/game/tools/classIcons/scatterSky.png | Bin 624 -> 0 bytes .../Full/game/tools/classIcons/sceneobject.png | Bin 369 -> 0 bytes .../Full/game/tools/classIcons/sfxEmitter.png | Bin 368 -> 0 bytes .../Full/game/tools/classIcons/simObject.png | Bin 358 -> 0 bytes Templates/Full/game/tools/classIcons/simSet.png | Bin 236 -> 0 bytes Templates/Full/game/tools/classIcons/skyBox.png | Bin 749 -> 0 bytes .../Full/game/tools/classIcons/spawnsphere.png | Bin 748 -> 0 bytes .../Full/game/tools/classIcons/spotLight.png | Bin 732 -> 0 bytes Templates/Full/game/tools/classIcons/sun.png | Bin 419 -> 0 bytes .../Full/game/tools/classIcons/terrainBlock.png | Bin 607 -> 0 bytes .../Full/game/tools/classIcons/timeofday.png | Bin 744 -> 0 bytes Templates/Full/game/tools/classIcons/trigger.png | Bin 513 -> 0 bytes Templates/Full/game/tools/classIcons/tsStatic.png | Bin 767 -> 0 bytes .../Full/game/tools/classIcons/volumeLight.png | Bin 665 -> 0 bytes .../Full/game/tools/classIcons/waterBlock.png | Bin 543 -> 0 bytes .../Full/game/tools/classIcons/waterPlane.png | Bin 787 -> 0 bytes Templates/Full/game/tools/classIcons/zone.png | Bin 406 -> 0 bytes 228 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Templates/Empty/game/tools/classIcons/CreatorTree.png delete mode 100644 Templates/Empty/game/tools/classIcons/ForestBrushElement.png delete mode 100644 Templates/Empty/game/tools/classIcons/GameTSCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiAutoScrollCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapButtonCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapButtonTextCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiButtonCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiContainer.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiDragAndDropControl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiFadeInBitmapCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiFileTreeCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiFormCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiIconButtonCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiListBoxCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiMLTextCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiMenuBar.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiObjectView.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiPanel.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiPopUpMenuCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiPopUpMenuCtrlEx.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiRadioCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiRectHandles.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiScrollCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiSplitContainer.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiStackControl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiSwatchButtonCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTextCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiTreeViewCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png delete mode 100644 Templates/Empty/game/tools/classIcons/NavMesh.png delete mode 100644 Templates/Empty/game/tools/classIcons/NavPath.png delete mode 100644 Templates/Empty/game/tools/classIcons/PxCloth.png delete mode 100644 Templates/Empty/game/tools/classIcons/SimDataBlock.png delete mode 100644 Templates/Empty/game/tools/classIcons/TSForestItemData.png delete mode 100644 Templates/Empty/game/tools/classIcons/basicClouds.png delete mode 100644 Templates/Empty/game/tools/classIcons/camera.png delete mode 100644 Templates/Empty/game/tools/classIcons/cameraBookmark.png delete mode 100644 Templates/Empty/game/tools/classIcons/cameraSpawn.png delete mode 100644 Templates/Empty/game/tools/classIcons/cloudLayer.png delete mode 100644 Templates/Empty/game/tools/classIcons/convexShape.png delete mode 100644 Templates/Empty/game/tools/classIcons/decal.png delete mode 100644 Templates/Empty/game/tools/classIcons/decalNode.png delete mode 100644 Templates/Empty/game/tools/classIcons/decalRoad.png delete mode 100644 Templates/Empty/game/tools/classIcons/default.png delete mode 100644 Templates/Empty/game/tools/classIcons/forest.png delete mode 100644 Templates/Empty/game/tools/classIcons/forestBrush.png delete mode 100644 Templates/Empty/game/tools/classIcons/fxFoliageReplicator.png delete mode 100644 Templates/Empty/game/tools/classIcons/fxshapereplicator.png delete mode 100644 Templates/Empty/game/tools/classIcons/groundCover.png delete mode 100644 Templates/Empty/game/tools/classIcons/groundPlane.png delete mode 100644 Templates/Empty/game/tools/classIcons/guiControl.png delete mode 100644 Templates/Empty/game/tools/classIcons/interiorInstance.png delete mode 100644 Templates/Empty/game/tools/classIcons/item.png delete mode 100644 Templates/Empty/game/tools/classIcons/levelInfo.png delete mode 100644 Templates/Empty/game/tools/classIcons/lightning.png delete mode 100644 Templates/Empty/game/tools/classIcons/marker.png delete mode 100644 Templates/Empty/game/tools/classIcons/meshRoad.png delete mode 100644 Templates/Empty/game/tools/classIcons/missionArea.png delete mode 100644 Templates/Empty/game/tools/classIcons/particleEffecterObject.png delete mode 100644 Templates/Empty/game/tools/classIcons/particleEmitter.png delete mode 100644 Templates/Empty/game/tools/classIcons/particleEmitterNode.png delete mode 100644 Templates/Empty/game/tools/classIcons/particleEmitterObject.png delete mode 100644 Templates/Empty/game/tools/classIcons/particleSimulation.png delete mode 100644 Templates/Empty/game/tools/classIcons/path.png delete mode 100644 Templates/Empty/game/tools/classIcons/pathMarker.png delete mode 100644 Templates/Empty/game/tools/classIcons/physicalZone.png delete mode 100644 Templates/Empty/game/tools/classIcons/player.png delete mode 100644 Templates/Empty/game/tools/classIcons/pointLight.png delete mode 100644 Templates/Empty/game/tools/classIcons/portal.png delete mode 100644 Templates/Empty/game/tools/classIcons/precipitation.png delete mode 100644 Templates/Empty/game/tools/classIcons/prefab.png delete mode 100644 Templates/Empty/game/tools/classIcons/river.png delete mode 100644 Templates/Empty/game/tools/classIcons/scatterSky.png delete mode 100644 Templates/Empty/game/tools/classIcons/sceneobject.png delete mode 100644 Templates/Empty/game/tools/classIcons/sfxEmitter.png delete mode 100644 Templates/Empty/game/tools/classIcons/simObject.png delete mode 100644 Templates/Empty/game/tools/classIcons/simSet.png delete mode 100644 Templates/Empty/game/tools/classIcons/skyBox.png delete mode 100644 Templates/Empty/game/tools/classIcons/spawnsphere.png delete mode 100644 Templates/Empty/game/tools/classIcons/spotLight.png delete mode 100644 Templates/Empty/game/tools/classIcons/sun.png delete mode 100644 Templates/Empty/game/tools/classIcons/terrainBlock.png delete mode 100644 Templates/Empty/game/tools/classIcons/timeofday.png delete mode 100644 Templates/Empty/game/tools/classIcons/trigger.png delete mode 100644 Templates/Empty/game/tools/classIcons/tsStatic.png delete mode 100644 Templates/Empty/game/tools/classIcons/volumeLight.png delete mode 100644 Templates/Empty/game/tools/classIcons/waterBlock.png delete mode 100644 Templates/Empty/game/tools/classIcons/waterPlane.png delete mode 100644 Templates/Empty/game/tools/classIcons/zone.png delete mode 100644 Templates/Full/game/tools/classIcons/CreatorTree.png delete mode 100644 Templates/Full/game/tools/classIcons/ForestBrushElement.png delete mode 100644 Templates/Full/game/tools/classIcons/GameTSCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiAutoScrollCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapButtonCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapButtonTextCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiButtonCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiContainer.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiControlArrayControl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiCrossHairHud.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiDragAndDropControl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiFadeInBitmapCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiFileTreeCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiFilterCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiFormCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiGraphCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiHealthBarHud.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiIconButtonCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiListBoxCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiMLTextCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiMenuBar.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiObjectView.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiPanel.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiPopUpMenuCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiPopUpMenuCtrlEx.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiProgressCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiRadioCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiRectHandles.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiScrollCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiSplitContainer.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiStackControl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiSwatchButtonCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTextCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTextListCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiTreeViewCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/GuiWindowCtrl.png delete mode 100644 Templates/Full/game/tools/classIcons/NavMesh.png delete mode 100644 Templates/Full/game/tools/classIcons/NavPath.png delete mode 100644 Templates/Full/game/tools/classIcons/PxCloth.png delete mode 100644 Templates/Full/game/tools/classIcons/SimDataBlock.png delete mode 100644 Templates/Full/game/tools/classIcons/TSForestItemData.png delete mode 100644 Templates/Full/game/tools/classIcons/basicClouds.png delete mode 100644 Templates/Full/game/tools/classIcons/camera.png delete mode 100644 Templates/Full/game/tools/classIcons/cameraBookmark.png delete mode 100644 Templates/Full/game/tools/classIcons/cameraSpawn.png delete mode 100644 Templates/Full/game/tools/classIcons/cloudLayer.png delete mode 100644 Templates/Full/game/tools/classIcons/convexShape.png delete mode 100644 Templates/Full/game/tools/classIcons/decal.png delete mode 100644 Templates/Full/game/tools/classIcons/decalNode.png delete mode 100644 Templates/Full/game/tools/classIcons/decalRoad.png delete mode 100644 Templates/Full/game/tools/classIcons/default.png delete mode 100644 Templates/Full/game/tools/classIcons/forest.png delete mode 100644 Templates/Full/game/tools/classIcons/forestBrush.png delete mode 100644 Templates/Full/game/tools/classIcons/fxFoliageReplicator.png delete mode 100644 Templates/Full/game/tools/classIcons/fxshapereplicator.png delete mode 100644 Templates/Full/game/tools/classIcons/groundCover.png delete mode 100644 Templates/Full/game/tools/classIcons/groundPlane.png delete mode 100644 Templates/Full/game/tools/classIcons/guiControl.png delete mode 100644 Templates/Full/game/tools/classIcons/interiorInstance.png delete mode 100644 Templates/Full/game/tools/classIcons/item.png delete mode 100644 Templates/Full/game/tools/classIcons/levelInfo.png delete mode 100644 Templates/Full/game/tools/classIcons/lightning.png delete mode 100644 Templates/Full/game/tools/classIcons/marker.png delete mode 100644 Templates/Full/game/tools/classIcons/meshRoad.png delete mode 100644 Templates/Full/game/tools/classIcons/missionArea.png delete mode 100644 Templates/Full/game/tools/classIcons/particleEffecterObject.png delete mode 100644 Templates/Full/game/tools/classIcons/particleEmitter.png delete mode 100644 Templates/Full/game/tools/classIcons/particleEmitterNode.png delete mode 100644 Templates/Full/game/tools/classIcons/particleEmitterObject.png delete mode 100644 Templates/Full/game/tools/classIcons/particleSimulation.png delete mode 100644 Templates/Full/game/tools/classIcons/path.png delete mode 100644 Templates/Full/game/tools/classIcons/pathMarker.png delete mode 100644 Templates/Full/game/tools/classIcons/physicalZone.png delete mode 100644 Templates/Full/game/tools/classIcons/player.png delete mode 100644 Templates/Full/game/tools/classIcons/pointLight.png delete mode 100644 Templates/Full/game/tools/classIcons/portal.png delete mode 100644 Templates/Full/game/tools/classIcons/precipitation.png delete mode 100644 Templates/Full/game/tools/classIcons/prefab.png delete mode 100644 Templates/Full/game/tools/classIcons/river.png delete mode 100644 Templates/Full/game/tools/classIcons/scatterSky.png delete mode 100644 Templates/Full/game/tools/classIcons/sceneobject.png delete mode 100644 Templates/Full/game/tools/classIcons/sfxEmitter.png delete mode 100644 Templates/Full/game/tools/classIcons/simObject.png delete mode 100644 Templates/Full/game/tools/classIcons/simSet.png delete mode 100644 Templates/Full/game/tools/classIcons/skyBox.png delete mode 100644 Templates/Full/game/tools/classIcons/spawnsphere.png delete mode 100644 Templates/Full/game/tools/classIcons/spotLight.png delete mode 100644 Templates/Full/game/tools/classIcons/sun.png delete mode 100644 Templates/Full/game/tools/classIcons/terrainBlock.png delete mode 100644 Templates/Full/game/tools/classIcons/timeofday.png delete mode 100644 Templates/Full/game/tools/classIcons/trigger.png delete mode 100644 Templates/Full/game/tools/classIcons/tsStatic.png delete mode 100644 Templates/Full/game/tools/classIcons/volumeLight.png delete mode 100644 Templates/Full/game/tools/classIcons/waterBlock.png delete mode 100644 Templates/Full/game/tools/classIcons/waterPlane.png delete mode 100644 Templates/Full/game/tools/classIcons/zone.png diff --git a/Templates/Empty/game/tools/classIcons/CreatorTree.png b/Templates/Empty/game/tools/classIcons/CreatorTree.png deleted file mode 100644 index f916c304ec50b74201c28ccbb3930489a96e863c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X(mY)pLn>}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Empty/game/tools/classIcons/ForestBrushElement.png b/Templates/Empty/game/tools/classIcons/ForestBrushElement.png deleted file mode 100644 index 0fc969d30b12f10e220f4315aade7cffe00a44b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)Ao$GFi-pn!Dx@`;Zhb3*ujcC6mZ$0F|xo5|oi*WEpUEkB#x9LnLhj zI{_!X3h9Y8beN3$r@29?iN(hWg}vz)!u19sCi=9JNIV!#H9^Ev-THY)H2p?1>qmlS zCB8PjF&gV0w64)*88ti-Q+${+SNT2Ab9=WJm>7O(3l!h83SG=0s00000NkvXXu0mjf DS7WG% diff --git a/Templates/Empty/game/tools/classIcons/GameTSCtrl.png b/Templates/Empty/game/tools/classIcons/GameTSCtrl.png deleted file mode 100644 index f1801ffe0c1cf0972c2a49c1527625291312b495..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmV+}0@3}6P)4Tk z6B7f|&5g`&Z-8Xq-ULd)G%x|te+c>H+vR0}S5bglS(b z^Y71a8^DMOL>_vyOo2mj(}(TM2GLw6dbDhUl~uKwPtRcX>1XEPh57+#FvQLG-e3Cq z<;4{5nK@h2kKOLfh+WJsD9ylN`uE4D$JaN46$!v>0J~?;^(FFLN+p|$p1yv*m+jvN z7G{V?|NQt2G@eD)1j!GK3|F2U`|$Dk$1k51_>~q#EVEYjXxUKp{@UKxXE(e&vz}Ge zkxdR&!^&gR;!G3zgC~@`R!Hzk0Ld?Z7#8g8d-37{yL;o$o%Kw=kUV|l#`eFz{y3{U zBgavtXXVCEZ@(*=vdfw9dN#0d@<25J19D5NAV!b1Z>zOWx&d3xnsUIdtv)#DX!THj~*_(X7z>t*gb1mg;se%!AUoZ zXP0+Ksm~5&JJ)pgGcYqKty&PM_;x}C(4`EXu6{1-oD!M<&}Lz$ diff --git a/Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png deleted file mode 100644 index b6d8e52ac33b6d33d2919604df57e37c173835f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)SnsamPi=`>AK0u|H^ zBo5rJ*Rm}0JWs#}MI~2NdEq1l5yPd#xi}9i;zY(6_RzL1#Utz< zq(aX0!XU>wm!@gLR=h{41f?coQDtH;&4I|1r=&O@*JTmMA&I#IFPiZ(gCJGcb(Uu) zc;KistSBlmRtn0YHh4g$>_I$41<8YH_2+19t$j<=IE}y;e23yV1QyZJ0G8|hwueE5 z5lSj=I>JmO=eD-tYGyIvfr^0t^70 WgE;Y?ynem_0000) zDwf`n`s3MI)T&h|4hNb|9Zsi{6HBEM>~;luqk(%pJ@^%m^Ddpe&NZQ0sjjH13a`%# zlbz7->c`UaB`!upa*8QOHNp^kI%}CMm&@UzZ~?O=~dMFyJ1*%Gw%2)6=w6+$p9U)d)ja znTZjXX0Xw?ZmnKt0t0T=p2GKly)}1=DMvNJ5SBQ^6{iAIHoc+0^!a_by!?x+;uV{2 z1?hB}FV9V9=jZ3x+e`9icHej7_|GvDsJ`Vldh_b_&cx(I(BttUeRKrVGVfd@Nt7@; zHimruj4fX(@$vJg5T6ozlI3V5T0A{f@n|Z5zP>&fO@j?q<4!Tx6oq54# m+Ym(YLo~MazBB(%fB^tCzL)}N?m3PC0000E&> zZN#am2bi6k#h}lZ)OCHaudh#TH8?#z9p*SL5&a>#(&;n;fdG6%KG^JbQ(V|! z-`~d&!$S)T*M?z;BO@cS*&uarkl2my3d{xOpU%T-wc@_0)oR%JzJq~*0SKay^iNNV zmZ&5xXERyh;^G3qnHey9__VnRRaHAqcx}z(Pu_l}hOE??+iJqf*uIc6Alq-QC#Q+JYoW zSXp_4VzG!nCnqMyVRs;3%7e80%}oI|n-v-pQjCv{nNPAz-)z+DX3mCe)+nd2+if5% zIWUK&mdhPOt5&P18^*mgo@q#HI&iz)taF9IjgF}|9o$_Xhr@xZzgMP%ZI`Pj)M%iC z_}@Vt<#IdjbUIO~sN`VVQYaL|N>)LStA`1+)|I7FDI}6fD2jrQ8yhX0IK(9lY0X7? z{qj}9KkXMh9xslMj-VU*y^F+iJSHY5*&Zlt`BKTX5AQ__71%W{My2TW*_n)oj{@lJ z?M1CxW5ZL;LpfnoBMxy%)AlpHc=mkQ(DikX*CRX*1~EP{(f0QA@iBhw?IEY+k{r)3 ze*XGJZfnqtC$n?Q?CO^4jYjA;Zt3dUws2fH8jroZjsFv10Le#*5&EzYj{pDw07*qo IM6N<$f($rXF8}}l diff --git a/Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png deleted file mode 100644 index 6f511189f0be61b63c25c476132f6e3042b3739f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)45Ps5dWm*(A=`R>}@*JsxQxy+n=?1EB2#-AUb@2;r^GFZ?wEWfe%%G*muhP7-* zHv$#CIJ%gbgYVP*Gk?E-64Y`6srZisF1@@Ez9C@Ng=x7v(?8xld1+$cpYNZ5;;+uE zzd9=(q6WoDOD-((RSb;MjQ#if|EwL=%Asw{9K1krQR4u(e-IijKD%)K!FfeK<&w=s zx1QeK#q#&T*H>^^pp)1IrTLUh5gIyob?Aub)oiL(OZyU=liEXsTW5V zfqf6uV8#fExb2s>Puf3ub^59oA77}5sQ^X3{QQ!%Aj#n4>i|J{Zb=QGPN1hnjRT>c z_L~^I@$BaRsNn2_b7oCeH?FJ)vVVX7bZ2!H$aEmyaCVDZhws~W?|%OLiKeG(Yk%_W zOk@#|AEs@e6{PL|<;&MEU%&qP^$R)NG8~hiynMR&&~ijfZ#c2}`={?FQpVrDeZ$nl z%gNguRyTF?%%^XkK|~l$a&13-`%Ey+nW>vBE}ae1Kx*;^2rvNVLK=_h8MF!j0000< KMNUMnLSTabb^)OP diff --git a/Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png deleted file mode 100644 index 25044777f2f8c9df1d4ef0beace57b61a86641dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xj67W&Ln>}1#cW78SkK1Az}?Z&-=D7H{`pWV_kUx<01h`^ p3Dblt3`_2CoC8gZ{^MSeuN`c&0fxNX& zJQ_L~-Nvt+%5<~UfBK5ouHQUEaQS1#5X+?tQVLcZr~0p4venFglJ8F6V3)urF5heC z$4=FH{fjNLNAp@?j{=87xjN(iRJWDh2W3<2KCEwve8&)#&7ru5<+90M`>8zrk9T++ zcoY9YG(+e>a6=^fES3)<3D+8rP5Q-=A#rP+vqW3m2Lqmjvee$2AA@YgTe~DWM4ft@~{a diff --git a/Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png b/Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png deleted file mode 100644 index 8e608ba2d7698f8795e394cc413102def5be8552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)T6uR~ILXqvKl;p|~#~Bap|>K)md9Iy3HI0=ll>o2D832aLz~ zERI>`N4TVE8r;d__x4x`i5?|i@{)k+3X$tejlw? z3)N~BiXuZ0Nb*&pn`|}MLQfSm^)&002ovPDHLkV1lrZ B%3lBg diff --git a/Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png b/Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png deleted file mode 100644 index cd9c6ca32ea1e74ade912b791145159e92ee0dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)@CojrxSunmn_QAUGLCzz{)Fl$*dhPP0-FM`7Wt@oj{}D3G`A0&U+;d3dC!Iv27@Vl-`CV#SebL2gh@B qDRL?5wlvDv1t0hO-+%9?00RI#XOq=|BqQ$t0000}1rJS%o?ZB0gq#(G#Va0#p9uBQk9Siq9-o;XG iU2JZ%mWMSkFf&*Ru+A*Eym1+*kHOQ`&t;ucLK6UF1Sbsu diff --git a/Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png b/Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png deleted file mode 100644 index f7340fae469b7e85181d65b29d218fc0363fec3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XQaoK8Ln>}1^>7vbK7ZuMi4X7Z*S9TQU2bH=;8?Q4IxtD$ zz^C8m<=NcaEaZ7QM46>Oe1C7>_W%F?#U4W1Y)m~0j$RDH%&iTDCIXov9ZML*Vj7*d oFz#S#&(Pzopr0ABe*Y5)KL diff --git a/Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png b/Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png deleted file mode 100644 index 65b06404aa0cffdd3607093c2cd0839b792b9f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)O zV6$}~Yb}vd>S4Jg6xhF^T&)lz)D6SX_x+~_K5#tDiZBEuV@%g|_yB>C0HbYN#0XF- zNmEPeSApq!v<8i})`JJfam*ZffQJmI$^$oucZ&r$N(NzKlAv`O8bg~TnK>lABqC8F zje)mW0YOl8aeTp?scD$=U2wd-_9VJJe;{w6oGkK(Vvb%=apUrisl3G`a-|I{vc6q$ zdi8s88186NAX^G>Exy4S(6cO)jQ9~XO%tlS5vO8q{L3K9BM98X)pZ>fN=D#_-Y^Xj zswDZeUc063*gm{~ltYPO{;`8_L_OwC9lScf%hj}t^-O1LRaNe1B+`?=RSekfcKiMF h=!;AK`=!4G7yt#$Gh19hnz{f0002ovPDHLkV1o7$xqSct diff --git a/Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png b/Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png deleted file mode 100644 index a092c1ee24b7fe77b96ca082a7957b87911af94f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XLOfj@Ln>}1{orS>yIL-hE*N!l(X=lI%K)PN&_`k9lVaUclkO&UI2*eDe049b7Wgr9w3)(k8g^>iY zISJ-VKaI4F3-|oT3z(37`JLhOl=itt_MH0n@883R4{j&wzyQ#G VI0wT5p;Q0>002ovPDHLkV1hJT&=CLt diff --git a/Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png b/Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png deleted file mode 100644 index a356634e84f1fdb8a72d4bcd674d6985f6b26bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_h|ehE&{|GT|XFlOj)Rbdj~7*agXVF-^V+oOcg$Hq3O% z;{CX&!oB}}c>L#Cd%|sWjkR2t-dS(XU=cs9FJ;-E6CE7#zdqFl%$wP9EjQligp^x= z0mnD*^%d{eZY_FQueLE&+EZt45SQYWn-a>?uSIQMzpIkX%B^Q3pMsTCnQ~#C-~NwF u-9GQ%pP$t(e>_g*`JJ>?5Bc;N*%%fZD3o0P&shU>C4;A{pUXO@geCxym0eo^ diff --git a/Templates/Empty/game/tools/classIcons/GuiFadeInBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFadeInBitmapCtrl.png deleted file mode 100644 index 60463c21984988dd8fa475347a6403eb212bb40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)KRo*W-Ez;;_QWSf$iB&!YOK{cSd8ea>n}n^7z%86WIdytsZQxX|s#tBN@)VP7WPT zl|#y{Z$8uKme@#)PfstfY_?u+uiiUw82AG_v}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png deleted file mode 100644 index b0ddc8a7846985acd8c8520abb3a14e7ba2eb48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XT0LDHLn>}fnH0!(K!B%h`OUzXgOh_TmLJizv2>~y-yD%6 z96Bpt;{SYm-lub{%O2@yw4 z$jPQCZ@NKvbawRHaxbOt<_WFUX%a=7+4^QzGM~47VetGNuTpuwz|MN+`+x6EXJBR! XT;ijX=bZ8z=pY79S3j3^P6}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)pACFnQ_5c2`GNq-Z{qg$$_c#014dw6SF6DIe_p1keJ=DrQQ^JE~u@qZ7o0!KR e!S##^2N<0H%03fW*0dgI34^DrpUXO@geCy!s6yHR diff --git a/Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png deleted file mode 100644 index 63393413878ba594a665e654beeca2a30300807f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ diff --git a/Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png b/Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png deleted file mode 100644 index 0b7d7c58bfa567a9afb4f3c214ae04d96e27bd94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xf;?RuLn>}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES diff --git a/Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png b/Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png deleted file mode 100644 index 18dfdd8d546c1d15b625e3d012af20b59289cdef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)NoPXlP z3H)3p1`+`aK^0&Auxx!My8W5h?a$o3ye9}~*!k14{;&~{;Vtz#U;V+)n_wG&E<;uX z;XeH*y7IfnyZ?N)tf%eR&T+o~`SU%@NzMwwUnNwLeYx_H&1ZfbvxQ+ked5Hg}e+xVGN~l`wm$Ajew4xVsh0>>J`3VT`lVs@^q^9;#_&1m65!=-(LOs79$LR zK;_jH1~DCw4byl_9kurB{JnGXp^x~F=N3o+k`C-OTop18t zueyoQt-}`AHn4wu@t1>_c zesLQv@=o3Eox1HSeJ_af&|~_llqqjeF0RA}1dOC6Z-4*;0Ln_JsUL$&t^fc407*qo IM6N<$f=lk?tN;K2 diff --git a/Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png b/Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png deleted file mode 100644 index f661a431a13f0a903039f19a965850e7e878bfc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1{rUgjo>{1%tjz7%ySuxmGm367NNCvm`)?|HsG96m^Cn#Q|ZE=g5Y;^$cj5DQM8 zzj^4u{0q6C1Y8+J#@GO9nv&xw17FiYUu6Q3)FMI0gV$IVX@L z>C)bK9N38IOV@QG!DI)vZIfXbA`lw(tqvv=-~(BfB@#fxo;^ZYmgKsw(2zKeX}8-^ z5Co*_`t%5_m(}!|>+cSF>xOs;UTFxow(9T#E9$;QMB?fLL(ARrn+LJRXVTU)T9ZfB^tyz>9px SnF8Jb0000zy<8>?L9m^7#SI# zJ$nY#fFDesJ{`h{jEsb8z~iL-`}f<}SiO4rii3l5#flY#o%H3)7efPs4<9~0c=+hU zhYvszCSpPo=m9vJa44Yx!l48NpFVv;(SQf=@bH|!aN*mxAK$-!7Z4D5{`@%sCpkJg z9y)Xg;)jTci2C|^!cNM_$l&7QA|c{{HUN``f`S4fY2XhfTU%Qo>FMbSv4N4)^xl@Ln>}1{rUgjo>{Y@v(d$26PuWVUBLqe$5K8%J^?o6 zvwt1dOn$&89pcx-a;3q7Q_ekt@$m!i8U{u-hOo8LqW*7=>;js^;OXk;vd$@?2>`-{ BF17#w diff --git a/Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png b/Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png deleted file mode 100644 index 0e1dea166ddfec490e9a6a6d579c83f88ae9cc45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X!aZFaLn>}1&9SNcbhKMsvV-~8uU|ZxnwtMR*&L4g@Tf3} zag;tdz-ZGYBO`OcRDt^;`<6nXP1}1-PvDn&#c+N+R@v~(-~6x?M|hb1$QJ<5=)q) zSPGxi0j(2FnL;z`7-l_s@Sq`JYD@<);T3K0RS@^H&y@u diff --git a/Templates/Empty/game/tools/classIcons/GuiObjectView.png b/Templates/Empty/game/tools/classIcons/GuiObjectView.png deleted file mode 100644 index e6b832c9a5addda706a973d95fd278daa7badb20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P))6Kew^*vaWt#`v#>p2sA#?MNM^o%iu1%q zrqA#H3QPUt75>L3%=r5|Pz{8HX<&z%C&J3Wpl1d|AI~3Qets8O9S~?s2;E{}V1jTo zxlo<*_cvxp@Nuv)z%}qP6B`du4Q9Nke&yyzQ)j6lfueyAH9r1v^AWJYMF8P-Ob}+E z((iAL5^+G)8?+gwJY`t;65S=m_WE%5AT)qn#mrD8$KWE!(DsPoC}1#cW7mWY%n8?U*Yg`~TnX<7bYv#J}AC|3ANs z1;eEezt77H{J(FXl#`I8AlQ>7u}I3nvw7mgkN^MwcM#eiv_NVF8wa}1{rU0n@!M!~$qr_&E-#(+ar-V@xS|wv`0?@n zh1ipFexJ+x_B`lam#D?%cWKFK=%oXd=3T&yR`m@kwFzii*n4l1sa{=SQZbq?W(E z|S2B3I`njxgN@xNA{5WB% diff --git a/Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png deleted file mode 100644 index a6be7a2edc3bf29b2703a43f11bda58c49de1981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XR(iTPhE&{2`t$$4J+o#*XQRu3OFK6Gd$Ly8WtCa@<^;x7 z>ois<1UVmX;S*E%`td!x&>WT{`TzH{e*SO#Cp{%WWyM2YIo=E<1>XFBd(_T)zMnA1 zC8BxPmSbm+nsw$XEU;A_a zb@t4uu{mSolJ(>CPyQz=d~SY^aufdidu^@Ftvyld-=Ck%0tpPt^UTkRO*TycI-0@L L)z4*}Q$iB}Ckku$ diff --git a/Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png b/Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png deleted file mode 100644 index 5c07e2345db200fa2e1b7b69680479df5a0c466f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XqCH(4Ln>}1{rUgjo;mNs+xzBvYI+Kf{n3-2f{ZjW;h+}@6 fTqTgjz+u4fGg|JZd4t4JpfwDhu6{1-oD!MogbZBxA0%4n+GTECx^nL#!i7|Ow}Bw!&Wg(2Ncq^P*^o{(ukM)?#3nZe-OZgj z=R2?OJJ(^FCN?=7HayN%Lnf0E*p=f9^%xGvj%75>CxdgHvaeFPT%IiB9m^xI;5~L- zrBW#&9*-j!3|jWlXoPybj#{lo!3Qi!>qmllWhtFb3!*4O(^MF`{yitp!|8OP(P*Gj zsZf&WqLXC~a#UFq_wn(rV9@WQ)w;p`!y|^np=Bc^DTIZ{HlV^=H}VV zv)Ro0Z@1eBhr@8Y-7pMe?H+W9ZJu{xHyTAYo3)IC!2ro*5`Mp*smfW35Y{fi8A;{w zdO^w*i$zG1gkGzCmTd+k${==3^MD vUi$k*T3zM2R13B{^S0No^1r;sF98MsBR9*K7k^Gj00000NkvXXu0mjfYqjJE diff --git a/Templates/Empty/game/tools/classIcons/GuiRectHandles.png b/Templates/Empty/game/tools/classIcons/GuiRectHandles.png deleted file mode 100644 index 11e5a06a9e86831cbe5422c166b98fbf2c7cf68e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X@;qG}Ln>}1?GZY6lz}aXFOvakO{hl+# zNJ%6}H8gZKx*T9C;k4U)&|&9KkqLkHl`~tKO?ao`vvBv;v=e#@udroVaIW@#@j}I| zBI?j%p^6=hmxWm8wH>iZRR8<`|9ll`1|}W`^)y*Yo%jeDpv?@Pu6{1-oD!M<(pE(1 diff --git a/Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png b/Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png deleted file mode 100644 index ed922abdbd8ea159127c9990b40af054b7806a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xnmt_{Ln>}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)ppB&IA*)c^bQ@zbX%lP7=v^5svnxWn8d2M+xB{ysiG zKmSkK|KH#FS0%o`w|7b9t-E)7J+4}pzhlarFkynqJvKEqp@S>fl9clv9%?<3&A?&6 Z5Vp%@anyoUp+M&_c)I$ztaD0e0sz&GVeZd!nbcfzJLENARzGk`Evp`I668WKYsGkrAxPO-;RigASxa* zGBUWhxJZb&Lx&CllZJwVg1){!Q5tM*ZGohxrzgY)MpBbEK!5=N_+fLx2C}%~00000 LNkvXXu0mjftV?{> diff --git a/Templates/Empty/game/tools/classIcons/GuiSplitContainer.png b/Templates/Empty/game/tools/classIcons/GuiSplitContainer.png deleted file mode 100644 index 752127aafdaf38a5289f44c56a87d7866fc26854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1#cW7mWY%n8?U*Yg`~TnX<7bYrh~M2_ZyzAw z`*Q#P|NJr*43|FqJ})ou|Gs@nW`}}WLXv`DPnN{h2KB9Sb~O^gOsf?H7+542*wUmc UMA+h=1I=deboFyt=akR{0A=$xqyPW_ diff --git a/Templates/Empty/game/tools/classIcons/GuiStackControl.png b/Templates/Empty/game/tools/classIcons/GuiStackControl.png deleted file mode 100644 index b8d34ffa36415d4361fa416c49e4378be6e79d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XYCT;XLn>}1{rUU*d-Lz__H};_IB*mc6>4f~8sFPr{{H-Z z`$?06SWNd+{{3}(`+A-7cXzH`x%BVLOJPUeH90x`c`@mN!qayY|K7G@hJ+*U`+IvI zKYW_}=i}q!6A!n`+t>L7G*6f?VQ(|@}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES diff --git a/Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png deleted file mode 100644 index 41e09bd658322ffe34cb513787872d6a5da1f2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)v&<w9{dEwjF@8Hs0+??OOe#fHW-`{`dPFw&YWI4YuFBdPz zyo6F@K_&?G_uoG_(l^n~E=>h8{6f8eHb4Z?ZTS25FI*_MJRKr(c;B&IoA)70A#C`E zWCdL0^~<-FEk($J*lmD|1V#E{O0mHGfUW^7^7`c)G%2_Z7#jZmo6$RM`BHa7PcnlHm1%VcIY;kSsNced>SsQtg7Jb zY474`&&|V)W(3rRuV22FW!HcG^3BrDEFjEVTvC()2LK2#0Li1(^b diff --git a/Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png deleted file mode 100644 index ac58cc276acae9e6b0cd3c625ffd617946e04004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr;!P)i(r9Rhp1kCpdvecx_uj{j$<*UpvM4jnr6rF_L`}1{rUgjo>{Y@v(d$&o_BTldN<*hZ{D~(+oVwZ z?afW&>ThrMR)4?8%q%W0t`qjhooRRZ`?~M%WG5IFKl2F>4_9D5!OEqy+HoV}We-P3 zN0Wn&5^FT(wN=Z$NLEx_*ww}56L~Cg!ZZdZ9tQv1tQDJnKD`OFo59o7&t;ucLK6T_ C|4Tjq diff --git a/Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png deleted file mode 100644 index 114a30e5f992be5b3ff30a58533415420a6ccc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_r3fhE&{2`t$$4J+o#*XQRsjqtsJVy2bT{Rz}6g&sS7c zeQJM^VTHuQC0AF6FP?e*=1tB-10y4)IV=mmy}4;z{q4=(>hJfMnZ?D$=hQW94qF$a zsi9$!eQk|t_O&xJ3?Kjf{XPBsyrU}_FMBLVTk~y#%$kyG3_RKk`Wx%ku34iZ<0Y^@ v`Kv}zRWjqTvaBqvkDkpFpRE*CIKXgMCS`i<&)w62j%4t3^>bP0l+XkKdQD?V diff --git a/Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png deleted file mode 100644 index 27844cf39a7797622d7dc9d48f2990146bc01300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmV++0p9+JP)7?*lz<+9xChw}2%nG| n4~#%eQbaS-Jn@mN0U*EtpQ@dc;rzb100000NkvXXu0mjfzeso{ diff --git a/Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png deleted file mode 100644 index 5369870c027f94652fc2ee400a62ff5a146dd72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1`FMIJDzI)~`1t1L=FX70vu2%QN|d!IVAvnT y&d%P#d!nYPp|jD&;MJ0ek5t@(CYw7nFf#Za5bu89EU_AB41=eupUXO@geCxr5-=qI diff --git a/Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png deleted file mode 100644 index 2cf9555650d8a26434bbfc274d4a19eaff565a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)W3FN)+z4_+*o>3G<zC`#<{k*n{x$&p>h1fAMQ3hI`?k$3N(n(ND+-mS zy*S?7Zf8oreEI}EWy9+aA5WybcYDUSg>5lznWW#4=Y`I)Sm~aWUp6*9&YwSeNWd6O z`m=>6ge#cM_|n2cDy74j%eg1`m@V$yy1Caq0GQyG;0-32Ei5W5i&4521TU7CWfXBr zZD!ewjXCzz3YlIaH@0@J z)yDxItp;Tl+=1Ru&^&b-2VyqRNs^3KW4L_q67E26CHNj{%gJe2rvMv W(@I4HSw)cm0000}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png b/Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png deleted file mode 100644 index 09e99cdd1341ba476ecc8d8902d220f2eda31f27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn diff --git a/Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png b/Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png deleted file mode 100644 index 09e99cdd1341ba476ecc8d8902d220f2eda31f27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn diff --git a/Templates/Empty/game/tools/classIcons/NavMesh.png b/Templates/Empty/game/tools/classIcons/NavMesh.png deleted file mode 100644 index 056d3c3ac9e087c6fbdccd35253f63341dd98745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr-fh6C_L${{8v+-}7Ju zZ$iWm8RqjlJ_<4SOEny4$m!ZBX_dtw$E@LXikXd}Y0u(3&OL{^fSMURUHx3vIVCg! E0PJ@lTL1t6 diff --git a/Templates/Empty/game/tools/classIcons/NavPath.png b/Templates/Empty/game/tools/classIcons/NavPath.png deleted file mode 100644 index 35b8372aec4877e23bdce467c6b0ab3917ba997c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J3L(+Ln>}1CnyLRWZ(5qxUggW zfi<=H_TAqO|L0l4pmz2*tAek>EXUXT7`unEf$7(8jLu(jZ6XyoYQ+{AE!b-@RQqYM(0->NRiJ`krQ z-msUch?7-shQEc(23Khho)_f-YaaLpD0mheYE)HPkh?)5;o`pg{svYD%^ZxmEN(5x pWO$Ra=n|90;*7iY=N_rUU)J;OXk;vd$@?2>|YSS)c#_ diff --git a/Templates/Empty/game/tools/classIcons/PxCloth.png b/Templates/Empty/game/tools/classIcons/PxCloth.png deleted file mode 100644 index 5fa4a9ba4b026c213a327648b7558ad92204825f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)T2<+lOUoCOL+^wy0KS0s3*Zmh52(~nD7o}nPCWT^F+Yce#ccM>>h`k@fucuA98qIdxZu$LJn;TdOS9(H5(r-ksp6E4I zzvyiqtgo;2R=ZuSKIvjP2yl5h-Ef&3Ft$LP{XYMd%$r~mMG-I8$ZOJ37I8x%*&o36B>$>~b@@<{pxmaH8>_G597_)zGl`BmI%5Jtk`SzK>R` zRqQWWLZW2?Vm3>v32seR*f-js?YE0$F>7UaRZfr<1Y*-^B<{3M5Q?&*dZl*Ju_W;5 zMY<@8MfC}fhxMntO+iM|)!J(~3Mb;F&S91$h~gMm(Nv0M^lk1xxl5pG>dPw&t1BY0 zxD(=>_);&vM{wsaJSGO^rxO+(VvgN=%F=<@J%=P)hh4v57VW45?TN@jz5K^M^_{>CS{{_+}fSa@(l}e@k zdfmqIavfn5q1Ws4Z>uO%jez{KLF>>otJd23N|xHoYZu-39?E5d{W^sNv@R4y;j}Rt z`S|R6=yqLbS_xdjaOfipqw`q=j;g9G38YNmx*lxXM76enAQ;0B0?aZ-UP=;*z-|6u zFD;@{DdYX^18=V%_$J3*5rHzPzHaC@^K%sp1|uRdV45|`E6s?=PNOAHsD_#GN#b?7X zw&-~Cqd{hr-lY(t9}sBZ4XF!S29`p?qk9~S44l=iD!;R#PHEEQv^iRmB=G4x9*5BA z&fmC86a-Niv2Xj2h*P8NJ&bv+*+1xIxOhp!xK9);DCVb!pAgaw|&=hX#J*JG)P|p3;=of-|S?pNDcr1 N002ovPDHLkV1f}@2w4CC diff --git a/Templates/Empty/game/tools/classIcons/TSForestItemData.png b/Templates/Empty/game/tools/classIcons/TSForestItemData.png deleted file mode 100644 index 183c7e53256617e8e579642d5f5489f142fe3f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)^#4OkkZr zoIsdBoS^CdCXEwVC*XAgZ~@zHfEzFZi5g>U`}`h!A6^?16Me~tcig+XcRwI>&ISKj z=JqN4t8WUfjXV5m7=bB>$r+tRpPOL+qeBL+l%cE*_fGA#amN9~vGj+)f&wJeNhTHb zA_tQ`gMk86z=8zKNe4=Go`V={#m{FD^XA4!R_g|=S>MM{^7F`Bb-p}lZ5)xJ8ma^1(4rZJ}%?xXuf%$kF zQxoTBek5z|4aX?@d-eYPGrhltzW#{KDtNo4Q_3b=PNO>x@X{M(Ojp(gJMSC1lAp$Z eIH&7NfB^uSjkLR|Fa>7-0000^-yb0fqrUjUdJAfmi^wjOAs05N_B zxlG?!2gKYD_Abb@7tdZ|we8!x|Nnpg!0r-|Yk_+AgJa>#=dTzx{rJehaR2HnhWGaw z7~b4wU~n-FU?|S0VF+-F2CEMVi~uQfU{;dS5ZJPAr-g)+7+4}BrjX&?+Yb!$rY~mL zxM>}Ozi%)D12C=G+c`1FN-8qAx_B_~bBZyXKY4}W(BXZMSO7YuKvYDmfBMW>495?j zWO(@KJ_8pQH-m|>IRj7}?y9xxS1`PO{fa?URE%NUj?E0;zI|Q50+n0v`pv8Ox|$jT zPj_F2gNODp$jd7-XlVcgON0TWkYW4I%?xYSt@r><3m|X-7?m54(*YVen*Dg;U_ s0kCud1P6e)5UA+_N=h91nF%1k0KWX-npb5q-~a#s07*qoM6N<$g5BcV0ssI2 diff --git a/Templates/Empty/game/tools/classIcons/camera.png b/Templates/Empty/game/tools/classIcons/camera.png deleted file mode 100644 index 0722c8515cba616d2800254124c78f8f12d20ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 diff --git a/Templates/Empty/game/tools/classIcons/cameraBookmark.png b/Templates/Empty/game/tools/classIcons/cameraBookmark.png deleted file mode 100644 index 0722c8515cba616d2800254124c78f8f12d20ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 diff --git a/Templates/Empty/game/tools/classIcons/cameraSpawn.png b/Templates/Empty/game/tools/classIcons/cameraSpawn.png deleted file mode 100644 index 8a060a6514f75531832bd21e099e72532e4e04f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmV+l1NHogP)`wrnr^*cf2rQQ|4jyCM7r z%wy?+tP@?91|!UN1%*mJD-f}?5XFoqh^hAhq|~&V)pfB((cK2y;QpdYL*2=?qc9t6 zI3O1zN7O?Q1gM#HL{kyWuJ|y}JA&ZE(q~rRL`@`WARopv26mq9IE9+rdf0T;FllX2 zH03DDQc#dp1cQ{1T&)2mjy(7SL1R3!Zcl$fw?t=V+rHC$?KlTl=i7+}d@Ezr)R?PXm=(+#;4|N7#4WqK&ibO`mvD+rt z9A;|Z6iF)j0})11VYBXn&bPPX*4>*tQ%rvHVrDdmY*t&M6w;DK+>%1%Y*RFyInA?C zDaM6MEjZz9qbSA0z$E|h5<7*iGIEGL#%rnh*BC)ArF%aPflbD2c zvRxYiE=NlHrMM<$MybQDXeFariKpY&of`W5cyZwO3Q zZevbV_gtndo$Ml$kj^9(u}y@1^UT8YZko2e_cHy@b^a;90H^^21b^Xd;{X5v07*qo IM6N<$f>Q8lvH$=8 diff --git a/Templates/Empty/game/tools/classIcons/cloudLayer.png b/Templates/Empty/game/tools/classIcons/cloudLayer.png deleted file mode 100644 index 0cde23bc03b8deb3b642c06a0d2157144613e43a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)q5X(LHc?WHk7 zhR{DUo+(rmAaaCK+9AbGL~)dG=XMHK(L$+2C|XS3MIzHH$vuRH_O{caxL6YJr#_06 z!Siwbte|~-2x`j6Y&U)Kl)l>MQxMamSW{mo*Oq?KW!XDDt31-hhj&I(Lm;HO%B}nS z%IM=vAMTRfH@OKYeg&HvG_{qnwXw3nE#p`q=^vWx(>GPl|(0)=<_d+Sv*N193*ms5_e$8MGnNRdpBiWPW=7} zEPevK0bp=&U|EbVmiL^GCwSOKEgX|25DL^|^>Xq89`y|%yj8=jVdBSk3m1E?Vlro7 zhU_*rYB+L8cg~2|j|w%RjZMP~-wMav!lQcJ3Z6fEfj>*Y{(UXjOr!&pxn^!xb|j0r z`B~;AjJc`L|6U@MafUCF+x05<2)N7qXL#`)Vi3r{7vFGe0s$D!_&=Rt zKh)_c;OGkmhP}@iQ8Zxz512p%HW_OPRGaV_@Q{*dWP(Nwxd7~f54dCn*a#Z%kcn|7 z!vUNIuoLG623!G21h@b*pb?)}uz(FftXO~g{|0zo0Hy~}9+;1uCKlahWO(oy)kYvL z1Zq5hGcy4V3V<3Uu=5Ec!^u}*;SW%a3vh)2B74q+I1l7Z4raLb6tQUr0e}Dl0G0b% Ub_lorsQ>@~07*qoM6N<$f;jJreEBQyy3K41CL8gi^XC}`S}^OS`FcFSZQO^5d+-Z-hxUJUS40p8~tT&4fctM8tn>b!pCCTUoUKs^J^-@Q0g6A`!=b1B&&N z*~yU!b|z(6j!R59kxV2K@cDemWHR3xTb6}Jqmkt#H}}#hu0fJg8dp`-NeVwb%|Wl% z@&0Z?@_0b01c?xlkF#b;hD}ip=2S|h5;&`NdJaWS*|K3876|!_ai+}T%`Iq}2Gcb0 z@bHN9GDSVmk3b*@HW(J6@avE0(XZh3dRd(T!!X%zn5{K(uwfVo24xJG6_luro9We(;+UgY=tp}bwdC>PMB_Mwv9b>f!QXoAJ`CWBlq_j66z z9bBGlvq=QHUTtZ@CNtey-$JlxG-`Kx$@2L;5$_)Y3;<$V{_Skak?8;c002ovPDHLk FV1faY08;<} diff --git a/Templates/Empty/game/tools/classIcons/decalNode.png b/Templates/Empty/game/tools/classIcons/decalNode.png deleted file mode 100644 index f6684f185b3cac485a9bdf9ae09ebcb237c01fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)_QSN*(GI|C(8S<-_C=?3k za=F}V6URMDYr{Ew=%8`1caytC+j@7VmG% z;I*RNZiAO=_hVTR`6|7hH0M{!y^Nb{4g@$ zJP4vJ%lSwoQZt*)9mK#;fg>UtTXzD{W%rNZXXU@^1>Zvs52K&c`u0t z4u=C)t5w&H>o4RfM1)kD{O&(3t`%i&fC)755k7o)=l4$)@QItD| z4oKVOa``^-K_a302=m}xAP|_KeU2Z{<-uTZe1ikyFVM$GrBc%*Pf{2;)9Ex}Z5#aN bw*UhGx+GgiO_=h}00000NkvXXu0mjfGXOk3 diff --git a/Templates/Empty/game/tools/classIcons/decalRoad.png b/Templates/Empty/game/tools/classIcons/decalRoad.png deleted file mode 100644 index cbe8aab12026074f82fb213774c5916da58b5c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmV+d0{#7oP))_H|KE?34?b}*-~cSB8ad^enOTmrv9n8p_&~$||M~N$iUALR8=xc1C;+53@bGX; z{{Q=%;men=4}g5fD{uclAj$wvZl2RDEG#N8K07Dp#IsMn;nfTROfbgxuU}LwEsYo) z>@65RfBeAk^ZWM&3`77%SRh&|38I81(C>FnKl-dnvwZ3ZS5W(E~CC5GTIKL&Po_5`5#d7vQ<1ib)?LRL2R`;0(xQFQ0lJ%;UD_b~kY@$&+Zn+S~B3)s8>_Qt1=pBO%W z{>lJMiEyl@smhR%lf)n=FJk~yvmaH2k#ORGP#*>fNpVp0)-xe#o*x+I z%V1<`fLAjNJG$C}v?hSPV4*1R4_EZz1AqVi{QwYP07{XWGKRKTrvLx|07*qoM6N<$ Ef^$XUc>n+a diff --git a/Templates/Empty/game/tools/classIcons/default.png b/Templates/Empty/game/tools/classIcons/default.png deleted file mode 100644 index 0519b522075409e5623fe3805a2d8500b260d1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)c02>=#c4o(Vi_+`<0eK123~YIppMT#GJ3+iu4hcR zoc8zc-}=9Q{__6$^OxbzUsMc~RUlB+h3y8>wDma7FkBkuSU;z$r1AsQ+2_>8c zFu)A}Ig1PzAPo46&j1FT2HYab3t-KR*bHXu1<_0}FJQxeVfYUU{`~Lnzmg@JXP+hL z0u0;#GkjjNdyykXO2p>J0H^3QplBLKBKptJyJ7#*<9FqRZSj?|t{4bH4kX?~2ko%p8f9h2UfexO&WX0_*a{g{5ifC-b)L z$KL#Ml#~e=0 z{r=NyI9j=-*0O924g0I4)RGk7UmB^D$gLw6( zrP(16*fWzrSL*zg61+Z|6IP_>-n!Xx&ZFx(OfKr0jgGfZavr^Cs?g(6hTm{8+~922 z-A?K?WQI*}lFN%YJtNZ}=<{e&gC+$uO@pDcu#KlqXRq2Z$1+hLJB_6LPG}LZ;9Q$o zfahIpP+&>0U{LZ*Qj_@D_gVAIUE}QIQ7=Xa1acIW3L1v-3uYpM;{oSeIFE>yWQycN zU~~-gz3H$8HbhU1W~X?3O9-bK6X9_J?I|EL4A4eZJZFNggv~Li1Y-m~ZtRsh2EV-T zDfGBfzS_3M3?iV(;ZRMCP`SN$!Rq#*kpUJD6%K(l$ps6`Xd{~ivt2HC)k5#`5!*Jw z%$^0mhk9*czccy0ebcT_uYGsA$i187_hL0r=M6E?!1r>}RhR6kJ7~}^Dqp7TBGatpi^|-w+&m3;d zGA*;4m{}A{l+l)y{#M{eYlMUZ4{7<5n);2*O5WzipJdBrJ(}3c-KrnxXc6PVsZMkp zm~Qey{<~>8yH7{IZ$y!h e-c&XI2rvK#6w_7Twchvu0000BB{wTXWf zIZO-?75qpNNF6{^0C1l{a_?$JwiX#f0yHG5NHRl%q?vHS@8Ad_eEjy}+qM9%Yna?7 zTY&-E&I0XVAzvskS8iSi{QNyHEabkpiY2+fR{gtcSp}r&Y`3tmVcm}Ek6e~{HXDa` zA5u^%7tg76O$X@MvT@tJJ7a12e*vCS=?Kpq5$-;@+V|#t(nwYinnFNR8&DBl?4~Jz zbh{-=f7Egi>a6#6OV7t(I-O)x1>F#u+Jx!d>pq{;Igg);{G&;6lzNyH19;*?JGURd z^*S9BRCUQwcUP5$v;NN5JD_JXEyfaJ0SL??TzUl}BA9r2pDR~NhMSJXih{&e1r33{ zyAMIRoENZVuK9-~T_7~*3Co|d(^X88m6{gGXDShl(WU+yEx7mlpjIvEL<1)W!bu9r z#)Q3?nTY=RTpIcHu?RG4yJ`@FEVy9W*3na41WIA(KN$F=66 z*(kc|J$gny>$}KgzrWI_6#xZr=%ltlzYln05&=fKTu%A4=aR%a*G~Z<%)vc}`-rBb zzRjmDD<*eB;ClNmpnwO1KNW+Zd2Am@VgLiz(Frajj%q5%csHU*4h^0Pw};87pjm~P sJdButHI~r=I%ih+rV9qw68I;;08R{lwOeqP=Kufz07*qoM6N<$g7FYQD*ylh diff --git a/Templates/Empty/game/tools/classIcons/fxFoliageReplicator.png b/Templates/Empty/game/tools/classIcons/fxFoliageReplicator.png deleted file mode 100644 index 4dac38fc0b6f9394dc0fca4e7dfdae8dca67c7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmV+#0_FXQP)7i7id()YjqDpwL|ZK(nAjlblQ_`9KD(tCYG&sv{m=GQ%Ylx2k`qJRZAA}N3L^k$#jl8e>_3N?#eGU}r?J0?-Y zX}v20J}Vw>gxl2tO$MKY9OQ!G3gDT^Zd}$A8)1O8>kg?}jGt%boC>KX>?EN;g=fIM z)`x&JwIzNxOI=Fj!s3ivFkn$YLBnj1h2tjkI3_u^!)4<(C5l}y34;ZKqBLDERt(i9ddhIyfDIIWap}1Z*ZH`N{ohYCOpzhrB5Sc%5R=c=X9HS z`jL+UJxE^;ctp1W3>ge73nf0fs2&NsU{OHFkgQW;HHrsRMKeKhwiq1+w8ezYe-$}M zF90PU7E@{ejbOk!G20kVG-;g*HY1{t9moX()^1`JQ4~J@N{bYUK%*eH z42o)zHWi1cC7W6TaV~K7FK7;GY6yo2CvB*fM1z8$AR{4#C?g~vIEb%E(X9Jj-+eqK zTIz$#z3-g!oqNu?-_ubK*6GB@wh&v`U5dHLR)($E4lQQ1@j4CB&bB>^)fAi$jnhQH zK~A@o`^tHl3Mq*$W6xBVn@MI0vqV)jfkIBZ1CH6{&1te&jr0@ha*Gb5ca%>_S@!8i z5(69_T03B5-|F@p8O?ege6jmTm8W--3Nl%2CcfaCS{flKFFTpfeMS3m9eQSErz0t^ zdNarm=M~;Yz1HM5=cJ8Xo*^ECO11)LXvdH1Lg-nLZ<8fX?ivv0a9^X`(JMbA794Pq zz=xXzvWb#BI2E}dm(S916vGZXHZGejkG7yOXdroS9e$jROMJ0>U z(GFe$P&gSRh;nlQMozu75Ou512oAVHi3t`IgphiHn^C?N@r@g(G0Bv; yB8C`-JmC;tWhA1mg$6g<*GR-)COli%pWm{B>1& zrV2!W%e(WfGqwouuPYOiD}5(sg&! zBrJg+BLH!xlZ<_Fu3`*;kadIW<9q;UXKW@5Rm}C^0Ue&<&bGFMy^k_>eTD)L2xk>=!9ykO@n&FS@~&b#wGiGw^8R zt2ywM(PUJ#^D|HwK(fBl{B0t^71?N$6w!}1-PvDn&+N&t;-S5e!im%*1;Gn(%#T+rcem}8 cWnhtD(BSN^o|3$}7N~>4)78&qol`;+0F^o=vH$=8 diff --git a/Templates/Empty/game/tools/classIcons/guiControl.png b/Templates/Empty/game/tools/classIcons/guiControl.png deleted file mode 100644 index 63393413878ba594a665e654beeca2a30300807f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ diff --git a/Templates/Empty/game/tools/classIcons/interiorInstance.png b/Templates/Empty/game/tools/classIcons/interiorInstance.png deleted file mode 100644 index 7c699f858efbb7ea0dfdd8cb7b1c63583c83e47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmV;T0bTxyP)1&Qd5`IP#^z5@CJvgbe$Z~OtJrAt1|RRq zxSV8IIRS!0>gIWkpw(J~qTou&r&u{jsAHD@fO~$^1K;<6b8cwOsR3gQ^8D*~dt)!Y zf4Uj|P(W}GP3XD}a4^v(S(ZbZev;cqIwx!jhQ*}MGzxNOw}a!mRz#AdaCaL6c30RH z{ZMeB_}ZS05Wz>OV9DGi?&VupfI;N|(Xa($CY22u1dyH>r+BJwT30Q`un-H@oVzW@LL M07*qoM6N<$g2Vy0TmS$7 diff --git a/Templates/Empty/game/tools/classIcons/item.png b/Templates/Empty/game/tools/classIcons/item.png deleted file mode 100644 index 94c6222dc91a2e4e9a7041a39dde492197a633fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVNgkA!{dJf8$@^$388DR7l#$!|HPAvkiD%b$1YoY)z%j7v;a23(}uS9%HfU!HQH~AGKpC&1> z8mRUI2af|;1>kG+{tXoA5Jkt+Y!0L2AH_r&K(ZhH8gwmxBQ!=E7jX0hC9MLB2_Ulq zm@0i=74UG;OTXWoX<^-ECM5u`2lsleV4~|HaQFz&&;TU9+ca&i1WZ}}FoWB};4>+S z;qpHKreHU&4*7mPe(QPHc2Y{!)e=ZOU}@wzjODMWH|D>NI zw(9L?y);Z|^Aj#RM{5lBIXJOS$Y&2E$cGNkwUFmUX&5qddbgr2>Y z=WagqPPOee1Ce&UIaMGALC8Y40Kdo^l1Dj2AwRgxW$994XN0hs+P3kmS~qFx)KEns&@Pfu!p{DoRYmxjD0*eDkQl5i0=&3h5{5Skg%Ng+0NB1xg8|>8N;)#nmp#mP6gXlmBdn6F9LdVkRBA;;r&gTF wECXyVwy<-D*g!{^rB5}o$X4TQ`yT-Y0DX2dCq&dl%K!iX07*qoM6N<$f<*dNqyPW_ diff --git a/Templates/Empty/game/tools/classIcons/levelInfo.png b/Templates/Empty/game/tools/classIcons/levelInfo.png deleted file mode 100644 index d7d757686c028acd2b019a9cd66015d1883cb815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)e$)b(jE1j ze!o{GsqPY<^S=JRKb}{@pTFdd6n$?I_#Ep>bA$|G9xDr(esihMF+ksYaOsyLQ!|Jj zOJFz>g-k-TTtad6GYTKxz_IE}B$}f@=I;O<=d^G1c=F_>t1!ZT9QLa4x@1U_gnHA) zR=tH>rH0o}AHiJvvO@M3IEW$wM5Z2)bL#xHo0uN)VIu5-5p*LqElC1^z72_oVh+HoD(4rjs`T03~E?jeu@1024<%Wcr_VrRf0@4 ztC4Yheg8J@gcC0m%6>aCJ)4}Fo)DSY`N*IPhjbO^k_OJ6FyK*TxCjb4+YVqkGD@{N z%*~vbQHlq~J%p)v8FH8EcfeKpj)m1~1J4&1v0p7N5fktBnD~sCb&(myB;h@C z8|Fb9<)1C&Ijd>mQ{EKLm2X+5@)b(n`0Fvr^q69&PK!PBs(9KwFz%Vlw*UE<{^L3S a5?}z(x-J`GpTO||0000LQ9u6@NgBql0m9vtTC&5wqwbsDsYU=pyPbs1DBNAEdR?Qb7nJ*bmL|cHP>7rY5mVxI7QDJOiiAd8opsIx_q|MW5`X z{d6hx)Sp+7s4Tz?KN3Jxd3|LqTVH&!J=`}FMZNRG|_Y{}+ z}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 diff --git a/Templates/Empty/game/tools/classIcons/meshRoad.png b/Templates/Empty/game/tools/classIcons/meshRoad.png deleted file mode 100644 index 8f33e23f4c646ae959f28b9369a65bd473f26dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)49x!=U_*%;Pi=em20B@C)$a43}$HZo-%o z!3F>|g92l|o`JT2cYp`M1o8Oc6A<+P8arSY^ovW13HSwj6V&|Y_a6pkW+sNefB$j8 z#2A4t_|HH(I1hAz5hy8x!(hw714Qfev3Ee>Gck|}fG(%Z0H7Br3Ij$EapmoQ27mwq Y07tu0zf2eS^#A|>07*qoM6N<$f;}CoU;qFB diff --git a/Templates/Empty/game/tools/classIcons/missionArea.png b/Templates/Empty/game/tools/classIcons/missionArea.png deleted file mode 100644 index 91bb1e219ef12f670097cf041707ce3d909f5b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0HVR@$ z(uuifB50#nXdUdLsbc;Dv9J(C2*P#O1gvcQRcNkC5wA* z)402N@6GMr9%7@z&c5Aw-}~M-@69NTR!;%6;%?*2<=~I+PUO!u0iYB;imbNZv>pTj zzv%JBUjI{qeL2_Gsza)Drh=u7-?+S{I5z=p>{Ow34X!*T7{)S*Bn>lnJh{M7svjny zp2Cs*EWb!w!mC5&% zFmES%B_<-^JtvbbNVGWUdhX!l=n%Q=dQ_=gb`58zhv<6Yzz~M9N;`1{B$p(!YzCMI z&W&<&0Q)2`w!LTzw)$Gg+B+X%Wb9QGJTf+p_J@z_epR1n6j3#$vL@9(h~oFW{HF#6 zn|#t*#JXUs99Zl7Sk5dUx49B=F3wM5@6Qh2OwHEMgG9x)z>7W~5+B7M`KI7-Y;7!) z?_2#a`4%4%@M5iYg~0Pr`11MIbIU%)T%2DDNt1$=>@RZEuwUN2m0-VI63l9LJ5u0= z&g#)$BH6}F`n~j-Th+J=kc^yp^}|mb5VleC(Q5E1eH`n8l3v@EHEJH#D9p@*E|U=4 d>pK4zU;uA$%tZuoq2>Sp002ovPDHLkV1fig6yX2> diff --git a/Templates/Empty/game/tools/classIcons/particleEffecterObject.png b/Templates/Empty/game/tools/classIcons/particleEffecterObject.png deleted file mode 100644 index 255a5a8a8a380d988090177168050f6ce1a9065d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)un+_ebn|k2mJG}4nyzlqD@5h1GxEDY<{taI!LVk4Llx7i7;Ail_ z562LVEF!uVd;dXGDL1(}b>{j3GRT@edTD4;=c-A}x(K?`R7ht-~lKnt)BVedm5^XpHm!a)*FuFue5pd6A z#wMyXM~z)R^q7IZ2drTjh)n{wx)S6`!`<$0vlvQ7PkBTl!UW*)%hgT^djX6M0Po%a zWo$+=wu)*!=6+$)A4YI>6;jH`);oh9w@4D3r~QCe476DRCIZY&fX7`4n3e&-p#6KE zX8NO8rBEZ*bS}hH9kGeLBg)L%M^(QamS{(?S0CbJg{rG`t~3GCUE0k#zJj`XYv4jF z^D_jmX98ZDuMsL+x^rl^O)MRyeeKWsOP+Lo*iQN;Ed$5cYVHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB diff --git a/Templates/Empty/game/tools/classIcons/particleEmitterNode.png b/Templates/Empty/game/tools/classIcons/particleEmitterNode.png deleted file mode 100644 index 351e4bd729c5f960cb2836069e06d20ffc63319b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)%%=$Z={USRNNJP#xdz-$F|1_mBM28Oap z3=DsPzUZoAVEFctf#KmBn8gL7#jM4zSd^|+y3_{#E^UE7#P~O z01f(m0jSOqXut<-UO*Vq(ZawW!V5IyEd#^LTMP`sJN_ z_Qyb*fg1k+ZD)T4(hO2kh#ng(SOV67feR>n`WOSl`YS;0KL!Rr2?ho(pk3eo89)OP zuL1H5-~KQ#%sv5PPXLR|yH^00BO)n-Y*_$JJRm0*g4j?o1Dxq#z%moX1^@&Y0O%%t UrD(3ElK=n!07*qoM6N<$g8hA+umAu6 diff --git a/Templates/Empty/game/tools/classIcons/particleEmitterObject.png b/Templates/Empty/game/tools/classIcons/particleEmitterObject.png deleted file mode 100644 index e5489fc70e7973f22d679349b713b9920f422ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)VHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB diff --git a/Templates/Empty/game/tools/classIcons/particleSimulation.png b/Templates/Empty/game/tools/classIcons/particleSimulation.png deleted file mode 100644 index 95bcfef6b6e184a1cf0d1b2d61160325b08a1553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVzGdSf; z1g zG;Opuzuvp=b>7n%Cl}R)Gw;m3=R5bi-#LfP2N1^k+MckA{@+$I$ck~2{o@XI<5&1R z78v_?0)@=KfnlW#+#S7t#7gh_8%@QN)f?O6f*@FoG4SaLWNu$8#xTpWu%NQA($fQ} zskwMynkHOb$IqIQnp-?`w@+0RQ<5YTX$|_5N6|*A(N^Qva4Pv>*YIyp9eZFI)4pU<-8@U*}UwF zFZD);gO+v4VPL1qx%?@0ITC`)MSxqRXb=dIaW`=F9IzULbmQp`{QN+w+gM@bY7#TKWOfk`hBC5dPJ4YSThAPtO02>gb8 z&DmOZ2a<}a8e0^_P#s7~6*%XPvfku}YLwIVl>y+>;@aUZm-DGi&s3&F@v|rhT-uz# zE+f?uvbI!#w1Lz#W}<-;Z|&~e7k|}U0j;V$pYqrj*-cjL#L`xtzTS`8;jY#hPu=%P zZ__LYEX%TKYgG3&QtwNB36A;N1{?0(%&P)8Di-sC0GIS7EDnqyPW_ diff --git a/Templates/Empty/game/tools/classIcons/path.png b/Templates/Empty/game/tools/classIcons/path.png deleted file mode 100644 index 945102557bd5c6900c0447170f527158204d13a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)3z66@GmQOC-(!c-w-B-N#5-=9M$O>@48SsHqNkM?H z!Epo@z!sQ?JM-Du7!wmMjt*G!--%qpUEtN3=IqQOy&LK!BBwz=H2%%2GPB<~yN;5K zoQM?c0W?&ePQ(eLB1U3TkCTddd-F>7Knu0pgJKO5aR9FWXb{IzB0H-R+jNB+-Ndf~ zb(A>6(E<~E?=+d<+}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 diff --git a/Templates/Empty/game/tools/classIcons/physicalZone.png b/Templates/Empty/game/tools/classIcons/physicalZone.png deleted file mode 100644 index 023cb7dd0483f55abac9837a3f91975e199cf49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)OiU?NzBP&z-4-{=IQ;66^NJy{ZLYN3(S(XeubUIkgW=9FHN+sO)dOTU+ z{q!*zf#qr}ojzG_ER}+3ni8)N2)!+vvOv2J%19mgbiwOE#OF;9u+fBftQbLp~YOwLydc0000^bM*{px!ll*F>HGNj#BwAWESvbnA>Qq}^69PBNM7{Cqn* z->eeHF(`@xSvlA{>Y{0*Hc$ts*AFju-E0okkti|%7Q05p=+x`mU{y`d(xpJ1K2c^zW^-q3!6B@ZTpXW3orn+ Ws_E5fA*oIP0000L5e|ZKrI*yotSW)P*f}0YO8%c-`%yjUV8>_^4xph z_dd__-M#moCL*YXrfEi&87we`2)|WI5F6SNc8$7CV=QX0#5)ok5{a#d6e7f)NOVag zI3TLlq_Hp5$rAL5qz^=jmm;NW=5y2Nb(1DuF*r7j2aOTJ+&s`b0<`%6&oD7S^Z`AC z!0Z&PSF4B9z>mNro6$w|v+8B;=5{A@2QV=XTVIT5hcl$Y%MWvbxy)QP*Qlyu6W#d) zI`ms|vqTE0JX7;Q| zD5E!uPk_4zot&_%0S84lOt!Yo$5&7Wse54mR8bbm$u#!NF-X=hJ<8d%NH#<)i>!~; zhsddE{tC5b#;!)8KLGh6kW8t)WGkYZ0govWc_7E`=f7QPZUz~=QzT#JEWDM>y%wRl t{EZw#M2LV@3bT2u_8zn}_)q)_FaTq_`PI+qmRtY;002ovPDHLkV1i{@+3ElQ diff --git a/Templates/Empty/game/tools/classIcons/portal.png b/Templates/Empty/game/tools/classIcons/portal.png deleted file mode 100644 index 0dec3b0a57243ce5a9672921815bde55437df29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSw3P)PXD ze*5)nJre_kfMNq!unGS8`&Z%H@8ABMtgHf`e*9nn(ht~KSavcqF})z@0-$Emk3W9I zOY-pv2yk*T$O#HE2y$^LeEj}B1}Mja*MOgY{^$a2%mQg*WMpJ`_VFXbi%*{z_&7Ki zqy+@HfpWzlH8>6U@%y)o3{dlj@8207zI)fW^2`~=<)=?G-gx^9#)eZdHaQFfzW@G>!Ux3$2xF7Onvj423D<~Aj!;6v=>=?ZEU;V! k6ZnP40GJ%IdVl}}0Kid_iO2v$(EtDd07*qoM6N<$f+oYJUjP6A diff --git a/Templates/Empty/game/tools/classIcons/precipitation.png b/Templates/Empty/game/tools/classIcons/precipitation.png deleted file mode 100644 index 8e2cc784c247cbd29306795ee4810d2e07dc61ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPRCP)IxPd1{ko5@H0FHYGwvn@#h~N&j b01#jRp$uqKZpxl|00000NkvXXu0mjfb5D@a diff --git a/Templates/Empty/game/tools/classIcons/prefab.png b/Templates/Empty/game/tools/classIcons/prefab.png deleted file mode 100644 index 6786bda75362d46d3c2d6566550cb40fa1703e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)@4JsBNrL?}3Hxjr#uzT!W`)KA=Ou>IS(#N-S+aAg z)V6fFe(hpok%!*(Bnq4)3fl=MMB!KPxXp;XLnKp?8MLf~0|JUf%76&2Ix+4{PoFXk zU4_ab@X!Yd?ZSV>=FSu@7>e|Q2|J`DV&Vjm8Zw96u3(bYA*lvTGmnwHiLt{*r=;_m z;NkV%MzXrLiO=6Q;d%i=o*;?|q@rac2zOpYb1vp&SC_?_(+l`fdHvaK+p_X=)v+Q@ zR?1K`4QpK&8$UfbgBSq`sU%W5m_d;s#y+hPStIzFtXa0Xh$nDiDe%43!A9yBBhF`y4Ly!VR^i7x86jv~g>>*B{LO=()&RNA{32MpElta2vl&e#S{5B|LZ1tn`H0U^CYI2$f z;eZ}TaM`dRUf!&>IENim;uIr~nBsi*X#+74WI7#@RC?37=HUYVb?saqo0Pg@Q;JAv5Ip_msaX%GJUl915ioq933QZttb=D+@9`@PP;1sDKp WIwKds;8xiH00002WXLi@I z+152Ljb)KZIb9$vg%zYAsP;o8(M==7`l9^;?H5#EgV3lC5r*c6>O%l)yZm4n#8 z$Qpt^ygXT(Nk!j)!dwF*YcasCUwqd46u72BUx9?=6l;tl8bGW z6Og3NPD04dr6+ojW_@#cjsM3YJyq=x-HoC}fK!Y#5JCg;nNNB)fv@@0Hq+xjw$!z^ zGm4y`YB%7r#}vDm?53IFNs^$|pDst*r}K>n9Ou3&lnR<63rH9ea%E_l6L^bCR18c3 z#U-W+-nC%o`R@uLT%TSPLnI}`!^TTF%WQ@~i`yiVATCK}o()zm{Lop?eMd@{b(y^n z8*Y^585o=I5=3W|Sb&OV#H`rtNSoK<2`DHR6QREWpx**Yd8Rdosd;L~<8uNoR-18p zA3CxLG}XZ&7H9t);oy)2EXH^<4#x;;c2P6F>*sOe0FUxQGxz0RPu)rr{1spTU?b?qW16%F51f1M_kHL5&hLEZI~oz;IHHwupiX$zZ=5y7`heA?C16T&twivB zHhmIMv~8)i50hk;l_2of`QAfdd<7VM2{Z>>YF`v(C8*y;=n~N0!5h0kRRwT62*sf1 zzW~Z1j8p8g_Z8Uv1pHnGDlkMbFW){qP zaS6!mh}*dXUErX8HX)(sa8?I`p$5!+m_v3u2Zw`jr6r5rliY+^2KlvbsY|rVIZ*1c zZ@c?e6dVly`Fi*-)T5CBatt8y?C}dY;5P3#e+==`lTR!q#5pJ|nc6yZoT>8_N)Z-$ zSy^61Y&hqQZJ#x#lau}SMJwv`@%?8imc1RKpJ}44%`A<*N>D2Kji!ug8hSoV?7vm$ z6h9(xUB0q^r)aQ;&rxzon2Aa z`u7ba=jU*`){Pt8HxX*G127gJvF#T=TU%STxP+Pl171upNFWh6`mVM`QN``@czia< z;?e?MPZ4vC=e5c(9e14n2rvK?(bt=24X`W#0000< KMNUMnLSTX){upWi diff --git a/Templates/Empty/game/tools/classIcons/sceneobject.png b/Templates/Empty/game/tools/classIcons/sceneobject.png deleted file mode 100644 index 59079e3d7b7ca0638d6ce036843382f6bf8bbfb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnEOP)>zXBGx ze&Y%*=X2l+gNY9x-j8o>s{soD*$&1=<|r`%N(Vry07yT8M&$*V93#GjR9#aD@;4(? zTmhO^K==m`FW7T>!wW`2Nf~AUnpX^f;wSKCM0}YE20#WdQktCs0t^81$aFj``0tkh O000056Lr diff --git a/Templates/Empty/game/tools/classIcons/simObject.png b/Templates/Empty/game/tools/classIcons/simObject.png deleted file mode 100644 index 5c143982fb3bf199455b52f352ef9c77b3a24241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)F=Mv4A}6$zyBih6H6Tkx*#X6_zWdpVEF^IjUog7{>5#8hK?G8t&=4K z8#_D0v&YXE4(~h8@aEN9;=+K7n~TBO!=8bSjSUo{3{oRJAxg#o^F@$<(|26XknK>S0r0jH0jXFykv5s26f0NK2C-A;zvH|`RS z#>KN&f@uy8c7~7`e=wVkosEH&jgu}1{rUgjo>{fw=^d`}7_}IKzB{QNCm4=xK7IG! z>mO-J9(OEvbUi%2d^>l;nbwL}2Bm-h{&gxUCOp$nejbt)>aDV>%C+tc`xc6(AJm7C-`}5m*BR88Bk4As1J+mzLe7U=- iw;9~LHXA!MFfx2lbli6~+`wDnJru|C)u1>nY!R7J(4vLeqSi)>$RG$>1Qk6NtqR>Fg)Jfo-Dxi)DM#B_jEy6q zlc_l}nmRi3b*|(1K%@ibyZ5{2{{R2;_&!Z3g{En&F}vF#YrA-l_zl9H0X8thx-TnW z7n_pnqcz zRF?18L!Q+HF0zYhJe|g^QWL3vz#B?l3`G212E!(Xr;Uuw7?_wdP*Qe457p?4X^9|I zSCr;B=gwqe0NxMHaK~qcjBM2G6kS0J&XffrQH^wK6i04>Kw3Pj33>wlK~KY@PI^Zo zw2nw)x9$Op4Sx9;7v<(Y8(&A0$go8TnGPc(mT9=12?9F0`|0pcfi+c{x&scls7K8aYiG(584?n)>Do}a`C0VGp2O#BWQdVL@ zVwEcd(Rm@51;3o$sR_uEI#0+*QzRRsS=WR?FDl@L@9!2%6FZq8c*FRxhaq45$2{rJ z&OG?pEm_#(Wo=G_^ehotfZkS??#ZQ<45lYVNwzsfGH_8G^~aUX7ICZ0Q?m1Yg5QCV z4wMVlw0a61;#tD(q3@#;nRCKo(xj#L frj4%kKLG{+V2I-QupMI#00000NkvXXu0mjf-GfkH diff --git a/Templates/Empty/game/tools/classIcons/spawnsphere.png b/Templates/Empty/game/tools/classIcons/spawnsphere.png deleted file mode 100644 index df46d9df567e4b2d1a7a00403962c128465a8562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVXVP zY{RzEAkAoKL|#NSNs?|#t!`A1g0A~3w66LOB1Tvmgu<{c3SBp)Qc$R@TD48*)a7*9 zXj4D4bKdDFrK{eL^PQLXJm=v(=RB{3eM{dBAGuyK_U_%|C|QuqzcCh}t+QydG~=*Z4_k39I&XF$^D`sL zD>alNaBmdJ%><$wVZ2{^gTcE`v6a(WWNw(KnXc{7xkPd-JYPuW#rw#o7;L&)!Z_h3 zY+bXHL%mGkp{{?iCo?WP;#tL0`GfocZt|0VHo!Sc z%Jw>IW9yaEV$M7&?lu!}&3P$D@a)M;PA*9Kz+);_m39^h&zVQX-R6dI&3tWA-@(W9 eKhOEM00RK`vkX=t8G%s%0000YCA+x5OwjC)wxS~3Nla#I##CAp+g$1f)Or3l#y;ZbtN1A ziz)l}_PonLM5_lLUU+}c_w)RFe+I-_T3YJlcqrb*Z+jFB25<8pR=h2qC@n2*vRbWF zS67qGW=~dBRMagkEe-t>P*YPgpvB_2-EP*`*Ks%;D5aXp%gbBk`;dUP_5&EC0wsZX zJRXwCB#n)Ygu`J>CKC$_3oI`$M_V#wF zs;ba;kw}D0Cd2&vJc&etnVA{V>GYUr{Q`<=zx8e1Aak*TSm6a8$$mMcu zZf+J@3j_k#!{Z!EMlg|Iy;K%&Gi+~RKmD#6N~H>A zoBOZRdF%k(?S;c$C}|RaM*uDu-qi7Zy8++yuw-@2KIx^?u>p6kfwf+QQhxDKD5`{^ zS%{@VhSv=41{9_p9DB>)k}%doOvorIH;=tzJ=T@T^i7SP}2q z8E@Q!q5r~{By;dn)-@@m55I%NR_L#pciQZEvu`__&N?CP+b{N)00RKLi47*lu|#qJ O0000e3Rtp;oNs-Fc zCIm$Uf56HzA7GU}D5i^z_yIx$?e!P5vi1k8q9|gPkY=M067Ug{cs#S&l_iN2L2%%3 z=FZ%E?!EH>EQ5I*8rXbN_~S?=vbBW5$o_eRWK{*@JE?+_P)Rs?q7c#CtgVaAB42Co z6@lDeBg;94^ZZae5}6XbyG%AN$lfjaaYfb+$er}Jh%ML)v(--(TqOqq*}W!TPsqpZ zxDqcJyqo|4 diff --git a/Templates/Empty/game/tools/classIcons/terrainBlock.png b/Templates/Empty/game/tools/classIcons/terrainBlock.png deleted file mode 100644 index db58bb86359517d7d7bedbac500ec4a4345ffefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)25Th5zU@2?G zAi^fb@bB0EdgrMQ1_TYT@3j;7_ve4Ul8`dPm!Dr4GS;Lqy!`wEYViO0PLu5ofCjBc zH-H(&ka3i)U}R+U`0)Kb!{#fS8D#k781n538Gioy#c==CLy3QX|401$%U~eqCU^1C zu17aeV!^1+Qh=G6@xF^xva*^6@-&ObiSz{|nQ@cH}a2Y>(l zH#}8$>;pU<{QdJU;qMQ=;HC~wFRZW_k$=jXqA zog!0kz%prN8z=nx^-sY^!;|6b*Ka@rzQPSzynh+P$!n(>vh6Y$7=AM_eE;^1A>BEd zL4sQx6l35t!l;&Fa32^D3K+>5O3Mq&G9=o^F>r8jFmQ5mFmQ2lGF*IknPKYYnIJWZ tjJR^6a-3cQP{n)#3Go9XrP&!EzyOQI%$aYhwp;)J002ovPDHLkV1haa8P)QQi;kO_zthD|R)cPSPcI(=W3SFpFMT=bsx)Ickq6mVD6|88r2vRE6 ziYBHp>2&5zy!Q%R`6Y3dzMmi8Q?OVjAwbp)0O zz>;P4PMfFg@%m9LN=!_C$EFRf@CQR~1w!!Av}D5yY&)ERVT2I$(V8wc6a(H__xPX_ zh!BDb@cFBt(|MURh}4F$xwjj(@S!m4z^3VQQdf-MeSj1Dux8VN6HyF75L^ao^lF01tK*R{5)mZwmj8gRkAsyJcru5CeO}+QU#ZQ4nU?D{tWm(s64f6x?UOo^&Vn3p+Bjhx z5?lC{Rr!*{z2*a$3O5t|TNK*6R1bjRXLxJ0;zr%R3IonI$CDFQD7ikfRjhU*`yS)( z)}X2Hv1;Jv)wvPGX21La$kB&kaJJcFX-X9mwyU7kDz#ZK-kE9hWNv;$h^OF>h=PxF3@+DL$USZ-bZk@n1~1iD=Qnr?>~P8 zZrr-r4>Uv`=#oOP3;zE74aOjF`^Y;mMi++xZZ2*HT`e6378aHQpdk(@UI2kdx1NJB zx;O|teF1S1H#ZN1jFb$B8INhe?Pp+&F8=!MONJw-_cL6+aURSU6adGn14b;Ex#&aV z4pscXiQNp$%*;Ro&N1-w2{LG^>VSk5FkEo?)NL?E7Z3H00nI!G^2}yfQ_jmgCfuX5P1F)98L$IF8B?`+ZG*xy8y(7iNk=j1SFcje*MDm;^hkv zb0UTdQkq?{+71J+-@aye^!PD|nFve=4_F}ajZnOL>kZ;WeJ#$E*kSvGD6SR#ze{Wt=ccL_&%{k@ja+>@CR8 z*PUx^VJ?&3si5E#Nhs;5cGa+$YeNr=8Y3lU zKuO80V4tgwxebBE09NB+L=zDRi746Ms4S`YPXPq!4mPU@X)n)lnbvR4IZVYe58KOVBE_@GG*6u16irttT{e40L_y$-FgPUAYH4 z%4tmOQD}43htwmgCdH$JDh>6Xq4_ zq!kh(=GF;pwH7z)wr^~TT~mc#qt{()x{i}|%~+0vFywoRVc!s5zMn{mW+eV~0{U>v zF8QMC}R~d&@3+KlUY84AvmLZOO_s!dn zSDIw5)sO#5kue0LW*a!G+i*$-!Z?A@2wp17Ph3rXm_ecD>n4{FyN-$TM>{B6I+lK- zfRiLe5asz6Kwg+~O|x9VK4m{`I4GF~+^=Gg7=D-_PBM%a!3H4RDwMh4c~rCTyy?I! zXc)~yXa#{)7$b;NwvnPY_O<~Syigg05NPaKxNJGlH4Xjy5IT#)D8+OcqriMP4=|X8 z8-Qe8EMJ}+6j^L56_UlEZrNUM;u8>v;tV%@zVPxH=s5rrUEoQ*glA2g_X7QykBX(K z=hwqrZqd|nM@9Wg^p%GdPQE(~a5szKmUY#8hhXznLKm`) zf)|f%oRZxOG7c~|;_d%-O z|IxzSqrYKB?@cxFZ@m@T10O9qVwVbtIAwW1Sw_koA%1W4T*36y=buWdw6Qz(@xAA% ze1FG)+*Tv9Un}-ZvHN7dZFkfkDgO6&{w2Twi0(5Gy)VzK00000NkvXXu0mjfjPNdI diff --git a/Templates/Empty/game/tools/classIcons/waterBlock.png b/Templates/Empty/game/tools/classIcons/waterBlock.png deleted file mode 100644 index 6b396fff51bc87b57423b451b8f0c31a6ea08628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP)tv15l_Waste~heti6{ z;|F}3Icz8ZG=~x@AT4xDh>+vJ47}%r3J^Fcp3!(8fp`BiPXP3{%dzdjlsUOg1h%nW zI(KQ_gE|HTwR|xem8Zhxu+^-2fR04C!<1U`AsI#m{uHzMT`}I1)A3%?w$(_0lM#`d zUzHeuq!AtXhq#pHL}aKf%5E%&6?1 zM@J$_t{hNVtKY0dI?={=UKG~0RL0tNJ&@eQY@^ld#ZmGZ$OJE{!%C88AvBa>I4$(jHF002ovPDHLkV1n;g?eG8q diff --git a/Templates/Empty/game/tools/classIcons/waterPlane.png b/Templates/Empty/game/tools/classIcons/waterPlane.png deleted file mode 100644 index a2d28f85400956486dd679e4bde74967ba1f63ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)(KK@^_LUbCCTm>6SX z8WpdJHI=qrkSY`@^r6s}Lg`DP?T;+hLZDJXOz{Fb z6%=jF+We-RA&+_8x9C{b-X*z+g? zo)0@m*9u2T_uIa%$kK9JRRlt)$4cm?dvGc2mO~?9vrjPzPbl%UR)A8%;JOm-tUQQd zfCyoQ0Kr~JC37S8VVV1>sWnT8Dwb}ET1!=Vhar&F#Q`3pO4TZsnjXPEksIveLw+!m zbWf_@MP1O%AS0a&-ZU(pk?u+&&V4^RJ#R+Bp>R*&y4m@CMIt>?c1RkHc1I$ux(QUl z0mQAhLNNMnix9h}8%y)|Gm|Oe0YJc&-rhdeJOVQ*B@xDindcb}EnZ4k&U~urjkhnC zM~3>@Rb~_bRpwJMwcap_Wuw^!l7QRA>?-pe$}@yn@$bJW+n!P<2`2E zrjYik{N|CvF@?Y6_70BEXJ>{VKOE-~U#%JWox=J?o;_HZ%lZ{XmU+gkZ97a-EKj{J zUDTdE&Cbn^atJd7pDd0I$5ll>ES8FA<=#*rs3=Cu%5Cn6z8)BQ{dHk}JUx*lOdQQ% zOcL=hxotPlYQ|bF-!v_zwSH{~Jl8*%W_=*jQ^~4kd|uyWpJ521z^|@khwjDtBY`(B zo*Wm;l|Ona5t|%KZtPsa(5p4T*hBblhVT4#s?pt$vr$L4k?8{vi|DTa0{}68QZrmH RaU}o%002ovPDHLkV1gt6V)Xz3 diff --git a/Templates/Empty/game/tools/classIcons/zone.png b/Templates/Empty/game/tools/classIcons/zone.png deleted file mode 100644 index 117e48ad0390a87e7fd7bcd8f0aee81a8ff8dbb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggac4;ATohK?Ki-4wxdAc};Se#yZ zdA%RAqrmZx=S?|Sm?Ax$^j9)BI!tS6i4wB0?PUyg6tH37oMy5FNN%-|WArTQICZLP z5&vfQX>XUBJbYgEuco{#O?~w$uW6}CqLp@sWcfat>78E5785t;_sbY~5B)T$JEZjIFLRIdq|5g!O!Q8B#vD|RTQq65$?>Z@bmk`| u@8aIeaFaXsUF(kMJJ+o@Z1MSj(fq!2jPLEWZqdL%WAJqKb6Mw<&;$U@*qTZJ diff --git a/Templates/Full/game/tools/classIcons/CreatorTree.png b/Templates/Full/game/tools/classIcons/CreatorTree.png deleted file mode 100644 index f916c304ec50b74201c28ccbb3930489a96e863c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X(mY)pLn>}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Full/game/tools/classIcons/ForestBrushElement.png b/Templates/Full/game/tools/classIcons/ForestBrushElement.png deleted file mode 100644 index 0fc969d30b12f10e220f4315aade7cffe00a44b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmV;K0cQS*P)Ao$GFi-pn!Dx@`;Zhb3*ujcC6mZ$0F|xo5|oi*WEpUEkB#x9LnLhj zI{_!X3h9Y8beN3$r@29?iN(hWg}vz)!u19sCi=9JNIV!#H9^Ev-THY)H2p?1>qmlS zCB8PjF&gV0w64)*88ti-Q+${+SNT2Ab9=WJm>7O(3l!h83SG=0s00000NkvXXu0mjf DS7WG% diff --git a/Templates/Full/game/tools/classIcons/GameTSCtrl.png b/Templates/Full/game/tools/classIcons/GameTSCtrl.png deleted file mode 100644 index f1801ffe0c1cf0972c2a49c1527625291312b495..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 558 zcmV+}0@3}6P)4Tk z6B7f|&5g`&Z-8Xq-ULd)G%x|te+c>H+vR0}S5bglS(b z^Y71a8^DMOL>_vyOo2mj(}(TM2GLw6dbDhUl~uKwPtRcX>1XEPh57+#FvQLG-e3Cq z<;4{5nK@h2kKOLfh+WJsD9ylN`uE4D$JaN46$!v>0J~?;^(FFLN+p|$p1yv*m+jvN z7G{V?|NQt2G@eD)1j!GK3|F2U`|$Dk$1k51_>~q#EVEYjXxUKp{@UKxXE(e&vz}Ge zkxdR&!^&gR;!G3zgC~@`R!Hzk0Ld?Z7#8g8d-37{yL;o$o%Kw=kUV|l#`eFz{y3{U zBgavtXXVCEZ@(*=vdfw9dN#0d@<25J19D5NAV!b1Z>zOWx&d3xnsUIdtv)#DX!THj~*_(X7z>t*gb1mg;se%!AUoZ zXP0+Ksm~5&JJ)pgGcYqKty&PM_;x}C(4`EXu6{1-oD!M<&}Lz$ diff --git a/Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png b/Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png deleted file mode 100644 index b6d8e52ac33b6d33d2919604df57e37c173835f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 480 zcmV<60U!Q}P)SnsamPi=`>AK0u|H^ zBo5rJ*Rm}0JWs#}MI~2NdEq1l5yPd#xi}9i;zY(6_RzL1#Utz< zq(aX0!XU>wm!@gLR=h{41f?coQDtH;&4I|1r=&O@*JTmMA&I#IFPiZ(gCJGcb(Uu) zc;KistSBlmRtn0YHh4g$>_I$41<8YH_2+19t$j<=IE}y;e23yV1QyZJ0G8|hwueE5 z5lSj=I>JmO=eD-tYGyIvfr^0t^70 WgE;Y?ynem_0000) zDwf`n`s3MI)T&h|4hNb|9Zsi{6HBEM>~;luqk(%pJ@^%m^Ddpe&NZQ0sjjH13a`%# zlbz7->c`UaB`!upa*8QOHNp^kI%}CMm&@UzZ~?O=~dMFyJ1*%Gw%2)6=w6+$p9U)d)ja znTZjXX0Xw?ZmnKt0t0T=p2GKly)}1=DMvNJ5SBQ^6{iAIHoc+0^!a_by!?x+;uV{2 z1?hB}FV9V9=jZ3x+e`9icHej7_|GvDsJ`Vldh_b_&cx(I(BttUeRKrVGVfd@Nt7@; zHimruj4fX(@$vJg5T6ozlI3V5T0A{f@n|Z5zP>&fO@j?q<4!Tx6oq54# m+Ym(YLo~MazBB(%fB^tCzL)}N?m3PC0000E&> zZN#am2bi6k#h}lZ)OCHaudh#TH8?#z9p*SL5&a>#(&;n;fdG6%KG^JbQ(V|! z-`~d&!$S)T*M?z;BO@cS*&uarkl2my3d{xOpU%T-wc@_0)oR%JzJq~*0SKay^iNNV zmZ&5xXERyh;^G3qnHey9__VnRRaHAqcx}z(Pu_l}hOE??+iJqf*uIc6Alq-QC#Q+JYoW zSXp_4VzG!nCnqMyVRs;3%7e80%}oI|n-v-pQjCv{nNPAz-)z+DX3mCe)+nd2+if5% zIWUK&mdhPOt5&P18^*mgo@q#HI&iz)taF9IjgF}|9o$_Xhr@xZzgMP%ZI`Pj)M%iC z_}@Vt<#IdjbUIO~sN`VVQYaL|N>)LStA`1+)|I7FDI}6fD2jrQ8yhX0IK(9lY0X7? z{qj}9KkXMh9xslMj-VU*y^F+iJSHY5*&Zlt`BKTX5AQ__71%W{My2TW*_n)oj{@lJ z?M1CxW5ZL;LpfnoBMxy%)AlpHc=mkQ(DikX*CRX*1~EP{(f0QA@iBhw?IEY+k{r)3 ze*XGJZfnqtC$n?Q?CO^4jYjA;Zt3dUws2fH8jroZjsFv10Le#*5&EzYj{pDw07*qo IM6N<$f($rXF8}}l diff --git a/Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png deleted file mode 100644 index 6f511189f0be61b63c25c476132f6e3042b3739f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmV+j0{8uiP)45Ps5dWm*(A=`R>}@*JsxQxy+n=?1EB2#-AUb@2;r^GFZ?wEWfe%%G*muhP7-* zHv$#CIJ%gbgYVP*Gk?E-64Y`6srZisF1@@Ez9C@Ng=x7v(?8xld1+$cpYNZ5;;+uE zzd9=(q6WoDOD-((RSb;MjQ#if|EwL=%Asw{9K1krQR4u(e-IijKD%)K!FfeK<&w=s zx1QeK#q#&T*H>^^pp)1IrTLUh5gIyob?Aub)oiL(OZyU=liEXsTW5V zfqf6uV8#fExb2s>Puf3ub^59oA77}5sQ^X3{QQ!%Aj#n4>i|J{Zb=QGPN1hnjRT>c z_L~^I@$BaRsNn2_b7oCeH?FJ)vVVX7bZ2!H$aEmyaCVDZhws~W?|%OLiKeG(Yk%_W zOk@#|AEs@e6{PL|<;&MEU%&qP^$R)NG8~hiynMR&&~ijfZ#c2}`={?FQpVrDeZ$nl z%gNguRyTF?%%^XkK|~l$a&13-`%Ey+nW>vBE}ae1Kx*;^2rvNVLK=_h8MF!j0000< KMNUMnLSTabb^)OP diff --git a/Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png b/Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png deleted file mode 100644 index 25044777f2f8c9df1d4ef0beace57b61a86641dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xj67W&Ln>}1#cW78SkK1Az}?Z&-=D7H{`pWV_kUx<01h`^ p3Dblt3`_2CoC8gZ{^MSeuN`c&0fxNX& zJQ_L~-Nvt+%5<~UfBK5ouHQUEaQS1#5X+?tQVLcZr~0p4venFglJ8F6V3)urF5heC z$4=FH{fjNLNAp@?j{=87xjN(iRJWDh2W3<2KCEwve8&)#&7ru5<+90M`>8zrk9T++ zcoY9YG(+e>a6=^fES3)<3D+8rP5Q-=A#rP+vqW3m2Lqmjvee$2AA@YgTe~DWM4ft@~{a diff --git a/Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png b/Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png deleted file mode 100644 index 8e608ba2d7698f8795e394cc413102def5be8552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 459 zcmV;+0W|)JP)T6uR~ILXqvKl;p|~#~Bap|>K)md9Iy3HI0=ll>o2D832aLz~ zERI>`N4TVE8r;d__x4x`i5?|i@{)k+3X$tejlw? z3)N~BiXuZ0Nb*&pn`|}MLQfSm^)&002ovPDHLkV1lrZ B%3lBg diff --git a/Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png b/Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png deleted file mode 100644 index cd9c6ca32ea1e74ade912b791145159e92ee0dd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmV;70dxL|P)@CojrxSunmn_QAUGLCzz{)Fl$*dhPP0-FM`7Wt@oj{}D3G`A0&U+;d3dC!Iv27@Vl-`CV#SebL2gh@B qDRL?5wlvDv1t0hO-+%9?00RI#XOq=|BqQ$t0000}1rJS%o?ZB0gq#(G#Va0#p9uBQk9Siq9-o;XG iU2JZ%mWMSkFf&*Ru+A*Eym1+*kHOQ`&t;ucLK6UF1Sbsu diff --git a/Templates/Full/game/tools/classIcons/GuiControlArrayControl.png b/Templates/Full/game/tools/classIcons/GuiControlArrayControl.png deleted file mode 100644 index f7340fae469b7e85181d65b29d218fc0363fec3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XQaoK8Ln>}1^>7vbK7ZuMi4X7Z*S9TQU2bH=;8?Q4IxtD$ zz^C8m<=NcaEaZ7QM46>Oe1C7>_W%F?#U4W1Y)m~0j$RDH%&iTDCIXov9ZML*Vj7*d oFz#S#&(Pzopr0ABe*Y5)KL diff --git a/Templates/Full/game/tools/classIcons/GuiCrossHairHud.png b/Templates/Full/game/tools/classIcons/GuiCrossHairHud.png deleted file mode 100644 index 65b06404aa0cffdd3607093c2cd0839b792b9f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)O zV6$}~Yb}vd>S4Jg6xhF^T&)lz)D6SX_x+~_K5#tDiZBEuV@%g|_yB>C0HbYN#0XF- zNmEPeSApq!v<8i})`JJfam*ZffQJmI$^$oucZ&r$N(NzKlAv`O8bg~TnK>lABqC8F zje)mW0YOl8aeTp?scD$=U2wd-_9VJJe;{w6oGkK(Vvb%=apUrisl3G`a-|I{vc6q$ zdi8s88186NAX^G>Exy4S(6cO)jQ9~XO%tlS5vO8q{L3K9BM98X)pZ>fN=D#_-Y^Xj zswDZeUc063*gm{~ltYPO{;`8_L_OwC9lScf%hj}t^-O1LRaNe1B+`?=RSekfcKiMF h=!;AK`=!4G7yt#$Gh19hnz{f0002ovPDHLkV1o7$xqSct diff --git a/Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png b/Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png deleted file mode 100644 index a092c1ee24b7fe77b96ca082a7957b87911af94f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XLOfj@Ln>}1{orS>yIL-hE*N!l(X=lI%K)PN&_`k9lVaUclkO&UI2*eDe049b7Wgr9w3)(k8g^>iY zISJ-VKaI4F3-|oT3z(37`JLhOl=itt_MH0n@883R4{j&wzyQ#G VI0wT5p;Q0>002ovPDHLkV1hJT&=CLt diff --git a/Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png b/Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png deleted file mode 100644 index a356634e84f1fdb8a72d4bcd674d6985f6b26bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_h|ehE&{|GT|XFlOj)Rbdj~7*agXVF-^V+oOcg$Hq3O% z;{CX&!oB}}c>L#Cd%|sWjkR2t-dS(XU=cs9FJ;-E6CE7#zdqFl%$wP9EjQligp^x= z0mnD*^%d{eZY_FQueLE&+EZt45SQYWn-a>?uSIQMzpIkX%B^Q3pMsTCnQ~#C-~NwF u-9GQ%pP$t(e>_g*`JJ>?5Bc;N*%%fZD3o0P&shU>C4;A{pUXO@geCxym0eo^ diff --git a/Templates/Full/game/tools/classIcons/GuiFadeInBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiFadeInBitmapCtrl.png deleted file mode 100644 index 60463c21984988dd8fa475347a6403eb212bb40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)KRo*W-Ez;;_QWSf$iB&!YOK{cSd8ea>n}n^7z%86WIdytsZQxX|s#tBN@)VP7WPT zl|#y{Z$8uKme@#)PfstfY_?u+uiiUw82AG_v}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Full/game/tools/classIcons/GuiFilterCtrl.png b/Templates/Full/game/tools/classIcons/GuiFilterCtrl.png deleted file mode 100644 index b0ddc8a7846985acd8c8520abb3a14e7ba2eb48c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XT0LDHLn>}fnH0!(K!B%h`OUzXgOh_TmLJizv2>~y-yD%6 z96Bpt;{SYm-lub{%O2@yw4 z$jPQCZ@NKvbawRHaxbOt<_WFUX%a=7+4^QzGM~47VetGNuTpuwz|MN+`+x6EXJBR! XT;ijX=bZ8z=pY79S3j3^P6}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)pACFnQ_5c2`GNq-Z{qg$$_c#014dw6SF6DIe_p1keJ=DrQQ^JE~u@qZ7o0!KR e!S##^2N<0H%03fW*0dgI34^DrpUXO@geCy!s6yHR diff --git a/Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png b/Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png deleted file mode 100644 index 63393413878ba594a665e654beeca2a30300807f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ diff --git a/Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png b/Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png deleted file mode 100644 index 0b7d7c58bfa567a9afb4f3c214ae04d96e27bd94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xf;?RuLn>}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES diff --git a/Templates/Full/game/tools/classIcons/GuiGraphCtrl.png b/Templates/Full/game/tools/classIcons/GuiGraphCtrl.png deleted file mode 100644 index 18dfdd8d546c1d15b625e3d012af20b59289cdef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)NoPXlP z3H)3p1`+`aK^0&Auxx!My8W5h?a$o3ye9}~*!k14{;&~{;Vtz#U;V+)n_wG&E<;uX z;XeH*y7IfnyZ?N)tf%eR&T+o~`SU%@NzMwwUnNwLeYx_H&1ZfbvxQ+ked5Hg}e+xVGN~l`wm$Ajew4xVsh0>>J`3VT`lVs@^q^9;#_&1m65!=-(LOs79$LR zK;_jH1~DCw4byl_9kurB{JnGXp^x~F=N3o+k`C-OTop18t zueyoQt-}`AHn4wu@t1>_c zesLQv@=o3Eox1HSeJ_af&|~_llqqjeF0RA}1dOC6Z-4*;0Ln_JsUL$&t^fc407*qo IM6N<$f=lk?tN;K2 diff --git a/Templates/Full/game/tools/classIcons/GuiHealthBarHud.png b/Templates/Full/game/tools/classIcons/GuiHealthBarHud.png deleted file mode 100644 index f661a431a13f0a903039f19a965850e7e878bfc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1{rUgjo>{1%tjz7%ySuxmGm367NNCvm`)?|HsG96m^Cn#Q|ZE=g5Y;^$cj5DQM8 zzj^4u{0q6C1Y8+J#@GO9nv&xw17FiYUu6Q3)FMI0gV$IVX@L z>C)bK9N38IOV@QG!DI)vZIfXbA`lw(tqvv=-~(BfB@#fxo;^ZYmgKsw(2zKeX}8-^ z5Co*_`t%5_m(}!|>+cSF>xOs;UTFxow(9T#E9$;QMB?fLL(ARrn+LJRXVTU)T9ZfB^tyz>9px SnF8Jb0000zy<8>?L9m^7#SI# zJ$nY#fFDesJ{`h{jEsb8z~iL-`}f<}SiO4rii3l5#flY#o%H3)7efPs4<9~0c=+hU zhYvszCSpPo=m9vJa44Yx!l48NpFVv;(SQf=@bH|!aN*mxAK$-!7Z4D5{`@%sCpkJg z9y)Xg;)jTci2C|^!cNM_$l&7QA|c{{HUN``f`S4fY2XhfTU%Qo>FMbSv4N4)^xl@Ln>}1{rUgjo>{Y@v(d$26PuWVUBLqe$5K8%J^?o6 zvwt1dOn$&89pcx-a;3q7Q_ekt@$m!i8U{u-hOo8LqW*7=>;js^;OXk;vd$@?2>`-{ BF17#w diff --git a/Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png b/Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png deleted file mode 100644 index 0e1dea166ddfec490e9a6a6d579c83f88ae9cc45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X!aZFaLn>}1&9SNcbhKMsvV-~8uU|ZxnwtMR*&L4g@Tf3} zag;tdz-ZGYBO`OcRDt^;`<6nXP1}1-PvDn&#c+N+R@v~(-~6x?M|hb1$QJ<5=)q) zSPGxi0j(2FnL;z`7-l_s@Sq`JYD@<);T3K0RS@^H&y@u diff --git a/Templates/Full/game/tools/classIcons/GuiObjectView.png b/Templates/Full/game/tools/classIcons/GuiObjectView.png deleted file mode 100644 index e6b832c9a5addda706a973d95fd278daa7badb20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cie-P))6Kew^*vaWt#`v#>p2sA#?MNM^o%iu1%q zrqA#H3QPUt75>L3%=r5|Pz{8HX<&z%C&J3Wpl1d|AI~3Qets8O9S~?s2;E{}V1jTo zxlo<*_cvxp@Nuv)z%}qP6B`du4Q9Nke&yyzQ)j6lfueyAH9r1v^AWJYMF8P-Ob}+E z((iAL5^+G)8?+gwJY`t;65S=m_WE%5AT)qn#mrD8$KWE!(DsPoC}1#cW7mWY%n8?U*Yg`~TnX<7bYv#J}AC|3ANs z1;eEezt77H{J(FXl#`I8AlQ>7u}I3nvw7mgkN^MwcM#eiv_NVF8wa}1{rU0n@!M!~$qr_&E-#(+ar-V@xS|wv`0?@n zh1ipFexJ+x_B`lam#D?%cWKFK=%oXd=3T&yR`m@kwFzii*n4l1sa{=SQZbq?W(E z|S2B3I`njxgN@xNA{5WB% diff --git a/Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png deleted file mode 100644 index a6be7a2edc3bf29b2703a43f11bda58c49de1981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XR(iTPhE&{2`t$$4J+o#*XQRu3OFK6Gd$Ly8WtCa@<^;x7 z>ois<1UVmX;S*E%`td!x&>WT{`TzH{e*SO#Cp{%WWyM2YIo=E<1>XFBd(_T)zMnA1 zC8BxPmSbm+nsw$XEU;A_a zb@t4uu{mSolJ(>CPyQz=d~SY^aufdidu^@Ftvyld-=Ck%0tpPt^UTkRO*TycI-0@L L)z4*}Q$iB}Ckku$ diff --git a/Templates/Full/game/tools/classIcons/GuiProgressCtrl.png b/Templates/Full/game/tools/classIcons/GuiProgressCtrl.png deleted file mode 100644 index 5c07e2345db200fa2e1b7b69680479df5a0c466f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XqCH(4Ln>}1{rUgjo;mNs+xzBvYI+Kf{n3-2f{ZjW;h+}@6 fTqTgjz+u4fGg|JZd4t4JpfwDhu6{1-oD!MogbZBxA0%4n+GTECx^nL#!i7|Ow}Bw!&Wg(2Ncq^P*^o{(ukM)?#3nZe-OZgj z=R2?OJJ(^FCN?=7HayN%Lnf0E*p=f9^%xGvj%75>CxdgHvaeFPT%IiB9m^xI;5~L- zrBW#&9*-j!3|jWlXoPybj#{lo!3Qi!>qmllWhtFb3!*4O(^MF`{yitp!|8OP(P*Gj zsZf&WqLXC~a#UFq_wn(rV9@WQ)w;p`!y|^np=Bc^DTIZ{HlV^=H}VV zv)Ro0Z@1eBhr@8Y-7pMe?H+W9ZJu{xHyTAYo3)IC!2ro*5`Mp*smfW35Y{fi8A;{w zdO^w*i$zG1gkGzCmTd+k${==3^MD vUi$k*T3zM2R13B{^S0No^1r;sF98MsBR9*K7k^Gj00000NkvXXu0mjfYqjJE diff --git a/Templates/Full/game/tools/classIcons/GuiRectHandles.png b/Templates/Full/game/tools/classIcons/GuiRectHandles.png deleted file mode 100644 index 11e5a06a9e86831cbe5422c166b98fbf2c7cf68e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X@;qG}Ln>}1?GZY6lz}aXFOvakO{hl+# zNJ%6}H8gZKx*T9C;k4U)&|&9KkqLkHl`~tKO?ao`vvBv;v=e#@udroVaIW@#@j}I| zBI?j%p^6=hmxWm8wH>iZRR8<`|9ll`1|}W`^)y*Yo%jeDpv?@Pu6{1-oD!M<(pE(1 diff --git a/Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png b/Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png deleted file mode 100644 index ed922abdbd8ea159127c9990b40af054b7806a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xnmt_{Ln>}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)ppB&IA*)c^bQ@zbX%lP7=v^5svnxWn8d2M+xB{ysiG zKmSkK|KH#FS0%o`w|7b9t-E)7J+4}pzhlarFkynqJvKEqp@S>fl9clv9%?<3&A?&6 Z5Vp%@anyoUp+M&_c)I$ztaD0e0sz&GVeZd!nbcfzJLENARzGk`Evp`I668WKYsGkrAxPO-;RigASxa* zGBUWhxJZb&Lx&CllZJwVg1){!Q5tM*ZGohxrzgY)MpBbEK!5=N_+fLx2C}%~00000 LNkvXXu0mjftV?{> diff --git a/Templates/Full/game/tools/classIcons/GuiSplitContainer.png b/Templates/Full/game/tools/classIcons/GuiSplitContainer.png deleted file mode 100644 index 752127aafdaf38a5289f44c56a87d7866fc26854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1#cW7mWY%n8?U*Yg`~TnX<7bYrh~M2_ZyzAw z`*Q#P|NJr*43|FqJ})ou|Gs@nW`}}WLXv`DPnN{h2KB9Sb~O^gOsf?H7+542*wUmc UMA+h=1I=deboFyt=akR{0A=$xqyPW_ diff --git a/Templates/Full/game/tools/classIcons/GuiStackControl.png b/Templates/Full/game/tools/classIcons/GuiStackControl.png deleted file mode 100644 index b8d34ffa36415d4361fa416c49e4378be6e79d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XYCT;XLn>}1{rUU*d-Lz__H};_IB*mc6>4f~8sFPr{{H-Z z`$?06SWNd+{{3}(`+A-7cXzH`x%BVLOJPUeH90x`c`@mN!qayY|K7G@hJ+*U`+IvI zKYW_}=i}q!6A!n`+t>L7G*6f?VQ(|@}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES diff --git a/Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png b/Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png deleted file mode 100644 index 41e09bd658322ffe34cb513787872d6a5da1f2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)v&<w9{dEwjF@8Hs0+??OOe#fHW-`{`dPFw&YWI4YuFBdPz zyo6F@K_&?G_uoG_(l^n~E=>h8{6f8eHb4Z?ZTS25FI*_MJRKr(c;B&IoA)70A#C`E zWCdL0^~<-FEk($J*lmD|1V#E{O0mHGfUW^7^7`c)G%2_Z7#jZmo6$RM`BHa7PcnlHm1%VcIY;kSsNced>SsQtg7Jb zY474`&&|V)W(3rRuV22FW!HcG^3BrDEFjEVTvC()2LK2#0Li1(^b diff --git a/Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png b/Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png deleted file mode 100644 index ac58cc276acae9e6b0cd3c625ffd617946e04004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmV-R0kr;!P)i(r9Rhp1kCpdvecx_uj{j$<*UpvM4jnr6rF_L`}1{rUgjo>{Y@v(d$&o_BTldN<*hZ{D~(+oVwZ z?afW&>ThrMR)4?8%q%W0t`qjhooRRZ`?~M%WG5IFKl2F>4_9D5!OEqy+HoV}We-P3 zN0Wn&5^FT(wN=Z$NLEx_*ww}56L~Cg!ZZdZ9tQv1tQDJnKD`OFo59o7&t;ucLK6T_ C|4Tjq diff --git a/Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png deleted file mode 100644 index 114a30e5f992be5b3ff30a58533415420a6ccc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_r3fhE&{2`t$$4J+o#*XQRsjqtsJVy2bT{Rz}6g&sS7c zeQJM^VTHuQC0AF6FP?e*=1tB-10y4)IV=mmy}4;z{q4=(>hJfMnZ?D$=hQW94qF$a zsi9$!eQk|t_O&xJ3?Kjf{XPBsyrU}_FMBLVTk~y#%$kyG3_RKk`Wx%ku34iZ<0Y^@ v`Kv}zRWjqTvaBqvkDkpFpRE*CIKXgMCS`i<&)w62j%4t3^>bP0l+XkKdQD?V diff --git a/Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png deleted file mode 100644 index 27844cf39a7797622d7dc9d48f2990146bc01300..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmV++0p9+JP)7?*lz<+9xChw}2%nG| n4~#%eQbaS-Jn@mN0U*EtpQ@dc;rzb100000NkvXXu0mjfzeso{ diff --git a/Templates/Full/game/tools/classIcons/GuiTextListCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextListCtrl.png deleted file mode 100644 index 5369870c027f94652fc2ee400a62ff5a146dd72c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1`FMIJDzI)~`1t1L=FX70vu2%QN|d!IVAvnT y&d%P#d!nYPp|jD&;MJ0ek5t@(CYw7nFf#Za5bu89EU_AB41=eupUXO@geCxr5-=qI diff --git a/Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png b/Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png deleted file mode 100644 index 2cf9555650d8a26434bbfc274d4a19eaff565a16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)W3FN)+z4_+*o>3G<zC`#<{k*n{x$&p>h1fAMQ3hI`?k$3N(n(ND+-mS zy*S?7Zf8oreEI}EWy9+aA5WybcYDUSg>5lznWW#4=Y`I)Sm~aWUp6*9&YwSeNWd6O z`m=>6ge#cM_|n2cDy74j%eg1`m@V$yy1Caq0GQyG;0-32Ei5W5i&4521TU7CWfXBr zZD!ewjXCzz3YlIaH@0@J z)yDxItp;Tl+=1Ru&^&b-2VyqRNs^3KW4L_q67E26CHNj{%gJe2rvMv W(@I4HSw)cm0000}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC diff --git a/Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png b/Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png deleted file mode 100644 index 09e99cdd1341ba476ecc8d8902d220f2eda31f27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn diff --git a/Templates/Full/game/tools/classIcons/GuiWindowCtrl.png b/Templates/Full/game/tools/classIcons/GuiWindowCtrl.png deleted file mode 100644 index 09e99cdd1341ba476ecc8d8902d220f2eda31f27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn diff --git a/Templates/Full/game/tools/classIcons/NavMesh.png b/Templates/Full/game/tools/classIcons/NavMesh.png deleted file mode 100644 index 056d3c3ac9e087c6fbdccd35253f63341dd98745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr-fh6C_L${{8v+-}7Ju zZ$iWm8RqjlJ_<4SOEny4$m!ZBX_dtw$E@LXikXd}Y0u(3&OL{^fSMURUHx3vIVCg! E0PJ@lTL1t6 diff --git a/Templates/Full/game/tools/classIcons/NavPath.png b/Templates/Full/game/tools/classIcons/NavPath.png deleted file mode 100644 index 35b8372aec4877e23bdce467c6b0ab3917ba997c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J3L(+Ln>}1CnyLRWZ(5qxUggW zfi<=H_TAqO|L0l4pmz2*tAek>EXUXT7`unEf$7(8jLu(jZ6XyoYQ+{AE!b-@RQqYM(0->NRiJ`krQ z-msUch?7-shQEc(23Khho)_f-YaaLpD0mheYE)HPkh?)5;o`pg{svYD%^ZxmEN(5x pWO$Ra=n|90;*7iY=N_rUU)J;OXk;vd$@?2>|YSS)c#_ diff --git a/Templates/Full/game/tools/classIcons/PxCloth.png b/Templates/Full/game/tools/classIcons/PxCloth.png deleted file mode 100644 index 5fa4a9ba4b026c213a327648b7558ad92204825f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 573 zcmV-D0>b@?P)T2<+lOUoCOL+^wy0KS0s3*Zmh52(~nD7o}nPCWT^F+Yce#ccM>>h`k@fucuA98qIdxZu$LJn;TdOS9(H5(r-ksp6E4I zzvyiqtgo;2R=ZuSKIvjP2yl5h-Ef&3Ft$LP{XYMd%$r~mMG-I8$ZOJ37I8x%*&o36B>$>~b@@<{pxmaH8>_G597_)zGl`BmI%5Jtk`SzK>R` zRqQWWLZW2?Vm3>v32seR*f-js?YE0$F>7UaRZfr<1Y*-^B<{3M5Q?&*dZl*Ju_W;5 zMY<@8MfC}fhxMntO+iM|)!J(~3Mb;F&S91$h~gMm(Nv0M^lk1xxl5pG>dPw&t1BY0 zxD(=>_);&vM{wsaJSGO^rxO+(VvgN=%F=<@J%=P)hh4v57VW45?TN@jz5K^M^_{>CS{{_+}fSa@(l}e@k zdfmqIavfn5q1Ws4Z>uO%jez{KLF>>otJd23N|xHoYZu-39?E5d{W^sNv@R4y;j}Rt z`S|R6=yqLbS_xdjaOfipqw`q=j;g9G38YNmx*lxXM76enAQ;0B0?aZ-UP=;*z-|6u zFD;@{DdYX^18=V%_$J3*5rHzPzHaC@^K%sp1|uRdV45|`E6s?=PNOAHsD_#GN#b?7X zw&-~Cqd{hr-lY(t9}sBZ4XF!S29`p?qk9~S44l=iD!;R#PHEEQv^iRmB=G4x9*5BA z&fmC86a-Niv2Xj2h*P8NJ&bv+*+1xIxOhp!xK9);DCVb!pAgaw|&=hX#J*JG)P|p3;=of-|S?pNDcr1 N002ovPDHLkV1f}@2w4CC diff --git a/Templates/Full/game/tools/classIcons/TSForestItemData.png b/Templates/Full/game/tools/classIcons/TSForestItemData.png deleted file mode 100644 index 183c7e53256617e8e579642d5f5489f142fe3f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)^#4OkkZr zoIsdBoS^CdCXEwVC*XAgZ~@zHfEzFZi5g>U`}`h!A6^?16Me~tcig+XcRwI>&ISKj z=JqN4t8WUfjXV5m7=bB>$r+tRpPOL+qeBL+l%cE*_fGA#amN9~vGj+)f&wJeNhTHb zA_tQ`gMk86z=8zKNe4=Go`V={#m{FD^XA4!R_g|=S>MM{^7F`Bb-p}lZ5)xJ8ma^1(4rZJ}%?xXuf%$kF zQxoTBek5z|4aX?@d-eYPGrhltzW#{KDtNo4Q_3b=PNO>x@X{M(Ojp(gJMSC1lAp$Z eIH&7NfB^uSjkLR|Fa>7-0000^-yb0fqrUjUdJAfmi^wjOAs05N_B zxlG?!2gKYD_Abb@7tdZ|we8!x|Nnpg!0r-|Yk_+AgJa>#=dTzx{rJehaR2HnhWGaw z7~b4wU~n-FU?|S0VF+-F2CEMVi~uQfU{;dS5ZJPAr-g)+7+4}BrjX&?+Yb!$rY~mL zxM>}Ozi%)D12C=G+c`1FN-8qAx_B_~bBZyXKY4}W(BXZMSO7YuKvYDmfBMW>495?j zWO(@KJ_8pQH-m|>IRj7}?y9xxS1`PO{fa?URE%NUj?E0;zI|Q50+n0v`pv8Ox|$jT zPj_F2gNODp$jd7-XlVcgON0TWkYW4I%?xYSt@r><3m|X-7?m54(*YVen*Dg;U_ s0kCud1P6e)5UA+_N=h91nF%1k0KWX-npb5q-~a#s07*qoM6N<$g5BcV0ssI2 diff --git a/Templates/Full/game/tools/classIcons/camera.png b/Templates/Full/game/tools/classIcons/camera.png deleted file mode 100644 index 0722c8515cba616d2800254124c78f8f12d20ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 diff --git a/Templates/Full/game/tools/classIcons/cameraBookmark.png b/Templates/Full/game/tools/classIcons/cameraBookmark.png deleted file mode 100644 index 0722c8515cba616d2800254124c78f8f12d20ad6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 diff --git a/Templates/Full/game/tools/classIcons/cameraSpawn.png b/Templates/Full/game/tools/classIcons/cameraSpawn.png deleted file mode 100644 index 8a060a6514f75531832bd21e099e72532e4e04f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 778 zcmV+l1NHogP)`wrnr^*cf2rQQ|4jyCM7r z%wy?+tP@?91|!UN1%*mJD-f}?5XFoqh^hAhq|~&V)pfB((cK2y;QpdYL*2=?qc9t6 zI3O1zN7O?Q1gM#HL{kyWuJ|y}JA&ZE(q~rRL`@`WARopv26mq9IE9+rdf0T;FllX2 zH03DDQc#dp1cQ{1T&)2mjy(7SL1R3!Zcl$fw?t=V+rHC$?KlTl=i7+}d@Ezr)R?PXm=(+#;4|N7#4WqK&ibO`mvD+rt z9A;|Z6iF)j0})11VYBXn&bPPX*4>*tQ%rvHVrDdmY*t&M6w;DK+>%1%Y*RFyInA?C zDaM6MEjZz9qbSA0z$E|h5<7*iGIEGL#%rnh*BC)ArF%aPflbD2c zvRxYiE=NlHrMM<$MybQDXeFariKpY&of`W5cyZwO3Q zZevbV_gtndo$Ml$kj^9(u}y@1^UT8YZko2e_cHy@b^a;90H^^21b^Xd;{X5v07*qo IM6N<$f>Q8lvH$=8 diff --git a/Templates/Full/game/tools/classIcons/cloudLayer.png b/Templates/Full/game/tools/classIcons/cloudLayer.png deleted file mode 100644 index 0cde23bc03b8deb3b642c06a0d2157144613e43a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 652 zcmV;70(1R|P)q5X(LHc?WHk7 zhR{DUo+(rmAaaCK+9AbGL~)dG=XMHK(L$+2C|XS3MIzHH$vuRH_O{caxL6YJr#_06 z!Siwbte|~-2x`j6Y&U)Kl)l>MQxMamSW{mo*Oq?KW!XDDt31-hhj&I(Lm;HO%B}nS z%IM=vAMTRfH@OKYeg&HvG_{qnwXw3nE#p`q=^vWx(>GPl|(0)=<_d+Sv*N193*ms5_e$8MGnNRdpBiWPW=7} zEPevK0bp=&U|EbVmiL^GCwSOKEgX|25DL^|^>Xq89`y|%yj8=jVdBSk3m1E?Vlro7 zhU_*rYB+L8cg~2|j|w%RjZMP~-wMav!lQcJ3Z6fEfj>*Y{(UXjOr!&pxn^!xb|j0r z`B~;AjJc`L|6U@MafUCF+x05<2)N7qXL#`)Vi3r{7vFGe0s$D!_&=Rt zKh)_c;OGkmhP}@iQ8Zxz512p%HW_OPRGaV_@Q{*dWP(Nwxd7~f54dCn*a#Z%kcn|7 z!vUNIuoLG623!G21h@b*pb?)}uz(FftXO~g{|0zo0Hy~}9+;1uCKlahWO(oy)kYvL z1Zq5hGcy4V3V<3Uu=5Ec!^u}*;SW%a3vh)2B74q+I1l7Z4raLb6tQUr0e}Dl0G0b% Ub_lorsQ>@~07*qoM6N<$f;jJreEBQyy3K41CL8gi^XC}`S}^OS`FcFSZQO^5d+-Z-hxUJUS40p8~tT&4fctM8tn>b!pCCTUoUKs^J^-@Q0g6A`!=b1B&&N z*~yU!b|z(6j!R59kxV2K@cDemWHR3xTb6}Jqmkt#H}}#hu0fJg8dp`-NeVwb%|Wl% z@&0Z?@_0b01c?xlkF#b;hD}ip=2S|h5;&`NdJaWS*|K3876|!_ai+}T%`Iq}2Gcb0 z@bHN9GDSVmk3b*@HW(J6@avE0(XZh3dRd(T!!X%zn5{K(uwfVo24xJG6_luro9We(;+UgY=tp}bwdC>PMB_Mwv9b>f!QXoAJ`CWBlq_j66z z9bBGlvq=QHUTtZ@CNtey-$JlxG-`Kx$@2L;5$_)Y3;<$V{_Skak?8;c002ovPDHLk FV1faY08;<} diff --git a/Templates/Full/game/tools/classIcons/decalNode.png b/Templates/Full/game/tools/classIcons/decalNode.png deleted file mode 100644 index f6684f185b3cac485a9bdf9ae09ebcb237c01fd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693 zcmV;m0!safP)_QSN*(GI|C(8S<-_C=?3k za=F}V6URMDYr{Ew=%8`1caytC+j@7VmG% z;I*RNZiAO=_hVTR`6|7hH0M{!y^Nb{4g@$ zJP4vJ%lSwoQZt*)9mK#;fg>UtTXzD{W%rNZXXU@^1>Zvs52K&c`u0t z4u=C)t5w&H>o4RfM1)kD{O&(3t`%i&fC)755k7o)=l4$)@QItD| z4oKVOa``^-K_a302=m}xAP|_KeU2Z{<-uTZe1ikyFVM$GrBc%*Pf{2;)9Ex}Z5#aN bw*UhGx+GgiO_=h}00000NkvXXu0mjfGXOk3 diff --git a/Templates/Full/game/tools/classIcons/decalRoad.png b/Templates/Full/game/tools/classIcons/decalRoad.png deleted file mode 100644 index cbe8aab12026074f82fb213774c5916da58b5c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmV+d0{#7oP))_H|KE?34?b}*-~cSB8ad^enOTmrv9n8p_&~$||M~N$iUALR8=xc1C;+53@bGX; z{{Q=%;men=4}g5fD{uclAj$wvZl2RDEG#N8K07Dp#IsMn;nfTROfbgxuU}LwEsYo) z>@65RfBeAk^ZWM&3`77%SRh&|38I81(C>FnKl-dnvwZ3ZS5W(E~CC5GTIKL&Po_5`5#d7vQ<1ib)?LRL2R`;0(xQFQ0lJ%;UD_b~kY@$&+Zn+S~B3)s8>_Qt1=pBO%W z{>lJMiEyl@smhR%lf)n=FJk~yvmaH2k#ORGP#*>fNpVp0)-xe#o*x+I z%V1<`fLAjNJG$C}v?hSPV4*1R4_EZz1AqVi{QwYP07{XWGKRKTrvLx|07*qoM6N<$ Ef^$XUc>n+a diff --git a/Templates/Full/game/tools/classIcons/default.png b/Templates/Full/game/tools/classIcons/default.png deleted file mode 100644 index 0519b522075409e5623fe3805a2d8500b260d1ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmV-q0h|7bP)c02>=#c4o(Vi_+`<0eK123~YIppMT#GJ3+iu4hcR zoc8zc-}=9Q{__6$^OxbzUsMc~RUlB+h3y8>wDma7FkBkuSU;z$r1AsQ+2_>8c zFu)A}Ig1PzAPo46&j1FT2HYab3t-KR*bHXu1<_0}FJQxeVfYUU{`~Lnzmg@JXP+hL z0u0;#GkjjNdyykXO2p>J0H^3QplBLKBKptJyJ7#*<9FqRZSj?|t{4bH4kX?~2ko%p8f9h2UfexO&WX0_*a{g{5ifC-b)L z$KL#Ml#~e=0 z{r=NyI9j=-*0O924g0I4)RGk7UmB^D$gLw6( zrP(16*fWzrSL*zg61+Z|6IP_>-n!Xx&ZFx(OfKr0jgGfZavr^Cs?g(6hTm{8+~922 z-A?K?WQI*}lFN%YJtNZ}=<{e&gC+$uO@pDcu#KlqXRq2Z$1+hLJB_6LPG}LZ;9Q$o zfahIpP+&>0U{LZ*Qj_@D_gVAIUE}QIQ7=Xa1acIW3L1v-3uYpM;{oSeIFE>yWQycN zU~~-gz3H$8HbhU1W~X?3O9-bK6X9_J?I|EL4A4eZJZFNggv~Li1Y-m~ZtRsh2EV-T zDfGBfzS_3M3?iV(;ZRMCP`SN$!Rq#*kpUJD6%K(l$ps6`Xd{~ivt2HC)k5#`5!*Jw z%$^0mhk9*czccy0ebcT_uYGsA$i187_hL0r=M6E?!1r>}RhR6kJ7~}^Dqp7TBGatpi^|-w+&m3;d zGA*;4m{}A{l+l)y{#M{eYlMUZ4{7<5n);2*O5WzipJdBrJ(}3c-KrnxXc6PVsZMkp zm~Qey{<~>8yH7{IZ$y!h e-c&XI2rvK#6w_7Twchvu0000BB{wTXWf zIZO-?75qpNNF6{^0C1l{a_?$JwiX#f0yHG5NHRl%q?vHS@8Ad_eEjy}+qM9%Yna?7 zTY&-E&I0XVAzvskS8iSi{QNyHEabkpiY2+fR{gtcSp}r&Y`3tmVcm}Ek6e~{HXDa` zA5u^%7tg76O$X@MvT@tJJ7a12e*vCS=?Kpq5$-;@+V|#t(nwYinnFNR8&DBl?4~Jz zbh{-=f7Egi>a6#6OV7t(I-O)x1>F#u+Jx!d>pq{;Igg);{G&;6lzNyH19;*?JGURd z^*S9BRCUQwcUP5$v;NN5JD_JXEyfaJ0SL??TzUl}BA9r2pDR~NhMSJXih{&e1r33{ zyAMIRoENZVuK9-~T_7~*3Co|d(^X88m6{gGXDShl(WU+yEx7mlpjIvEL<1)W!bu9r z#)Q3?nTY=RTpIcHu?RG4yJ`@FEVy9W*3na41WIA(KN$F=66 z*(kc|J$gny>$}KgzrWI_6#xZr=%ltlzYln05&=fKTu%A4=aR%a*G~Z<%)vc}`-rBb zzRjmDD<*eB;ClNmpnwO1KNW+Zd2Am@VgLiz(Frajj%q5%csHU*4h^0Pw};87pjm~P sJdButHI~r=I%ih+rV9qw68I;;08R{lwOeqP=Kufz07*qoM6N<$g7FYQD*ylh diff --git a/Templates/Full/game/tools/classIcons/fxFoliageReplicator.png b/Templates/Full/game/tools/classIcons/fxFoliageReplicator.png deleted file mode 100644 index 4dac38fc0b6f9394dc0fca4e7dfdae8dca67c7c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 538 zcmV+#0_FXQP)7i7id()YjqDpwL|ZK(nAjlblQ_`9KD(tCYG&sv{m=GQ%Ylx2k`qJRZAA}N3L^k$#jl8e>_3N?#eGU}r?J0?-Y zX}v20J}Vw>gxl2tO$MKY9OQ!G3gDT^Zd}$A8)1O8>kg?}jGt%boC>KX>?EN;g=fIM z)`x&JwIzNxOI=Fj!s3ivFkn$YLBnj1h2tjkI3_u^!)4<(C5l}y34;ZKqBLDERt(i9ddhIyfDIIWap}1Z*ZH`N{ohYCOpzhrB5Sc%5R=c=X9HS z`jL+UJxE^;ctp1W3>ge73nf0fs2&NsU{OHFkgQW;HHrsRMKeKhwiq1+w8ezYe-$}M zF90PU7E@{ejbOk!G20kVG-;g*HY1{t9moX()^1`JQ4~J@N{bYUK%*eH z42o)zHWi1cC7W6TaV~K7FK7;GY6yo2CvB*fM1z8$AR{4#C?g~vIEb%E(X9Jj-+eqK zTIz$#z3-g!oqNu?-_ubK*6GB@wh&v`U5dHLR)($E4lQQ1@j4CB&bB>^)fAi$jnhQH zK~A@o`^tHl3Mq*$W6xBVn@MI0vqV)jfkIBZ1CH6{&1te&jr0@ha*Gb5ca%>_S@!8i z5(69_T03B5-|F@p8O?ege6jmTm8W--3Nl%2CcfaCS{flKFFTpfeMS3m9eQSErz0t^ zdNarm=M~;Yz1HM5=cJ8Xo*^ECO11)LXvdH1Lg-nLZ<8fX?ivv0a9^X`(JMbA794Pq zz=xXzvWb#BI2E}dm(S916vGZXHZGejkG7yOXdroS9e$jROMJ0>U z(GFe$P&gSRh;nlQMozu75Ou512oAVHi3t`IgphiHn^C?N@r@g(G0Bv; yB8C`-JmC;tWhA1mg$6g<*GR-)COli%pWm{B>1& zrV2!W%e(WfGqwouuPYOiD}5(sg&! zBrJg+BLH!xlZ<_Fu3`*;kadIW<9q;UXKW@5Rm}C^0Ue&<&bGFMy^k_>eTD)L2xk>=!9ykO@n&FS@~&b#wGiGw^8R zt2ywM(PUJ#^D|HwK(fBl{B0t^71?N$6w!}1-PvDn&+N&t;-S5e!im%*1;Gn(%#T+rcem}8 cWnhtD(BSN^o|3$}7N~>4)78&qol`;+0F^o=vH$=8 diff --git a/Templates/Full/game/tools/classIcons/guiControl.png b/Templates/Full/game/tools/classIcons/guiControl.png deleted file mode 100644 index 63393413878ba594a665e654beeca2a30300807f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ diff --git a/Templates/Full/game/tools/classIcons/interiorInstance.png b/Templates/Full/game/tools/classIcons/interiorInstance.png deleted file mode 100644 index 7c699f858efbb7ea0dfdd8cb7b1c63583c83e47c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 418 zcmV;T0bTxyP)1&Qd5`IP#^z5@CJvgbe$Z~OtJrAt1|RRq zxSV8IIRS!0>gIWkpw(J~qTou&r&u{jsAHD@fO~$^1K;<6b8cwOsR3gQ^8D*~dt)!Y zf4Uj|P(W}GP3XD}a4^v(S(ZbZev;cqIwx!jhQ*}MGzxNOw}a!mRz#AdaCaL6c30RH z{ZMeB_}ZS05Wz>OV9DGi?&VupfI;N|(Xa($CY22u1dyH>r+BJwT30Q`un-H@oVzW@LL M07*qoM6N<$g2Vy0TmS$7 diff --git a/Templates/Full/game/tools/classIcons/item.png b/Templates/Full/game/tools/classIcons/item.png deleted file mode 100644 index 94c6222dc91a2e4e9a7041a39dde492197a633fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVNgkA!{dJf8$@^$388DR7l#$!|HPAvkiD%b$1YoY)z%j7v;a23(}uS9%HfU!HQH~AGKpC&1> z8mRUI2af|;1>kG+{tXoA5Jkt+Y!0L2AH_r&K(ZhH8gwmxBQ!=E7jX0hC9MLB2_Ulq zm@0i=74UG;OTXWoX<^-ECM5u`2lsleV4~|HaQFz&&;TU9+ca&i1WZ}}FoWB};4>+S z;qpHKreHU&4*7mPe(QPHc2Y{!)e=ZOU}@wzjODMWH|D>NI zw(9L?y);Z|^Aj#RM{5lBIXJOS$Y&2E$cGNkwUFmUX&5qddbgr2>Y z=WagqPPOee1Ce&UIaMGALC8Y40Kdo^l1Dj2AwRgxW$994XN0hs+P3kmS~qFx)KEns&@Pfu!p{DoRYmxjD0*eDkQl5i0=&3h5{5Skg%Ng+0NB1xg8|>8N;)#nmp#mP6gXlmBdn6F9LdVkRBA;;r&gTF wECXyVwy<-D*g!{^rB5}o$X4TQ`yT-Y0DX2dCq&dl%K!iX07*qoM6N<$f<*dNqyPW_ diff --git a/Templates/Full/game/tools/classIcons/levelInfo.png b/Templates/Full/game/tools/classIcons/levelInfo.png deleted file mode 100644 index d7d757686c028acd2b019a9cd66015d1883cb815..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)e$)b(jE1j ze!o{GsqPY<^S=JRKb}{@pTFdd6n$?I_#Ep>bA$|G9xDr(esihMF+ksYaOsyLQ!|Jj zOJFz>g-k-TTtad6GYTKxz_IE}B$}f@=I;O<=d^G1c=F_>t1!ZT9QLa4x@1U_gnHA) zR=tH>rH0o}AHiJvvO@M3IEW$wM5Z2)bL#xHo0uN)VIu5-5p*LqElC1^z72_oVh+HoD(4rjs`T03~E?jeu@1024<%Wcr_VrRf0@4 ztC4Yheg8J@gcC0m%6>aCJ)4}Fo)DSY`N*IPhjbO^k_OJ6FyK*TxCjb4+YVqkGD@{N z%*~vbQHlq~J%p)v8FH8EcfeKpj)m1~1J4&1v0p7N5fktBnD~sCb&(myB;h@C z8|Fb9<)1C&Ijd>mQ{EKLm2X+5@)b(n`0Fvr^q69&PK!PBs(9KwFz%Vlw*UE<{^L3S a5?}z(x-J`GpTO||0000LQ9u6@NgBql0m9vtTC&5wqwbsDsYU=pyPbs1DBNAEdR?Qb7nJ*bmL|cHP>7rY5mVxI7QDJOiiAd8opsIx_q|MW5`X z{d6hx)Sp+7s4Tz?KN3Jxd3|LqTVH&!J=`}FMZNRG|_Y{}+ z}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 diff --git a/Templates/Full/game/tools/classIcons/meshRoad.png b/Templates/Full/game/tools/classIcons/meshRoad.png deleted file mode 100644 index 8f33e23f4c646ae959f28b9369a65bd473f26dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 430 zcmV;f0a5;mP)49x!=U_*%;Pi=em20B@C)$a43}$HZo-%o z!3F>|g92l|o`JT2cYp`M1o8Oc6A<+P8arSY^ovW13HSwj6V&|Y_a6pkW+sNefB$j8 z#2A4t_|HH(I1hAz5hy8x!(hw714Qfev3Ee>Gck|}fG(%Z0H7Br3Ij$EapmoQ27mwq Y07tu0zf2eS^#A|>07*qoM6N<$f;}CoU;qFB diff --git a/Templates/Full/game/tools/classIcons/missionArea.png b/Templates/Full/game/tools/classIcons/missionArea.png deleted file mode 100644 index 91bb1e219ef12f670097cf041707ce3d909f5b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0HVR@$ z(uuifB50#nXdUdLsbc;Dv9J(C2*P#O1gvcQRcNkC5wA* z)402N@6GMr9%7@z&c5Aw-}~M-@69NTR!;%6;%?*2<=~I+PUO!u0iYB;imbNZv>pTj zzv%JBUjI{qeL2_Gsza)Drh=u7-?+S{I5z=p>{Ow34X!*T7{)S*Bn>lnJh{M7svjny zp2Cs*EWb!w!mC5&% zFmES%B_<-^JtvbbNVGWUdhX!l=n%Q=dQ_=gb`58zhv<6Yzz~M9N;`1{B$p(!YzCMI z&W&<&0Q)2`w!LTzw)$Gg+B+X%Wb9QGJTf+p_J@z_epR1n6j3#$vL@9(h~oFW{HF#6 zn|#t*#JXUs99Zl7Sk5dUx49B=F3wM5@6Qh2OwHEMgG9x)z>7W~5+B7M`KI7-Y;7!) z?_2#a`4%4%@M5iYg~0Pr`11MIbIU%)T%2DDNt1$=>@RZEuwUN2m0-VI63l9LJ5u0= z&g#)$BH6}F`n~j-Th+J=kc^yp^}|mb5VleC(Q5E1eH`n8l3v@EHEJH#D9p@*E|U=4 d>pK4zU;uA$%tZuoq2>Sp002ovPDHLkV1fig6yX2> diff --git a/Templates/Full/game/tools/classIcons/particleEffecterObject.png b/Templates/Full/game/tools/classIcons/particleEffecterObject.png deleted file mode 100644 index 255a5a8a8a380d988090177168050f6ce1a9065d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x127P)un+_ebn|k2mJG}4nyzlqD@5h1GxEDY<{taI!LVk4Llx7i7;Ail_ z562LVEF!uVd;dXGDL1(}b>{j3GRT@edTD4;=c-A}x(K?`R7ht-~lKnt)BVedm5^XpHm!a)*FuFue5pd6A z#wMyXM~z)R^q7IZ2drTjh)n{wx)S6`!`<$0vlvQ7PkBTl!UW*)%hgT^djX6M0Po%a zWo$+=wu)*!=6+$)A4YI>6;jH`);oh9w@4D3r~QCe476DRCIZY&fX7`4n3e&-p#6KE zX8NO8rBEZ*bS}hH9kGeLBg)L%M^(QamS{(?S0CbJg{rG`t~3GCUE0k#zJj`XYv4jF z^D_jmX98ZDuMsL+x^rl^O)MRyeeKWsOP+Lo*iQN;Ed$5cYVHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB diff --git a/Templates/Full/game/tools/classIcons/particleEmitterNode.png b/Templates/Full/game/tools/classIcons/particleEmitterNode.png deleted file mode 100644 index 351e4bd729c5f960cb2836069e06d20ffc63319b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)%%=$Z={USRNNJP#xdz-$F|1_mBM28Oap z3=DsPzUZoAVEFctf#KmBn8gL7#jM4zSd^|+y3_{#E^UE7#P~O z01f(m0jSOqXut<-UO*Vq(ZawW!V5IyEd#^LTMP`sJN_ z_Qyb*fg1k+ZD)T4(hO2kh#ng(SOV67feR>n`WOSl`YS;0KL!Rr2?ho(pk3eo89)OP zuL1H5-~KQ#%sv5PPXLR|yH^00BO)n-Y*_$JJRm0*g4j?o1Dxq#z%moX1^@&Y0O%%t UrD(3ElK=n!07*qoM6N<$g8hA+umAu6 diff --git a/Templates/Full/game/tools/classIcons/particleEmitterObject.png b/Templates/Full/game/tools/classIcons/particleEmitterObject.png deleted file mode 100644 index e5489fc70e7973f22d679349b713b9920f422ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 773 zcmV+g1N!`lP)VHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB diff --git a/Templates/Full/game/tools/classIcons/particleSimulation.png b/Templates/Full/game/tools/classIcons/particleSimulation.png deleted file mode 100644 index 95bcfef6b6e184a1cf0d1b2d61160325b08a1553..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVzGdSf; z1g zG;Opuzuvp=b>7n%Cl}R)Gw;m3=R5bi-#LfP2N1^k+MckA{@+$I$ck~2{o@XI<5&1R z78v_?0)@=KfnlW#+#S7t#7gh_8%@QN)f?O6f*@FoG4SaLWNu$8#xTpWu%NQA($fQ} zskwMynkHOb$IqIQnp-?`w@+0RQ<5YTX$|_5N6|*A(N^Qva4Pv>*YIyp9eZFI)4pU<-8@U*}UwF zFZD);gO+v4VPL1qx%?@0ITC`)MSxqRXb=dIaW`=F9IzULbmQp`{QN+w+gM@bY7#TKWOfk`hBC5dPJ4YSThAPtO02>gb8 z&DmOZ2a<}a8e0^_P#s7~6*%XPvfku}YLwIVl>y+>;@aUZm-DGi&s3&F@v|rhT-uz# zE+f?uvbI!#w1Lz#W}<-;Z|&~e7k|}U0j;V$pYqrj*-cjL#L`xtzTS`8;jY#hPu=%P zZ__LYEX%TKYgG3&QtwNB36A;N1{?0(%&P)8Di-sC0GIS7EDnqyPW_ diff --git a/Templates/Full/game/tools/classIcons/path.png b/Templates/Full/game/tools/classIcons/path.png deleted file mode 100644 index 945102557bd5c6900c0447170f527158204d13a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)3z66@GmQOC-(!c-w-B-N#5-=9M$O>@48SsHqNkM?H z!Epo@z!sQ?JM-Du7!wmMjt*G!--%qpUEtN3=IqQOy&LK!BBwz=H2%%2GPB<~yN;5K zoQM?c0W?&ePQ(eLB1U3TkCTddd-F>7Knu0pgJKO5aR9FWXb{IzB0H-R+jNB+-Ndf~ zb(A>6(E<~E?=+d<+}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 diff --git a/Templates/Full/game/tools/classIcons/physicalZone.png b/Templates/Full/game/tools/classIcons/physicalZone.png deleted file mode 100644 index 023cb7dd0483f55abac9837a3f91975e199cf49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464 zcmV;>0WbcEP)OiU?NzBP&z-4-{=IQ;66^NJy{ZLYN3(S(XeubUIkgW=9FHN+sO)dOTU+ z{q!*zf#qr}ojzG_ER}+3ni8)N2)!+vvOv2J%19mgbiwOE#OF;9u+fBftQbLp~YOwLydc0000^bM*{px!ll*F>HGNj#BwAWESvbnA>Qq}^69PBNM7{Cqn* z->eeHF(`@xSvlA{>Y{0*Hc$ts*AFju-E0okkti|%7Q05p=+x`mU{y`d(xpJ1K2c^zW^-q3!6B@ZTpXW3orn+ Ws_E5fA*oIP0000L5e|ZKrI*yotSW)P*f}0YO8%c-`%yjUV8>_^4xph z_dd__-M#moCL*YXrfEi&87we`2)|WI5F6SNc8$7CV=QX0#5)ok5{a#d6e7f)NOVag zI3TLlq_Hp5$rAL5qz^=jmm;NW=5y2Nb(1DuF*r7j2aOTJ+&s`b0<`%6&oD7S^Z`AC z!0Z&PSF4B9z>mNro6$w|v+8B;=5{A@2QV=XTVIT5hcl$Y%MWvbxy)QP*Qlyu6W#d) zI`ms|vqTE0JX7;Q| zD5E!uPk_4zot&_%0S84lOt!Yo$5&7Wse54mR8bbm$u#!NF-X=hJ<8d%NH#<)i>!~; zhsddE{tC5b#;!)8KLGh6kW8t)WGkYZ0govWc_7E`=f7QPZUz~=QzT#JEWDM>y%wRl t{EZw#M2LV@3bT2u_8zn}_)q)_FaTq_`PI+qmRtY;002ovPDHLkV1i{@+3ElQ diff --git a/Templates/Full/game/tools/classIcons/portal.png b/Templates/Full/game/tools/classIcons/portal.png deleted file mode 100644 index 0dec3b0a57243ce5a9672921815bde55437df29e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmV;10eSw3P)PXD ze*5)nJre_kfMNq!unGS8`&Z%H@8ABMtgHf`e*9nn(ht~KSavcqF})z@0-$Emk3W9I zOY-pv2yk*T$O#HE2y$^LeEj}B1}Mja*MOgY{^$a2%mQg*WMpJ`_VFXbi%*{z_&7Ki zqy+@HfpWzlH8>6U@%y)o3{dlj@8207zI)fW^2`~=<)=?G-gx^9#)eZdHaQFfzW@G>!Ux3$2xF7Onvj423D<~Aj!;6v=>=?ZEU;V! k6ZnP40GJ%IdVl}}0Kid_iO2v$(EtDd07*qoM6N<$f+oYJUjP6A diff --git a/Templates/Full/game/tools/classIcons/precipitation.png b/Templates/Full/game/tools/classIcons/precipitation.png deleted file mode 100644 index 8e2cc784c247cbd29306795ee4810d2e07dc61ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPRCP)IxPd1{ko5@H0FHYGwvn@#h~N&j b01#jRp$uqKZpxl|00000NkvXXu0mjfb5D@a diff --git a/Templates/Full/game/tools/classIcons/prefab.png b/Templates/Full/game/tools/classIcons/prefab.png deleted file mode 100644 index 6786bda75362d46d3c2d6566550cb40fa1703e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)@4JsBNrL?}3Hxjr#uzT!W`)KA=Ou>IS(#N-S+aAg z)V6fFe(hpok%!*(Bnq4)3fl=MMB!KPxXp;XLnKp?8MLf~0|JUf%76&2Ix+4{PoFXk zU4_ab@X!Yd?ZSV>=FSu@7>e|Q2|J`DV&Vjm8Zw96u3(bYA*lvTGmnwHiLt{*r=;_m z;NkV%MzXrLiO=6Q;d%i=o*;?|q@rac2zOpYb1vp&SC_?_(+l`fdHvaK+p_X=)v+Q@ zR?1K`4QpK&8$UfbgBSq`sU%W5m_d;s#y+hPStIzFtXa0Xh$nDiDe%43!A9yBBhF`y4Ly!VR^i7x86jv~g>>*B{LO=()&RNA{32MpElta2vl&e#S{5B|LZ1tn`H0U^CYI2$f z;eZ}TaM`dRUf!&>IENim;uIr~nBsi*X#+74WI7#@RC?37=HUYVb?saqo0Pg@Q;JAv5Ip_msaX%GJUl915ioq933QZttb=D+@9`@PP;1sDKp WIwKds;8xiH00002WXLi@I z+152Ljb)KZIb9$vg%zYAsP;o8(M==7`l9^;?H5#EgV3lC5r*c6>O%l)yZm4n#8 z$Qpt^ygXT(Nk!j)!dwF*YcasCUwqd46u72BUx9?=6l;tl8bGW z6Og3NPD04dr6+ojW_@#cjsM3YJyq=x-HoC}fK!Y#5JCg;nNNB)fv@@0Hq+xjw$!z^ zGm4y`YB%7r#}vDm?53IFNs^$|pDst*r}K>n9Ou3&lnR<63rH9ea%E_l6L^bCR18c3 z#U-W+-nC%o`R@uLT%TSPLnI}`!^TTF%WQ@~i`yiVATCK}o()zm{Lop?eMd@{b(y^n z8*Y^585o=I5=3W|Sb&OV#H`rtNSoK<2`DHR6QREWpx**Yd8Rdosd;L~<8uNoR-18p zA3CxLG}XZ&7H9t);oy)2EXH^<4#x;;c2P6F>*sOe0FUxQGxz0RPu)rr{1spTU?b?qW16%F51f1M_kHL5&hLEZI~oz;IHHwupiX$zZ=5y7`heA?C16T&twivB zHhmIMv~8)i50hk;l_2of`QAfdd<7VM2{Z>>YF`v(C8*y;=n~N0!5h0kRRwT62*sf1 zzW~Z1j8p8g_Z8Uv1pHnGDlkMbFW){qP zaS6!mh}*dXUErX8HX)(sa8?I`p$5!+m_v3u2Zw`jr6r5rliY+^2KlvbsY|rVIZ*1c zZ@c?e6dVly`Fi*-)T5CBatt8y?C}dY;5P3#e+==`lTR!q#5pJ|nc6yZoT>8_N)Z-$ zSy^61Y&hqQZJ#x#lau}SMJwv`@%?8imc1RKpJ}44%`A<*N>D2Kji!ug8hSoV?7vm$ z6h9(xUB0q^r)aQ;&rxzon2Aa z`u7ba=jU*`){Pt8HxX*G127gJvF#T=TU%STxP+Pl171upNFWh6`mVM`QN``@czia< z;?e?MPZ4vC=e5c(9e14n2rvK?(bt=24X`W#0000< KMNUMnLSTX){upWi diff --git a/Templates/Full/game/tools/classIcons/sceneobject.png b/Templates/Full/game/tools/classIcons/sceneobject.png deleted file mode 100644 index 59079e3d7b7ca0638d6ce036843382f6bf8bbfb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnEOP)>zXBGx ze&Y%*=X2l+gNY9x-j8o>s{soD*$&1=<|r`%N(Vry07yT8M&$*V93#GjR9#aD@;4(? zTmhO^K==m`FW7T>!wW`2Nf~AUnpX^f;wSKCM0}YE20#WdQktCs0t^81$aFj``0tkh O000056Lr diff --git a/Templates/Full/game/tools/classIcons/simObject.png b/Templates/Full/game/tools/classIcons/simObject.png deleted file mode 100644 index 5c143982fb3bf199455b52f352ef9c77b3a24241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`ZP)F=Mv4A}6$zyBih6H6Tkx*#X6_zWdpVEF^IjUog7{>5#8hK?G8t&=4K z8#_D0v&YXE4(~h8@aEN9;=+K7n~TBO!=8bSjSUo{3{oRJAxg#o^F@$<(|26XknK>S0r0jH0jXFykv5s26f0NK2C-A;zvH|`RS z#>KN&f@uy8c7~7`e=wVkosEH&jgu}1{rUgjo>{fw=^d`}7_}IKzB{QNCm4=xK7IG! z>mO-J9(OEvbUi%2d^>l;nbwL}2Bm-h{&gxUCOp$nejbt)>aDV>%C+tc`xc6(AJm7C-`}5m*BR88Bk4As1J+mzLe7U=- iw;9~LHXA!MFfx2lbli6~+`wDnJru|C)u1>nY!R7J(4vLeqSi)>$RG$>1Qk6NtqR>Fg)Jfo-Dxi)DM#B_jEy6q zlc_l}nmRi3b*|(1K%@ibyZ5{2{{R2;_&!Z3g{En&F}vF#YrA-l_zl9H0X8thx-TnW z7n_pnqcz zRF?18L!Q+HF0zYhJe|g^QWL3vz#B?l3`G212E!(Xr;Uuw7?_wdP*Qe457p?4X^9|I zSCr;B=gwqe0NxMHaK~qcjBM2G6kS0J&XffrQH^wK6i04>Kw3Pj33>wlK~KY@PI^Zo zw2nw)x9$Op4Sx9;7v<(Y8(&A0$go8TnGPc(mT9=12?9F0`|0pcfi+c{x&scls7K8aYiG(584?n)>Do}a`C0VGp2O#BWQdVL@ zVwEcd(Rm@51;3o$sR_uEI#0+*QzRRsS=WR?FDl@L@9!2%6FZq8c*FRxhaq45$2{rJ z&OG?pEm_#(Wo=G_^ehotfZkS??#ZQ<45lYVNwzsfGH_8G^~aUX7ICZ0Q?m1Yg5QCV z4wMVlw0a61;#tD(q3@#;nRCKo(xj#L frj4%kKLG{+V2I-QupMI#00000NkvXXu0mjf-GfkH diff --git a/Templates/Full/game/tools/classIcons/spawnsphere.png b/Templates/Full/game/tools/classIcons/spawnsphere.png deleted file mode 100644 index df46d9df567e4b2d1a7a00403962c128465a8562..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmVXVP zY{RzEAkAoKL|#NSNs?|#t!`A1g0A~3w66LOB1Tvmgu<{c3SBp)Qc$R@TD48*)a7*9 zXj4D4bKdDFrK{eL^PQLXJm=v(=RB{3eM{dBAGuyK_U_%|C|QuqzcCh}t+QydG~=*Z4_k39I&XF$^D`sL zD>alNaBmdJ%><$wVZ2{^gTcE`v6a(WWNw(KnXc{7xkPd-JYPuW#rw#o7;L&)!Z_h3 zY+bXHL%mGkp{{?iCo?WP;#tL0`GfocZt|0VHo!Sc z%Jw>IW9yaEV$M7&?lu!}&3P$D@a)M;PA*9Kz+);_m39^h&zVQX-R6dI&3tWA-@(W9 eKhOEM00RK`vkX=t8G%s%0000YCA+x5OwjC)wxS~3Nla#I##CAp+g$1f)Or3l#y;ZbtN1A ziz)l}_PonLM5_lLUU+}c_w)RFe+I-_T3YJlcqrb*Z+jFB25<8pR=h2qC@n2*vRbWF zS67qGW=~dBRMagkEe-t>P*YPgpvB_2-EP*`*Ks%;D5aXp%gbBk`;dUP_5&EC0wsZX zJRXwCB#n)Ygu`J>CKC$_3oI`$M_V#wF zs;ba;kw}D0Cd2&vJc&etnVA{V>GYUr{Q`<=zx8e1Aak*TSm6a8$$mMcu zZf+J@3j_k#!{Z!EMlg|Iy;K%&Gi+~RKmD#6N~H>A zoBOZRdF%k(?S;c$C}|RaM*uDu-qi7Zy8++yuw-@2KIx^?u>p6kfwf+QQhxDKD5`{^ zS%{@VhSv=41{9_p9DB>)k}%doOvorIH;=tzJ=T@T^i7SP}2q z8E@Q!q5r~{By;dn)-@@m55I%NR_L#pciQZEvu`__&N?CP+b{N)00RKLi47*lu|#qJ O0000e3Rtp;oNs-Fc zCIm$Uf56HzA7GU}D5i^z_yIx$?e!P5vi1k8q9|gPkY=M067Ug{cs#S&l_iN2L2%%3 z=FZ%E?!EH>EQ5I*8rXbN_~S?=vbBW5$o_eRWK{*@JE?+_P)Rs?q7c#CtgVaAB42Co z6@lDeBg;94^ZZae5}6XbyG%AN$lfjaaYfb+$er}Jh%ML)v(--(TqOqq*}W!TPsqpZ zxDqcJyqo|4 diff --git a/Templates/Full/game/tools/classIcons/terrainBlock.png b/Templates/Full/game/tools/classIcons/terrainBlock.png deleted file mode 100644 index db58bb86359517d7d7bedbac500ec4a4345ffefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*hgP)25Th5zU@2?G zAi^fb@bB0EdgrMQ1_TYT@3j;7_ve4Ul8`dPm!Dr4GS;Lqy!`wEYViO0PLu5ofCjBc zH-H(&ka3i)U}R+U`0)Kb!{#fS8D#k781n538Gioy#c==CLy3QX|401$%U~eqCU^1C zu17aeV!^1+Qh=G6@xF^xva*^6@-&ObiSz{|nQ@cH}a2Y>(l zH#}8$>;pU<{QdJU;qMQ=;HC~wFRZW_k$=jXqA zog!0kz%prN8z=nx^-sY^!;|6b*Ka@rzQPSzynh+P$!n(>vh6Y$7=AM_eE;^1A>BEd zL4sQx6l35t!l;&Fa32^D3K+>5O3Mq&G9=o^F>r8jFmQ5mFmQ2lGF*IknPKYYnIJWZ tjJR^6a-3cQP{n)#3Go9XrP&!EzyOQI%$aYhwp;)J002ovPDHLkV1haa8P)QQi;kO_zthD|R)cPSPcI(=W3SFpFMT=bsx)Ickq6mVD6|88r2vRE6 ziYBHp>2&5zy!Q%R`6Y3dzMmi8Q?OVjAwbp)0O zz>;P4PMfFg@%m9LN=!_C$EFRf@CQR~1w!!Av}D5yY&)ERVT2I$(V8wc6a(H__xPX_ zh!BDb@cFBt(|MURh}4F$xwjj(@S!m4z^3VQQdf-MeSj1Dux8VN6HyF75L^ao^lF01tK*R{5)mZwmj8gRkAsyJcru5CeO}+QU#ZQ4nU?D{tWm(s64f6x?UOo^&Vn3p+Bjhx z5?lC{Rr!*{z2*a$3O5t|TNK*6R1bjRXLxJ0;zr%R3IonI$CDFQD7ikfRjhU*`yS)( z)}X2Hv1;Jv)wvPGX21La$kB&kaJJcFX-X9mwyU7kDz#ZK-kE9hWNv;$h^OF>h=PxF3@+DL$USZ-bZk@n1~1iD=Qnr?>~P8 zZrr-r4>Uv`=#oOP3;zE74aOjF`^Y;mMi++xZZ2*HT`e6378aHQpdk(@UI2kdx1NJB zx;O|teF1S1H#ZN1jFb$B8INhe?Pp+&F8=!MONJw-_cL6+aURSU6adGn14b;Ex#&aV z4pscXiQNp$%*;Ro&N1-w2{LG^>VSk5FkEo?)NL?E7Z3H00nI!G^2}yfQ_jmgCfuX5P1F)98L$IF8B?`+ZG*xy8y(7iNk=j1SFcje*MDm;^hkv zb0UTdQkq?{+71J+-@aye^!PD|nFve=4_F}ajZnOL>kZ;WeJ#$E*kSvGD6SR#ze{Wt=ccL_&%{k@ja+>@CR8 z*PUx^VJ?&3si5E#Nhs;5cGa+$YeNr=8Y3lU zKuO80V4tgwxebBE09NB+L=zDRi746Ms4S`YPXPq!4mPU@X)n)lnbvR4IZVYe58KOVBE_@GG*6u16irttT{e40L_y$-FgPUAYH4 z%4tmOQD}43htwmgCdH$JDh>6Xq4_ zq!kh(=GF;pwH7z)wr^~TT~mc#qt{()x{i}|%~+0vFywoRVc!s5zMn{mW+eV~0{U>v zF8QMC}R~d&@3+KlUY84AvmLZOO_s!dn zSDIw5)sO#5kue0LW*a!G+i*$-!Z?A@2wp17Ph3rXm_ecD>n4{FyN-$TM>{B6I+lK- zfRiLe5asz6Kwg+~O|x9VK4m{`I4GF~+^=Gg7=D-_PBM%a!3H4RDwMh4c~rCTyy?I! zXc)~yXa#{)7$b;NwvnPY_O<~Syigg05NPaKxNJGlH4Xjy5IT#)D8+OcqriMP4=|X8 z8-Qe8EMJ}+6j^L56_UlEZrNUM;u8>v;tV%@zVPxH=s5rrUEoQ*glA2g_X7QykBX(K z=hwqrZqd|nM@9Wg^p%GdPQE(~a5szKmUY#8hhXznLKm`) zf)|f%oRZxOG7c~|;_d%-O z|IxzSqrYKB?@cxFZ@m@T10O9qVwVbtIAwW1Sw_koA%1W4T*36y=buWdw6Qz(@xAA% ze1FG)+*Tv9Un}-ZvHN7dZFkfkDgO6&{w2Twi0(5Gy)VzK00000NkvXXu0mjfjPNdI diff --git a/Templates/Full/game/tools/classIcons/waterBlock.png b/Templates/Full/game/tools/classIcons/waterBlock.png deleted file mode 100644 index 6b396fff51bc87b57423b451b8f0c31a6ea08628..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3LP)tv15l_Waste~heti6{ z;|F}3Icz8ZG=~x@AT4xDh>+vJ47}%r3J^Fcp3!(8fp`BiPXP3{%dzdjlsUOg1h%nW zI(KQ_gE|HTwR|xem8Zhxu+^-2fR04C!<1U`AsI#m{uHzMT`}I1)A3%?w$(_0lM#`d zUzHeuq!AtXhq#pHL}aKf%5E%&6?1 zM@J$_t{hNVtKY0dI?={=UKG~0RL0tNJ&@eQY@^ld#ZmGZ$OJE{!%C88AvBa>I4$(jHF002ovPDHLkV1n;g?eG8q diff --git a/Templates/Full/game/tools/classIcons/waterPlane.png b/Templates/Full/game/tools/classIcons/waterPlane.png deleted file mode 100644 index a2d28f85400956486dd679e4bde74967ba1f63ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 787 zcmV+u1MK{XP)(KK@^_LUbCCTm>6SX z8WpdJHI=qrkSY`@^r6s}Lg`DP?T;+hLZDJXOz{Fb z6%=jF+We-RA&+_8x9C{b-X*z+g? zo)0@m*9u2T_uIa%$kK9JRRlt)$4cm?dvGc2mO~?9vrjPzPbl%UR)A8%;JOm-tUQQd zfCyoQ0Kr~JC37S8VVV1>sWnT8Dwb}ET1!=Vhar&F#Q`3pO4TZsnjXPEksIveLw+!m zbWf_@MP1O%AS0a&-ZU(pk?u+&&V4^RJ#R+Bp>R*&y4m@CMIt>?c1RkHc1I$ux(QUl z0mQAhLNNMnix9h}8%y)|Gm|Oe0YJc&-rhdeJOVQ*B@xDindcb}EnZ4k&U~urjkhnC zM~3>@Rb~_bRpwJMwcap_Wuw^!l7QRA>?-pe$}@yn@$bJW+n!P<2`2E zrjYik{N|CvF@?Y6_70BEXJ>{VKOE-~U#%JWox=J?o;_HZ%lZ{XmU+gkZ97a-EKj{J zUDTdE&Cbn^atJd7pDd0I$5ll>ES8FA<=#*rs3=Cu%5Cn6z8)BQ{dHk}JUx*lOdQQ% zOcL=hxotPlYQ|bF-!v_zwSH{~Jl8*%W_=*jQ^~4kd|uyWpJ521z^|@khwjDtBY`(B zo*Wm;l|Ona5t|%KZtPsa(5p4T*hBblhVT4#s?pt$vr$L4k?8{vi|DTa0{}68QZrmH RaU}o%002ovPDHLkV1gt6V)Xz3 diff --git a/Templates/Full/game/tools/classIcons/zone.png b/Templates/Full/game/tools/classIcons/zone.png deleted file mode 100644 index 117e48ad0390a87e7fd7bcd8f0aee81a8ff8dbb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggac4;ATohK?Ki-4wxdAc};Se#yZ zdA%RAqrmZx=S?|Sm?Ax$^j9)BI!tS6i4wB0?PUyg6tH37oMy5FNN%-|WArTQICZLP z5&vfQX>XUBJbYgEuco{#O?~w$uW6}CqLp@sWcfat>78E5785t;_sbY~5B)T$JEZjIFLRIdq|5g!O!Q8B#vD|RTQq65$?>Z@bmk`| u@8aIeaFaXsUF(kMJJ+o@Z1MSj(fq!2jPLEWZqdL%WAJqKb6Mw<&;$U@*qTZJ From 1107d23e239fd0090fd0551b150ef377fb5190b9 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Tue, 18 Aug 2015 06:22:57 -0500 Subject: [PATCH 62/75] git hates batch renames pt2 --- .../Empty/game/tools/classIcons/BasicClouds.png | Bin 0 -> 502 bytes Templates/Empty/game/tools/classIcons/Camera.png | Bin 0 -> 526 bytes .../game/tools/classIcons/CameraBookmark.png | Bin 0 -> 526 bytes .../Empty/game/tools/classIcons/CloudLayer.png | Bin 0 -> 652 bytes .../Empty/game/tools/classIcons/ConvexShape.png | Bin 0 -> 374 bytes .../Empty/game/tools/classIcons/CreatorTree.png | Bin 0 -> 196 bytes .../Empty/game/tools/classIcons/DecalRoad.png | Bin 0 -> 514 bytes Templates/Empty/game/tools/classIcons/Forest.png | Bin 0 -> 800 bytes .../Empty/game/tools/classIcons/ForestBrush.png | Bin 0 -> 710 bytes .../game/tools/classIcons/ForestBrushElement.png | Bin 0 -> 409 bytes .../Empty/game/tools/classIcons/GameTSCtrl.png | Bin 0 -> 558 bytes .../Empty/game/tools/classIcons/GroundCover.png | Bin 0 -> 368 bytes .../Empty/game/tools/classIcons/GroundPlane.png | Bin 0 -> 132 bytes .../game/tools/classIcons/GuiAutoScrollCtrl.png | Bin 0 -> 252 bytes .../game/tools/classIcons/GuiBitmapBorderCtrl.png | Bin 0 -> 480 bytes .../game/tools/classIcons/GuiBitmapButtonCtrl.png | Bin 0 -> 756 bytes .../tools/classIcons/GuiBitmapButtonTextCtrl.png | Bin 0 -> 726 bytes .../Empty/game/tools/classIcons/GuiBitmapCtrl.png | Bin 0 -> 520 bytes .../game/tools/classIcons/GuiBorderButtonCtrl.png | Bin 0 -> 144 bytes .../Empty/game/tools/classIcons/GuiButtonCtrl.png | Bin 0 -> 292 bytes .../game/tools/classIcons/GuiCheckBoxCtrl.png | Bin 0 -> 459 bytes .../game/tools/classIcons/GuiColorPickerCtrl.png | Bin 0 -> 396 bytes .../Empty/game/tools/classIcons/GuiContainer.png | Bin 0 -> 138 bytes .../Empty/game/tools/classIcons/GuiControl.png | Bin 0 -> 233 bytes .../tools/classIcons/GuiControlArrayControl.png | Bin 0 -> 194 bytes .../game/tools/classIcons/GuiCrossHairHud.png | Bin 0 -> 439 bytes .../Empty/game/tools/classIcons/GuiDecoyCtrl.png | Bin 0 -> 178 bytes .../tools/classIcons/GuiDragAndDropControl.png | Bin 0 -> 479 bytes .../classIcons/GuiDynamicCtrlArrayControl.png | Bin 0 -> 248 bytes .../game/tools/classIcons/GuiFadeinBitmapCtrl.png | Bin 0 -> 596 bytes .../game/tools/classIcons/GuiFileTreeCtrl.png | Bin 0 -> 196 bytes .../Empty/game/tools/classIcons/GuiFilterCtrl.png | Bin 0 -> 227 bytes .../Empty/game/tools/classIcons/GuiFormCtrl.png | Bin 0 -> 183 bytes .../game/tools/classIcons/GuiFrameSetCtrl.png | Bin 0 -> 233 bytes .../tools/classIcons/GuiGradientSwatchCtrl.png | Bin 0 -> 176 bytes .../Empty/game/tools/classIcons/GuiGraphCtrl.png | Bin 0 -> 466 bytes .../game/tools/classIcons/GuiHealthBarHud.png | Bin 0 -> 153 bytes .../game/tools/classIcons/GuiIconButtonCtrl.png | Bin 0 -> 424 bytes .../game/tools/classIcons/GuiListBoxCtrl.png | Bin 0 -> 326 bytes .../Empty/game/tools/classIcons/GuiMLTextCtrl.png | Bin 0 -> 156 bytes .../game/tools/classIcons/GuiMLTextEditCtrl.png | Bin 0 -> 181 bytes .../Empty/game/tools/classIcons/GuiMenuBar.png | Bin 0 -> 171 bytes .../Empty/game/tools/classIcons/GuiObjectView.png | Bin 0 -> 407 bytes .../Empty/game/tools/classIcons/GuiPanel.png | Bin 0 -> 182 bytes .../game/tools/classIcons/GuiPopUpMenuCtrl.png | Bin 0 -> 230 bytes .../game/tools/classIcons/GuiPopUpMenuCtrlEx.png | Bin 0 -> 248 bytes .../tools/classIcons/GuiProgressBitmapCtrl.png | Bin 0 -> 263 bytes .../game/tools/classIcons/GuiProgressCtrl.png | Bin 0 -> 185 bytes .../Empty/game/tools/classIcons/GuiRadioCtrl.png | Bin 0 -> 505 bytes .../game/tools/classIcons/GuiRectHandles.png | Bin 0 -> 204 bytes .../game/tools/classIcons/GuiRolloutCtrl.png | Bin 0 -> 225 bytes .../Empty/game/tools/classIcons/GuiScrollCtrl.png | Bin 0 -> 313 bytes .../game/tools/classIcons/GuiSplitContainer.png | Bin 0 -> 174 bytes .../game/tools/classIcons/GuiStackControl.png | Bin 0 -> 219 bytes .../game/tools/classIcons/GuiSwatchButtonCtrl.png | Bin 0 -> 176 bytes .../game/tools/classIcons/GuiTabBookCtrl.png | Bin 0 -> 466 bytes .../game/tools/classIcons/GuiTabPageCtrl.png | Bin 0 -> 331 bytes .../Empty/game/tools/classIcons/GuiTextCtrl.png | Bin 0 -> 206 bytes .../game/tools/classIcons/GuiTextEditCtrl.png | Bin 0 -> 247 bytes .../tools/classIcons/GuiTextEditSliderCtrl.png | Bin 0 -> 289 bytes .../game/tools/classIcons/GuiTextListCtrl.png | Bin 0 -> 153 bytes .../Empty/game/tools/classIcons/GuiTheoraCtrl.png | Bin 0 -> 636 bytes .../game/tools/classIcons/GuiTreeViewCtrl.png | Bin 0 -> 196 bytes .../tools/classIcons/GuiWindowCollapseCtrl.png | Bin 0 -> 235 bytes .../Empty/game/tools/classIcons/GuiWindowCtrl.png | Bin 0 -> 235 bytes Templates/Empty/game/tools/classIcons/Item.png | Bin 0 -> 766 bytes .../Empty/game/tools/classIcons/LevelInfo.png | Bin 0 -> 744 bytes .../Empty/game/tools/classIcons/Lightning.png | Bin 0 -> 470 bytes Templates/Empty/game/tools/classIcons/Marker.png | Bin 0 -> 169 bytes .../Empty/game/tools/classIcons/MeshRoad.png | Bin 0 -> 430 bytes .../Empty/game/tools/classIcons/MissionArea.png | Bin 0 -> 591 bytes Templates/Empty/game/tools/classIcons/NavMesh.png | Bin 0 -> 106 bytes Templates/Empty/game/tools/classIcons/NavPath.png | Bin 0 -> 241 bytes .../game/tools/classIcons/ParticleEmitter.png | Bin 0 -> 773 bytes .../game/tools/classIcons/ParticleEmitterNode.png | Bin 0 -> 426 bytes Templates/Empty/game/tools/classIcons/Path.png | Bin 0 -> 323 bytes .../Empty/game/tools/classIcons/PhysicalZone.png | Bin 0 -> 464 bytes Templates/Empty/game/tools/classIcons/Player.png | Bin 0 -> 480 bytes .../Empty/game/tools/classIcons/PointLight.png | Bin 0 -> 503 bytes Templates/Empty/game/tools/classIcons/Portal.png | Bin 0 -> 390 bytes .../Empty/game/tools/classIcons/Precipitation.png | Bin 0 -> 381 bytes Templates/Empty/game/tools/classIcons/Prefab.png | Bin 0 -> 688 bytes Templates/Empty/game/tools/classIcons/PxCloth.png | Bin 0 -> 573 bytes Templates/Empty/game/tools/classIcons/River.png | Bin 0 -> 789 bytes .../Empty/game/tools/classIcons/SFXEmitter.png | Bin 0 -> 368 bytes .../Empty/game/tools/classIcons/ScatterSky.png | Bin 0 -> 624 bytes .../Empty/game/tools/classIcons/SceneObject.png | Bin 0 -> 369 bytes .../Empty/game/tools/classIcons/SimDataBlock.png | Bin 0 -> 575 bytes .../Empty/game/tools/classIcons/SimObject.png | Bin 0 -> 358 bytes Templates/Empty/game/tools/classIcons/SimSet.png | Bin 0 -> 236 bytes Templates/Empty/game/tools/classIcons/SkyBox.png | Bin 0 -> 749 bytes .../Empty/game/tools/classIcons/SpawnSphere.png | Bin 0 -> 748 bytes .../Empty/game/tools/classIcons/SpotLight.png | Bin 0 -> 732 bytes Templates/Empty/game/tools/classIcons/Sun.png | Bin 0 -> 419 bytes .../game/tools/classIcons/TSForestItemData.png | Bin 0 -> 436 bytes .../Empty/game/tools/classIcons/TSStatic.png | Bin 0 -> 767 bytes .../Empty/game/tools/classIcons/TerrainBlock.png | Bin 0 -> 607 bytes .../Empty/game/tools/classIcons/TimeOfDay.png | Bin 0 -> 744 bytes Templates/Empty/game/tools/classIcons/Trigger.png | Bin 0 -> 513 bytes .../Empty/game/tools/classIcons/WaterBlock.png | Bin 0 -> 543 bytes .../Empty/game/tools/classIcons/WaterPlane.png | Bin 0 -> 787 bytes Templates/Empty/game/tools/classIcons/Zone.png | Bin 0 -> 406 bytes .../Empty/game/tools/classIcons/cameraSpawn.png | Bin 0 -> 778 bytes Templates/Empty/game/tools/classIcons/decal.png | Bin 0 -> 567 bytes .../Empty/game/tools/classIcons/decalNode.png | Bin 0 -> 693 bytes Templates/Empty/game/tools/classIcons/default.png | Bin 0 -> 356 bytes .../game/tools/classIcons/fxFoliageReplicator.png | Bin 0 -> 538 bytes .../game/tools/classIcons/fxShapeReplicator.png | Bin 0 -> 560 bytes .../game/tools/classIcons/interiorInstance.png | Bin 0 -> 418 bytes .../tools/classIcons/particleEffecterObject.png | Bin 0 -> 727 bytes .../tools/classIcons/particleEmitterObject.png | Bin 0 -> 773 bytes .../game/tools/classIcons/particleSimulation.png | Bin 0 -> 766 bytes .../Empty/game/tools/classIcons/pathMarker.png | Bin 0 -> 169 bytes .../Empty/game/tools/classIcons/volumeLight.png | Bin 0 -> 665 bytes .../Full/game/tools/classIcons/BasicClouds.png | Bin 0 -> 502 bytes Templates/Full/game/tools/classIcons/Camera.png | Bin 0 -> 526 bytes .../Full/game/tools/classIcons/CameraBookmark.png | Bin 0 -> 526 bytes .../Full/game/tools/classIcons/CloudLayer.png | Bin 0 -> 652 bytes .../Full/game/tools/classIcons/ConvexShape.png | Bin 0 -> 374 bytes .../Full/game/tools/classIcons/CreatorTree.png | Bin 0 -> 196 bytes .../Full/game/tools/classIcons/DecalRoad.png | Bin 0 -> 514 bytes Templates/Full/game/tools/classIcons/Forest.png | Bin 0 -> 800 bytes .../Full/game/tools/classIcons/ForestBrush.png | Bin 0 -> 710 bytes .../game/tools/classIcons/ForestBrushElement.png | Bin 0 -> 409 bytes .../Full/game/tools/classIcons/GameTSCtrl.png | Bin 0 -> 558 bytes .../Full/game/tools/classIcons/GroundCover.png | Bin 0 -> 368 bytes .../Full/game/tools/classIcons/GroundPlane.png | Bin 0 -> 132 bytes .../game/tools/classIcons/GuiAutoScrollCtrl.png | Bin 0 -> 252 bytes .../game/tools/classIcons/GuiBitmapBorderCtrl.png | Bin 0 -> 480 bytes .../game/tools/classIcons/GuiBitmapButtonCtrl.png | Bin 0 -> 756 bytes .../tools/classIcons/GuiBitmapButtonTextCtrl.png | Bin 0 -> 726 bytes .../Full/game/tools/classIcons/GuiBitmapCtrl.png | Bin 0 -> 520 bytes .../game/tools/classIcons/GuiBorderButtonCtrl.png | Bin 0 -> 144 bytes .../Full/game/tools/classIcons/GuiButtonCtrl.png | Bin 0 -> 292 bytes .../game/tools/classIcons/GuiCheckBoxCtrl.png | Bin 0 -> 459 bytes .../game/tools/classIcons/GuiColorPickerCtrl.png | Bin 0 -> 396 bytes .../Full/game/tools/classIcons/GuiContainer.png | Bin 0 -> 138 bytes .../Full/game/tools/classIcons/GuiControl.png | Bin 0 -> 233 bytes .../tools/classIcons/GuiControlArrayControl.png | Bin 0 -> 194 bytes .../game/tools/classIcons/GuiCrossHairHud.png | Bin 0 -> 439 bytes .../Full/game/tools/classIcons/GuiDecoyCtrl.png | Bin 0 -> 178 bytes .../tools/classIcons/GuiDragAndDropControl.png | Bin 0 -> 479 bytes .../classIcons/GuiDynamicCtrlArrayControl.png | Bin 0 -> 248 bytes .../game/tools/classIcons/GuiFadeinBitmapCtrl.png | Bin 0 -> 596 bytes .../game/tools/classIcons/GuiFileTreeCtrl.png | Bin 0 -> 196 bytes .../Full/game/tools/classIcons/GuiFilterCtrl.png | Bin 0 -> 227 bytes .../Full/game/tools/classIcons/GuiFormCtrl.png | Bin 0 -> 183 bytes .../game/tools/classIcons/GuiFrameSetCtrl.png | Bin 0 -> 233 bytes .../tools/classIcons/GuiGradientSwatchCtrl.png | Bin 0 -> 176 bytes .../Full/game/tools/classIcons/GuiGraphCtrl.png | Bin 0 -> 466 bytes .../game/tools/classIcons/GuiHealthBarHud.png | Bin 0 -> 153 bytes .../game/tools/classIcons/GuiIconButtonCtrl.png | Bin 0 -> 424 bytes .../Full/game/tools/classIcons/GuiListBoxCtrl.png | Bin 0 -> 326 bytes .../Full/game/tools/classIcons/GuiMLTextCtrl.png | Bin 0 -> 156 bytes .../game/tools/classIcons/GuiMLTextEditCtrl.png | Bin 0 -> 181 bytes .../Full/game/tools/classIcons/GuiMenuBar.png | Bin 0 -> 171 bytes .../Full/game/tools/classIcons/GuiObjectView.png | Bin 0 -> 407 bytes Templates/Full/game/tools/classIcons/GuiPanel.png | Bin 0 -> 182 bytes .../game/tools/classIcons/GuiPopUpMenuCtrl.png | Bin 0 -> 230 bytes .../game/tools/classIcons/GuiPopUpMenuCtrlEx.png | Bin 0 -> 248 bytes .../tools/classIcons/GuiProgressBitmapCtrl.png | Bin 0 -> 263 bytes .../game/tools/classIcons/GuiProgressCtrl.png | Bin 0 -> 185 bytes .../Full/game/tools/classIcons/GuiRadioCtrl.png | Bin 0 -> 505 bytes .../Full/game/tools/classIcons/GuiRectHandles.png | Bin 0 -> 204 bytes .../Full/game/tools/classIcons/GuiRolloutCtrl.png | Bin 0 -> 225 bytes .../Full/game/tools/classIcons/GuiScrollCtrl.png | Bin 0 -> 313 bytes .../game/tools/classIcons/GuiSplitContainer.png | Bin 0 -> 174 bytes .../game/tools/classIcons/GuiStackControl.png | Bin 0 -> 219 bytes .../game/tools/classIcons/GuiSwatchButtonCtrl.png | Bin 0 -> 176 bytes .../Full/game/tools/classIcons/GuiTabBookCtrl.png | Bin 0 -> 466 bytes .../Full/game/tools/classIcons/GuiTabPageCtrl.png | Bin 0 -> 331 bytes .../Full/game/tools/classIcons/GuiTextCtrl.png | Bin 0 -> 206 bytes .../game/tools/classIcons/GuiTextEditCtrl.png | Bin 0 -> 247 bytes .../tools/classIcons/GuiTextEditSliderCtrl.png | Bin 0 -> 289 bytes .../game/tools/classIcons/GuiTextListCtrl.png | Bin 0 -> 153 bytes .../Full/game/tools/classIcons/GuiTheoraCtrl.png | Bin 0 -> 636 bytes .../game/tools/classIcons/GuiTreeViewCtrl.png | Bin 0 -> 196 bytes .../tools/classIcons/GuiWindowCollapseCtrl.png | Bin 0 -> 235 bytes .../Full/game/tools/classIcons/GuiWindowCtrl.png | Bin 0 -> 235 bytes Templates/Full/game/tools/classIcons/Item.png | Bin 0 -> 766 bytes .../Full/game/tools/classIcons/LevelInfo.png | Bin 0 -> 744 bytes .../Full/game/tools/classIcons/Lightning.png | Bin 0 -> 470 bytes Templates/Full/game/tools/classIcons/Marker.png | Bin 0 -> 169 bytes Templates/Full/game/tools/classIcons/MeshRoad.png | Bin 0 -> 430 bytes .../Full/game/tools/classIcons/MissionArea.png | Bin 0 -> 591 bytes Templates/Full/game/tools/classIcons/NavMesh.png | Bin 0 -> 106 bytes Templates/Full/game/tools/classIcons/NavPath.png | Bin 0 -> 241 bytes .../game/tools/classIcons/ParticleEmitter.png | Bin 0 -> 773 bytes .../game/tools/classIcons/ParticleEmitterNode.png | Bin 0 -> 426 bytes Templates/Full/game/tools/classIcons/Path.png | Bin 0 -> 323 bytes .../Full/game/tools/classIcons/PhysicalZone.png | Bin 0 -> 464 bytes Templates/Full/game/tools/classIcons/Player.png | Bin 0 -> 480 bytes .../Full/game/tools/classIcons/PointLight.png | Bin 0 -> 503 bytes Templates/Full/game/tools/classIcons/Portal.png | Bin 0 -> 390 bytes .../Full/game/tools/classIcons/Precipitation.png | Bin 0 -> 381 bytes Templates/Full/game/tools/classIcons/Prefab.png | Bin 0 -> 688 bytes Templates/Full/game/tools/classIcons/PxCloth.png | Bin 0 -> 573 bytes Templates/Full/game/tools/classIcons/River.png | Bin 0 -> 789 bytes .../Full/game/tools/classIcons/SFXEmitter.png | Bin 0 -> 368 bytes .../Full/game/tools/classIcons/ScatterSky.png | Bin 0 -> 624 bytes .../Full/game/tools/classIcons/SceneObject.png | Bin 0 -> 369 bytes .../Full/game/tools/classIcons/SimDataBlock.png | Bin 0 -> 575 bytes .../Full/game/tools/classIcons/SimObject.png | Bin 0 -> 358 bytes Templates/Full/game/tools/classIcons/SimSet.png | Bin 0 -> 236 bytes Templates/Full/game/tools/classIcons/SkyBox.png | Bin 0 -> 749 bytes .../Full/game/tools/classIcons/SpawnSphere.png | Bin 0 -> 748 bytes .../Full/game/tools/classIcons/SpotLight.png | Bin 0 -> 732 bytes Templates/Full/game/tools/classIcons/Sun.png | Bin 0 -> 419 bytes .../game/tools/classIcons/TSForestItemData.png | Bin 0 -> 436 bytes Templates/Full/game/tools/classIcons/TSStatic.png | Bin 0 -> 767 bytes .../Full/game/tools/classIcons/TerrainBlock.png | Bin 0 -> 607 bytes .../Full/game/tools/classIcons/TimeOfDay.png | Bin 0 -> 744 bytes Templates/Full/game/tools/classIcons/Trigger.png | Bin 0 -> 513 bytes .../Full/game/tools/classIcons/WaterBlock.png | Bin 0 -> 543 bytes .../Full/game/tools/classIcons/WaterPlane.png | Bin 0 -> 787 bytes Templates/Full/game/tools/classIcons/Zone.png | Bin 0 -> 406 bytes .../Full/game/tools/classIcons/cameraSpawn.png | Bin 0 -> 778 bytes Templates/Full/game/tools/classIcons/decal.png | Bin 0 -> 567 bytes .../Full/game/tools/classIcons/decalNode.png | Bin 0 -> 693 bytes Templates/Full/game/tools/classIcons/default.png | Bin 0 -> 356 bytes .../game/tools/classIcons/fxFoliageReplicator.png | Bin 0 -> 538 bytes .../game/tools/classIcons/fxShapeReplicator.png | Bin 0 -> 560 bytes .../game/tools/classIcons/interiorInstance.png | Bin 0 -> 418 bytes .../tools/classIcons/particleEffecterObject.png | Bin 0 -> 727 bytes .../tools/classIcons/particleEmitterObject.png | Bin 0 -> 773 bytes .../game/tools/classIcons/particleSimulation.png | Bin 0 -> 766 bytes .../Full/game/tools/classIcons/pathMarker.png | Bin 0 -> 169 bytes .../Full/game/tools/classIcons/volumeLight.png | Bin 0 -> 665 bytes 228 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Templates/Empty/game/tools/classIcons/BasicClouds.png create mode 100644 Templates/Empty/game/tools/classIcons/Camera.png create mode 100644 Templates/Empty/game/tools/classIcons/CameraBookmark.png create mode 100644 Templates/Empty/game/tools/classIcons/CloudLayer.png create mode 100644 Templates/Empty/game/tools/classIcons/ConvexShape.png create mode 100644 Templates/Empty/game/tools/classIcons/CreatorTree.png create mode 100644 Templates/Empty/game/tools/classIcons/DecalRoad.png create mode 100644 Templates/Empty/game/tools/classIcons/Forest.png create mode 100644 Templates/Empty/game/tools/classIcons/ForestBrush.png create mode 100644 Templates/Empty/game/tools/classIcons/ForestBrushElement.png create mode 100644 Templates/Empty/game/tools/classIcons/GameTSCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GroundCover.png create mode 100644 Templates/Empty/game/tools/classIcons/GroundPlane.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiAutoScrollCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapButtonCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapButtonTextCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiButtonCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiContainer.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiControl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiDragAndDropControl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiFadeinBitmapCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiFileTreeCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiFormCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiIconButtonCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiListBoxCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiMLTextCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiMenuBar.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiObjectView.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiPanel.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiPopUpMenuCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiPopUpMenuCtrlEx.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiRadioCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiRectHandles.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiScrollCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiSplitContainer.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiStackControl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiSwatchButtonCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTextCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiTreeViewCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png create mode 100644 Templates/Empty/game/tools/classIcons/Item.png create mode 100644 Templates/Empty/game/tools/classIcons/LevelInfo.png create mode 100644 Templates/Empty/game/tools/classIcons/Lightning.png create mode 100644 Templates/Empty/game/tools/classIcons/Marker.png create mode 100644 Templates/Empty/game/tools/classIcons/MeshRoad.png create mode 100644 Templates/Empty/game/tools/classIcons/MissionArea.png create mode 100644 Templates/Empty/game/tools/classIcons/NavMesh.png create mode 100644 Templates/Empty/game/tools/classIcons/NavPath.png create mode 100644 Templates/Empty/game/tools/classIcons/ParticleEmitter.png create mode 100644 Templates/Empty/game/tools/classIcons/ParticleEmitterNode.png create mode 100644 Templates/Empty/game/tools/classIcons/Path.png create mode 100644 Templates/Empty/game/tools/classIcons/PhysicalZone.png create mode 100644 Templates/Empty/game/tools/classIcons/Player.png create mode 100644 Templates/Empty/game/tools/classIcons/PointLight.png create mode 100644 Templates/Empty/game/tools/classIcons/Portal.png create mode 100644 Templates/Empty/game/tools/classIcons/Precipitation.png create mode 100644 Templates/Empty/game/tools/classIcons/Prefab.png create mode 100644 Templates/Empty/game/tools/classIcons/PxCloth.png create mode 100644 Templates/Empty/game/tools/classIcons/River.png create mode 100644 Templates/Empty/game/tools/classIcons/SFXEmitter.png create mode 100644 Templates/Empty/game/tools/classIcons/ScatterSky.png create mode 100644 Templates/Empty/game/tools/classIcons/SceneObject.png create mode 100644 Templates/Empty/game/tools/classIcons/SimDataBlock.png create mode 100644 Templates/Empty/game/tools/classIcons/SimObject.png create mode 100644 Templates/Empty/game/tools/classIcons/SimSet.png create mode 100644 Templates/Empty/game/tools/classIcons/SkyBox.png create mode 100644 Templates/Empty/game/tools/classIcons/SpawnSphere.png create mode 100644 Templates/Empty/game/tools/classIcons/SpotLight.png create mode 100644 Templates/Empty/game/tools/classIcons/Sun.png create mode 100644 Templates/Empty/game/tools/classIcons/TSForestItemData.png create mode 100644 Templates/Empty/game/tools/classIcons/TSStatic.png create mode 100644 Templates/Empty/game/tools/classIcons/TerrainBlock.png create mode 100644 Templates/Empty/game/tools/classIcons/TimeOfDay.png create mode 100644 Templates/Empty/game/tools/classIcons/Trigger.png create mode 100644 Templates/Empty/game/tools/classIcons/WaterBlock.png create mode 100644 Templates/Empty/game/tools/classIcons/WaterPlane.png create mode 100644 Templates/Empty/game/tools/classIcons/Zone.png create mode 100644 Templates/Empty/game/tools/classIcons/cameraSpawn.png create mode 100644 Templates/Empty/game/tools/classIcons/decal.png create mode 100644 Templates/Empty/game/tools/classIcons/decalNode.png create mode 100644 Templates/Empty/game/tools/classIcons/default.png create mode 100644 Templates/Empty/game/tools/classIcons/fxFoliageReplicator.png create mode 100644 Templates/Empty/game/tools/classIcons/fxShapeReplicator.png create mode 100644 Templates/Empty/game/tools/classIcons/interiorInstance.png create mode 100644 Templates/Empty/game/tools/classIcons/particleEffecterObject.png create mode 100644 Templates/Empty/game/tools/classIcons/particleEmitterObject.png create mode 100644 Templates/Empty/game/tools/classIcons/particleSimulation.png create mode 100644 Templates/Empty/game/tools/classIcons/pathMarker.png create mode 100644 Templates/Empty/game/tools/classIcons/volumeLight.png create mode 100644 Templates/Full/game/tools/classIcons/BasicClouds.png create mode 100644 Templates/Full/game/tools/classIcons/Camera.png create mode 100644 Templates/Full/game/tools/classIcons/CameraBookmark.png create mode 100644 Templates/Full/game/tools/classIcons/CloudLayer.png create mode 100644 Templates/Full/game/tools/classIcons/ConvexShape.png create mode 100644 Templates/Full/game/tools/classIcons/CreatorTree.png create mode 100644 Templates/Full/game/tools/classIcons/DecalRoad.png create mode 100644 Templates/Full/game/tools/classIcons/Forest.png create mode 100644 Templates/Full/game/tools/classIcons/ForestBrush.png create mode 100644 Templates/Full/game/tools/classIcons/ForestBrushElement.png create mode 100644 Templates/Full/game/tools/classIcons/GameTSCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GroundCover.png create mode 100644 Templates/Full/game/tools/classIcons/GroundPlane.png create mode 100644 Templates/Full/game/tools/classIcons/GuiAutoScrollCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapButtonCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapButtonTextCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiButtonCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiContainer.png create mode 100644 Templates/Full/game/tools/classIcons/GuiControl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiControlArrayControl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiCrossHairHud.png create mode 100644 Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiDragAndDropControl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiFadeinBitmapCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiFileTreeCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiFilterCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiFormCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiGraphCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiHealthBarHud.png create mode 100644 Templates/Full/game/tools/classIcons/GuiIconButtonCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiListBoxCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiMLTextCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiMenuBar.png create mode 100644 Templates/Full/game/tools/classIcons/GuiObjectView.png create mode 100644 Templates/Full/game/tools/classIcons/GuiPanel.png create mode 100644 Templates/Full/game/tools/classIcons/GuiPopUpMenuCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiPopUpMenuCtrlEx.png create mode 100644 Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiProgressCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiRadioCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiRectHandles.png create mode 100644 Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiScrollCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiSplitContainer.png create mode 100644 Templates/Full/game/tools/classIcons/GuiStackControl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiSwatchButtonCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTextCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTextListCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiTreeViewCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/GuiWindowCtrl.png create mode 100644 Templates/Full/game/tools/classIcons/Item.png create mode 100644 Templates/Full/game/tools/classIcons/LevelInfo.png create mode 100644 Templates/Full/game/tools/classIcons/Lightning.png create mode 100644 Templates/Full/game/tools/classIcons/Marker.png create mode 100644 Templates/Full/game/tools/classIcons/MeshRoad.png create mode 100644 Templates/Full/game/tools/classIcons/MissionArea.png create mode 100644 Templates/Full/game/tools/classIcons/NavMesh.png create mode 100644 Templates/Full/game/tools/classIcons/NavPath.png create mode 100644 Templates/Full/game/tools/classIcons/ParticleEmitter.png create mode 100644 Templates/Full/game/tools/classIcons/ParticleEmitterNode.png create mode 100644 Templates/Full/game/tools/classIcons/Path.png create mode 100644 Templates/Full/game/tools/classIcons/PhysicalZone.png create mode 100644 Templates/Full/game/tools/classIcons/Player.png create mode 100644 Templates/Full/game/tools/classIcons/PointLight.png create mode 100644 Templates/Full/game/tools/classIcons/Portal.png create mode 100644 Templates/Full/game/tools/classIcons/Precipitation.png create mode 100644 Templates/Full/game/tools/classIcons/Prefab.png create mode 100644 Templates/Full/game/tools/classIcons/PxCloth.png create mode 100644 Templates/Full/game/tools/classIcons/River.png create mode 100644 Templates/Full/game/tools/classIcons/SFXEmitter.png create mode 100644 Templates/Full/game/tools/classIcons/ScatterSky.png create mode 100644 Templates/Full/game/tools/classIcons/SceneObject.png create mode 100644 Templates/Full/game/tools/classIcons/SimDataBlock.png create mode 100644 Templates/Full/game/tools/classIcons/SimObject.png create mode 100644 Templates/Full/game/tools/classIcons/SimSet.png create mode 100644 Templates/Full/game/tools/classIcons/SkyBox.png create mode 100644 Templates/Full/game/tools/classIcons/SpawnSphere.png create mode 100644 Templates/Full/game/tools/classIcons/SpotLight.png create mode 100644 Templates/Full/game/tools/classIcons/Sun.png create mode 100644 Templates/Full/game/tools/classIcons/TSForestItemData.png create mode 100644 Templates/Full/game/tools/classIcons/TSStatic.png create mode 100644 Templates/Full/game/tools/classIcons/TerrainBlock.png create mode 100644 Templates/Full/game/tools/classIcons/TimeOfDay.png create mode 100644 Templates/Full/game/tools/classIcons/Trigger.png create mode 100644 Templates/Full/game/tools/classIcons/WaterBlock.png create mode 100644 Templates/Full/game/tools/classIcons/WaterPlane.png create mode 100644 Templates/Full/game/tools/classIcons/Zone.png create mode 100644 Templates/Full/game/tools/classIcons/cameraSpawn.png create mode 100644 Templates/Full/game/tools/classIcons/decal.png create mode 100644 Templates/Full/game/tools/classIcons/decalNode.png create mode 100644 Templates/Full/game/tools/classIcons/default.png create mode 100644 Templates/Full/game/tools/classIcons/fxFoliageReplicator.png create mode 100644 Templates/Full/game/tools/classIcons/fxShapeReplicator.png create mode 100644 Templates/Full/game/tools/classIcons/interiorInstance.png create mode 100644 Templates/Full/game/tools/classIcons/particleEffecterObject.png create mode 100644 Templates/Full/game/tools/classIcons/particleEmitterObject.png create mode 100644 Templates/Full/game/tools/classIcons/particleSimulation.png create mode 100644 Templates/Full/game/tools/classIcons/pathMarker.png create mode 100644 Templates/Full/game/tools/classIcons/volumeLight.png diff --git a/Templates/Empty/game/tools/classIcons/BasicClouds.png b/Templates/Empty/game/tools/classIcons/BasicClouds.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c863f29f04d9d499098f5ef7db51d11d4fe630 GIT binary patch literal 502 zcmV^-yb0fqrUjUdJAfmi^wjOAs05N_B zxlG?!2gKYD_Abb@7tdZ|we8!x|Nnpg!0r-|Yk_+AgJa>#=dTzx{rJehaR2HnhWGaw z7~b4wU~n-FU?|S0VF+-F2CEMVi~uQfU{;dS5ZJPAr-g)+7+4}BrjX&?+Yb!$rY~mL zxM>}Ozi%)D12C=G+c`1FN-8qAx_B_~bBZyXKY4}W(BXZMSO7YuKvYDmfBMW>495?j zWO(@KJ_8pQH-m|>IRj7}?y9xxS1`PO{fa?URE%NUj?E0;zI|Q50+n0v`pv8Ox|$jT zPj_F2gNODp$jd7-XlVcgON0TWkYW4I%?xYSt@r><3m|X-7?m54(*YVen*Dg;U_ s0kCud1P6e)5UA+_N=h91nF%1k0KWX-npb5q-~a#s07*qoM6N<$g5BcV0ssI2 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Camera.png b/Templates/Empty/game/tools/classIcons/Camera.png new file mode 100644 index 0000000000000000000000000000000000000000..0722c8515cba616d2800254124c78f8f12d20ad6 GIT binary patch literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/CameraBookmark.png b/Templates/Empty/game/tools/classIcons/CameraBookmark.png new file mode 100644 index 0000000000000000000000000000000000000000..0722c8515cba616d2800254124c78f8f12d20ad6 GIT binary patch literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/CloudLayer.png b/Templates/Empty/game/tools/classIcons/CloudLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..0cde23bc03b8deb3b642c06a0d2157144613e43a GIT binary patch literal 652 zcmV;70(1R|P)q5X(LHc?WHk7 zhR{DUo+(rmAaaCK+9AbGL~)dG=XMHK(L$+2C|XS3MIzHH$vuRH_O{caxL6YJr#_06 z!Siwbte|~-2x`j6Y&U)Kl)l>MQxMamSW{mo*Oq?KW!XDDt31-hhj&I(Lm;HO%B}nS z%IM=vAMTRfH@OKYeg&HvG_{qnwXw3nE#p`q=^vWx(>GPl|(0)=<_d+Sv*N193*ms5_e$8MGnNRdpBiWPW=7} zEPevK0bp=&U|EbVmiL^GCwSOKEgX|25DL^|^>Xq89`y|%yj8=jVdBSk3m1E?Vlro7 zhU_*rYB+L8cg~2|j|w%RjZMP~-wMav!lQcJ3Z6fEfj>*Y{(UXjOr!&pxn^!xb|j0r z`B~;AjJc`L|6U@MafUCF+x05<2)N7qXL#`)Vi3r{7vFGe0s$D!_&=Rt zKh)_c;OGkmhP}@iQ8Zxz512p%HW_OPRGaV_@Q{*dWP(Nwxd7~f54dCn*a#Z%kcn|7 z!vUNIuoLG623!G21h@b*pb?)}uz(FftXO~g{|0zo0Hy~}9+;1uCKlahWO(oy)kYvL z1Zq5hGcy4V3V<3Uu=5Ec!^u}*;SW%a3vh)2B74q+I1l7Z4raLb6tQUr0e}Dl0G0b% Ub_lorsQ>@~07*qoM6N<$f;jJreE}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/DecalRoad.png b/Templates/Empty/game/tools/classIcons/DecalRoad.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe8aab12026074f82fb213774c5916da58b5c05 GIT binary patch literal 514 zcmV+d0{#7oP))_H|KE?34?b}*-~cSB8ad^enOTmrv9n8p_&~$||M~N$iUALR8=xc1C;+53@bGX; z{{Q=%;men=4}g5fD{uclAj$wvZl2RDEG#N8K07Dp#IsMn;nfTROfbgxuU}LwEsYo) z>@65RfBeAk^ZWM&3`77%SRh&|38I81(C>FnKl-dnvwZ3ZS5W(E~CC5GTIKL&Po_5`5#d7vQ<1ib)?LRL2R`;0(xQFQ0lJ%;UD_b~kY@$&+Zn+S~B3)s8>_Qt1=pBO%W z{>lJMiEyl@smhR%lf)n=FJk~yvmaH2k#ORGP#*>fNpVp0)-xe#o*x+I z%V1<`fLAjNJG$C}v?hSPV4*1R4_EZz1AqVi{QwYP07{XWGKRKTrvLx|07*qoM6N<$ Ef^$XUc>n+a literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Forest.png b/Templates/Empty/game/tools/classIcons/Forest.png new file mode 100644 index 0000000000000000000000000000000000000000..014caf957604228a3d283412cd358b09840294d0 GIT binary patch literal 800 zcmV+*1K<3KP)9FqRZSj?|t{4bH4kX?~2ko%p8f9h2UfexO&WX0_*a{g{5ifC-b)L z$KL#Ml#~e=0 z{r=NyI9j=-*0O924g0I4)RGk7UmB^D$gLw6( zrP(16*fWzrSL*zg61+Z|6IP_>-n!Xx&ZFx(OfKr0jgGfZavr^Cs?g(6hTm{8+~922 z-A?K?WQI*}lFN%YJtNZ}=<{e&gC+$uO@pDcu#KlqXRq2Z$1+hLJB_6LPG}LZ;9Q$o zfahIpP+&>0U{LZ*Qj_@D_gVAIUE}QIQ7=Xa1acIW3L1v-3uYpM;{oSeIFE>yWQycN zU~~-gz3H$8HbhU1W~X?3O9-bK6X9_J?I|EL4A4eZJZFNggv~Li1Y-m~ZtRsh2EV-T zDfGBfzS_3M3?iV(;ZRMCP`SN$!Rq#*kpUJD6%K(l$ps6`Xd{~ivt2HC)k5#`5!*Jw z%$^0mhk9*czccy0ebcT_uYGsA$i187_hL0r=M6E?!1r>}RhR6kJ7~}^Dqp7TBGatpi^|-w+&m3;d zGA*;4m{}A{l+l)y{#M{eYlMUZ4{7<5n);2*O5WzipJdBrJ(}3c-KrnxXc6PVsZMkp zm~Qey{<~>8yH7{IZ$y!h e-c&XI2rvK#6w_7Twchvu0000BB{wTXWf zIZO-?75qpNNF6{^0C1l{a_?$JwiX#f0yHG5NHRl%q?vHS@8Ad_eEjy}+qM9%Yna?7 zTY&-E&I0XVAzvskS8iSi{QNyHEabkpiY2+fR{gtcSp}r&Y`3tmVcm}Ek6e~{HXDa` zA5u^%7tg76O$X@MvT@tJJ7a12e*vCS=?Kpq5$-;@+V|#t(nwYinnFNR8&DBl?4~Jz zbh{-=f7Egi>a6#6OV7t(I-O)x1>F#u+Jx!d>pq{;Igg);{G&;6lzNyH19;*?JGURd z^*S9BRCUQwcUP5$v;NN5JD_JXEyfaJ0SL??TzUl}BA9r2pDR~NhMSJXih{&e1r33{ zyAMIRoENZVuK9-~T_7~*3Co|d(^X88m6{gGXDShl(WU+yEx7mlpjIvEL<1)W!bu9r z#)Q3?nTY=RTpIcHu?RG4yJ`@FEVy9W*3na41WIA(KN$F=66 z*(kc|J$gny>$}KgzrWI_6#xZr=%ltlzYln05&=fKTu%A4=aR%a*G~Z<%)vc}`-rBb zzRjmDD<*eB;ClNmpnwO1KNW+Zd2Am@VgLiz(Frajj%q5%csHU*4h^0Pw};87pjm~P sJdButHI~r=I%ih+rV9qw68I;;08R{lwOeqP=Kufz07*qoM6N<$g7FYQD*ylh literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/ForestBrushElement.png b/Templates/Empty/game/tools/classIcons/ForestBrushElement.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc969d30b12f10e220f4315aade7cffe00a44b3 GIT binary patch literal 409 zcmV;K0cQS*P)Ao$GFi-pn!Dx@`;Zhb3*ujcC6mZ$0F|xo5|oi*WEpUEkB#x9LnLhj zI{_!X3h9Y8beN3$r@29?iN(hWg}vz)!u19sCi=9JNIV!#H9^Ev-THY)H2p?1>qmlS zCB8PjF&gV0w64)*88ti-Q+${+SNT2Ab9=WJm>7O(3l!h83SG=0s00000NkvXXu0mjf DS7WG% literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GameTSCtrl.png b/Templates/Empty/game/tools/classIcons/GameTSCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f1801ffe0c1cf0972c2a49c1527625291312b495 GIT binary patch literal 558 zcmV+}0@3}6P)4Tk z6B7f|&5g`&Z-8Xq-ULd)G%x|te+c>H+vR0}S5bglS(b z^Y71a8^DMOL>_vyOo2mj(}(TM2GLw6dbDhUl~uKwPtRcX>1XEPh57+#FvQLG-e3Cq z<;4{5nK@h2kKOLfh+WJsD9ylN`uE4D$JaN46$!v>0J~?;^(FFLN+p|$p1yv*m+jvN z7G{V?|NQt2G@eD)1j!GK3|F2U`|$Dk$1k51_>~q#EVEYjXxUKp{@UKxXE(e&vz}Ge zkxdR&!^&gR;!G3zgC~@`R!Hzk0Ld?Z7#8g8d-37{yL;o$o%Kw=kUV|l#`eFz{y3{U zBgavtXXVCEZ@(*=vdfw9dN#0d@<25J19D5NAV!b;tWhA1mg$6g<*GR-)COli%pWm{B>1& zrV2!W%e(WfGqwouuPYOiD}5(sg&! zBrJg+BLH!xlZ<_Fu3`*;kadIW<9q;UXKW@5Rm}C^0Ue&<&bGFMy^k_>eTD)L2xk>=!9ykO@n&FS@~&b#wGiGw^8R zt2ywM(PUJ#^D|HwK(fBl{B0t^71?N$6w!}1-PvDn&+N&t;-S5e!im%*1;Gn(%#T+rcem}8 cWnhtD(BSN^o|3$}7N~>4)78&qol`;+0F^o=vH$=8 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiAutoScrollCtrl.png b/Templates/Empty/game/tools/classIcons/GuiAutoScrollCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b8219f5750590b3bf998d30c9f408f6211526975 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X=6Sj}hE&`-5**0as=&j1Nc6$B&(3+LRln(6OnG$5xKe(- zr|PV=vaHRk*!q`>1Z>zOWx&d3xnsUIdtv)#DX!THj~*_(X7z>t*gb1mg;se%!AUoZ zXP0+Ksm~5&JJ)pgGcYqKty&PM_;x}C(4`EXu6{1-oD!M<&}Lz$ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBitmapBorderCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d8e52ac33b6d33d2919604df57e37c173835f1 GIT binary patch literal 480 zcmV<60U!Q}P)SnsamPi=`>AK0u|H^ zBo5rJ*Rm}0JWs#}MI~2NdEq1l5yPd#xi}9i;zY(6_RzL1#Utz< zq(aX0!XU>wm!@gLR=h{41f?coQDtH;&4I|1r=&O@*JTmMA&I#IFPiZ(gCJGcb(Uu) zc;KistSBlmRtn0YHh4g$>_I$41<8YH_2+19t$j<=IE}y;e23yV1QyZJ0G8|hwueE5 z5lSj=I>JmO=eD-tYGyIvfr^0t^70 WgE;Y?ynem_0000) zDwf`n`s3MI)T&h|4hNb|9Zsi{6HBEM>~;luqk(%pJ@^%m^Ddpe&NZQ0sjjH13a`%# zlbz7->c`UaB`!upa*8QOHNp^kI%}CMm&@UzZ~?O=~dMFyJ1*%Gw%2)6=w6+$p9U)d)ja znTZjXX0Xw?ZmnKt0t0T=p2GKly)}1=DMvNJ5SBQ^6{iAIHoc+0^!a_by!?x+;uV{2 z1?hB}FV9V9=jZ3x+e`9icHej7_|GvDsJ`Vldh_b_&cx(I(BttUeRKrVGVfd@Nt7@; zHimruj4fX(@$vJg5T6ozlI3V5T0A{f@n|Z5zP>&fO@j?q<4!Tx6oq54# m+Ym(YLo~MazBB(%fB^tCzL)}N?m3PC0000E&> zZN#am2bi6k#h}lZ)OCHaudh#TH8?#z9p*SL5&a>#(&;n;fdG6%KG^JbQ(V|! z-`~d&!$S)T*M?z;BO@cS*&uarkl2my3d{xOpU%T-wc@_0)oR%JzJq~*0SKay^iNNV zmZ&5xXERyh;^G3qnHey9__VnRRaHAqcx}z(Pu_l}hOE??+iJqf*uIc6Alq-QC#Q+JYoW zSXp_4VzG!nCnqMyVRs;3%7e80%}oI|n-v-pQjCv{nNPAz-)z+DX3mCe)+nd2+if5% zIWUK&mdhPOt5&P18^*mgo@q#HI&iz)taF9IjgF}|9o$_Xhr@xZzgMP%ZI`Pj)M%iC z_}@Vt<#IdjbUIO~sN`VVQYaL|N>)LStA`1+)|I7FDI}6fD2jrQ8yhX0IK(9lY0X7? z{qj}9KkXMh9xslMj-VU*y^F+iJSHY5*&Zlt`BKTX5AQ__71%W{My2TW*_n)oj{@lJ z?M1CxW5ZL;LpfnoBMxy%)AlpHc=mkQ(DikX*CRX*1~EP{(f0QA@iBhw?IEY+k{r)3 ze*XGJZfnqtC$n?Q?CO^4jYjA;Zt3dUws2fH8jroZjsFv10Le#*5&EzYj{pDw07*qo IM6N<$f($rXF8}}l literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6f511189f0be61b63c25c476132f6e3042b3739f GIT binary patch literal 520 zcmV+j0{8uiP)45Ps5dWm*(A=`R>}@*JsxQxy+n=?1EB2#-AUb@2;r^GFZ?wEWfe%%G*muhP7-* zHv$#CIJ%gbgYVP*Gk?E-64Y`6srZisF1@@Ez9C@Ng=x7v(?8xld1+$cpYNZ5;;+uE zzd9=(q6WoDOD-((RSb;MjQ#if|EwL=%Asw{9K1krQR4u(e-IijKD%)K!FfeK<&w=s zx1QeK#q#&T*H>^^pp)1IrTLUh5gIyob?Aub)oiL(OZyU=liEXsTW5V zfqf6uV8#fExb2s>Puf3ub^59oA77}5sQ^X3{QQ!%Aj#n4>i|J{Zb=QGPN1hnjRT>c z_L~^I@$BaRsNn2_b7oCeH?FJ)vVVX7bZ2!H$aEmyaCVDZhws~W?|%OLiKeG(Yk%_W zOk@#|AEs@e6{PL|<;&MEU%&qP^$R)NG8~hiynMR&&~ijfZ#c2}`={?FQpVrDeZ$nl z%gNguRyTF?%%^XkK|~l$a&13-`%Ey+nW>vBE}ae1Kx*;^2rvNVLK=_h8MF!j0000< KMNUMnLSTabb^)OP literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png b/Templates/Empty/game/tools/classIcons/GuiBorderButtonCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..25044777f2f8c9df1d4ef0beace57b61a86641dd GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xj67W&Ln>}1#cW78SkK1Az}?Z&-=D7H{`pWV_kUx<01h`^ p3Dblt3`_2CoC8gZ{^MSeuN`c&0fxNX& zJQ_L~-Nvt+%5<~UfBK5ouHQUEaQS1#5X+?tQVLcZr~0p4venFglJ8F6V3)urF5heC z$4=FH{fjNLNAp@?j{=87xjN(iRJWDh2W3<2KCEwve8&)#&7ru5<+90M`>8zrk9T++ zcoY9YG(+e>a6=^fES3)<3D+8rP5Q-=A#rP+vqW3m2Lqmjvee$2AA@YgTe~DWM4ft@~{a literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png b/Templates/Empty/game/tools/classIcons/GuiCheckBoxCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e608ba2d7698f8795e394cc413102def5be8552 GIT binary patch literal 459 zcmV;+0W|)JP)T6uR~ILXqvKl;p|~#~Bap|>K)md9Iy3HI0=ll>o2D832aLz~ zERI>`N4TVE8r;d__x4x`i5?|i@{)k+3X$tejlw? z3)N~BiXuZ0Nb*&pn`|}MLQfSm^)&002ovPDHLkV1lrZ B%3lBg literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png b/Templates/Empty/game/tools/classIcons/GuiColorPickerCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9c6ca32ea1e74ade912b791145159e92ee0dd6 GIT binary patch literal 396 zcmV;70dxL|P)@CojrxSunmn_QAUGLCzz{)Fl$*dhPP0-FM`7Wt@oj{}D3G`A0&U+;d3dC!Iv27@Vl-`CV#SebL2gh@B qDRL?5wlvDv1t0hO-+%9?00RI#XOq=|BqQ$t0000}1rJS%o?ZB0gq#(G#Va0#p9uBQk9Siq9-o;XG iU2JZ%mWMSkFf&*Ru+A*Eym1+*kHOQ`&t;ucLK6UF1Sbsu literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiControl.png b/Templates/Empty/game/tools/classIcons/GuiControl.png new file mode 100644 index 0000000000000000000000000000000000000000..63393413878ba594a665e654beeca2a30300807f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png b/Templates/Empty/game/tools/classIcons/GuiControlArrayControl.png new file mode 100644 index 0000000000000000000000000000000000000000..f7340fae469b7e85181d65b29d218fc0363fec3c GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XQaoK8Ln>}1^>7vbK7ZuMi4X7Z*S9TQU2bH=;8?Q4IxtD$ zz^C8m<=NcaEaZ7QM46>Oe1C7>_W%F?#U4W1Y)m~0j$RDH%&iTDCIXov9ZML*Vj7*d oFz#S#&(Pzopr0ABe*Y5)KL literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png b/Templates/Empty/game/tools/classIcons/GuiCrossHairHud.png new file mode 100644 index 0000000000000000000000000000000000000000..65b06404aa0cffdd3607093c2cd0839b792b9f0f GIT binary patch literal 439 zcmV;o0Z9IdP)O zV6$}~Yb}vd>S4Jg6xhF^T&)lz)D6SX_x+~_K5#tDiZBEuV@%g|_yB>C0HbYN#0XF- zNmEPeSApq!v<8i})`JJfam*ZffQJmI$^$oucZ&r$N(NzKlAv`O8bg~TnK>lABqC8F zje)mW0YOl8aeTp?scD$=U2wd-_9VJJe;{w6oGkK(Vvb%=apUrisl3G`a-|I{vc6q$ zdi8s88186NAX^G>Exy4S(6cO)jQ9~XO%tlS5vO8q{L3K9BM98X)pZ>fN=D#_-Y^Xj zswDZeUc063*gm{~ltYPO{;`8_L_OwC9lScf%hj}t^-O1LRaNe1B+`?=RSekfcKiMF h=!;AK`=!4G7yt#$Gh19hnz{f0002ovPDHLkV1o7$xqSct literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png b/Templates/Empty/game/tools/classIcons/GuiDecoyCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a092c1ee24b7fe77b96ca082a7957b87911af94f GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XLOfj@Ln>}1{orS>yIL-hE*N!l(X=lI%K)PN&_`k9lVaUclkO&UI2*eDe049b7Wgr9w3)(k8g^>iY zISJ-VKaI4F3-|oT3z(37`JLhOl=itt_MH0n@883R4{j&wzyQ#G VI0wT5p;Q0>002ovPDHLkV1hJT&=CLt literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png b/Templates/Empty/game/tools/classIcons/GuiDynamicCtrlArrayControl.png new file mode 100644 index 0000000000000000000000000000000000000000..a356634e84f1fdb8a72d4bcd674d6985f6b26bd8 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_h|ehE&{|GT|XFlOj)Rbdj~7*agXVF-^V+oOcg$Hq3O% z;{CX&!oB}}c>L#Cd%|sWjkR2t-dS(XU=cs9FJ;-E6CE7#zdqFl%$wP9EjQligp^x= z0mnD*^%d{eZY_FQueLE&+EZt45SQYWn-a>?uSIQMzpIkX%B^Q3pMsTCnQ~#C-~NwF u-9GQ%pP$t(e>_g*`JJ>?5Bc;N*%%fZD3o0P&shU>C4;A{pUXO@geCxym0eo^ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiFadeinBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFadeinBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..60463c21984988dd8fa475347a6403eb212bb40c GIT binary patch literal 596 zcmV-a0;~OrP)KRo*W-Ez;;_QWSf$iB&!YOK{cSd8ea>n}n^7z%86WIdytsZQxX|s#tBN@)VP7WPT zl|#y{Z$8uKme@#)PfstfY_?u+uiiUw82AG_v}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFilterCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ddc8a7846985acd8c8520abb3a14e7ba2eb48c GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XT0LDHLn>}fnH0!(K!B%h`OUzXgOh_TmLJizv2>~y-yD%6 z96Bpt;{SYm-lub{%O2@yw4 z$jPQCZ@NKvbawRHaxbOt<_WFUX%a=7+4^QzGM~47VetGNuTpuwz|MN+`+x6EXJBR! XT;ijX=bZ8z=pY79S3j3^P6}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)pACFnQ_5c2`GNq-Z{qg$$_c#014dw6SF6DIe_p1keJ=DrQQ^JE~u@qZ7o0!KR e!S##^2N<0H%03fW*0dgI34^DrpUXO@geCy!s6yHR literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png b/Templates/Empty/game/tools/classIcons/GuiFrameSetCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..63393413878ba594a665e654beeca2a30300807f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png b/Templates/Empty/game/tools/classIcons/GuiGradientSwatchCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7d7c58bfa567a9afb4f3c214ae04d96e27bd94 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xf;?RuLn>}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png b/Templates/Empty/game/tools/classIcons/GuiGraphCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..18dfdd8d546c1d15b625e3d012af20b59289cdef GIT binary patch literal 466 zcmV;@0WJQCP)NoPXlP z3H)3p1`+`aK^0&Auxx!My8W5h?a$o3ye9}~*!k14{;&~{;Vtz#U;V+)n_wG&E<;uX z;XeH*y7IfnyZ?N)tf%eR&T+o~`SU%@NzMwwUnNwLeYx_H&1ZfbvxQ+ked5Hg}e+xVGN~l`wm$Ajew4xVsh0>>J`3VT`lVs@^q^9;#_&1m65!=-(LOs79$LR zK;_jH1~DCw4byl_9kurB{JnGXp^x~F=N3o+k`C-OTop18t zueyoQt-}`AHn4wu@t1>_c zesLQv@=o3Eox1HSeJ_af&|~_llqqjeF0RA}1dOC6Z-4*;0Ln_JsUL$&t^fc407*qo IM6N<$f=lk?tN;K2 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png b/Templates/Empty/game/tools/classIcons/GuiHealthBarHud.png new file mode 100644 index 0000000000000000000000000000000000000000..f661a431a13f0a903039f19a965850e7e878bfc0 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1{rUgjo>{1%tjz7%ySuxmGm367NNCvm`)?|HsG96m^Cn#Q|ZE=g5Y;^$cj5DQM8 zzj^4u{0q6C1Y8+J#@GO9nv&xw17FiYUu6Q3)FMI0gV$IVX@L z>C)bK9N38IOV@QG!DI)vZIfXbA`lw(tqvv=-~(BfB@#fxo;^ZYmgKsw(2zKeX}8-^ z5Co*_`t%5_m(}!|>+cSF>xOs;UTFxow(9T#E9$;QMB?fLL(ARrn+LJRXVTU)T9ZfB^tyz>9px SnF8Jb0000zy<8>?L9m^7#SI# zJ$nY#fFDesJ{`h{jEsb8z~iL-`}f<}SiO4rii3l5#flY#o%H3)7efPs4<9~0c=+hU zhYvszCSpPo=m9vJa44Yx!l48NpFVv;(SQf=@bH|!aN*mxAK$-!7Z4D5{`@%sCpkJg z9y)Xg;)jTci2C|^!cNM_$l&7QA|c{{HUN``f`S4fY2XhfTU%Qo>FMbSv4N4)^xl@Ln>}1{rUgjo>{Y@v(d$26PuWVUBLqe$5K8%J^?o6 zvwt1dOn$&89pcx-a;3q7Q_ekt@$m!i8U{u-hOo8LqW*7=>;js^;OXk;vd$@?2>`-{ BF17#w literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png b/Templates/Empty/game/tools/classIcons/GuiMLTextEditCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1dea166ddfec490e9a6a6d579c83f88ae9cc45 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X!aZFaLn>}1&9SNcbhKMsvV-~8uU|ZxnwtMR*&L4g@Tf3} zag;tdz-ZGYBO`OcRDt^;`<6nXP1}1-PvDn&#c+N+R@v~(-~6x?M|hb1$QJ<5=)q) zSPGxi0j(2FnL;z`7-l_s@Sq`JYD@<);T3K0RS@^H&y@u literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiObjectView.png b/Templates/Empty/game/tools/classIcons/GuiObjectView.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b832c9a5addda706a973d95fd278daa7badb20 GIT binary patch literal 407 zcmV;I0cie-P))6Kew^*vaWt#`v#>p2sA#?MNM^o%iu1%q zrqA#H3QPUt75>L3%=r5|Pz{8HX<&z%C&J3Wpl1d|AI~3Qets8O9S~?s2;E{}V1jTo zxlo<*_cvxp@Nuv)z%}qP6B`du4Q9Nke&yyzQ)j6lfueyAH9r1v^AWJYMF8P-Ob}+E z((iAL5^+G)8?+gwJY`t;65S=m_WE%5AT)qn#mrD8$KWE!(DsPoC}1#cW7mWY%n8?U*Yg`~TnX<7bYv#J}AC|3ANs z1;eEezt77H{J(FXl#`I8AlQ>7u}I3nvw7mgkN^MwcM#eiv_NVF8wa}1{rU0n@!M!~$qr_&E-#(+ar-V@xS|wv`0?@n zh1ipFexJ+x_B`lam#D?%cWKFK=%oXd=3T&yR`m@kwFzii*n4l1sa{=SQZbq?W(E z|S2B3I`njxgN@xNA{5WB% literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png b/Templates/Empty/game/tools/classIcons/GuiProgressBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a6be7a2edc3bf29b2703a43f11bda58c49de1981 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XR(iTPhE&{2`t$$4J+o#*XQRu3OFK6Gd$Ly8WtCa@<^;x7 z>ois<1UVmX;S*E%`td!x&>WT{`TzH{e*SO#Cp{%WWyM2YIo=E<1>XFBd(_T)zMnA1 zC8BxPmSbm+nsw$XEU;A_a zb@t4uu{mSolJ(>CPyQz=d~SY^aufdidu^@Ftvyld-=Ck%0tpPt^UTkRO*TycI-0@L L)z4*}Q$iB}Ckku$ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png b/Templates/Empty/game/tools/classIcons/GuiProgressCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5c07e2345db200fa2e1b7b69680479df5a0c466f GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XqCH(4Ln>}1{rUgjo;mNs+xzBvYI+Kf{n3-2f{ZjW;h+}@6 fTqTgjz+u4fGg|JZd4t4JpfwDhu6{1-oD!MogbZBxA0%4n+GTECx^nL#!i7|Ow}Bw!&Wg(2Ncq^P*^o{(ukM)?#3nZe-OZgj z=R2?OJJ(^FCN?=7HayN%Lnf0E*p=f9^%xGvj%75>CxdgHvaeFPT%IiB9m^xI;5~L- zrBW#&9*-j!3|jWlXoPybj#{lo!3Qi!>qmllWhtFb3!*4O(^MF`{yitp!|8OP(P*Gj zsZf&WqLXC~a#UFq_wn(rV9@WQ)w;p`!y|^np=Bc^DTIZ{HlV^=H}VV zv)Ro0Z@1eBhr@8Y-7pMe?H+W9ZJu{xHyTAYo3)IC!2ro*5`Mp*smfW35Y{fi8A;{w zdO^w*i$zG1gkGzCmTd+k${==3^MD vUi$k*T3zM2R13B{^S0No^1r;sF98MsBR9*K7k^Gj00000NkvXXu0mjfYqjJE literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiRectHandles.png b/Templates/Empty/game/tools/classIcons/GuiRectHandles.png new file mode 100644 index 0000000000000000000000000000000000000000..11e5a06a9e86831cbe5422c166b98fbf2c7cf68e GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X@;qG}Ln>}1?GZY6lz}aXFOvakO{hl+# zNJ%6}H8gZKx*T9C;k4U)&|&9KkqLkHl`~tKO?ao`vvBv;v=e#@udroVaIW@#@j}I| zBI?j%p^6=hmxWm8wH>iZRR8<`|9ll`1|}W`^)y*Yo%jeDpv?@Pu6{1-oD!M<(pE(1 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png b/Templates/Empty/game/tools/classIcons/GuiRolloutCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ed922abdbd8ea159127c9990b40af054b7806a03 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xnmt_{Ln>}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)ppB&IA*)c^bQ@zbX%lP7=v^5svnxWn8d2M+xB{ysiG zKmSkK|KH#FS0%o`w|7b9t-E)7J+4}pzhlarFkynqJvKEqp@S>fl9clv9%?<3&A?&6 Z5Vp%@anyoUp+M&_c)I$ztaD0e0sz&GVeZd!nbcfzJLENARzGk`Evp`I668WKYsGkrAxPO-;RigASxa* zGBUWhxJZb&Lx&CllZJwVg1){!Q5tM*ZGohxrzgY)MpBbEK!5=N_+fLx2C}%~00000 LNkvXXu0mjftV?{> literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiSplitContainer.png b/Templates/Empty/game/tools/classIcons/GuiSplitContainer.png new file mode 100644 index 0000000000000000000000000000000000000000..752127aafdaf38a5289f44c56a87d7866fc26854 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1#cW7mWY%n8?U*Yg`~TnX<7bYrh~M2_ZyzAw z`*Q#P|NJr*43|FqJ})ou|Gs@nW`}}WLXv`DPnN{h2KB9Sb~O^gOsf?H7+542*wUmc UMA+h=1I=deboFyt=akR{0A=$xqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiStackControl.png b/Templates/Empty/game/tools/classIcons/GuiStackControl.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d34ffa36415d4361fa416c49e4378be6e79d93 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XYCT;XLn>}1{rUU*d-Lz__H};_IB*mc6>4f~8sFPr{{H-Z z`$?06SWNd+{{3}(`+A-7cXzH`x%BVLOJPUeH90x`c`@mN!qayY|K7G@hJ+*U`+IvI zKYW_}=i}q!6A!n`+t>L7G*6f?VQ(|@}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTabBookCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..41e09bd658322ffe34cb513787872d6a5da1f2a7 GIT binary patch literal 466 zcmV;@0WJQCP)v&<w9{dEwjF@8Hs0+??OOe#fHW-`{`dPFw&YWI4YuFBdPz zyo6F@K_&?G_uoG_(l^n~E=>h8{6f8eHb4Z?ZTS25FI*_MJRKr(c;B&IoA)70A#C`E zWCdL0^~<-FEk($J*lmD|1V#E{O0mHGfUW^7^7`c)G%2_Z7#jZmo6$RM`BHa7PcnlHm1%VcIY;kSsNced>SsQtg7Jb zY474`&&|V)W(3rRuV22FW!HcG^3BrDEFjEVTvC()2LK2#0Li1(^b literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTabPageCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac58cc276acae9e6b0cd3c625ffd617946e04004 GIT binary patch literal 331 zcmV-R0kr;!P)i(r9Rhp1kCpdvecx_uj{j$<*UpvM4jnr6rF_L`}1{rUgjo>{Y@v(d$&o_BTldN<*hZ{D~(+oVwZ z?afW&>ThrMR)4?8%q%W0t`qjhooRRZ`?~M%WG5IFKl2F>4_9D5!OEqy+HoV}We-P3 zN0Wn&5^FT(wN=Z$NLEx_*ww}56L~Cg!ZZdZ9tQv1tQDJnKD`OFo59o7&t;ucLK6T_ C|4Tjq literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextEditCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..114a30e5f992be5b3ff30a58533415420a6ccc90 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_r3fhE&{2`t$$4J+o#*XQRsjqtsJVy2bT{Rz}6g&sS7c zeQJM^VTHuQC0AF6FP?e*=1tB-10y4)IV=mmy}4;z{q4=(>hJfMnZ?D$=hQW94qF$a zsi9$!eQk|t_O&xJ3?Kjf{XPBsyrU}_FMBLVTk~y#%$kyG3_RKk`Wx%ku34iZ<0Y^@ v`Kv}zRWjqTvaBqvkDkpFpRE*CIKXgMCS`i<&)w62j%4t3^>bP0l+XkKdQD?V literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextEditSliderCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..27844cf39a7797622d7dc9d48f2990146bc01300 GIT binary patch literal 289 zcmV++0p9+JP)7?*lz<+9xChw}2%nG| n4~#%eQbaS-Jn@mN0U*EtpQ@dc;rzb100000NkvXXu0mjfzeso{ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTextListCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5369870c027f94652fc2ee400a62ff5a146dd72c GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1`FMIJDzI)~`1t1L=FX70vu2%QN|d!IVAvnT y&d%P#d!nYPp|jD&;MJ0ek5t@(CYw7nFf#Za5bu89EU_AB41=eupUXO@geCxr5-=qI literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png b/Templates/Empty/game/tools/classIcons/GuiTheoraCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf9555650d8a26434bbfc274d4a19eaff565a16 GIT binary patch literal 636 zcmV-?0)zdDP)W3FN)+z4_+*o>3G<zC`#<{k*n{x$&p>h1fAMQ3hI`?k$3N(n(ND+-mS zy*S?7Zf8oreEI}EWy9+aA5WybcYDUSg>5lznWW#4=Y`I)Sm~aWUp6*9&YwSeNWd6O z`m=>6ge#cM_|n2cDy74j%eg1`m@V$yy1Caq0GQyG;0-32Ei5W5i&4521TU7CWfXBr zZD!ewjXCzz3YlIaH@0@J z)yDxItp;Tl+=1Ru&^&b-2VyqRNs^3KW4L_q67E26CHNj{%gJe2rvMv W(@I4HSw)cm0000}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png b/Templates/Empty/game/tools/classIcons/GuiWindowCollapseCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..09e99cdd1341ba476ecc8d8902d220f2eda31f27 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png b/Templates/Empty/game/tools/classIcons/GuiWindowCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..09e99cdd1341ba476ecc8d8902d220f2eda31f27 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Item.png b/Templates/Empty/game/tools/classIcons/Item.png new file mode 100644 index 0000000000000000000000000000000000000000..94c6222dc91a2e4e9a7041a39dde492197a633fc GIT binary patch literal 766 zcmVNgkA!{dJf8$@^$388DR7l#$!|HPAvkiD%b$1YoY)z%j7v;a23(}uS9%HfU!HQH~AGKpC&1> z8mRUI2af|;1>kG+{tXoA5Jkt+Y!0L2AH_r&K(ZhH8gwmxBQ!=E7jX0hC9MLB2_Ulq zm@0i=74UG;OTXWoX<^-ECM5u`2lsleV4~|HaQFz&&;TU9+ca&i1WZ}}FoWB};4>+S z;qpHKreHU&4*7mPe(QPHc2Y{!)e=ZOU}@wzjODMWH|D>NI zw(9L?y);Z|^Aj#RM{5lBIXJOS$Y&2E$cGNkwUFmUX&5qddbgr2>Y z=WagqPPOee1Ce&UIaMGALC8Y40Kdo^l1Dj2AwRgxW$994XN0hs+P3kmS~qFx)KEns&@Pfu!p{DoRYmxjD0*eDkQl5i0=&3h5{5Skg%Ng+0NB1xg8|>8N;)#nmp#mP6gXlmBdn6F9LdVkRBA;;r&gTF wECXyVwy<-D*g!{^rB5}o$X4TQ`yT-Y0DX2dCq&dl%K!iX07*qoM6N<$f<*dNqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/LevelInfo.png b/Templates/Empty/game/tools/classIcons/LevelInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d757686c028acd2b019a9cd66015d1883cb815 GIT binary patch literal 744 zcmVP)e$)b(jE1j ze!o{GsqPY<^S=JRKb}{@pTFdd6n$?I_#Ep>bA$|G9xDr(esihMF+ksYaOsyLQ!|Jj zOJFz>g-k-TTtad6GYTKxz_IE}B$}f@=I;O<=d^G1c=F_>t1!ZT9QLa4x@1U_gnHA) zR=tH>rH0o}AHiJvvO@M3IEW$wM5Z2)bL#xHo0uN)VIu5-5p*LqElC1^z72_oVh+HoD(4rjs`T03~E?jeu@1024<%Wcr_VrRf0@4 ztC4Yheg8J@gcC0m%6>aCJ)4}Fo)DSY`N*IPhjbO^k_OJ6FyK*TxCjb4+YVqkGD@{N z%*~vbQHlq~J%p)v8FH8EcfeKpj)m1~1J4&1v0p7N5fktBnD~sCb&(myB;h@C z8|Fb9<)1C&Ijd>mQ{EKLm2X+5@)b(n`0Fvr^q69&PK!PBs(9KwFz%Vlw*UE<{^L3S a5?}z(x-J`GpTO||0000LQ9u6@NgBql0m9vtTC&5wqwbsDsYU=pyPbs1DBNAEdR?Qb7nJ*bmL|cHP>7rY5mVxI7QDJOiiAd8opsIx_q|MW5`X z{d6hx)Sp+7s4Tz?KN3Jxd3|LqTVH&!J=`}FMZNRG|_Y{}+ z}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/MeshRoad.png b/Templates/Empty/game/tools/classIcons/MeshRoad.png new file mode 100644 index 0000000000000000000000000000000000000000..8f33e23f4c646ae959f28b9369a65bd473f26dba GIT binary patch literal 430 zcmV;f0a5;mP)49x!=U_*%;Pi=em20B@C)$a43}$HZo-%o z!3F>|g92l|o`JT2cYp`M1o8Oc6A<+P8arSY^ovW13HSwj6V&|Y_a6pkW+sNefB$j8 z#2A4t_|HH(I1hAz5hy8x!(hw714Qfev3Ee>Gck|}fG(%Z0H7Br3Ij$EapmoQ27mwq Y07tu0zf2eS^#A|>07*qoM6N<$f;}CoU;qFB literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/MissionArea.png b/Templates/Empty/game/tools/classIcons/MissionArea.png new file mode 100644 index 0000000000000000000000000000000000000000..91bb1e219ef12f670097cf041707ce3d909f5b81 GIT binary patch literal 591 zcmV-V0HVR@$ z(uuifB50#nXdUdLsbc;Dv9J(C2*P#O1gvcQRcNkC5wA* z)402N@6GMr9%7@z&c5Aw-}~M-@69NTR!;%6;%?*2<=~I+PUO!u0iYB;imbNZv>pTj zzv%JBUjI{qeL2_Gsza)Drh=u7-?+S{I5z=p>{Ow34X!*T7{)S*Bn>lnJh{M7svjny zp2Cs*EWb!w!mC5&% zFmES%B_<-^JtvbbNVGWUdhX!l=n%Q=dQ_=gb`58zhv<6Yzz~M9N;`1{B$p(!YzCMI z&W&<&0Q)2`w!LTzw)$Gg+B+X%Wb9QGJTf+p_J@z_epR1n6j3#$vL@9(h~oFW{HF#6 zn|#t*#JXUs99Zl7Sk5dUx49B=F3wM5@6Qh2OwHEMgG9x)z>7W~5+B7M`KI7-Y;7!) z?_2#a`4%4%@M5iYg~0Pr`11MIbIU%)T%2DDNt1$=>@RZEuwUN2m0-VI63l9LJ5u0= z&g#)$BH6}F`n~j-Th+J=kc^yp^}|mb5VleC(Q5E1eH`n8l3v@EHEJH#D9p@*E|U=4 d>pK4zU;uA$%tZuoq2>Sp002ovPDHLkV1fig6yX2> literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/NavMesh.png b/Templates/Empty/game/tools/classIcons/NavMesh.png new file mode 100644 index 0000000000000000000000000000000000000000..056d3c3ac9e087c6fbdccd35253f63341dd98745 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr-fh6C_L${{8v+-}7Ju zZ$iWm8RqjlJ_<4SOEny4$m!ZBX_dtw$E@LXikXd}Y0u(3&OL{^fSMURUHx3vIVCg! E0PJ@lTL1t6 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/NavPath.png b/Templates/Empty/game/tools/classIcons/NavPath.png new file mode 100644 index 0000000000000000000000000000000000000000..35b8372aec4877e23bdce467c6b0ab3917ba997c GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J3L(+Ln>}1CnyLRWZ(5qxUggW zfi<=H_TAqO|L0l4pmz2*tAek>EXUXT7`unEf$7(8jLu(jZ6XyoYQ+{AE!b-@RQqYM(0->NRiJ`krQ z-msUch?7-shQEc(23Khho)_f-YaaLpD0mheYE)HPkh?)5;o`pg{svYD%^ZxmEN(5x pWO$Ra=n|90;*7iY=N_rUU)J;OXk;vd$@?2>|YSS)c#_ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/ParticleEmitter.png b/Templates/Empty/game/tools/classIcons/ParticleEmitter.png new file mode 100644 index 0000000000000000000000000000000000000000..e5489fc70e7973f22d679349b713b9920f422ead GIT binary patch literal 773 zcmV+g1N!`lP)VHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/ParticleEmitterNode.png b/Templates/Empty/game/tools/classIcons/ParticleEmitterNode.png new file mode 100644 index 0000000000000000000000000000000000000000..351e4bd729c5f960cb2836069e06d20ffc63319b GIT binary patch literal 426 zcmV;b0agBqP)%%=$Z={USRNNJP#xdz-$F|1_mBM28Oap z3=DsPzUZoAVEFctf#KmBn8gL7#jM4zSd^|+y3_{#E^UE7#P~O z01f(m0jSOqXut<-UO*Vq(ZawW!V5IyEd#^LTMP`sJN_ z_Qyb*fg1k+ZD)T4(hO2kh#ng(SOV67feR>n`WOSl`YS;0KL!Rr2?ho(pk3eo89)OP zuL1H5-~KQ#%sv5PPXLR|yH^00BO)n-Y*_$JJRm0*g4j?o1Dxq#z%moX1^@&Y0O%%t UrD(3ElK=n!07*qoM6N<$g8hA+umAu6 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Path.png b/Templates/Empty/game/tools/classIcons/Path.png new file mode 100644 index 0000000000000000000000000000000000000000..945102557bd5c6900c0447170f527158204d13a0 GIT binary patch literal 323 zcmV-J0lfZ+P)3z66@GmQOC-(!c-w-B-N#5-=9M$O>@48SsHqNkM?H z!Epo@z!sQ?JM-Du7!wmMjt*G!--%qpUEtN3=IqQOy&LK!BBwz=H2%%2GPB<~yN;5K zoQM?c0W?&ePQ(eLB1U3TkCTddd-F>7Knu0pgJKO5aR9FWXb{IzB0H-R+jNB+-Ndf~ zb(A>6(E<~E?=+d<+0WbcEP)OiU?NzBP&z-4-{=IQ;66^NJy{ZLYN3(S(XeubUIkgW=9FHN+sO)dOTU+ z{q!*zf#qr}ojzG_ER}+3ni8)N2)!+vvOv2J%19mgbiwOE#OF;9u+fBftQbLp~YOwLydc0000^bM*{px!ll*F>HGNj#BwAWESvbnA>Qq}^69PBNM7{Cqn* z->eeHF(`@xSvlA{>Y{0*Hc$ts*AFju-E0okkti|%7Q05p=+x`mU{y`d(xpJ1K2c^zW^-q3!6B@ZTpXW3orn+ Ws_E5fA*oIP0000L5e|ZKrI*yotSW)P*f}0YO8%c-`%yjUV8>_^4xph z_dd__-M#moCL*YXrfEi&87we`2)|WI5F6SNc8$7CV=QX0#5)ok5{a#d6e7f)NOVag zI3TLlq_Hp5$rAL5qz^=jmm;NW=5y2Nb(1DuF*r7j2aOTJ+&s`b0<`%6&oD7S^Z`AC z!0Z&PSF4B9z>mNro6$w|v+8B;=5{A@2QV=XTVIT5hcl$Y%MWvbxy)QP*Qlyu6W#d) zI`ms|vqTE0JX7;Q| zD5E!uPk_4zot&_%0S84lOt!Yo$5&7Wse54mR8bbm$u#!NF-X=hJ<8d%NH#<)i>!~; zhsddE{tC5b#;!)8KLGh6kW8t)WGkYZ0govWc_7E`=f7QPZUz~=QzT#JEWDM>y%wRl t{EZw#M2LV@3bT2u_8zn}_)q)_FaTq_`PI+qmRtY;002ovPDHLkV1i{@+3ElQ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Portal.png b/Templates/Empty/game/tools/classIcons/Portal.png new file mode 100644 index 0000000000000000000000000000000000000000..0dec3b0a57243ce5a9672921815bde55437df29e GIT binary patch literal 390 zcmV;10eSw3P)PXD ze*5)nJre_kfMNq!unGS8`&Z%H@8ABMtgHf`e*9nn(ht~KSavcqF})z@0-$Emk3W9I zOY-pv2yk*T$O#HE2y$^LeEj}B1}Mja*MOgY{^$a2%mQg*WMpJ`_VFXbi%*{z_&7Ki zqy+@HfpWzlH8>6U@%y)o3{dlj@8207zI)fW^2`~=<)=?G-gx^9#)eZdHaQFfzW@G>!Ux3$2xF7Onvj423D<~Aj!;6v=>=?ZEU;V! k6ZnP40GJ%IdVl}}0Kid_iO2v$(EtDd07*qoM6N<$f+oYJUjP6A literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Precipitation.png b/Templates/Empty/game/tools/classIcons/Precipitation.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2cc784c247cbd29306795ee4810d2e07dc61ed GIT binary patch literal 381 zcmV-@0fPRCP)IxPd1{ko5@H0FHYGwvn@#h~N&j b01#jRp$uqKZpxl|00000NkvXXu0mjfb5D@a literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Prefab.png b/Templates/Empty/game/tools/classIcons/Prefab.png new file mode 100644 index 0000000000000000000000000000000000000000..6786bda75362d46d3c2d6566550cb40fa1703e41 GIT binary patch literal 688 zcmV;h0#E&kP)@4JsBNrL?}3Hxjr#uzT!W`)KA=Ou>IS(#N-S+aAg z)V6fFe(hpok%!*(Bnq4)3fl=MMB!KPxXp;XLnKp?8MLf~0|JUf%76&2Ix+4{PoFXk zU4_ab@X!Yd?ZSV>=FSu@7>e|Q2|J`DV&Vjm8Zw96u3(bYA*lvTGmnwHiLt{*r=;_m z;NkV%MzXrLiO=6Q;d%i=o*;?|q@rac2zOpYb1vp&SC_?_(+l`fdHvaK+p_X=)v+Q@ zR?1K`4QpK&8$UfbgBSq`sU%W5m_d;s#y+hPStIzFtXa0Xh$nDiDe%43!A9yBBhF`y4Ly!VR^i7x86jv~g>>*B{LO=()&RNA{32MpElta2vl&e#S{5B|LZ1tn`H0U^CYI2$f z;eZ}TaM`dRUf!&>IENim;uIr~nBsi*X#+74WI7#@RC?37=HUYVb?saqo0Pg@Q;JAv5Ip_msaX%GJUl915ioq933QZttb=D+@9`@PP;1sDKp WIwKds;8xiH0000b@?P)T2<+lOUoCOL+^wy0KS0s3*Zmh52(~nD7o}nPCWT^F+Yce#ccM>>h`k@fucuA98qIdxZu$LJn;TdOS9(H5(r-ksp6E4I zzvyiqtgo;2R=ZuSKIvjP2yl5h-Ef&3Ft$LP{XYMd%$r~mMG-I8$ZOJ37I8x%*&o36B>$>~b@@<{pxmaH8>_G597_)zGl`BmI%5Jtk`SzK>R` zRqQWWLZW2?Vm3>v32seR*f-js?YE0$F>7UaRZfr<1Y*-^B<{3M5Q?&*dZl*Ju_W;5 zMY<@8MfC}fhxMntO+iM|)!J(~3Mb;F&S91$h~gMm(Nv0M^lk1xxl5pG>dPw&t1BY0 zxD(=>_);&vM{wsaJSGO^rxO+(VvgN=%F=<@2WXLi@I z+152Ljb)KZIb9$vg%zYAsP;o8(M==7`l9^;?H5#EgV3lC5r*c6>O%l)yZm4n#8 z$Qpt^ygXT(Nk!j)!dwF*YcasCUwqd46u72BUx9?=6l;tl8bGW z6Og3NPD04dr6+ojW_@#cjsM3YJyq=x-HoC}fK!Y#5JCg;nNNB)fv@@0Hq+xjw$!z^ zGm4y`YB%7r#}vDm?53IFNs^$|pDst*r}K>n9Ou3&lnR<63rH9ea%E_l6L^bCR18c3 z#U-W+-nC%o`R@uLT%TSPLnI}`!^TTF%WQ@~i`yiVATCK}o()zm{Lop?eMd@{b(y^n z8*Y^585o=I5=3W|Sb&OV#H`rtNSoK<2`DHR6QREWpx**Yd8Rdosd;L~<8uNoR-18p zA3CxLG}XZ&7H9t);oy)2EXH^<4#x;;c2P6F>*sOe0FUxQGxz0RPu)rr{1spTU?>zXBGx ze&Y%*=X2l+gNY9x-j8o>s{soD*$&1=<|r`%N(Vry07yT8M&$*V93#GjR9#aD@;4(? zTmhO^K==m`FW7T>!wW`2Nf~AUnpX^f;wSKCM0}YE20#WdQktCs0t^81$aFj``0tkh O000056Lr literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/ScatterSky.png b/Templates/Empty/game/tools/classIcons/ScatterSky.png new file mode 100644 index 0000000000000000000000000000000000000000..52257b0bc2c5c1e787dd2ab6a1a6b074113d6a79 GIT binary patch literal 624 zcmV-$0+0QPP)b?qW16%F51f1M_kHL5&hLEZI~oz;IHHwupiX$zZ=5y7`heA?C16T&twivB zHhmIMv~8)i50hk;l_2of`QAfdd<7VM2{Z>>YF`v(C8*y;=n~N0!5h0kRRwT62*sf1 zzW~Z1j8p8g_Z8Uv1pHnGDlkMbFW){qP zaS6!mh}*dXUErX8HX)(sa8?I`p$5!+m_v3u2Zw`jr6r5rliY+^2KlvbsY|rVIZ*1c zZ@c?e6dVly`Fi*-)T5CBatt8y?C}dY;5P3#e+==`lTR!q#5pJ|nc6yZoT>8_N)Z-$ zSy^61Y&hqQZJ#x#lau}SMJwv`@%?8imc1RKpJ}44%`A<*N>D2Kji!ug8hSoV?7vm$ z6h9(xUB0q^r)aQ;&rxzon2Aa z`u7ba=jU*`){Pt8HxX*G127gJvF#T=TU%STxP+Pl171upNFWh6`mVM`QN``@czia< z;?e?MPZ4vC=e5c(9e14n2rvK?(bt=24X`W#0000< KMNUMnLSTX){upWi literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/SceneObject.png b/Templates/Empty/game/tools/classIcons/SceneObject.png new file mode 100644 index 0000000000000000000000000000000000000000..59079e3d7b7ca0638d6ce036843382f6bf8bbfb4 GIT binary patch literal 369 zcmV-%0gnEOP)J%=P)hh4v57VW45?TN@jz5K^M^_{>CS{{_+}fSa@(l}e@k zdfmqIavfn5q1Ws4Z>uO%jez{KLF>>otJd23N|xHoYZu-39?E5d{W^sNv@R4y;j}Rt z`S|R6=yqLbS_xdjaOfipqw`q=j;g9G38YNmx*lxXM76enAQ;0B0?aZ-UP=;*z-|6u zFD;@{DdYX^18=V%_$J3*5rHzPzHaC@^K%sp1|uRdV45|`E6s?=PNOAHsD_#GN#b?7X zw&-~Cqd{hr-lY(t9}sBZ4XF!S29`p?qk9~S44l=iD!;R#PHEEQv^iRmB=G4x9*5BA z&fmC86a-Niv2Xj2h*P8NJ&bv+*+1xIxOhp!xK9);DCVb!pAgaw|&=hX#J*JG)P|p3;=of-|S?pNDcr1 N002ovPDHLkV1f}@2w4CC literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/SimObject.png b/Templates/Empty/game/tools/classIcons/SimObject.png new file mode 100644 index 0000000000000000000000000000000000000000..5c143982fb3bf199455b52f352ef9c77b3a24241 GIT binary patch literal 358 zcmV-s0h#`ZP)F=Mv4A}6$zyBih6H6Tkx*#X6_zWdpVEF^IjUog7{>5#8hK?G8t&=4K z8#_D0v&YXE4(~h8@aEN9;=+K7n~TBO!=8bSjSUo{3{oRJAxg#o^F@$<(|26XknK>S0r0jH0jXFykv5s26f0NK2C-A;zvH|`RS z#>KN&f@uy8c7~7`e=wVkosEH&jgu}1{rUgjo>{fw=^d`}7_}IKzB{QNCm4=xK7IG! z>mO-J9(OEvbUi%2d^>l;nbwL}2Bm-h{&gxUCOp$nejbt)>aDV>%C+tc`xc6(AJm7C-`}5m*BR88Bk4As1J+mzLe7U=- iw;9~LHXA!MFfx2lbli6~+`wDnJru|C)u1>nY!R7J(4vLeqSi)>$RG$>1Qk6NtqR>Fg)Jfo-Dxi)DM#B_jEy6q zlc_l}nmRi3b*|(1K%@ibyZ5{2{{R2;_&!Z3g{En&F}vF#YrA-l_zl9H0X8thx-TnW z7n_pnqcz zRF?18L!Q+HF0zYhJe|g^QWL3vz#B?l3`G212E!(Xr;Uuw7?_wdP*Qe457p?4X^9|I zSCr;B=gwqe0NxMHaK~qcjBM2G6kS0J&XffrQH^wK6i04>Kw3Pj33>wlK~KY@PI^Zo zw2nw)x9$Op4Sx9;7v<(Y8(&A0$go8TnGPc(mT9=12?9F0`|0pcfi+c{x&scls7K8aYiG(584?n)>Do}a`C0VGp2O#BWQdVL@ zVwEcd(Rm@51;3o$sR_uEI#0+*QzRRsS=WR?FDl@L@9!2%6FZq8c*FRxhaq45$2{rJ z&OG?pEm_#(Wo=G_^ehotfZkS??#ZQ<45lYVNwzsfGH_8G^~aUX7ICZ0Q?m1Yg5QCV z4wMVlw0a61;#tD(q3@#;nRCKo(xj#L frj4%kKLG{+V2I-QupMI#00000NkvXXu0mjf-GfkH literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/SpawnSphere.png b/Templates/Empty/game/tools/classIcons/SpawnSphere.png new file mode 100644 index 0000000000000000000000000000000000000000..df46d9df567e4b2d1a7a00403962c128465a8562 GIT binary patch literal 748 zcmVXVP zY{RzEAkAoKL|#NSNs?|#t!`A1g0A~3w66LOB1Tvmgu<{c3SBp)Qc$R@TD48*)a7*9 zXj4D4bKdDFrK{eL^PQLXJm=v(=RB{3eM{dBAGuyK_U_%|C|QuqzcCh}t+QydG~=*Z4_k39I&XF$^D`sL zD>alNaBmdJ%><$wVZ2{^gTcE`v6a(WWNw(KnXc{7xkPd-JYPuW#rw#o7;L&)!Z_h3 zY+bXHL%mGkp{{?iCo?WP;#tL0`GfocZt|0VHo!Sc z%Jw>IW9yaEV$M7&?lu!}&3P$D@a)M;PA*9Kz+);_m39^h&zVQX-R6dI&3tWA-@(W9 eKhOEM00RK`vkX=t8G%s%0000YCA+x5OwjC)wxS~3Nla#I##CAp+g$1f)Or3l#y;ZbtN1A ziz)l}_PonLM5_lLUU+}c_w)RFe+I-_T3YJlcqrb*Z+jFB25<8pR=h2qC@n2*vRbWF zS67qGW=~dBRMagkEe-t>P*YPgpvB_2-EP*`*Ks%;D5aXp%gbBk`;dUP_5&EC0wsZX zJRXwCB#n)Ygu`J>CKC$_3oI`$M_V#wF zs;ba;kw}D0Cd2&vJc&etnVA{V>GYUr{Q`<=zx8e1Aak*TSm6a8$$mMcu zZf+J@3j_k#!{Z!EMlg|Iy;K%&Gi+~RKmD#6N~H>A zoBOZRdF%k(?S;c$C}|RaM*uDu-qi7Zy8++yuw-@2KIx^?u>p6kfwf+QQhxDKD5`{^ zS%{@VhSv=41{9_p9DB>)k}%doOvorIH;=tzJ=T@T^i7SP}2q z8E@Q!q5r~{By;dn)-@@m55I%NR_L#pciQZEvu`__&N?CP+b{N)00RKLi47*lu|#qJ O0000e3Rtp;oNs-Fc zCIm$Uf56HzA7GU}D5i^z_yIx$?e!P5vi1k8q9|gPkY=M067Ug{cs#S&l_iN2L2%%3 z=FZ%E?!EH>EQ5I*8rXbN_~S?=vbBW5$o_eRWK{*@JE?+_P)Rs?q7c#CtgVaAB42Co z6@lDeBg;94^ZZae5}6XbyG%AN$lfjaaYfb+$er}Jh%ML)v(--(TqOqq*}W!TPsqpZ zxDqcJyqo|4 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/TSForestItemData.png b/Templates/Empty/game/tools/classIcons/TSForestItemData.png new file mode 100644 index 0000000000000000000000000000000000000000..183c7e53256617e8e579642d5f5489f142fe3f5e GIT binary patch literal 436 zcmV;l0ZaagP)^#4OkkZr zoIsdBoS^CdCXEwVC*XAgZ~@zHfEzFZi5g>U`}`h!A6^?16Me~tcig+XcRwI>&ISKj z=JqN4t8WUfjXV5m7=bB>$r+tRpPOL+qeBL+l%cE*_fGA#amN9~vGj+)f&wJeNhTHb zA_tQ`gMk86z=8zKNe4=Go`V={#m{FD^XA4!R_g|=S>MM{^7F`Bb-p}lZ5)xJ8ma^1(4rZJ}%?xXuf%$kF zQxoTBek5z|4aX?@d-eYPGrhltzW#{KDtNo4Q_3b=PNO>x@X{M(Ojp(gJMSC1lAp$Z eIH&7NfB^uSjkLR|Fa>7-0000Z;WeJ#$E*kSvGD6SR#ze{Wt=ccL_&%{k@ja+>@CR8 z*PUx^VJ?&3si5E#Nhs;5cGa+$YeNr=8Y3lU zKuO80V4tgwxebBE09NB+L=zDRi746Ms4S`YPXPq!4mPU@X)n)lnbvR4IZVYe58KOVBE_@GG*6u16irttT{e40L_y$-FgPUAYH4 z%4tmOQD}43htwmgCdH$JDh>6Xq4_ zq!kh(=GF;pwH7z)wr^~TT~mc#qt{()x{i}|%~+0vFywoRVc!s5zMn{mW+eV~0{U>v z25Th5zU@2?G zAi^fb@bB0EdgrMQ1_TYT@3j;7_ve4Ul8`dPm!Dr4GS;Lqy!`wEYViO0PLu5ofCjBc zH-H(&ka3i)U}R+U`0)Kb!{#fS8D#k781n538Gioy#c==CLy3QX|401$%U~eqCU^1C zu17aeV!^1+Qh=G6@xF^xva*^6@-&ObiSz{|nQ@cH}a2Y>(l zH#}8$>;pU<{QdJU;qMQ=;HC~wFRZW_k$=jXqA zog!0kz%prN8z=nx^-sY^!;|6b*Ka@rzQPSzynh+P$!n(>vh6Y$7=AM_eE;^1A>BEd zL4sQx6l35t!l;&Fa32^D3K+>5O3Mq&G9=o^F>r8jFmQ5mFmQ2lGF*IknPKYYnIJWZ tjJR^6a-3cQP{n)#3Go9XrP&!EzyOQI%$aYhwp;)J002ovPDHLkV1haa8P)QQi;kO_zthD|R)cPSPcI(=W3SFpFMT=bsx)Ickq6mVD6|88r2vRE6 ziYBHp>2&5zy!Q%R`6Y3dzMmi8Q?OVjAwbp)0O zz>;P4PMfFg@%m9LN=!_C$EFRf@CQR~1w!!Av}D5yY&)ERVT2I$(V8wc6a(H__xPX_ zh!BDb@cFBt(|MURh}4F$xwjj(@S!m4z^3VQQdf-MeSj1Dux8VN6HyF75L^ao^lF01tK*R{5)mZwmj8gRkAsyJcru5CeO}+QU#ZQ4nU?D{tWm(s64f6x?UOo^&Vn3p+Bjhx z5?lC{Rr!*{z2*a$3O5t|TNK*6R1bjRXLxJ0;zr%R3IonI$CDFQD7ikfRjhU*`yS)( z)}X2Hv1;Jv)wvPGX21La$kB&kaJJcFX-X9mwyU7kDz#ZK-kE9hWNv;$h^OF>h=PxF3@+DL$USZ-bZk@n1~1iD=Qnr?>~P8 zZrr-r4>Uv`=#oOP3;zE74aOjF`^Y;mMi++xZZ2*HT`e6378aHQpdk(@UI2kdx1NJB zx;O|teF1S1H#ZN1jFb$B8INhe?Pp+&F8=!MONJw-_cL6+aURSU6adGn14b;Ex#&aV z4pscXiQNp$%*;Ro&N1-w2{LG^>VSk5FkEo?)NL?E7Z3H00nI!G^2}yfQ_jmgCfuX5P1F)98L$IF8B?`+ZG*xy8y(7iNk=j1SFcje*MDm;^hkv zb0UTdQkq?{+71J+-@aye^!PD|nFve=4_F}ajZnOL>ktv15l_Waste~heti6{ z;|F}3Icz8ZG=~x@AT4xDh>+vJ47}%r3J^Fcp3!(8fp`BiPXP3{%dzdjlsUOg1h%nW zI(KQ_gE|HTwR|xem8Zhxu+^-2fR04C!<1U`AsI#m{uHzMT`}I1)A3%?w$(_0lM#`d zUzHeuq!AtXhq#pHL}aKf%5E%&6?1 zM@J$_t{hNVtKY0dI?={=UKG~0RL0tNJ&@eQY@^ld#ZmGZ$OJE{!%C88AvBa>I4$(jHF002ovPDHLkV1n;g?eG8q literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/WaterPlane.png b/Templates/Empty/game/tools/classIcons/WaterPlane.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d28f85400956486dd679e4bde74967ba1f63ee GIT binary patch literal 787 zcmV+u1MK{XP)(KK@^_LUbCCTm>6SX z8WpdJHI=qrkSY`@^r6s}Lg`DP?T;+hLZDJXOz{Fb z6%=jF+We-RA&+_8x9C{b-X*z+g? zo)0@m*9u2T_uIa%$kK9JRRlt)$4cm?dvGc2mO~?9vrjPzPbl%UR)A8%;JOm-tUQQd zfCyoQ0Kr~JC37S8VVV1>sWnT8Dwb}ET1!=Vhar&F#Q`3pO4TZsnjXPEksIveLw+!m zbWf_@MP1O%AS0a&-ZU(pk?u+&&V4^RJ#R+Bp>R*&y4m@CMIt>?c1RkHc1I$ux(QUl z0mQAhLNNMnix9h}8%y)|Gm|Oe0YJc&-rhdeJOVQ*B@xDindcb}EnZ4k&U~urjkhnC zM~3>@Rb~_bRpwJMwcap_Wuw^!l7QRA>?-pe$}@yn@$bJW+n!P<2`2E zrjYik{N|CvF@?Y6_70BEXJ>{VKOE-~U#%JWox=J?o;_HZ%lZ{XmU+gkZ97a-EKj{J zUDTdE&Cbn^atJd7pDd0I$5ll>ES8FA<=#*rs3=Cu%5Cn6z8)BQ{dHk}JUx*lOdQQ% zOcL=hxotPlYQ|bF-!v_zwSH{~Jl8*%W_=*jQ^~4kd|uyWpJ521z^|@khwjDtBY`(B zo*Wm;l|Ona5t|%KZtPsa(5p4T*hBblhVT4#s?pt$vr$L4k?8{vi|DTa0{}68QZrmH RaU}o%002ovPDHLkV1gt6V)Xz3 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/Zone.png b/Templates/Empty/game/tools/classIcons/Zone.png new file mode 100644 index 0000000000000000000000000000000000000000..117e48ad0390a87e7fd7bcd8f0aee81a8ff8dbb1 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggac4;ATohK?Ki-4wxdAc};Se#yZ zdA%RAqrmZx=S?|Sm?Ax$^j9)BI!tS6i4wB0?PUyg6tH37oMy5FNN%-|WArTQICZLP z5&vfQX>XUBJbYgEuco{#O?~w$uW6}CqLp@sWcfat>78E5785t;_sbY~5B)T$JEZjIFLRIdq|5g!O!Q8B#vD|RTQq65$?>Z@bmk`| u@8aIeaFaXsUF(kMJJ+o@Z1MSj(fq!2jPLEWZqdL%WAJqKb6Mw<&;$U@*qTZJ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/cameraSpawn.png b/Templates/Empty/game/tools/classIcons/cameraSpawn.png new file mode 100644 index 0000000000000000000000000000000000000000..8a060a6514f75531832bd21e099e72532e4e04f4 GIT binary patch literal 778 zcmV+l1NHogP)`wrnr^*cf2rQQ|4jyCM7r z%wy?+tP@?91|!UN1%*mJD-f}?5XFoqh^hAhq|~&V)pfB((cK2y;QpdYL*2=?qc9t6 zI3O1zN7O?Q1gM#HL{kyWuJ|y}JA&ZE(q~rRL`@`WARopv26mq9IE9+rdf0T;FllX2 zH03DDQc#dp1cQ{1T&)2mjy(7SL1R3!Zcl$fw?t=V+rHC$?KlTl=i7+}d@Ezr)R?PXm=(+#;4|N7#4WqK&ibO`mvD+rt z9A;|Z6iF)j0})11VYBXn&bPPX*4>*tQ%rvHVrDdmY*t&M6w;DK+>%1%Y*RFyInA?C zDaM6MEjZz9qbSA0z$E|h5<7*iGIEGL#%rnh*BC)ArF%aPflbD2c zvRxYiE=NlHrMM<$MybQDXeFariKpY&of`W5cyZwO3Q zZevbV_gtndo$Ml$kj^9(u}y@1^UT8YZko2e_cHy@b^a;90H^^21b^Xd;{X5v07*qo IM6N<$f>Q8lvH$=8 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/decal.png b/Templates/Empty/game/tools/classIcons/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..ba792f98641a272e6a3b5a6052c3cc9dc2ab05fd GIT binary patch literal 567 zcmV-70?7S|P)BQyy3K41CL8gi^XC}`S}^OS`FcFSZQO^5d+-Z-hxUJUS40p8~tT&4fctM8tn>b!pCCTUoUKs^J^-@Q0g6A`!=b1B&&N z*~yU!b|z(6j!R59kxV2K@cDemWHR3xTb6}Jqmkt#H}}#hu0fJg8dp`-NeVwb%|Wl% z@&0Z?@_0b01c?xlkF#b;hD}ip=2S|h5;&`NdJaWS*|K3876|!_ai+}T%`Iq}2Gcb0 z@bHN9GDSVmk3b*@HW(J6@avE0(XZh3dRd(T!!X%zn5{K(uwfVo24xJG6_luro9We(;+UgY=tp}bwdC>PMB_Mwv9b>f!QXoAJ`CWBlq_j66z z9bBGlvq=QHUTtZ@CNtey-$JlxG-`Kx$@2L;5$_)Y3;<$V{_Skak?8;c002ovPDHLk FV1faY08;<} literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/decalNode.png b/Templates/Empty/game/tools/classIcons/decalNode.png new file mode 100644 index 0000000000000000000000000000000000000000..f6684f185b3cac485a9bdf9ae09ebcb237c01fd6 GIT binary patch literal 693 zcmV;m0!safP)_QSN*(GI|C(8S<-_C=?3k za=F}V6URMDYr{Ew=%8`1caytC+j@7VmG% z;I*RNZiAO=_hVTR`6|7hH0M{!y^Nb{4g@$ zJP4vJ%lSwoQZt*)9mK#;fg>UtTXzD{W%rNZXXU@^1>Zvs52K&c`u0t z4u=C)t5w&H>o4RfM1)kD{O&(3t`%i&fC)755k7o)=l4$)@QItD| z4oKVOa``^-K_a302=m}xAP|_KeU2Z{<-uTZe1ikyFVM$GrBc%*Pf{2;)9Ex}Z5#aN bw*UhGx+GgiO_=h}00000NkvXXu0mjfGXOk3 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/default.png b/Templates/Empty/game/tools/classIcons/default.png new file mode 100644 index 0000000000000000000000000000000000000000..0519b522075409e5623fe3805a2d8500b260d1ab GIT binary patch literal 356 zcmV-q0h|7bP)c02>=#c4o(Vi_+`<0eK123~YIppMT#GJ3+iu4hcR zoc8zc-}=9Q{__6$^OxbzUsMc~RUlB+h3y8>wDma7FkBkuSU;z$r1AsQ+2_>8c zFu)A}Ig1PzAPo46&j1FT2HYab3t-KR*bHXu1<_0}FJQxeVfYUU{`~Lnzmg@JXP+hL z0u0;#GkjjNdyykXO2p>J0H^3QplBLKBKptJyJ7#*<7i7id()YjqDpwL|ZK(nAjlblQ_`9KD(tCYG&sv{m=GQ%Ylx2k`qJRZAA}N3L^k$#jl8e>_3N?#eGU}r?J0?-Y zX}v20J}Vw>gxl2tO$MKY9OQ!G3gDT^Zd}$A8)1O8>kg?}jGt%boC>KX>?EN;g=fIM z)`x&JwIzNxOI=Fj!s3ivFkn$YLBnj1h2tjkI3_u^!)4<(C5l}y34;ZKqBLDERt(i9ddhIyfDIIWap}1Z*ZH`N{ohYCOpzhrB5Sc%5R=c=X9HS z`jL+UJxE^;ctp1W3>ge73nf0fs2&NsU{OHFkgQW;HHrsRMKeKhwiq1+w8ezYe-$}M zF90PU7E@{ejbOk!G20kVG-;g*HY1{t9moX()^1`JQ4~J@N{bYUK%*eH z42o)zHWi1cC7W6TaV~K7FK7;GY6yo2CvB*fM1z8$AR{4#C?g~vIEb%E(X9Jj-+eqK zTIz$#z3-g!oqNu?-_ubK*6GB@wh&v`U5dHLR)($E4lQQ1@j4CB&bB>^)fAi$jnhQH zK~A@o`^tHl3Mq*$W6xBVn@MI0vqV)jfkIBZ1CH6{&1te&jr0@ha*Gb5ca%>_S@!8i z5(69_T03B5-|F@p8O?ege6jmTm8W--3Nl%2CcfaCS{flKFFTpfeMS3m9eQSErz0t^ zdNarm=M~;Yz1HM5=cJ8Xo*^ECO11)LXvdH1Lg-nLZ<8fX?ivv0a9^X`(JMbA794Pq zz=xXzvWb#BI2E}dm(S916vGZXHZGejkG7yOXdroS9e$jROMJ0>U z(GFe$P&gSRh;nlQMozu75Ou512oAVHi3t`IgphiHn^C?N@r@g(G0Bv; yB8C`-JmC1&Qd5`IP#^z5@CJvgbe$Z~OtJrAt1|RRq zxSV8IIRS!0>gIWkpw(J~qTou&r&u{jsAHD@fO~$^1K;<6b8cwOsR3gQ^8D*~dt)!Y zf4Uj|P(W}GP3XD}a4^v(S(ZbZev;cqIwx!jhQ*}MGzxNOw}a!mRz#AdaCaL6c30RH z{ZMeB_}ZS05Wz>OV9DGi?&VupfI;N|(Xa($CY22u1dyH>r+BJwT30Q`un-H@oVzW@LL M07*qoM6N<$g2Vy0TmS$7 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/particleEffecterObject.png b/Templates/Empty/game/tools/classIcons/particleEffecterObject.png new file mode 100644 index 0000000000000000000000000000000000000000..255a5a8a8a380d988090177168050f6ce1a9065d GIT binary patch literal 727 zcmV;|0x127P)un+_ebn|k2mJG}4nyzlqD@5h1GxEDY<{taI!LVk4Llx7i7;Ail_ z562LVEF!uVd;dXGDL1(}b>{j3GRT@edTD4;=c-A}x(K?`R7ht-~lKnt)BVedm5^XpHm!a)*FuFue5pd6A z#wMyXM~z)R^q7IZ2drTjh)n{wx)S6`!`<$0vlvQ7PkBTl!UW*)%hgT^djX6M0Po%a zWo$+=wu)*!=6+$)A4YI>6;jH`);oh9w@4D3r~QCe476DRCIZY&fX7`4n3e&-p#6KE zX8NO8rBEZ*bS}hH9kGeLBg)L%M^(QamS{(?S0CbJg{rG`t~3GCUE0k#zJj`XYv4jF z^D_jmX98ZDuMsL+x^rl^O)MRyeeKWsOP+Lo*iQN;Ed$5cYVHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/particleSimulation.png b/Templates/Empty/game/tools/classIcons/particleSimulation.png new file mode 100644 index 0000000000000000000000000000000000000000..95bcfef6b6e184a1cf0d1b2d61160325b08a1553 GIT binary patch literal 766 zcmVzGdSf; z1g zG;Opuzuvp=b>7n%Cl}R)Gw;m3=R5bi-#LfP2N1^k+MckA{@+$I$ck~2{o@XI<5&1R z78v_?0)@=KfnlW#+#S7t#7gh_8%@QN)f?O6f*@FoG4SaLWNu$8#xTpWu%NQA($fQ} zskwMynkHOb$IqIQnp-?`w@+0RQ<5YTX$|_5N6|*A(N^Qva4Pv>*YIyp9eZFI)4pU<-8@U*}UwF zFZD);gO+v4VPL1qx%?@0ITC`)MSxqRXb=dIaW`=F9IzULbmQp`{QN+w+gM@bY7#TKWOfk`hBC5dPJ4YSThAPtO02>gb8 z&DmOZ2a<}a8e0^_P#s7~6*%XPvfku}YLwIVl>y+>;@aUZm-DGi&s3&F@v|rhT-uz# zE+f?uvbI!#w1Lz#W}<-;Z|&~e7k|}U0j;V$pYqrj*-cjL#L`xtzTS`8;jY#hPu=%P zZ__LYEX%TKYgG3&QtwNB36A;N1{?0(%&P)8Di-sC0GIS7EDnqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/pathMarker.png b/Templates/Empty/game/tools/classIcons/pathMarker.png new file mode 100644 index 0000000000000000000000000000000000000000..a93b82252b5d4ec3e48c2899dac5961e3984b260 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XyggkULn>}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 literal 0 HcmV?d00001 diff --git a/Templates/Empty/game/tools/classIcons/volumeLight.png b/Templates/Empty/game/tools/classIcons/volumeLight.png new file mode 100644 index 0000000000000000000000000000000000000000..114a7f2abafd80f9b23e226ad11a768434194f22 GIT binary patch literal 665 zcmV;K0%rY*P)F8QMC}R~d&@3+KlUY84AvmLZOO_s!dn zSDIw5)sO#5kue0LW*a!G+i*$-!Z?A@2wp17Ph3rXm_ecD>n4{FyN-$TM>{B6I+lK- zfRiLe5asz6Kwg+~O|x9VK4m{`I4GF~+^=Gg7=D-_PBM%a!3H4RDwMh4c~rCTyy?I! zXc)~yXa#{)7$b;NwvnPY_O<~Syigg05NPaKxNJGlH4Xjy5IT#)D8+OcqriMP4=|X8 z8-Qe8EMJ}+6j^L56_UlEZrNUM;u8>v;tV%@zVPxH=s5rrUEoQ*glA2g_X7QykBX(K z=hwqrZqd|nM@9Wg^p%GdPQE(~a5szKmUY#8hhXznLKm`) zf)|f%oRZxOG7c~|;_d%-O z|IxzSqrYKB?@cxFZ@m@T10O9qVwVbtIAwW1Sw_koA%1W4T*36y=buWdw6Qz(@xAA% ze1FG)+*Tv9Un}-ZvHN7dZFkfkDgO6&{w2Twi0(5Gy)VzK00000NkvXXu0mjfjPNdI literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/BasicClouds.png b/Templates/Full/game/tools/classIcons/BasicClouds.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c863f29f04d9d499098f5ef7db51d11d4fe630 GIT binary patch literal 502 zcmV^-yb0fqrUjUdJAfmi^wjOAs05N_B zxlG?!2gKYD_Abb@7tdZ|we8!x|Nnpg!0r-|Yk_+AgJa>#=dTzx{rJehaR2HnhWGaw z7~b4wU~n-FU?|S0VF+-F2CEMVi~uQfU{;dS5ZJPAr-g)+7+4}BrjX&?+Yb!$rY~mL zxM>}Ozi%)D12C=G+c`1FN-8qAx_B_~bBZyXKY4}W(BXZMSO7YuKvYDmfBMW>495?j zWO(@KJ_8pQH-m|>IRj7}?y9xxS1`PO{fa?URE%NUj?E0;zI|Q50+n0v`pv8Ox|$jT zPj_F2gNODp$jd7-XlVcgON0TWkYW4I%?xYSt@r><3m|X-7?m54(*YVen*Dg;U_ s0kCud1P6e)5UA+_N=h91nF%1k0KWX-npb5q-~a#s07*qoM6N<$g5BcV0ssI2 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Camera.png b/Templates/Full/game/tools/classIcons/Camera.png new file mode 100644 index 0000000000000000000000000000000000000000..0722c8515cba616d2800254124c78f8f12d20ad6 GIT binary patch literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/CameraBookmark.png b/Templates/Full/game/tools/classIcons/CameraBookmark.png new file mode 100644 index 0000000000000000000000000000000000000000..0722c8515cba616d2800254124c78f8f12d20ad6 GIT binary patch literal 526 zcmV+p0`dKcP)Y#T7XtACbORE2c)1z$ zO>`I-W`V`_!z2ZT1sP=Jr5S$x{LS#>;S+@~U%u7@h3nD1fD#B|5@HOmUc6$kvNLB; zR#SwFgA6%y;vB=>+xHo~ynPuW0+SiyQUVy5K#~h)ZD3flVFN=!X&zX!zL5@tvbrLJ zu!taole;a0je|J@4<9$!P#zv`hHYCnGyMAh748KF7B&V3W+3a;t5;w_Sp^veMj-9x z>%_pu#tIe#IrHd&lMG6#iVT;|UtxIk_&!)1>;gt0$q3ZJ2z4$uFib!IrWwp;XG4uX zCI*B7|Nj9o&jezhcnV(P0o06vG}1a3`~|fnxz2 zjX+m`Tm^~&Y$?$Ji+%-Yd@G=dgA!3AiUIhNDVpIAfXVy;^)nNt1^@&Y03tJwZ~0q5 QdjJ3c07*qoM6N<$f>UDCtpET3 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/CloudLayer.png b/Templates/Full/game/tools/classIcons/CloudLayer.png new file mode 100644 index 0000000000000000000000000000000000000000..0cde23bc03b8deb3b642c06a0d2157144613e43a GIT binary patch literal 652 zcmV;70(1R|P)q5X(LHc?WHk7 zhR{DUo+(rmAaaCK+9AbGL~)dG=XMHK(L$+2C|XS3MIzHH$vuRH_O{caxL6YJr#_06 z!Siwbte|~-2x`j6Y&U)Kl)l>MQxMamSW{mo*Oq?KW!XDDt31-hhj&I(Lm;HO%B}nS z%IM=vAMTRfH@OKYeg&HvG_{qnwXw3nE#p`q=^vWx(>GPl|(0)=<_d+Sv*N193*ms5_e$8MGnNRdpBiWPW=7} zEPevK0bp=&U|EbVmiL^GCwSOKEgX|25DL^|^>Xq89`y|%yj8=jVdBSk3m1E?Vlro7 zhU_*rYB+L8cg~2|j|w%RjZMP~-wMav!lQcJ3Z6fEfj>*Y{(UXjOr!&pxn^!xb|j0r z`B~;AjJc`L|6U@MafUCF+x05<2)N7qXL#`)Vi3r{7vFGe0s$D!_&=Rt zKh)_c;OGkmhP}@iQ8Zxz512p%HW_OPRGaV_@Q{*dWP(Nwxd7~f54dCn*a#Z%kcn|7 z!vUNIuoLG623!G21h@b*pb?)}uz(FftXO~g{|0zo0Hy~}9+;1uCKlahWO(oy)kYvL z1Zq5hGcy4V3V<3Uu=5Ec!^u}*;SW%a3vh)2B74q+I1l7Z4raLb6tQUr0e}Dl0G0b% Ub_lorsQ>@~07*qoM6N<$f;jJreE}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/DecalRoad.png b/Templates/Full/game/tools/classIcons/DecalRoad.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe8aab12026074f82fb213774c5916da58b5c05 GIT binary patch literal 514 zcmV+d0{#7oP))_H|KE?34?b}*-~cSB8ad^enOTmrv9n8p_&~$||M~N$iUALR8=xc1C;+53@bGX; z{{Q=%;men=4}g5fD{uclAj$wvZl2RDEG#N8K07Dp#IsMn;nfTROfbgxuU}LwEsYo) z>@65RfBeAk^ZWM&3`77%SRh&|38I81(C>FnKl-dnvwZ3ZS5W(E~CC5GTIKL&Po_5`5#d7vQ<1ib)?LRL2R`;0(xQFQ0lJ%;UD_b~kY@$&+Zn+S~B3)s8>_Qt1=pBO%W z{>lJMiEyl@smhR%lf)n=FJk~yvmaH2k#ORGP#*>fNpVp0)-xe#o*x+I z%V1<`fLAjNJG$C}v?hSPV4*1R4_EZz1AqVi{QwYP07{XWGKRKTrvLx|07*qoM6N<$ Ef^$XUc>n+a literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Forest.png b/Templates/Full/game/tools/classIcons/Forest.png new file mode 100644 index 0000000000000000000000000000000000000000..014caf957604228a3d283412cd358b09840294d0 GIT binary patch literal 800 zcmV+*1K<3KP)9FqRZSj?|t{4bH4kX?~2ko%p8f9h2UfexO&WX0_*a{g{5ifC-b)L z$KL#Ml#~e=0 z{r=NyI9j=-*0O924g0I4)RGk7UmB^D$gLw6( zrP(16*fWzrSL*zg61+Z|6IP_>-n!Xx&ZFx(OfKr0jgGfZavr^Cs?g(6hTm{8+~922 z-A?K?WQI*}lFN%YJtNZ}=<{e&gC+$uO@pDcu#KlqXRq2Z$1+hLJB_6LPG}LZ;9Q$o zfahIpP+&>0U{LZ*Qj_@D_gVAIUE}QIQ7=Xa1acIW3L1v-3uYpM;{oSeIFE>yWQycN zU~~-gz3H$8HbhU1W~X?3O9-bK6X9_J?I|EL4A4eZJZFNggv~Li1Y-m~ZtRsh2EV-T zDfGBfzS_3M3?iV(;ZRMCP`SN$!Rq#*kpUJD6%K(l$ps6`Xd{~ivt2HC)k5#`5!*Jw z%$^0mhk9*czccy0ebcT_uYGsA$i187_hL0r=M6E?!1r>}RhR6kJ7~}^Dqp7TBGatpi^|-w+&m3;d zGA*;4m{}A{l+l)y{#M{eYlMUZ4{7<5n);2*O5WzipJdBrJ(}3c-KrnxXc6PVsZMkp zm~Qey{<~>8yH7{IZ$y!h e-c&XI2rvK#6w_7Twchvu0000BB{wTXWf zIZO-?75qpNNF6{^0C1l{a_?$JwiX#f0yHG5NHRl%q?vHS@8Ad_eEjy}+qM9%Yna?7 zTY&-E&I0XVAzvskS8iSi{QNyHEabkpiY2+fR{gtcSp}r&Y`3tmVcm}Ek6e~{HXDa` zA5u^%7tg76O$X@MvT@tJJ7a12e*vCS=?Kpq5$-;@+V|#t(nwYinnFNR8&DBl?4~Jz zbh{-=f7Egi>a6#6OV7t(I-O)x1>F#u+Jx!d>pq{;Igg);{G&;6lzNyH19;*?JGURd z^*S9BRCUQwcUP5$v;NN5JD_JXEyfaJ0SL??TzUl}BA9r2pDR~NhMSJXih{&e1r33{ zyAMIRoENZVuK9-~T_7~*3Co|d(^X88m6{gGXDShl(WU+yEx7mlpjIvEL<1)W!bu9r z#)Q3?nTY=RTpIcHu?RG4yJ`@FEVy9W*3na41WIA(KN$F=66 z*(kc|J$gny>$}KgzrWI_6#xZr=%ltlzYln05&=fKTu%A4=aR%a*G~Z<%)vc}`-rBb zzRjmDD<*eB;ClNmpnwO1KNW+Zd2Am@VgLiz(Frajj%q5%csHU*4h^0Pw};87pjm~P sJdButHI~r=I%ih+rV9qw68I;;08R{lwOeqP=Kufz07*qoM6N<$g7FYQD*ylh literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/ForestBrushElement.png b/Templates/Full/game/tools/classIcons/ForestBrushElement.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc969d30b12f10e220f4315aade7cffe00a44b3 GIT binary patch literal 409 zcmV;K0cQS*P)Ao$GFi-pn!Dx@`;Zhb3*ujcC6mZ$0F|xo5|oi*WEpUEkB#x9LnLhj zI{_!X3h9Y8beN3$r@29?iN(hWg}vz)!u19sCi=9JNIV!#H9^Ev-THY)H2p?1>qmlS zCB8PjF&gV0w64)*88ti-Q+${+SNT2Ab9=WJm>7O(3l!h83SG=0s00000NkvXXu0mjf DS7WG% literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GameTSCtrl.png b/Templates/Full/game/tools/classIcons/GameTSCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..f1801ffe0c1cf0972c2a49c1527625291312b495 GIT binary patch literal 558 zcmV+}0@3}6P)4Tk z6B7f|&5g`&Z-8Xq-ULd)G%x|te+c>H+vR0}S5bglS(b z^Y71a8^DMOL>_vyOo2mj(}(TM2GLw6dbDhUl~uKwPtRcX>1XEPh57+#FvQLG-e3Cq z<;4{5nK@h2kKOLfh+WJsD9ylN`uE4D$JaN46$!v>0J~?;^(FFLN+p|$p1yv*m+jvN z7G{V?|NQt2G@eD)1j!GK3|F2U`|$Dk$1k51_>~q#EVEYjXxUKp{@UKxXE(e&vz}Ge zkxdR&!^&gR;!G3zgC~@`R!Hzk0Ld?Z7#8g8d-37{yL;o$o%Kw=kUV|l#`eFz{y3{U zBgavtXXVCEZ@(*=vdfw9dN#0d@<25J19D5NAV!b;tWhA1mg$6g<*GR-)COli%pWm{B>1& zrV2!W%e(WfGqwouuPYOiD}5(sg&! zBrJg+BLH!xlZ<_Fu3`*;kadIW<9q;UXKW@5Rm}C^0Ue&<&bGFMy^k_>eTD)L2xk>=!9ykO@n&FS@~&b#wGiGw^8R zt2ywM(PUJ#^D|HwK(fBl{B0t^71?N$6w!}1-PvDn&+N&t;-S5e!im%*1;Gn(%#T+rcem}8 cWnhtD(BSN^o|3$}7N~>4)78&qol`;+0F^o=vH$=8 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiAutoScrollCtrl.png b/Templates/Full/game/tools/classIcons/GuiAutoScrollCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b8219f5750590b3bf998d30c9f408f6211526975 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X=6Sj}hE&`-5**0as=&j1Nc6$B&(3+LRln(6OnG$5xKe(- zr|PV=vaHRk*!q`>1Z>zOWx&d3xnsUIdtv)#DX!THj~*_(X7z>t*gb1mg;se%!AUoZ zXP0+Ksm~5&JJ)pgGcYqKty&PM_;x}C(4`EXu6{1-oD!M<&}Lz$ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png b/Templates/Full/game/tools/classIcons/GuiBitmapBorderCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d8e52ac33b6d33d2919604df57e37c173835f1 GIT binary patch literal 480 zcmV<60U!Q}P)SnsamPi=`>AK0u|H^ zBo5rJ*Rm}0JWs#}MI~2NdEq1l5yPd#xi}9i;zY(6_RzL1#Utz< zq(aX0!XU>wm!@gLR=h{41f?coQDtH;&4I|1r=&O@*JTmMA&I#IFPiZ(gCJGcb(Uu) zc;KistSBlmRtn0YHh4g$>_I$41<8YH_2+19t$j<=IE}y;e23yV1QyZJ0G8|hwueE5 z5lSj=I>JmO=eD-tYGyIvfr^0t^70 WgE;Y?ynem_0000) zDwf`n`s3MI)T&h|4hNb|9Zsi{6HBEM>~;luqk(%pJ@^%m^Ddpe&NZQ0sjjH13a`%# zlbz7->c`UaB`!upa*8QOHNp^kI%}CMm&@UzZ~?O=~dMFyJ1*%Gw%2)6=w6+$p9U)d)ja znTZjXX0Xw?ZmnKt0t0T=p2GKly)}1=DMvNJ5SBQ^6{iAIHoc+0^!a_by!?x+;uV{2 z1?hB}FV9V9=jZ3x+e`9icHej7_|GvDsJ`Vldh_b_&cx(I(BttUeRKrVGVfd@Nt7@; zHimruj4fX(@$vJg5T6ozlI3V5T0A{f@n|Z5zP>&fO@j?q<4!Tx6oq54# m+Ym(YLo~MazBB(%fB^tCzL)}N?m3PC0000E&> zZN#am2bi6k#h}lZ)OCHaudh#TH8?#z9p*SL5&a>#(&;n;fdG6%KG^JbQ(V|! z-`~d&!$S)T*M?z;BO@cS*&uarkl2my3d{xOpU%T-wc@_0)oR%JzJq~*0SKay^iNNV zmZ&5xXERyh;^G3qnHey9__VnRRaHAqcx}z(Pu_l}hOE??+iJqf*uIc6Alq-QC#Q+JYoW zSXp_4VzG!nCnqMyVRs;3%7e80%}oI|n-v-pQjCv{nNPAz-)z+DX3mCe)+nd2+if5% zIWUK&mdhPOt5&P18^*mgo@q#HI&iz)taF9IjgF}|9o$_Xhr@xZzgMP%ZI`Pj)M%iC z_}@Vt<#IdjbUIO~sN`VVQYaL|N>)LStA`1+)|I7FDI}6fD2jrQ8yhX0IK(9lY0X7? z{qj}9KkXMh9xslMj-VU*y^F+iJSHY5*&Zlt`BKTX5AQ__71%W{My2TW*_n)oj{@lJ z?M1CxW5ZL;LpfnoBMxy%)AlpHc=mkQ(DikX*CRX*1~EP{(f0QA@iBhw?IEY+k{r)3 ze*XGJZfnqtC$n?Q?CO^4jYjA;Zt3dUws2fH8jroZjsFv10Le#*5&EzYj{pDw07*qo IM6N<$f($rXF8}}l literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..6f511189f0be61b63c25c476132f6e3042b3739f GIT binary patch literal 520 zcmV+j0{8uiP)45Ps5dWm*(A=`R>}@*JsxQxy+n=?1EB2#-AUb@2;r^GFZ?wEWfe%%G*muhP7-* zHv$#CIJ%gbgYVP*Gk?E-64Y`6srZisF1@@Ez9C@Ng=x7v(?8xld1+$cpYNZ5;;+uE zzd9=(q6WoDOD-((RSb;MjQ#if|EwL=%Asw{9K1krQR4u(e-IijKD%)K!FfeK<&w=s zx1QeK#q#&T*H>^^pp)1IrTLUh5gIyob?Aub)oiL(OZyU=liEXsTW5V zfqf6uV8#fExb2s>Puf3ub^59oA77}5sQ^X3{QQ!%Aj#n4>i|J{Zb=QGPN1hnjRT>c z_L~^I@$BaRsNn2_b7oCeH?FJ)vVVX7bZ2!H$aEmyaCVDZhws~W?|%OLiKeG(Yk%_W zOk@#|AEs@e6{PL|<;&MEU%&qP^$R)NG8~hiynMR&&~ijfZ#c2}`={?FQpVrDeZ$nl z%gNguRyTF?%%^XkK|~l$a&13-`%Ey+nW>vBE}ae1Kx*;^2rvNVLK=_h8MF!j0000< KMNUMnLSTabb^)OP literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png b/Templates/Full/game/tools/classIcons/GuiBorderButtonCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..25044777f2f8c9df1d4ef0beace57b61a86641dd GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xj67W&Ln>}1#cW78SkK1Az}?Z&-=D7H{`pWV_kUx<01h`^ p3Dblt3`_2CoC8gZ{^MSeuN`c&0fxNX& zJQ_L~-Nvt+%5<~UfBK5ouHQUEaQS1#5X+?tQVLcZr~0p4venFglJ8F6V3)urF5heC z$4=FH{fjNLNAp@?j{=87xjN(iRJWDh2W3<2KCEwve8&)#&7ru5<+90M`>8zrk9T++ zcoY9YG(+e>a6=^fES3)<3D+8rP5Q-=A#rP+vqW3m2Lqmjvee$2AA@YgTe~DWM4ft@~{a literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png b/Templates/Full/game/tools/classIcons/GuiCheckBoxCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..8e608ba2d7698f8795e394cc413102def5be8552 GIT binary patch literal 459 zcmV;+0W|)JP)T6uR~ILXqvKl;p|~#~Bap|>K)md9Iy3HI0=ll>o2D832aLz~ zERI>`N4TVE8r;d__x4x`i5?|i@{)k+3X$tejlw? z3)N~BiXuZ0Nb*&pn`|}MLQfSm^)&002ovPDHLkV1lrZ B%3lBg literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png b/Templates/Full/game/tools/classIcons/GuiColorPickerCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9c6ca32ea1e74ade912b791145159e92ee0dd6 GIT binary patch literal 396 zcmV;70dxL|P)@CojrxSunmn_QAUGLCzz{)Fl$*dhPP0-FM`7Wt@oj{}D3G`A0&U+;d3dC!Iv27@Vl-`CV#SebL2gh@B qDRL?5wlvDv1t0hO-+%9?00RI#XOq=|BqQ$t0000}1rJS%o?ZB0gq#(G#Va0#p9uBQk9Siq9-o;XG iU2JZ%mWMSkFf&*Ru+A*Eym1+*kHOQ`&t;ucLK6UF1Sbsu literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiControl.png b/Templates/Full/game/tools/classIcons/GuiControl.png new file mode 100644 index 0000000000000000000000000000000000000000..63393413878ba594a665e654beeca2a30300807f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiControlArrayControl.png b/Templates/Full/game/tools/classIcons/GuiControlArrayControl.png new file mode 100644 index 0000000000000000000000000000000000000000..f7340fae469b7e85181d65b29d218fc0363fec3c GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XQaoK8Ln>}1^>7vbK7ZuMi4X7Z*S9TQU2bH=;8?Q4IxtD$ zz^C8m<=NcaEaZ7QM46>Oe1C7>_W%F?#U4W1Y)m~0j$RDH%&iTDCIXov9ZML*Vj7*d oFz#S#&(Pzopr0ABe*Y5)KL literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiCrossHairHud.png b/Templates/Full/game/tools/classIcons/GuiCrossHairHud.png new file mode 100644 index 0000000000000000000000000000000000000000..65b06404aa0cffdd3607093c2cd0839b792b9f0f GIT binary patch literal 439 zcmV;o0Z9IdP)O zV6$}~Yb}vd>S4Jg6xhF^T&)lz)D6SX_x+~_K5#tDiZBEuV@%g|_yB>C0HbYN#0XF- zNmEPeSApq!v<8i})`JJfam*ZffQJmI$^$oucZ&r$N(NzKlAv`O8bg~TnK>lABqC8F zje)mW0YOl8aeTp?scD$=U2wd-_9VJJe;{w6oGkK(Vvb%=apUrisl3G`a-|I{vc6q$ zdi8s88186NAX^G>Exy4S(6cO)jQ9~XO%tlS5vO8q{L3K9BM98X)pZ>fN=D#_-Y^Xj zswDZeUc063*gm{~ltYPO{;`8_L_OwC9lScf%hj}t^-O1LRaNe1B+`?=RSekfcKiMF h=!;AK`=!4G7yt#$Gh19hnz{f0002ovPDHLkV1o7$xqSct literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png b/Templates/Full/game/tools/classIcons/GuiDecoyCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a092c1ee24b7fe77b96ca082a7957b87911af94f GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XLOfj@Ln>}1{orS>yIL-hE*N!l(X=lI%K)PN&_`k9lVaUclkO&UI2*eDe049b7Wgr9w3)(k8g^>iY zISJ-VKaI4F3-|oT3z(37`JLhOl=itt_MH0n@883R4{j&wzyQ#G VI0wT5p;Q0>002ovPDHLkV1hJT&=CLt literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png b/Templates/Full/game/tools/classIcons/GuiDynamicCtrlArrayControl.png new file mode 100644 index 0000000000000000000000000000000000000000..a356634e84f1fdb8a72d4bcd674d6985f6b26bd8 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_h|ehE&{|GT|XFlOj)Rbdj~7*agXVF-^V+oOcg$Hq3O% z;{CX&!oB}}c>L#Cd%|sWjkR2t-dS(XU=cs9FJ;-E6CE7#zdqFl%$wP9EjQligp^x= z0mnD*^%d{eZY_FQueLE&+EZt45SQYWn-a>?uSIQMzpIkX%B^Q3pMsTCnQ~#C-~NwF u-9GQ%pP$t(e>_g*`JJ>?5Bc;N*%%fZD3o0P&shU>C4;A{pUXO@geCxym0eo^ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiFadeinBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiFadeinBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..60463c21984988dd8fa475347a6403eb212bb40c GIT binary patch literal 596 zcmV-a0;~OrP)KRo*W-Ez;;_QWSf$iB&!YOK{cSd8ea>n}n^7z%86WIdytsZQxX|s#tBN@)VP7WPT zl|#y{Z$8uKme@#)PfstfY_?u+uiiUw82AG_v}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiFilterCtrl.png b/Templates/Full/game/tools/classIcons/GuiFilterCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ddc8a7846985acd8c8520abb3a14e7ba2eb48c GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XT0LDHLn>}fnH0!(K!B%h`OUzXgOh_TmLJizv2>~y-yD%6 z96Bpt;{SYm-lub{%O2@yw4 z$jPQCZ@NKvbawRHaxbOt<_WFUX%a=7+4^QzGM~47VetGNuTpuwz|MN+`+x6EXJBR! XT;ijX=bZ8z=pY79S3j3^P6}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)pACFnQ_5c2`GNq-Z{qg$$_c#014dw6SF6DIe_p1keJ=DrQQ^JE~u@qZ7o0!KR e!S##^2N<0H%03fW*0dgI34^DrpUXO@geCy!s6yHR literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png b/Templates/Full/game/tools/classIcons/GuiFrameSetCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..63393413878ba594a665e654beeca2a30300807f GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx;}1m6(0}f4+hFjqT=%g7a-SHZ*Y9*81{vdW)|= zeDfFEtO(QiJq5B!2k!5${}{QqpIjvlu*G{an^LB{Ts5cuQM$ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png b/Templates/Full/game/tools/classIcons/GuiGradientSwatchCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7d7c58bfa567a9afb4f3c214ae04d96e27bd94 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xf;?RuLn>}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiGraphCtrl.png b/Templates/Full/game/tools/classIcons/GuiGraphCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..18dfdd8d546c1d15b625e3d012af20b59289cdef GIT binary patch literal 466 zcmV;@0WJQCP)NoPXlP z3H)3p1`+`aK^0&Auxx!My8W5h?a$o3ye9}~*!k14{;&~{;Vtz#U;V+)n_wG&E<;uX z;XeH*y7IfnyZ?N)tf%eR&T+o~`SU%@NzMwwUnNwLeYx_H&1ZfbvxQ+ked5Hg}e+xVGN~l`wm$Ajew4xVsh0>>J`3VT`lVs@^q^9;#_&1m65!=-(LOs79$LR zK;_jH1~DCw4byl_9kurB{JnGXp^x~F=N3o+k`C-OTop18t zueyoQt-}`AHn4wu@t1>_c zesLQv@=o3Eox1HSeJ_af&|~_llqqjeF0RA}1dOC6Z-4*;0Ln_JsUL$&t^fc407*qo IM6N<$f=lk?tN;K2 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiHealthBarHud.png b/Templates/Full/game/tools/classIcons/GuiHealthBarHud.png new file mode 100644 index 0000000000000000000000000000000000000000..f661a431a13f0a903039f19a965850e7e878bfc0 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1{rUgjo>{1%tjz7%ySuxmGm367NNCvm`)?|HsG96m^Cn#Q|ZE=g5Y;^$cj5DQM8 zzj^4u{0q6C1Y8+J#@GO9nv&xw17FiYUu6Q3)FMI0gV$IVX@L z>C)bK9N38IOV@QG!DI)vZIfXbA`lw(tqvv=-~(BfB@#fxo;^ZYmgKsw(2zKeX}8-^ z5Co*_`t%5_m(}!|>+cSF>xOs;UTFxow(9T#E9$;QMB?fLL(ARrn+LJRXVTU)T9ZfB^tyz>9px SnF8Jb0000zy<8>?L9m^7#SI# zJ$nY#fFDesJ{`h{jEsb8z~iL-`}f<}SiO4rii3l5#flY#o%H3)7efPs4<9~0c=+hU zhYvszCSpPo=m9vJa44Yx!l48NpFVv;(SQf=@bH|!aN*mxAK$-!7Z4D5{`@%sCpkJg z9y)Xg;)jTci2C|^!cNM_$l&7QA|c{{HUN``f`S4fY2XhfTU%Qo>FMbSv4N4)^xl@Ln>}1{rUgjo>{Y@v(d$26PuWVUBLqe$5K8%J^?o6 zvwt1dOn$&89pcx-a;3q7Q_ekt@$m!i8U{u-hOo8LqW*7=>;js^;OXk;vd$@?2>`-{ BF17#w literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png b/Templates/Full/game/tools/classIcons/GuiMLTextEditCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1dea166ddfec490e9a6a6d579c83f88ae9cc45 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X!aZFaLn>}1&9SNcbhKMsvV-~8uU|ZxnwtMR*&L4g@Tf3} zag;tdz-ZGYBO`OcRDt^;`<6nXP1}1-PvDn&#c+N+R@v~(-~6x?M|hb1$QJ<5=)q) zSPGxi0j(2FnL;z`7-l_s@Sq`JYD@<);T3K0RS@^H&y@u literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiObjectView.png b/Templates/Full/game/tools/classIcons/GuiObjectView.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b832c9a5addda706a973d95fd278daa7badb20 GIT binary patch literal 407 zcmV;I0cie-P))6Kew^*vaWt#`v#>p2sA#?MNM^o%iu1%q zrqA#H3QPUt75>L3%=r5|Pz{8HX<&z%C&J3Wpl1d|AI~3Qets8O9S~?s2;E{}V1jTo zxlo<*_cvxp@Nuv)z%}qP6B`du4Q9Nke&yyzQ)j6lfueyAH9r1v^AWJYMF8P-Ob}+E z((iAL5^+G)8?+gwJY`t;65S=m_WE%5AT)qn#mrD8$KWE!(DsPoC}1#cW7mWY%n8?U*Yg`~TnX<7bYv#J}AC|3ANs z1;eEezt77H{J(FXl#`I8AlQ>7u}I3nvw7mgkN^MwcM#eiv_NVF8wa}1{rU0n@!M!~$qr_&E-#(+ar-V@xS|wv`0?@n zh1ipFexJ+x_B`lam#D?%cWKFK=%oXd=3T&yR`m@kwFzii*n4l1sa{=SQZbq?W(E z|S2B3I`njxgN@xNA{5WB% literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png b/Templates/Full/game/tools/classIcons/GuiProgressBitmapCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..a6be7a2edc3bf29b2703a43f11bda58c49de1981 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XR(iTPhE&{2`t$$4J+o#*XQRu3OFK6Gd$Ly8WtCa@<^;x7 z>ois<1UVmX;S*E%`td!x&>WT{`TzH{e*SO#Cp{%WWyM2YIo=E<1>XFBd(_T)zMnA1 zC8BxPmSbm+nsw$XEU;A_a zb@t4uu{mSolJ(>CPyQz=d~SY^aufdidu^@Ftvyld-=Ck%0tpPt^UTkRO*TycI-0@L L)z4*}Q$iB}Ckku$ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiProgressCtrl.png b/Templates/Full/game/tools/classIcons/GuiProgressCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5c07e2345db200fa2e1b7b69680479df5a0c466f GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XqCH(4Ln>}1{rUgjo;mNs+xzBvYI+Kf{n3-2f{ZjW;h+}@6 fTqTgjz+u4fGg|JZd4t4JpfwDhu6{1-oD!MogbZBxA0%4n+GTECx^nL#!i7|Ow}Bw!&Wg(2Ncq^P*^o{(ukM)?#3nZe-OZgj z=R2?OJJ(^FCN?=7HayN%Lnf0E*p=f9^%xGvj%75>CxdgHvaeFPT%IiB9m^xI;5~L- zrBW#&9*-j!3|jWlXoPybj#{lo!3Qi!>qmllWhtFb3!*4O(^MF`{yitp!|8OP(P*Gj zsZf&WqLXC~a#UFq_wn(rV9@WQ)w;p`!y|^np=Bc^DTIZ{HlV^=H}VV zv)Ro0Z@1eBhr@8Y-7pMe?H+W9ZJu{xHyTAYo3)IC!2ro*5`Mp*smfW35Y{fi8A;{w zdO^w*i$zG1gkGzCmTd+k${==3^MD vUi$k*T3zM2R13B{^S0No^1r;sF98MsBR9*K7k^Gj00000NkvXXu0mjfYqjJE literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiRectHandles.png b/Templates/Full/game/tools/classIcons/GuiRectHandles.png new file mode 100644 index 0000000000000000000000000000000000000000..11e5a06a9e86831cbe5422c166b98fbf2c7cf68e GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X@;qG}Ln>}1?GZY6lz}aXFOvakO{hl+# zNJ%6}H8gZKx*T9C;k4U)&|&9KkqLkHl`~tKO?ao`vvBv;v=e#@udroVaIW@#@j}I| zBI?j%p^6=hmxWm8wH>iZRR8<`|9ll`1|}W`^)y*Yo%jeDpv?@Pu6{1-oD!M<(pE(1 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png b/Templates/Full/game/tools/classIcons/GuiRolloutCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ed922abdbd8ea159127c9990b40af054b7806a03 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xnmt_{Ln>}1#cW7mWY%n8?NC1C^#A|=^CwPp#A^neJ#{tP zLF!)ppB&IA*)c^bQ@zbX%lP7=v^5svnxWn8d2M+xB{ysiG zKmSkK|KH#FS0%o`w|7b9t-E)7J+4}pzhlarFkynqJvKEqp@S>fl9clv9%?<3&A?&6 Z5Vp%@anyoUp+M&_c)I$ztaD0e0sz&GVeZd!nbcfzJLENARzGk`Evp`I668WKYsGkrAxPO-;RigASxa* zGBUWhxJZb&Lx&CllZJwVg1){!Q5tM*ZGohxrzgY)MpBbEK!5=N_+fLx2C}%~00000 LNkvXXu0mjftV?{> literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiSplitContainer.png b/Templates/Full/game/tools/classIcons/GuiSplitContainer.png new file mode 100644 index 0000000000000000000000000000000000000000..752127aafdaf38a5289f44c56a87d7866fc26854 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X0z6$DLn>}1#cW7mWY%n8?U*Yg`~TnX<7bYrh~M2_ZyzAw z`*Q#P|NJr*43|FqJ})ou|Gs@nW`}}WLXv`DPnN{h2KB9Sb~O^gOsf?H7+542*wUmc UMA+h=1I=deboFyt=akR{0A=$xqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiStackControl.png b/Templates/Full/game/tools/classIcons/GuiStackControl.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d34ffa36415d4361fa416c49e4378be6e79d93 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XYCT;XLn>}1{rUU*d-Lz__H};_IB*mc6>4f~8sFPr{{H-Z z`$?06SWNd+{{3}(`+A-7cXzH`x%BVLOJPUeH90x`c`@mN!qayY|K7G@hJ+*U`+IvI zKYW_}=i}q!6A!n`+t>L7G*6f?VQ(|@}1{rUgjo>{eFViucD%#H~vlOH{PEa_;%z3G9_ z)no~-%C9blNB&%2b?BxKk4RHu0t5F#hTk X45_;Qb^m?>O=s|Q^>bP0l+XkKsMkES literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png b/Templates/Full/game/tools/classIcons/GuiTabBookCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..41e09bd658322ffe34cb513787872d6a5da1f2a7 GIT binary patch literal 466 zcmV;@0WJQCP)v&<w9{dEwjF@8Hs0+??OOe#fHW-`{`dPFw&YWI4YuFBdPz zyo6F@K_&?G_uoG_(l^n~E=>h8{6f8eHb4Z?ZTS25FI*_MJRKr(c;B&IoA)70A#C`E zWCdL0^~<-FEk($J*lmD|1V#E{O0mHGfUW^7^7`c)G%2_Z7#jZmo6$RM`BHa7PcnlHm1%VcIY;kSsNced>SsQtg7Jb zY474`&&|V)W(3rRuV22FW!HcG^3BrDEFjEVTvC()2LK2#0Li1(^b literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png b/Templates/Full/game/tools/classIcons/GuiTabPageCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..ac58cc276acae9e6b0cd3c625ffd617946e04004 GIT binary patch literal 331 zcmV-R0kr;!P)i(r9Rhp1kCpdvecx_uj{j$<*UpvM4jnr6rF_L`}1{rUgjo>{Y@v(d$&o_BTldN<*hZ{D~(+oVwZ z?afW&>ThrMR)4?8%q%W0t`qjhooRRZ`?~M%WG5IFKl2F>4_9D5!OEqy+HoV}We-P3 zN0Wn&5^FT(wN=Z$NLEx_*ww}56L~Cg!ZZdZ9tQv1tQDJnKD`OFo59o7&t;ucLK6T_ C|4Tjq literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextEditCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..114a30e5f992be5b3ff30a58533415420a6ccc90 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XW_r3fhE&{2`t$$4J+o#*XQRsjqtsJVy2bT{Rz}6g&sS7c zeQJM^VTHuQC0AF6FP?e*=1tB-10y4)IV=mmy}4;z{q4=(>hJfMnZ?D$=hQW94qF$a zsi9$!eQk|t_O&xJ3?Kjf{XPBsyrU}_FMBLVTk~y#%$kyG3_RKk`Wx%ku34iZ<0Y^@ v`Kv}zRWjqTvaBqvkDkpFpRE*CIKXgMCS`i<&)w62j%4t3^>bP0l+XkKdQD?V literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextEditSliderCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..27844cf39a7797622d7dc9d48f2990146bc01300 GIT binary patch literal 289 zcmV++0p9+JP)7?*lz<+9xChw}2%nG| n4~#%eQbaS-Jn@mN0U*EtpQ@dc;rzb100000NkvXXu0mjfzeso{ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTextListCtrl.png b/Templates/Full/game/tools/classIcons/GuiTextListCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..5369870c027f94652fc2ee400a62ff5a146dd72c GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XtUX;ELn>}1`FMIJDzI)~`1t1L=FX70vu2%QN|d!IVAvnT y&d%P#d!nYPp|jD&;MJ0ek5t@(CYw7nFf#Za5bu89EU_AB41=eupUXO@geCxr5-=qI literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png b/Templates/Full/game/tools/classIcons/GuiTheoraCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf9555650d8a26434bbfc274d4a19eaff565a16 GIT binary patch literal 636 zcmV-?0)zdDP)W3FN)+z4_+*o>3G<zC`#<{k*n{x$&p>h1fAMQ3hI`?k$3N(n(ND+-mS zy*S?7Zf8oreEI}EWy9+aA5WybcYDUSg>5lznWW#4=Y`I)Sm~aWUp6*9&YwSeNWd6O z`m=>6ge#cM_|n2cDy74j%eg1`m@V$yy1Caq0GQyG;0-32Ei5W5i&4521TU7CWfXBr zZD!ewjXCzz3YlIaH@0@J z)yDxItp;Tl+=1Ru&^&b-2VyqRNs^3KW4L_q67E26CHNj{%gJe2rvMv W(@I4HSw)cm0000}1{rUgjo>{Yjwd3%iLke?3SBD8+Il!@zaRvLL zUk4hQD?+R-EDR>SQc+_QV&vB2T$87K+*89$Kse@w*#myPtahP0ttu?qF6S8~7&!kP q=XG*+He}W04r`j|;itjKBEirdnKrk^h%FOnBZH@_pUXO@geCyy(L1RC literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png b/Templates/Full/game/tools/classIcons/GuiWindowCollapseCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..09e99cdd1341ba476ecc8d8902d220f2eda31f27 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/GuiWindowCtrl.png b/Templates/Full/game/tools/classIcons/GuiWindowCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..09e99cdd1341ba476ecc8d8902d220f2eda31f27 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XdOcknLn>}1{rUU*`^RK=i4NvzVP-wmWp71<#ivi0aA0xX z&#tMjUcCyMB(y$mU&_yKf2H~P&rjEn|Bw+78oIOc^Rij1PBpWCmkig7Kjy%d@bk-0 z?}`eEiL1ib#T;cyw5|Tvv>L-D#C!dPlI=YhhiAB h!J*D_A%_M=hBI?@u4igz9{@Ux!PC{xWt~$(69CXATPpwn literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Item.png b/Templates/Full/game/tools/classIcons/Item.png new file mode 100644 index 0000000000000000000000000000000000000000..94c6222dc91a2e4e9a7041a39dde492197a633fc GIT binary patch literal 766 zcmVNgkA!{dJf8$@^$388DR7l#$!|HPAvkiD%b$1YoY)z%j7v;a23(}uS9%HfU!HQH~AGKpC&1> z8mRUI2af|;1>kG+{tXoA5Jkt+Y!0L2AH_r&K(ZhH8gwmxBQ!=E7jX0hC9MLB2_Ulq zm@0i=74UG;OTXWoX<^-ECM5u`2lsleV4~|HaQFz&&;TU9+ca&i1WZ}}FoWB};4>+S z;qpHKreHU&4*7mPe(QPHc2Y{!)e=ZOU}@wzjODMWH|D>NI zw(9L?y);Z|^Aj#RM{5lBIXJOS$Y&2E$cGNkwUFmUX&5qddbgr2>Y z=WagqPPOee1Ce&UIaMGALC8Y40Kdo^l1Dj2AwRgxW$994XN0hs+P3kmS~qFx)KEns&@Pfu!p{DoRYmxjD0*eDkQl5i0=&3h5{5Skg%Ng+0NB1xg8|>8N;)#nmp#mP6gXlmBdn6F9LdVkRBA;;r&gTF wECXyVwy<-D*g!{^rB5}o$X4TQ`yT-Y0DX2dCq&dl%K!iX07*qoM6N<$f<*dNqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/LevelInfo.png b/Templates/Full/game/tools/classIcons/LevelInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d757686c028acd2b019a9cd66015d1883cb815 GIT binary patch literal 744 zcmVP)e$)b(jE1j ze!o{GsqPY<^S=JRKb}{@pTFdd6n$?I_#Ep>bA$|G9xDr(esihMF+ksYaOsyLQ!|Jj zOJFz>g-k-TTtad6GYTKxz_IE}B$}f@=I;O<=d^G1c=F_>t1!ZT9QLa4x@1U_gnHA) zR=tH>rH0o}AHiJvvO@M3IEW$wM5Z2)bL#xHo0uN)VIu5-5p*LqElC1^z72_oVh+HoD(4rjs`T03~E?jeu@1024<%Wcr_VrRf0@4 ztC4Yheg8J@gcC0m%6>aCJ)4}Fo)DSY`N*IPhjbO^k_OJ6FyK*TxCjb4+YVqkGD@{N z%*~vbQHlq~J%p)v8FH8EcfeKpj)m1~1J4&1v0p7N5fktBnD~sCb&(myB;h@C z8|Fb9<)1C&Ijd>mQ{EKLm2X+5@)b(n`0Fvr^q69&PK!PBs(9KwFz%Vlw*UE<{^L3S a5?}z(x-J`GpTO||0000LQ9u6@NgBql0m9vtTC&5wqwbsDsYU=pyPbs1DBNAEdR?Qb7nJ*bmL|cHP>7rY5mVxI7QDJOiiAd8opsIx_q|MW5`X z{d6hx)Sp+7s4Tz?KN3Jxd3|LqTVH&!J=`}FMZNRG|_Y{}+ z}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/MeshRoad.png b/Templates/Full/game/tools/classIcons/MeshRoad.png new file mode 100644 index 0000000000000000000000000000000000000000..8f33e23f4c646ae959f28b9369a65bd473f26dba GIT binary patch literal 430 zcmV;f0a5;mP)49x!=U_*%;Pi=em20B@C)$a43}$HZo-%o z!3F>|g92l|o`JT2cYp`M1o8Oc6A<+P8arSY^ovW13HSwj6V&|Y_a6pkW+sNefB$j8 z#2A4t_|HH(I1hAz5hy8x!(hw714Qfev3Ee>Gck|}fG(%Z0H7Br3Ij$EapmoQ27mwq Y07tu0zf2eS^#A|>07*qoM6N<$f;}CoU;qFB literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/MissionArea.png b/Templates/Full/game/tools/classIcons/MissionArea.png new file mode 100644 index 0000000000000000000000000000000000000000..91bb1e219ef12f670097cf041707ce3d909f5b81 GIT binary patch literal 591 zcmV-V0HVR@$ z(uuifB50#nXdUdLsbc;Dv9J(C2*P#O1gvcQRcNkC5wA* z)402N@6GMr9%7@z&c5Aw-}~M-@69NTR!;%6;%?*2<=~I+PUO!u0iYB;imbNZv>pTj zzv%JBUjI{qeL2_Gsza)Drh=u7-?+S{I5z=p>{Ow34X!*T7{)S*Bn>lnJh{M7svjny zp2Cs*EWb!w!mC5&% zFmES%B_<-^JtvbbNVGWUdhX!l=n%Q=dQ_=gb`58zhv<6Yzz~M9N;`1{B$p(!YzCMI z&W&<&0Q)2`w!LTzw)$Gg+B+X%Wb9QGJTf+p_J@z_epR1n6j3#$vL@9(h~oFW{HF#6 zn|#t*#JXUs99Zl7Sk5dUx49B=F3wM5@6Qh2OwHEMgG9x)z>7W~5+B7M`KI7-Y;7!) z?_2#a`4%4%@M5iYg~0Pr`11MIbIU%)T%2DDNt1$=>@RZEuwUN2m0-VI63l9LJ5u0= z&g#)$BH6}F`n~j-Th+J=kc^yp^}|mb5VleC(Q5E1eH`n8l3v@EHEJH#D9p@*E|U=4 d>pK4zU;uA$%tZuoq2>Sp002ovPDHLkV1fig6yX2> literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/NavMesh.png b/Templates/Full/game/tools/classIcons/NavMesh.png new file mode 100644 index 0000000000000000000000000000000000000000..056d3c3ac9e087c6fbdccd35253f63341dd98745 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`hMq2tAr-fh6C_L${{8v+-}7Ju zZ$iWm8RqjlJ_<4SOEny4$m!ZBX_dtw$E@LXikXd}Y0u(3&OL{^fSMURUHx3vIVCg! E0PJ@lTL1t6 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/NavPath.png b/Templates/Full/game/tools/classIcons/NavPath.png new file mode 100644 index 0000000000000000000000000000000000000000..35b8372aec4877e23bdce467c6b0ab3917ba997c GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`J3L(+Ln>}1CnyLRWZ(5qxUggW zfi<=H_TAqO|L0l4pmz2*tAek>EXUXT7`unEf$7(8jLu(jZ6XyoYQ+{AE!b-@RQqYM(0->NRiJ`krQ z-msUch?7-shQEc(23Khho)_f-YaaLpD0mheYE)HPkh?)5;o`pg{svYD%^ZxmEN(5x pWO$Ra=n|90;*7iY=N_rUU)J;OXk;vd$@?2>|YSS)c#_ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/ParticleEmitter.png b/Templates/Full/game/tools/classIcons/ParticleEmitter.png new file mode 100644 index 0000000000000000000000000000000000000000..e5489fc70e7973f22d679349b713b9920f422ead GIT binary patch literal 773 zcmV+g1N!`lP)VHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/ParticleEmitterNode.png b/Templates/Full/game/tools/classIcons/ParticleEmitterNode.png new file mode 100644 index 0000000000000000000000000000000000000000..351e4bd729c5f960cb2836069e06d20ffc63319b GIT binary patch literal 426 zcmV;b0agBqP)%%=$Z={USRNNJP#xdz-$F|1_mBM28Oap z3=DsPzUZoAVEFctf#KmBn8gL7#jM4zSd^|+y3_{#E^UE7#P~O z01f(m0jSOqXut<-UO*Vq(ZawW!V5IyEd#^LTMP`sJN_ z_Qyb*fg1k+ZD)T4(hO2kh#ng(SOV67feR>n`WOSl`YS;0KL!Rr2?ho(pk3eo89)OP zuL1H5-~KQ#%sv5PPXLR|yH^00BO)n-Y*_$JJRm0*g4j?o1Dxq#z%moX1^@&Y0O%%t UrD(3ElK=n!07*qoM6N<$g8hA+umAu6 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Path.png b/Templates/Full/game/tools/classIcons/Path.png new file mode 100644 index 0000000000000000000000000000000000000000..945102557bd5c6900c0447170f527158204d13a0 GIT binary patch literal 323 zcmV-J0lfZ+P)3z66@GmQOC-(!c-w-B-N#5-=9M$O>@48SsHqNkM?H z!Epo@z!sQ?JM-Du7!wmMjt*G!--%qpUEtN3=IqQOy&LK!BBwz=H2%%2GPB<~yN;5K zoQM?c0W?&ePQ(eLB1U3TkCTddd-F>7Knu0pgJKO5aR9FWXb{IzB0H-R+jNB+-Ndf~ zb(A>6(E<~E?=+d<+0WbcEP)OiU?NzBP&z-4-{=IQ;66^NJy{ZLYN3(S(XeubUIkgW=9FHN+sO)dOTU+ z{q!*zf#qr}ojzG_ER}+3ni8)N2)!+vvOv2J%19mgbiwOE#OF;9u+fBftQbLp~YOwLydc0000^bM*{px!ll*F>HGNj#BwAWESvbnA>Qq}^69PBNM7{Cqn* z->eeHF(`@xSvlA{>Y{0*Hc$ts*AFju-E0okkti|%7Q05p=+x`mU{y`d(xpJ1K2c^zW^-q3!6B@ZTpXW3orn+ Ws_E5fA*oIP0000L5e|ZKrI*yotSW)P*f}0YO8%c-`%yjUV8>_^4xph z_dd__-M#moCL*YXrfEi&87we`2)|WI5F6SNc8$7CV=QX0#5)ok5{a#d6e7f)NOVag zI3TLlq_Hp5$rAL5qz^=jmm;NW=5y2Nb(1DuF*r7j2aOTJ+&s`b0<`%6&oD7S^Z`AC z!0Z&PSF4B9z>mNro6$w|v+8B;=5{A@2QV=XTVIT5hcl$Y%MWvbxy)QP*Qlyu6W#d) zI`ms|vqTE0JX7;Q| zD5E!uPk_4zot&_%0S84lOt!Yo$5&7Wse54mR8bbm$u#!NF-X=hJ<8d%NH#<)i>!~; zhsddE{tC5b#;!)8KLGh6kW8t)WGkYZ0govWc_7E`=f7QPZUz~=QzT#JEWDM>y%wRl t{EZw#M2LV@3bT2u_8zn}_)q)_FaTq_`PI+qmRtY;002ovPDHLkV1i{@+3ElQ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Portal.png b/Templates/Full/game/tools/classIcons/Portal.png new file mode 100644 index 0000000000000000000000000000000000000000..0dec3b0a57243ce5a9672921815bde55437df29e GIT binary patch literal 390 zcmV;10eSw3P)PXD ze*5)nJre_kfMNq!unGS8`&Z%H@8ABMtgHf`e*9nn(ht~KSavcqF})z@0-$Emk3W9I zOY-pv2yk*T$O#HE2y$^LeEj}B1}Mja*MOgY{^$a2%mQg*WMpJ`_VFXbi%*{z_&7Ki zqy+@HfpWzlH8>6U@%y)o3{dlj@8207zI)fW^2`~=<)=?G-gx^9#)eZdHaQFfzW@G>!Ux3$2xF7Onvj423D<~Aj!;6v=>=?ZEU;V! k6ZnP40GJ%IdVl}}0Kid_iO2v$(EtDd07*qoM6N<$f+oYJUjP6A literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Precipitation.png b/Templates/Full/game/tools/classIcons/Precipitation.png new file mode 100644 index 0000000000000000000000000000000000000000..8e2cc784c247cbd29306795ee4810d2e07dc61ed GIT binary patch literal 381 zcmV-@0fPRCP)IxPd1{ko5@H0FHYGwvn@#h~N&j b01#jRp$uqKZpxl|00000NkvXXu0mjfb5D@a literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Prefab.png b/Templates/Full/game/tools/classIcons/Prefab.png new file mode 100644 index 0000000000000000000000000000000000000000..6786bda75362d46d3c2d6566550cb40fa1703e41 GIT binary patch literal 688 zcmV;h0#E&kP)@4JsBNrL?}3Hxjr#uzT!W`)KA=Ou>IS(#N-S+aAg z)V6fFe(hpok%!*(Bnq4)3fl=MMB!KPxXp;XLnKp?8MLf~0|JUf%76&2Ix+4{PoFXk zU4_ab@X!Yd?ZSV>=FSu@7>e|Q2|J`DV&Vjm8Zw96u3(bYA*lvTGmnwHiLt{*r=;_m z;NkV%MzXrLiO=6Q;d%i=o*;?|q@rac2zOpYb1vp&SC_?_(+l`fdHvaK+p_X=)v+Q@ zR?1K`4QpK&8$UfbgBSq`sU%W5m_d;s#y+hPStIzFtXa0Xh$nDiDe%43!A9yBBhF`y4Ly!VR^i7x86jv~g>>*B{LO=()&RNA{32MpElta2vl&e#S{5B|LZ1tn`H0U^CYI2$f z;eZ}TaM`dRUf!&>IENim;uIr~nBsi*X#+74WI7#@RC?37=HUYVb?saqo0Pg@Q;JAv5Ip_msaX%GJUl915ioq933QZttb=D+@9`@PP;1sDKp WIwKds;8xiH0000b@?P)T2<+lOUoCOL+^wy0KS0s3*Zmh52(~nD7o}nPCWT^F+Yce#ccM>>h`k@fucuA98qIdxZu$LJn;TdOS9(H5(r-ksp6E4I zzvyiqtgo;2R=ZuSKIvjP2yl5h-Ef&3Ft$LP{XYMd%$r~mMG-I8$ZOJ37I8x%*&o36B>$>~b@@<{pxmaH8>_G597_)zGl`BmI%5Jtk`SzK>R` zRqQWWLZW2?Vm3>v32seR*f-js?YE0$F>7UaRZfr<1Y*-^B<{3M5Q?&*dZl*Ju_W;5 zMY<@8MfC}fhxMntO+iM|)!J(~3Mb;F&S91$h~gMm(Nv0M^lk1xxl5pG>dPw&t1BY0 zxD(=>_);&vM{wsaJSGO^rxO+(VvgN=%F=<@2WXLi@I z+152Ljb)KZIb9$vg%zYAsP;o8(M==7`l9^;?H5#EgV3lC5r*c6>O%l)yZm4n#8 z$Qpt^ygXT(Nk!j)!dwF*YcasCUwqd46u72BUx9?=6l;tl8bGW z6Og3NPD04dr6+ojW_@#cjsM3YJyq=x-HoC}fK!Y#5JCg;nNNB)fv@@0Hq+xjw$!z^ zGm4y`YB%7r#}vDm?53IFNs^$|pDst*r}K>n9Ou3&lnR<63rH9ea%E_l6L^bCR18c3 z#U-W+-nC%o`R@uLT%TSPLnI}`!^TTF%WQ@~i`yiVATCK}o()zm{Lop?eMd@{b(y^n z8*Y^585o=I5=3W|Sb&OV#H`rtNSoK<2`DHR6QREWpx**Yd8Rdosd;L~<8uNoR-18p zA3CxLG}XZ&7H9t);oy)2EXH^<4#x;;c2P6F>*sOe0FUxQGxz0RPu)rr{1spTU?>zXBGx ze&Y%*=X2l+gNY9x-j8o>s{soD*$&1=<|r`%N(Vry07yT8M&$*V93#GjR9#aD@;4(? zTmhO^K==m`FW7T>!wW`2Nf~AUnpX^f;wSKCM0}YE20#WdQktCs0t^81$aFj``0tkh O000056Lr literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/ScatterSky.png b/Templates/Full/game/tools/classIcons/ScatterSky.png new file mode 100644 index 0000000000000000000000000000000000000000..52257b0bc2c5c1e787dd2ab6a1a6b074113d6a79 GIT binary patch literal 624 zcmV-$0+0QPP)b?qW16%F51f1M_kHL5&hLEZI~oz;IHHwupiX$zZ=5y7`heA?C16T&twivB zHhmIMv~8)i50hk;l_2of`QAfdd<7VM2{Z>>YF`v(C8*y;=n~N0!5h0kRRwT62*sf1 zzW~Z1j8p8g_Z8Uv1pHnGDlkMbFW){qP zaS6!mh}*dXUErX8HX)(sa8?I`p$5!+m_v3u2Zw`jr6r5rliY+^2KlvbsY|rVIZ*1c zZ@c?e6dVly`Fi*-)T5CBatt8y?C}dY;5P3#e+==`lTR!q#5pJ|nc6yZoT>8_N)Z-$ zSy^61Y&hqQZJ#x#lau}SMJwv`@%?8imc1RKpJ}44%`A<*N>D2Kji!ug8hSoV?7vm$ z6h9(xUB0q^r)aQ;&rxzon2Aa z`u7ba=jU*`){Pt8HxX*G127gJvF#T=TU%STxP+Pl171upNFWh6`mVM`QN``@czia< z;?e?MPZ4vC=e5c(9e14n2rvK?(bt=24X`W#0000< KMNUMnLSTX){upWi literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/SceneObject.png b/Templates/Full/game/tools/classIcons/SceneObject.png new file mode 100644 index 0000000000000000000000000000000000000000..59079e3d7b7ca0638d6ce036843382f6bf8bbfb4 GIT binary patch literal 369 zcmV-%0gnEOP)J%=P)hh4v57VW45?TN@jz5K^M^_{>CS{{_+}fSa@(l}e@k zdfmqIavfn5q1Ws4Z>uO%jez{KLF>>otJd23N|xHoYZu-39?E5d{W^sNv@R4y;j}Rt z`S|R6=yqLbS_xdjaOfipqw`q=j;g9G38YNmx*lxXM76enAQ;0B0?aZ-UP=;*z-|6u zFD;@{DdYX^18=V%_$J3*5rHzPzHaC@^K%sp1|uRdV45|`E6s?=PNOAHsD_#GN#b?7X zw&-~Cqd{hr-lY(t9}sBZ4XF!S29`p?qk9~S44l=iD!;R#PHEEQv^iRmB=G4x9*5BA z&fmC86a-Niv2Xj2h*P8NJ&bv+*+1xIxOhp!xK9);DCVb!pAgaw|&=hX#J*JG)P|p3;=of-|S?pNDcr1 N002ovPDHLkV1f}@2w4CC literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/SimObject.png b/Templates/Full/game/tools/classIcons/SimObject.png new file mode 100644 index 0000000000000000000000000000000000000000..5c143982fb3bf199455b52f352ef9c77b3a24241 GIT binary patch literal 358 zcmV-s0h#`ZP)F=Mv4A}6$zyBih6H6Tkx*#X6_zWdpVEF^IjUog7{>5#8hK?G8t&=4K z8#_D0v&YXE4(~h8@aEN9;=+K7n~TBO!=8bSjSUo{3{oRJAxg#o^F@$<(|26XknK>S0r0jH0jXFykv5s26f0NK2C-A;zvH|`RS z#>KN&f@uy8c7~7`e=wVkosEH&jgu}1{rUgjo>{fw=^d`}7_}IKzB{QNCm4=xK7IG! z>mO-J9(OEvbUi%2d^>l;nbwL}2Bm-h{&gxUCOp$nejbt)>aDV>%C+tc`xc6(AJm7C-`}5m*BR88Bk4As1J+mzLe7U=- iw;9~LHXA!MFfx2lbli6~+`wDnJru|C)u1>nY!R7J(4vLeqSi)>$RG$>1Qk6NtqR>Fg)Jfo-Dxi)DM#B_jEy6q zlc_l}nmRi3b*|(1K%@ibyZ5{2{{R2;_&!Z3g{En&F}vF#YrA-l_zl9H0X8thx-TnW z7n_pnqcz zRF?18L!Q+HF0zYhJe|g^QWL3vz#B?l3`G212E!(Xr;Uuw7?_wdP*Qe457p?4X^9|I zSCr;B=gwqe0NxMHaK~qcjBM2G6kS0J&XffrQH^wK6i04>Kw3Pj33>wlK~KY@PI^Zo zw2nw)x9$Op4Sx9;7v<(Y8(&A0$go8TnGPc(mT9=12?9F0`|0pcfi+c{x&scls7K8aYiG(584?n)>Do}a`C0VGp2O#BWQdVL@ zVwEcd(Rm@51;3o$sR_uEI#0+*QzRRsS=WR?FDl@L@9!2%6FZq8c*FRxhaq45$2{rJ z&OG?pEm_#(Wo=G_^ehotfZkS??#ZQ<45lYVNwzsfGH_8G^~aUX7ICZ0Q?m1Yg5QCV z4wMVlw0a61;#tD(q3@#;nRCKo(xj#L frj4%kKLG{+V2I-QupMI#00000NkvXXu0mjf-GfkH literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/SpawnSphere.png b/Templates/Full/game/tools/classIcons/SpawnSphere.png new file mode 100644 index 0000000000000000000000000000000000000000..df46d9df567e4b2d1a7a00403962c128465a8562 GIT binary patch literal 748 zcmVXVP zY{RzEAkAoKL|#NSNs?|#t!`A1g0A~3w66LOB1Tvmgu<{c3SBp)Qc$R@TD48*)a7*9 zXj4D4bKdDFrK{eL^PQLXJm=v(=RB{3eM{dBAGuyK_U_%|C|QuqzcCh}t+QydG~=*Z4_k39I&XF$^D`sL zD>alNaBmdJ%><$wVZ2{^gTcE`v6a(WWNw(KnXc{7xkPd-JYPuW#rw#o7;L&)!Z_h3 zY+bXHL%mGkp{{?iCo?WP;#tL0`GfocZt|0VHo!Sc z%Jw>IW9yaEV$M7&?lu!}&3P$D@a)M;PA*9Kz+);_m39^h&zVQX-R6dI&3tWA-@(W9 eKhOEM00RK`vkX=t8G%s%0000YCA+x5OwjC)wxS~3Nla#I##CAp+g$1f)Or3l#y;ZbtN1A ziz)l}_PonLM5_lLUU+}c_w)RFe+I-_T3YJlcqrb*Z+jFB25<8pR=h2qC@n2*vRbWF zS67qGW=~dBRMagkEe-t>P*YPgpvB_2-EP*`*Ks%;D5aXp%gbBk`;dUP_5&EC0wsZX zJRXwCB#n)Ygu`J>CKC$_3oI`$M_V#wF zs;ba;kw}D0Cd2&vJc&etnVA{V>GYUr{Q`<=zx8e1Aak*TSm6a8$$mMcu zZf+J@3j_k#!{Z!EMlg|Iy;K%&Gi+~RKmD#6N~H>A zoBOZRdF%k(?S;c$C}|RaM*uDu-qi7Zy8++yuw-@2KIx^?u>p6kfwf+QQhxDKD5`{^ zS%{@VhSv=41{9_p9DB>)k}%doOvorIH;=tzJ=T@T^i7SP}2q z8E@Q!q5r~{By;dn)-@@m55I%NR_L#pciQZEvu`__&N?CP+b{N)00RKLi47*lu|#qJ O0000e3Rtp;oNs-Fc zCIm$Uf56HzA7GU}D5i^z_yIx$?e!P5vi1k8q9|gPkY=M067Ug{cs#S&l_iN2L2%%3 z=FZ%E?!EH>EQ5I*8rXbN_~S?=vbBW5$o_eRWK{*@JE?+_P)Rs?q7c#CtgVaAB42Co z6@lDeBg;94^ZZae5}6XbyG%AN$lfjaaYfb+$er}Jh%ML)v(--(TqOqq*}W!TPsqpZ zxDqcJyqo|4 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/TSForestItemData.png b/Templates/Full/game/tools/classIcons/TSForestItemData.png new file mode 100644 index 0000000000000000000000000000000000000000..183c7e53256617e8e579642d5f5489f142fe3f5e GIT binary patch literal 436 zcmV;l0ZaagP)^#4OkkZr zoIsdBoS^CdCXEwVC*XAgZ~@zHfEzFZi5g>U`}`h!A6^?16Me~tcig+XcRwI>&ISKj z=JqN4t8WUfjXV5m7=bB>$r+tRpPOL+qeBL+l%cE*_fGA#amN9~vGj+)f&wJeNhTHb zA_tQ`gMk86z=8zKNe4=Go`V={#m{FD^XA4!R_g|=S>MM{^7F`Bb-p}lZ5)xJ8ma^1(4rZJ}%?xXuf%$kF zQxoTBek5z|4aX?@d-eYPGrhltzW#{KDtNo4Q_3b=PNO>x@X{M(Ojp(gJMSC1lAp$Z eIH&7NfB^uSjkLR|Fa>7-0000Z;WeJ#$E*kSvGD6SR#ze{Wt=ccL_&%{k@ja+>@CR8 z*PUx^VJ?&3si5E#Nhs;5cGa+$YeNr=8Y3lU zKuO80V4tgwxebBE09NB+L=zDRi746Ms4S`YPXPq!4mPU@X)n)lnbvR4IZVYe58KOVBE_@GG*6u16irttT{e40L_y$-FgPUAYH4 z%4tmOQD}43htwmgCdH$JDh>6Xq4_ zq!kh(=GF;pwH7z)wr^~TT~mc#qt{()x{i}|%~+0vFywoRVc!s5zMn{mW+eV~0{U>v z25Th5zU@2?G zAi^fb@bB0EdgrMQ1_TYT@3j;7_ve4Ul8`dPm!Dr4GS;Lqy!`wEYViO0PLu5ofCjBc zH-H(&ka3i)U}R+U`0)Kb!{#fS8D#k781n538Gioy#c==CLy3QX|401$%U~eqCU^1C zu17aeV!^1+Qh=G6@xF^xva*^6@-&ObiSz{|nQ@cH}a2Y>(l zH#}8$>;pU<{QdJU;qMQ=;HC~wFRZW_k$=jXqA zog!0kz%prN8z=nx^-sY^!;|6b*Ka@rzQPSzynh+P$!n(>vh6Y$7=AM_eE;^1A>BEd zL4sQx6l35t!l;&Fa32^D3K+>5O3Mq&G9=o^F>r8jFmQ5mFmQ2lGF*IknPKYYnIJWZ tjJR^6a-3cQP{n)#3Go9XrP&!EzyOQI%$aYhwp;)J002ovPDHLkV1haa8P)QQi;kO_zthD|R)cPSPcI(=W3SFpFMT=bsx)Ickq6mVD6|88r2vRE6 ziYBHp>2&5zy!Q%R`6Y3dzMmi8Q?OVjAwbp)0O zz>;P4PMfFg@%m9LN=!_C$EFRf@CQR~1w!!Av}D5yY&)ERVT2I$(V8wc6a(H__xPX_ zh!BDb@cFBt(|MURh}4F$xwjj(@S!m4z^3VQQdf-MeSj1Dux8VN6HyF75L^ao^lF01tK*R{5)mZwmj8gRkAsyJcru5CeO}+QU#ZQ4nU?D{tWm(s64f6x?UOo^&Vn3p+Bjhx z5?lC{Rr!*{z2*a$3O5t|TNK*6R1bjRXLxJ0;zr%R3IonI$CDFQD7ikfRjhU*`yS)( z)}X2Hv1;Jv)wvPGX21La$kB&kaJJcFX-X9mwyU7kDz#ZK-kE9hWNv;$h^OF>h=PxF3@+DL$USZ-bZk@n1~1iD=Qnr?>~P8 zZrr-r4>Uv`=#oOP3;zE74aOjF`^Y;mMi++xZZ2*HT`e6378aHQpdk(@UI2kdx1NJB zx;O|teF1S1H#ZN1jFb$B8INhe?Pp+&F8=!MONJw-_cL6+aURSU6adGn14b;Ex#&aV z4pscXiQNp$%*;Ro&N1-w2{LG^>VSk5FkEo?)NL?E7Z3H00nI!G^2}yfQ_jmgCfuX5P1F)98L$IF8B?`+ZG*xy8y(7iNk=j1SFcje*MDm;^hkv zb0UTdQkq?{+71J+-@aye^!PD|nFve=4_F}ajZnOL>ktv15l_Waste~heti6{ z;|F}3Icz8ZG=~x@AT4xDh>+vJ47}%r3J^Fcp3!(8fp`BiPXP3{%dzdjlsUOg1h%nW zI(KQ_gE|HTwR|xem8Zhxu+^-2fR04C!<1U`AsI#m{uHzMT`}I1)A3%?w$(_0lM#`d zUzHeuq!AtXhq#pHL}aKf%5E%&6?1 zM@J$_t{hNVtKY0dI?={=UKG~0RL0tNJ&@eQY@^ld#ZmGZ$OJE{!%C88AvBa>I4$(jHF002ovPDHLkV1n;g?eG8q literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/WaterPlane.png b/Templates/Full/game/tools/classIcons/WaterPlane.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d28f85400956486dd679e4bde74967ba1f63ee GIT binary patch literal 787 zcmV+u1MK{XP)(KK@^_LUbCCTm>6SX z8WpdJHI=qrkSY`@^r6s}Lg`DP?T;+hLZDJXOz{Fb z6%=jF+We-RA&+_8x9C{b-X*z+g? zo)0@m*9u2T_uIa%$kK9JRRlt)$4cm?dvGc2mO~?9vrjPzPbl%UR)A8%;JOm-tUQQd zfCyoQ0Kr~JC37S8VVV1>sWnT8Dwb}ET1!=Vhar&F#Q`3pO4TZsnjXPEksIveLw+!m zbWf_@MP1O%AS0a&-ZU(pk?u+&&V4^RJ#R+Bp>R*&y4m@CMIt>?c1RkHc1I$ux(QUl z0mQAhLNNMnix9h}8%y)|Gm|Oe0YJc&-rhdeJOVQ*B@xDindcb}EnZ4k&U~urjkhnC zM~3>@Rb~_bRpwJMwcap_Wuw^!l7QRA>?-pe$}@yn@$bJW+n!P<2`2E zrjYik{N|CvF@?Y6_70BEXJ>{VKOE-~U#%JWox=J?o;_HZ%lZ{XmU+gkZ97a-EKj{J zUDTdE&Cbn^atJd7pDd0I$5ll>ES8FA<=#*rs3=Cu%5Cn6z8)BQ{dHk}JUx*lOdQQ% zOcL=hxotPlYQ|bF-!v_zwSH{~Jl8*%W_=*jQ^~4kd|uyWpJ521z^|@khwjDtBY`(B zo*Wm;l|Ona5t|%KZtPsa(5p4T*hBblhVT4#s?pt$vr$L4k?8{vi|DTa0{}68QZrmH RaU}o%002ovPDHLkV1gt6V)Xz3 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/Zone.png b/Templates/Full/game/tools/classIcons/Zone.png new file mode 100644 index 0000000000000000000000000000000000000000..117e48ad0390a87e7fd7bcd8f0aee81a8ff8dbb1 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPggac4;ATohK?Ki-4wxdAc};Se#yZ zdA%RAqrmZx=S?|Sm?Ax$^j9)BI!tS6i4wB0?PUyg6tH37oMy5FNN%-|WArTQICZLP z5&vfQX>XUBJbYgEuco{#O?~w$uW6}CqLp@sWcfat>78E5785t;_sbY~5B)T$JEZjIFLRIdq|5g!O!Q8B#vD|RTQq65$?>Z@bmk`| u@8aIeaFaXsUF(kMJJ+o@Z1MSj(fq!2jPLEWZqdL%WAJqKb6Mw<&;$U@*qTZJ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/cameraSpawn.png b/Templates/Full/game/tools/classIcons/cameraSpawn.png new file mode 100644 index 0000000000000000000000000000000000000000..8a060a6514f75531832bd21e099e72532e4e04f4 GIT binary patch literal 778 zcmV+l1NHogP)`wrnr^*cf2rQQ|4jyCM7r z%wy?+tP@?91|!UN1%*mJD-f}?5XFoqh^hAhq|~&V)pfB((cK2y;QpdYL*2=?qc9t6 zI3O1zN7O?Q1gM#HL{kyWuJ|y}JA&ZE(q~rRL`@`WARopv26mq9IE9+rdf0T;FllX2 zH03DDQc#dp1cQ{1T&)2mjy(7SL1R3!Zcl$fw?t=V+rHC$?KlTl=i7+}d@Ezr)R?PXm=(+#;4|N7#4WqK&ibO`mvD+rt z9A;|Z6iF)j0})11VYBXn&bPPX*4>*tQ%rvHVrDdmY*t&M6w;DK+>%1%Y*RFyInA?C zDaM6MEjZz9qbSA0z$E|h5<7*iGIEGL#%rnh*BC)ArF%aPflbD2c zvRxYiE=NlHrMM<$MybQDXeFariKpY&of`W5cyZwO3Q zZevbV_gtndo$Ml$kj^9(u}y@1^UT8YZko2e_cHy@b^a;90H^^21b^Xd;{X5v07*qo IM6N<$f>Q8lvH$=8 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/decal.png b/Templates/Full/game/tools/classIcons/decal.png new file mode 100644 index 0000000000000000000000000000000000000000..ba792f98641a272e6a3b5a6052c3cc9dc2ab05fd GIT binary patch literal 567 zcmV-70?7S|P)BQyy3K41CL8gi^XC}`S}^OS`FcFSZQO^5d+-Z-hxUJUS40p8~tT&4fctM8tn>b!pCCTUoUKs^J^-@Q0g6A`!=b1B&&N z*~yU!b|z(6j!R59kxV2K@cDemWHR3xTb6}Jqmkt#H}}#hu0fJg8dp`-NeVwb%|Wl% z@&0Z?@_0b01c?xlkF#b;hD}ip=2S|h5;&`NdJaWS*|K3876|!_ai+}T%`Iq}2Gcb0 z@bHN9GDSVmk3b*@HW(J6@avE0(XZh3dRd(T!!X%zn5{K(uwfVo24xJG6_luro9We(;+UgY=tp}bwdC>PMB_Mwv9b>f!QXoAJ`CWBlq_j66z z9bBGlvq=QHUTtZ@CNtey-$JlxG-`Kx$@2L;5$_)Y3;<$V{_Skak?8;c002ovPDHLk FV1faY08;<} literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/decalNode.png b/Templates/Full/game/tools/classIcons/decalNode.png new file mode 100644 index 0000000000000000000000000000000000000000..f6684f185b3cac485a9bdf9ae09ebcb237c01fd6 GIT binary patch literal 693 zcmV;m0!safP)_QSN*(GI|C(8S<-_C=?3k za=F}V6URMDYr{Ew=%8`1caytC+j@7VmG% z;I*RNZiAO=_hVTR`6|7hH0M{!y^Nb{4g@$ zJP4vJ%lSwoQZt*)9mK#;fg>UtTXzD{W%rNZXXU@^1>Zvs52K&c`u0t z4u=C)t5w&H>o4RfM1)kD{O&(3t`%i&fC)755k7o)=l4$)@QItD| z4oKVOa``^-K_a302=m}xAP|_KeU2Z{<-uTZe1ikyFVM$GrBc%*Pf{2;)9Ex}Z5#aN bw*UhGx+GgiO_=h}00000NkvXXu0mjfGXOk3 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/default.png b/Templates/Full/game/tools/classIcons/default.png new file mode 100644 index 0000000000000000000000000000000000000000..0519b522075409e5623fe3805a2d8500b260d1ab GIT binary patch literal 356 zcmV-q0h|7bP)c02>=#c4o(Vi_+`<0eK123~YIppMT#GJ3+iu4hcR zoc8zc-}=9Q{__6$^OxbzUsMc~RUlB+h3y8>wDma7FkBkuSU;z$r1AsQ+2_>8c zFu)A}Ig1PzAPo46&j1FT2HYab3t-KR*bHXu1<_0}FJQxeVfYUU{`~Lnzmg@JXP+hL z0u0;#GkjjNdyykXO2p>J0H^3QplBLKBKptJyJ7#*<7i7id()YjqDpwL|ZK(nAjlblQ_`9KD(tCYG&sv{m=GQ%Ylx2k`qJRZAA}N3L^k$#jl8e>_3N?#eGU}r?J0?-Y zX}v20J}Vw>gxl2tO$MKY9OQ!G3gDT^Zd}$A8)1O8>kg?}jGt%boC>KX>?EN;g=fIM z)`x&JwIzNxOI=Fj!s3ivFkn$YLBnj1h2tjkI3_u^!)4<(C5l}y34;ZKqBLDERt(i9ddhIyfDIIWap}1Z*ZH`N{ohYCOpzhrB5Sc%5R=c=X9HS z`jL+UJxE^;ctp1W3>ge73nf0fs2&NsU{OHFkgQW;HHrsRMKeKhwiq1+w8ezYe-$}M zF90PU7E@{ejbOk!G20kVG-;g*HY1{t9moX()^1`JQ4~J@N{bYUK%*eH z42o)zHWi1cC7W6TaV~K7FK7;GY6yo2CvB*fM1z8$AR{4#C?g~vIEb%E(X9Jj-+eqK zTIz$#z3-g!oqNu?-_ubK*6GB@wh&v`U5dHLR)($E4lQQ1@j4CB&bB>^)fAi$jnhQH zK~A@o`^tHl3Mq*$W6xBVn@MI0vqV)jfkIBZ1CH6{&1te&jr0@ha*Gb5ca%>_S@!8i z5(69_T03B5-|F@p8O?ege6jmTm8W--3Nl%2CcfaCS{flKFFTpfeMS3m9eQSErz0t^ zdNarm=M~;Yz1HM5=cJ8Xo*^ECO11)LXvdH1Lg-nLZ<8fX?ivv0a9^X`(JMbA794Pq zz=xXzvWb#BI2E}dm(S916vGZXHZGejkG7yOXdroS9e$jROMJ0>U z(GFe$P&gSRh;nlQMozu75Ou512oAVHi3t`IgphiHn^C?N@r@g(G0Bv; yB8C`-JmC1&Qd5`IP#^z5@CJvgbe$Z~OtJrAt1|RRq zxSV8IIRS!0>gIWkpw(J~qTou&r&u{jsAHD@fO~$^1K;<6b8cwOsR3gQ^8D*~dt)!Y zf4Uj|P(W}GP3XD}a4^v(S(ZbZev;cqIwx!jhQ*}MGzxNOw}a!mRz#AdaCaL6c30RH z{ZMeB_}ZS05Wz>OV9DGi?&VupfI;N|(Xa($CY22u1dyH>r+BJwT30Q`un-H@oVzW@LL M07*qoM6N<$g2Vy0TmS$7 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/particleEffecterObject.png b/Templates/Full/game/tools/classIcons/particleEffecterObject.png new file mode 100644 index 0000000000000000000000000000000000000000..255a5a8a8a380d988090177168050f6ce1a9065d GIT binary patch literal 727 zcmV;|0x127P)un+_ebn|k2mJG}4nyzlqD@5h1GxEDY<{taI!LVk4Llx7i7;Ail_ z562LVEF!uVd;dXGDL1(}b>{j3GRT@edTD4;=c-A}x(K?`R7ht-~lKnt)BVedm5^XpHm!a)*FuFue5pd6A z#wMyXM~z)R^q7IZ2drTjh)n{wx)S6`!`<$0vlvQ7PkBTl!UW*)%hgT^djX6M0Po%a zWo$+=wu)*!=6+$)A4YI>6;jH`);oh9w@4D3r~QCe476DRCIZY&fX7`4n3e&-p#6KE zX8NO8rBEZ*bS}hH9kGeLBg)L%M^(QamS{(?S0CbJg{rG`t~3GCUE0k#zJj`XYv4jF z^D_jmX98ZDuMsL+x^rl^O)MRyeeKWsOP+Lo*iQN;Ed$5cYVHkeCvz@c!&dxTM z&g0t3X{D$w%SegH24N`HRT0q-fn9XdO&4`j&_x$rM9@v)O+Qo@k~dKl30Xl{EHok% zLL4>I>5g;rtht}FbG{CuvV;VC;N|_k7v6{GecqQ~6<+TsspnMMI6A=&+)Jh6Ljc7Z zFs&~1v}q?Ki+)SBlS~uK+gepN(yyx8zX+J(PcuMDRC-pl=#GG&RQMWgjsDHnqjyBn zv8Do}k?|Puz7s*tCSJzLZkUHZJCpTwFL~bT(ek=)S6UlSs;U}YMPSyC;DM2=2++1z zIero72!aa@)HRKS9#Mu#$0SSKYc^H?8nxU&E|)F#g^@G3PAN)p;2_ZV3Ftfw=<~pp zZs6`I5U(Hz<+cf>zLhp_a_=*G$X_G84MVY-@w_1!ZfDYyZfutff@wgT0xsOgWQ_m* zPU`6M?rn;&iqcS<%0!3Fe;`t4E3Sq(3s#el*HFgomD1^*GL(HP5PJULL{O;9F&@`D#L}3h!@~Wgg2V9ak{m=CF0##6Uio0Hm4-) zH&j?x)@Udoha~gvP|Dsvk+&-aV%1`0wO^I;>JRDoZ!sE{86;*;aC`eWZ{ROf;h^a>gUi;3mO3V9YIf{M;T!&js@t z-IvXhSL-5J#$(A=Wj51u`8@Ib7r~Mm7thm6e*_o+O^6B%Ny$dN00000NkvXXu0mjf DP8MaB literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/particleSimulation.png b/Templates/Full/game/tools/classIcons/particleSimulation.png new file mode 100644 index 0000000000000000000000000000000000000000..95bcfef6b6e184a1cf0d1b2d61160325b08a1553 GIT binary patch literal 766 zcmVzGdSf; z1g zG;Opuzuvp=b>7n%Cl}R)Gw;m3=R5bi-#LfP2N1^k+MckA{@+$I$ck~2{o@XI<5&1R z78v_?0)@=KfnlW#+#S7t#7gh_8%@QN)f?O6f*@FoG4SaLWNu$8#xTpWu%NQA($fQ} zskwMynkHOb$IqIQnp-?`w@+0RQ<5YTX$|_5N6|*A(N^Qva4Pv>*YIyp9eZFI)4pU<-8@U*}UwF zFZD);gO+v4VPL1qx%?@0ITC`)MSxqRXb=dIaW`=F9IzULbmQp`{QN+w+gM@bY7#TKWOfk`hBC5dPJ4YSThAPtO02>gb8 z&DmOZ2a<}a8e0^_P#s7~6*%XPvfku}YLwIVl>y+>;@aUZm-DGi&s3&F@v|rhT-uz# zE+f?uvbI!#w1Lz#W}<-;Z|&~e7k|}U0j;V$pYqrj*-cjL#L`xtzTS`8;jY#hPu=%P zZ__LYEX%TKYgG3&QtwNB36A;N1{?0(%&P)8Di-sC0GIS7EDnqyPW_ literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/pathMarker.png b/Templates/Full/game/tools/classIcons/pathMarker.png new file mode 100644 index 0000000000000000000000000000000000000000..a93b82252b5d4ec3e48c2899dac5961e3984b260 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XyggkULn>}1{rUgjp4pWlg~85Qj$!J9%cqYxC`z!g860Ao zFma-w^QWaeN(@Km8yF;UyND?{-4^Wl{&+(Ak{hgxUpCBonQ$P6K_G!4jKQetXXBYe QKw}v^UHx3vIVCg!05zaE0RR91 literal 0 HcmV?d00001 diff --git a/Templates/Full/game/tools/classIcons/volumeLight.png b/Templates/Full/game/tools/classIcons/volumeLight.png new file mode 100644 index 0000000000000000000000000000000000000000..114a7f2abafd80f9b23e226ad11a768434194f22 GIT binary patch literal 665 zcmV;K0%rY*P)F8QMC}R~d&@3+KlUY84AvmLZOO_s!dn zSDIw5)sO#5kue0LW*a!G+i*$-!Z?A@2wp17Ph3rXm_ecD>n4{FyN-$TM>{B6I+lK- zfRiLe5asz6Kwg+~O|x9VK4m{`I4GF~+^=Gg7=D-_PBM%a!3H4RDwMh4c~rCTyy?I! zXc)~yXa#{)7$b;NwvnPY_O<~Syigg05NPaKxNJGlH4Xjy5IT#)D8+OcqriMP4=|X8 z8-Qe8EMJ}+6j^L56_UlEZrNUM;u8>v;tV%@zVPxH=s5rrUEoQ*glA2g_X7QykBX(K z=hwqrZqd|nM@9Wg^p%GdPQE(~a5szKmUY#8hhXznLKm`) zf)|f%oRZxOG7c~|;_d%-O z|IxzSqrYKB?@cxFZ@m@T10O9qVwVbtIAwW1Sw_koA%1W4T*36y=buWdw6Qz(@xAA% ze1FG)+*Tv9Un}-ZvHN7dZFkfkDgO6&{w2Twi0(5Gy)VzK00000NkvXXu0mjfjPNdI literal 0 HcmV?d00001 From 240219c42318126613076de28b8aade24b0c7754 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Fri, 21 Aug 2015 03:06:47 -0500 Subject: [PATCH 63/75] clarify var-usage via naming --- Engine/source/gui/3d/guiTSControl.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Engine/source/gui/3d/guiTSControl.cpp b/Engine/source/gui/3d/guiTSControl.cpp index 63f4d236d..efe553d73 100644 --- a/Engine/source/gui/3d/guiTSControl.cpp +++ b/Engine/source/gui/3d/guiTSControl.cpp @@ -616,11 +616,11 @@ void GuiTSCtrl::onRender(Point2I offset, const RectI &updateRect) F32 screenBottom = rectHeight * 0.5; const F32 fillConv = 0.0f; - const F32 frustumDepth = gfxFrustum.getNearDist() + 0.012; - verts[0].point.set( screenLeft - fillConv, frustumDepth, screenTop - fillConv ); - verts[1].point.set( screenRight - fillConv, frustumDepth, screenTop - fillConv ); - verts[2].point.set( screenLeft - fillConv, frustumDepth, screenBottom - fillConv ); - verts[3].point.set( screenRight - fillConv, frustumDepth, screenBottom - fillConv ); + const F32 frustumDepthAdjusted = gfxFrustum.getNearDist() + 0.012; + verts[0].point.set( screenLeft - fillConv, frustumDepthAdjusted, screenTop - fillConv ); + verts[1].point.set( screenRight - fillConv, frustumDepthAdjusted, screenTop - fillConv ); + verts[2].point.set( screenLeft - fillConv, frustumDepthAdjusted, screenBottom - fillConv ); + verts[3].point.set( screenRight - fillConv, frustumDepthAdjusted, screenBottom - fillConv ); verts[0].color = verts[1].color = verts[2].color = verts[3].color = ColorI(255,255,255,255); From 8f8c17e997431009600054a8b2b5c8920e88a537 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Fri, 21 Aug 2015 03:07:41 -0500 Subject: [PATCH 64/75] optimization --- Engine/source/gui/3d/guiTSControl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/3d/guiTSControl.cpp b/Engine/source/gui/3d/guiTSControl.cpp index efe553d73..cbb520433 100644 --- a/Engine/source/gui/3d/guiTSControl.cpp +++ b/Engine/source/gui/3d/guiTSControl.cpp @@ -579,11 +579,11 @@ void GuiTSCtrl::onRender(Point2I offset, const RectI &updateRect) const FovPort *currentFovPort = GFX->getStereoFovPort(); const MatrixF *eyeTransforms = GFX->getStereoEyeTransforms(); const Point3F *eyeOffset = GFX->getStereoEyeOffsets(); + Frustum gfxFrustum = originalFrustum; for (U32 i=0; i<2; i++) { GFX->activateStereoTarget(i); - Frustum gfxFrustum = originalFrustum; MathUtils::makeFovPortFrustum(&gfxFrustum, true, gfxFrustum.getNearDist(), gfxFrustum.getFarDist(), currentFovPort[i], eyeTransforms[i]); GFX->setFrustum(gfxFrustum); From 71c19a61514a23f0d0f6f02cc62ddfdfd31ca1fd Mon Sep 17 00:00:00 2001 From: Areloch Date: Fri, 28 Aug 2015 00:27:08 -0500 Subject: [PATCH 65/75] Companion PR to #719 Adds the OGL side. redoing it to make sure the PR history is clean. --- Engine/source/shaderGen/GLSL/bumpGLSL.cpp | 12 ++++++++++-- Engine/source/terrain/glsl/terrFeatureGLSL.cpp | 12 ++++++++++-- .../Empty/game/shaders/common/gl/torque.glsl | 15 +++++++++++++++ Templates/Full/game/shaders/common/gl/torque.glsl | 15 +++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/Engine/source/shaderGen/GLSL/bumpGLSL.cpp b/Engine/source/shaderGen/GLSL/bumpGLSL.cpp index 07f874f8b..56c8907e5 100644 --- a/Engine/source/shaderGen/GLSL/bumpGLSL.cpp +++ b/Engine/source/shaderGen/GLSL/bumpGLSL.cpp @@ -347,8 +347,16 @@ void ParallaxFeatGLSL::processPix( Vector &componentList, Var *normalMap = getNormalMapTex(); // Call the library function to do the rest. - meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @ );\r\n", - texCoord, normalMap, texCoord, negViewTS, parallaxInfo ) ); + if (fd.features.hasFeature(MFT_IsDXTnm, getProcessIndex())) + { + meta->addStatement(new GenOp(" @.xy += parallaxOffsetDxtnm( @, @.xy, @, @ );\r\n", + texCoord, normalMap, texCoord, negViewTS, parallaxInfo)); + } + else + { + meta->addStatement(new GenOp(" @.xy += parallaxOffset( @, @.xy, @, @ );\r\n", + texCoord, normalMap, texCoord, negViewTS, parallaxInfo)); + } // TODO: Fix second UV maybe? diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index eba99371a..6922cf577 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -468,8 +468,16 @@ void TerrainDetailMapFeatGLSL::processPix( Vector &component Var *normalMap = _getNormalMapTex(); // Call the library function to do the rest. - meta->addStatement( new GenOp( " @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n", - inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend ) ); + if (fd.features.hasFeature(MFT_IsDXTnm, detailIndex)) + { + meta->addStatement(new GenOp(" @.xy += parallaxOffsetDxtnm( @, @.xy, @, @.z * @ );\r\n", + inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend)); + } + else + { + meta->addStatement(new GenOp(" @.xy += parallaxOffset( @, @.xy, @, @.z * @ );\r\n", + inDet, normalMap, inDet, negViewTS, detailInfo, detailBlend)); + } } // If this is a prepass then we skip color. diff --git a/Templates/Empty/game/shaders/common/gl/torque.glsl b/Templates/Empty/game/shaders/common/gl/torque.glsl index 42965b7c3..fcb54ba5f 100644 --- a/Templates/Empty/game/shaders/common/gl/torque.glsl +++ b/Templates/Empty/game/shaders/common/gl/torque.glsl @@ -150,6 +150,21 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept return offset; } +/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha +vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale) +{ + float depth = texture(texMap, texCoord).r; + vec2 offset = negViewTS.xy * (depth * depthScale); + + for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) + { + depth = (depth + texture(texMap, texCoord + offset).r) * 0.5; + offset = negViewTS.xy * (depth * depthScale); + } + + return offset; +} + /// The maximum value for 16bit per component integer HDR encoding. const float HDR_RGB16_MAX = 100.0; diff --git a/Templates/Full/game/shaders/common/gl/torque.glsl b/Templates/Full/game/shaders/common/gl/torque.glsl index 42965b7c3..fcb54ba5f 100644 --- a/Templates/Full/game/shaders/common/gl/torque.glsl +++ b/Templates/Full/game/shaders/common/gl/torque.glsl @@ -150,6 +150,21 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept return offset; } +/// Same as parallaxOffset but for dxtnm where depth is stored in the red channel instead of the alpha +vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale) +{ + float depth = texture(texMap, texCoord).r; + vec2 offset = negViewTS.xy * (depth * depthScale); + + for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) + { + depth = (depth + texture(texMap, texCoord + offset).r) * 0.5; + offset = negViewTS.xy * (depth * depthScale); + } + + return offset; +} + /// The maximum value for 16bit per component integer HDR encoding. const float HDR_RGB16_MAX = 100.0; From 5ee096de203eb0d635ff09699be234c590ebd10e Mon Sep 17 00:00:00 2001 From: Areloch Date: Sat, 29 Aug 2015 12:41:35 -0500 Subject: [PATCH 66/75] Added in explicit setting to vec2 in the shader functions per Az's suggestion, to avoid GLSL problems --- Templates/Empty/game/shaders/common/gl/torque.glsl | 8 ++++---- Templates/Full/game/shaders/common/gl/torque.glsl | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Templates/Empty/game/shaders/common/gl/torque.glsl b/Templates/Empty/game/shaders/common/gl/torque.glsl index fcb54ba5f..9032a57f7 100644 --- a/Templates/Empty/game/shaders/common/gl/torque.glsl +++ b/Templates/Empty/game/shaders/common/gl/torque.glsl @@ -139,12 +139,12 @@ mat3x3 quatToMat( vec4 quat ) vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale ) { float depth = texture( texMap, texCoord ).a; - vec2 offset = negViewTS.xy * ( depth * depthScale ); + vec2 offset = negViewTS.xy * vec2( depth * depthScale ); for ( int i=0; i < PARALLAX_REFINE_STEPS; i++ ) { depth = ( depth + texture( texMap, texCoord + offset ).a ) * 0.5; - offset = negViewTS.xy * ( depth * depthScale ); + offset = negViewTS.xy * vec2( depth * depthScale ); } return offset; @@ -154,12 +154,12 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale) { float depth = texture(texMap, texCoord).r; - vec2 offset = negViewTS.xy * (depth * depthScale); + vec2 offset = negViewTS.xy * vec2(depth * depthScale); for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) { depth = (depth + texture(texMap, texCoord + offset).r) * 0.5; - offset = negViewTS.xy * (depth * depthScale); + offset = negViewTS.xy * vec2(depth * depthScale); } return offset; diff --git a/Templates/Full/game/shaders/common/gl/torque.glsl b/Templates/Full/game/shaders/common/gl/torque.glsl index fcb54ba5f..9032a57f7 100644 --- a/Templates/Full/game/shaders/common/gl/torque.glsl +++ b/Templates/Full/game/shaders/common/gl/torque.glsl @@ -139,12 +139,12 @@ mat3x3 quatToMat( vec4 quat ) vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale ) { float depth = texture( texMap, texCoord ).a; - vec2 offset = negViewTS.xy * ( depth * depthScale ); + vec2 offset = negViewTS.xy * vec2( depth * depthScale ); for ( int i=0; i < PARALLAX_REFINE_STEPS; i++ ) { depth = ( depth + texture( texMap, texCoord + offset ).a ) * 0.5; - offset = negViewTS.xy * ( depth * depthScale ); + offset = negViewTS.xy * vec2( depth * depthScale ); } return offset; @@ -154,12 +154,12 @@ vec2 parallaxOffset( sampler2D texMap, vec2 texCoord, vec3 negViewTS, float dept vec2 parallaxOffsetDxtnm(sampler2D texMap, vec2 texCoord, vec3 negViewTS, float depthScale) { float depth = texture(texMap, texCoord).r; - vec2 offset = negViewTS.xy * (depth * depthScale); + vec2 offset = negViewTS.xy * vec2(depth * depthScale); for (int i = 0; i < PARALLAX_REFINE_STEPS; i++) { depth = (depth + texture(texMap, texCoord + offset).r) * 0.5; - offset = negViewTS.xy * (depth * depthScale); + offset = negViewTS.xy * vec2(depth * depthScale); } return offset; From dd5f910b64236a3a1b13e8027a742b1ca63ffad5 Mon Sep 17 00:00:00 2001 From: Areloch Date: Sat, 5 Sep 2015 12:07:47 -0500 Subject: [PATCH 67/75] Companion PR to 1398 to add the change to the Empty template as well. --- .../Empty/game/core/scripts/gui/messageBoxes/messageBox.ed.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates/Empty/game/core/scripts/gui/messageBoxes/messageBox.ed.cs b/Templates/Empty/game/core/scripts/gui/messageBoxes/messageBox.ed.cs index 13c855927..b4192ecb1 100644 --- a/Templates/Empty/game/core/scripts/gui/messageBoxes/messageBox.ed.cs +++ b/Templates/Empty/game/core/scripts/gui/messageBoxes/messageBox.ed.cs @@ -21,7 +21,7 @@ //----------------------------------------------------------------------------- if($GameCanvas == OculusCanvas) - $GameCanvas = 0; + $GameCanvas = Canvas; // Cleanup Dialog created by 'core' if( isObject( MessagePopupDlg ) ) From 58ae3316090413a402e3bdb3f45abd4582bf352e Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 9 Sep 2015 15:22:19 -0500 Subject: [PATCH 68/75] U32 MRandomLCG::randI() was using longs 32 and 64 bit windows can handle that. 64 bit linux no likey mixing longs and ints. --- Engine/source/math/mRandom.cpp | 4 ++-- Engine/source/math/mRandom.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Engine/source/math/mRandom.cpp b/Engine/source/math/mRandom.cpp index 7e808d7ac..021b161e2 100644 --- a/Engine/source/math/mRandom.cpp +++ b/Engine/source/math/mRandom.cpp @@ -88,13 +88,13 @@ void MRandomLCG::setSeed(S32 s) U32 MRandomLCG::randI() { if ( mSeed <= msQuotient ) - mSeed = (mSeed * 16807L) % S32_MAX; + mSeed = (mSeed * 16807) % S32_MAX; else { S32 high_part = mSeed / msQuotient; S32 low_part = mSeed % msQuotient; - S32 test = (16807L * low_part) - (msRemainder * high_part); + S32 test = (16807 * low_part) - (msRemainder * high_part); if ( test > 0 ) mSeed = test; diff --git a/Engine/source/math/mRandom.h b/Engine/source/math/mRandom.h index dbe5ad970..632925228 100644 --- a/Engine/source/math/mRandom.h +++ b/Engine/source/math/mRandom.h @@ -54,7 +54,7 @@ public: inline F32 MRandomGenerator::randF() { // default: multiply by 1/(2^31) - return F32(randI()) * (1.0f/2147483647.0f); + return F32(randI()) * (1.0f / S32_MAX); } inline S32 MRandomGenerator::randI(S32 i, S32 n) From 6e1d031ecd8eb184baf3a7be50b39d85bb45d8e4 Mon Sep 17 00:00:00 2001 From: Areloch Date: Tue, 15 Sep 2015 19:56:35 -0500 Subject: [PATCH 69/75] Corrects light animation to adhere to the brightness level set in the light's params instead of sticking with the default 0-1 brightness range. --- Engine/source/T3D/lightAnimData.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Engine/source/T3D/lightAnimData.cpp b/Engine/source/T3D/lightAnimData.cpp index 5f6270023..b61d2b47d 100644 --- a/Engine/source/T3D/lightAnimData.cpp +++ b/Engine/source/T3D/lightAnimData.cpp @@ -195,6 +195,7 @@ bool LightAnimData::AnimValue::animate( F32 time, F32 *output ) F32 scaledTime, lerpFactor, valueRange, keyFrameLerp; U32 posFrom, posTo; S32 keyFrameFrom, keyFrameTo; + F32 initialValue = *output; bool wasAnimated = false; @@ -215,13 +216,13 @@ bool LightAnimData::AnimValue::animate( F32 time, F32 *output ) valueRange = ( value2[i] - value1[i] ) / 25.0f; if ( !smooth[i] ) - output[i] = value1[i] + ( keyFrameFrom * valueRange ); + output[i] = (value1[i] + (keyFrameFrom * valueRange)) * initialValue; else { lerpFactor = scaledTime - posFrom; keyFrameLerp = ( keyFrameTo - keyFrameFrom ) * lerpFactor; - output[i] = value1[i] + ( ( keyFrameFrom + keyFrameLerp ) * valueRange ); + output[i] = (value1[i] + ((keyFrameFrom + keyFrameLerp) * valueRange)) * initialValue; } } From 1d442c9f845c60cc95ffde470ff386751e1a6e10 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 16 Sep 2015 12:55:27 -0500 Subject: [PATCH 70/75] void GuiTextEditCtrl::execConsoleCallback() reversion see https://github.com/GarageGames/Torque3D/issues/1408 --- Engine/source/gui/controls/guiTextEditCtrl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Engine/source/gui/controls/guiTextEditCtrl.cpp b/Engine/source/gui/controls/guiTextEditCtrl.cpp index 2e12e36f4..3ed1ea40f 100644 --- a/Engine/source/gui/controls/guiTextEditCtrl.cpp +++ b/Engine/source/gui/controls/guiTextEditCtrl.cpp @@ -212,7 +212,8 @@ void GuiTextEditCtrl::execConsoleCallback() Parent::execConsoleCallback(); // Update the console variable: - setVariable(mTextBuffer.getPtr8()); + if ( mConsoleVariable[0] ) + Con::setVariable(mConsoleVariable, mTextBuffer.getPtr8()); } void GuiTextEditCtrl::updateHistory( StringBuffer *inTxt, bool moveIndex ) From 4c13906865240401415ba59b33952a94b5fe131a Mon Sep 17 00:00:00 2001 From: Areloch Date: Mon, 21 Sep 2015 00:14:16 -0500 Subject: [PATCH 71/75] Corrects input issues when typing into text fields and it bleeding through to player inputs. --- Engine/source/windowManager/sdl/sdlWindow.cpp | 15 +++++++++------ Engine/source/windowManager/sdl/sdlWindow.h | 3 +++ .../source/windowManager/windowInputGenerator.cpp | 5 +++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Engine/source/windowManager/sdl/sdlWindow.cpp b/Engine/source/windowManager/sdl/sdlWindow.cpp index 60c3c4065..63ffa2549 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.cpp +++ b/Engine/source/windowManager/sdl/sdlWindow.cpp @@ -484,12 +484,6 @@ void PlatformWindowSDL::_triggerKeyNotify(const SDL_Event& evt) keyEvent.trigger(getWindowId(), torqueModifiers, inputAction, torqueKey); //Con::printf("Key %d : %d", tKey.sym, inputAction); } - - // stop SDL_TEXTINPUT event when unwanted - if( inputAction == IA_MAKE && getKeyboardTranslation() && shouldNotTranslate( torqueModifiers, torqueKey ) ) - SDL_StopTextInput(); - else - SDL_StartTextInput(); } void PlatformWindowSDL::_triggerTextNotify(const SDL_Event& evt) @@ -606,3 +600,12 @@ const UTF16 *PlatformWindowSDL::getCurtainWindowClassName() static String str("CurtainWindowClassName"); return str.utf16(); } + +void PlatformWindowSDL::setKeyboardTranslation(const bool enabled) +{ + mEnableKeyboardTranslation = enabled; + if (mEnableKeyboardTranslation) + SDL_StartTextInput(); + else + SDL_StopTextInput(); +} \ No newline at end of file diff --git a/Engine/source/windowManager/sdl/sdlWindow.h b/Engine/source/windowManager/sdl/sdlWindow.h index 75abdee4f..eb73f39bd 100644 --- a/Engine/source/windowManager/sdl/sdlWindow.h +++ b/Engine/source/windowManager/sdl/sdlWindow.h @@ -160,6 +160,9 @@ public: virtual bool isMouseLocked() const { return mMouseLocked; }; virtual bool shouldLockMouse() const { return mShouldLockMouse; }; + /// Set if relevant keypress events should be translated into character input events. + virtual void setKeyboardTranslation(const bool enabled); + virtual WindowId getWindowId(); SDL_Window* getSDLWindow() const { return mWindowHandle; } diff --git a/Engine/source/windowManager/windowInputGenerator.cpp b/Engine/source/windowManager/windowInputGenerator.cpp index ecd75cdcc..fb95c4be8 100644 --- a/Engine/source/windowManager/windowInputGenerator.cpp +++ b/Engine/source/windowManager/windowInputGenerator.cpp @@ -105,6 +105,11 @@ void WindowInputGenerator::generateInputEvent( InputEventInfo &inputEvent ) if( mInputController->processInputEvent( inputEvent ) ) return; + if (mWindow->getKeyboardTranslation()) + { + return; + } + // If we get here we failed to process it with anything prior... so let // the ActionMap handle it. ActionMap::handleEvent(&inputEvent); From 845ec9c4528f341e7b9cc533139be8a30acf37be Mon Sep 17 00:00:00 2001 From: wcb Date: Wed, 23 Sep 2015 19:46:36 -0400 Subject: [PATCH 72/75] CMake NMake fix to place exe in game directory --- Tools/CMake/basics.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/CMake/basics.cmake b/Tools/CMake/basics.cmake index 47f04e547..5592dd3fe 100644 --- a/Tools/CMake/basics.cmake +++ b/Tools/CMake/basics.cmake @@ -393,6 +393,7 @@ endif() # fix the debug/release subfolders on windows if(MSVC) + SET("CMAKE_RUNTIME_OUTPUT_DIRECTORY" "${projectOutDir}") FOREACH(CONF ${CMAKE_CONFIGURATION_TYPES}) # Go uppercase (DEBUG, RELEASE...) STRING(TOUPPER "${CONF}" CONF) From 3d65f1f8cd2d482f167454423bb48cbc78f01bec Mon Sep 17 00:00:00 2001 From: Areloch Date: Thu, 24 Sep 2015 22:23:26 -0500 Subject: [PATCH 73/75] Fixes it so when using SDL, the editor menubar will correctly react to accelerator commands. --- Templates/Empty/game/tools/base/menuBar/menuBuilder.ed.cs | 2 +- Templates/Full/game/tools/base/menuBar/menuBuilder.ed.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates/Empty/game/tools/base/menuBar/menuBuilder.ed.cs b/Templates/Empty/game/tools/base/menuBar/menuBuilder.ed.cs index 0929c2464..11d66b2ed 100644 --- a/Templates/Empty/game/tools/base/menuBar/menuBuilder.ed.cs +++ b/Templates/Empty/game/tools/base/menuBar/menuBuilder.ed.cs @@ -132,7 +132,7 @@ function MenuBuilder::addItem(%this, %pos, %item) } else { - %this.insertItem(%pos, %name !$= "-" ? %name : "", %accel); + %this.insertItem(%pos, %name !$= "-" ? %name : "", %accel, %cmd); } } diff --git a/Templates/Full/game/tools/base/menuBar/menuBuilder.ed.cs b/Templates/Full/game/tools/base/menuBar/menuBuilder.ed.cs index 0929c2464..11d66b2ed 100644 --- a/Templates/Full/game/tools/base/menuBar/menuBuilder.ed.cs +++ b/Templates/Full/game/tools/base/menuBar/menuBuilder.ed.cs @@ -132,7 +132,7 @@ function MenuBuilder::addItem(%this, %pos, %item) } else { - %this.insertItem(%pos, %name !$= "-" ? %name : "", %accel); + %this.insertItem(%pos, %name !$= "-" ? %name : "", %accel, %cmd); } } From f87f7c41b6bac758a5193ddaeaed45031fe6f3b3 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Fri, 25 Sep 2015 17:09:41 -0500 Subject: [PATCH 74/75] backend correction for https://github.com/GarageGames/Torque3D/pull/1425 --- Engine/source/console/arrayObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/console/arrayObject.cpp b/Engine/source/console/arrayObject.cpp index 673d9af5e..2ae68980c 100644 --- a/Engine/source/console/arrayObject.cpp +++ b/Engine/source/console/arrayObject.cpp @@ -103,7 +103,7 @@ S32 QSORT_CALLBACK ArrayObject::_keyFunctionCompare( const void* a, const void* ArrayObject::Element* ea = ( ArrayObject::Element* )( a ); ArrayObject::Element* eb = ( ArrayObject::Element* )( b ); - S32 result = dAtoi( Con::executef( (const char*)smCompareFunction, ea->value, eb->key ) ); + S32 result = dAtoi(Con::executef((const char*)smCompareFunction, ea->key, eb->key)); S32 res = result < 0 ? -1 : ( result > 0 ? 1 : 0 ); return ( smDecreasing ? -res : res ); } From 9f7513dc0b4c1aec2b29985acfe37aab24db8cc1 Mon Sep 17 00:00:00 2001 From: Areloch Date: Sun, 27 Sep 2015 15:43:47 -0500 Subject: [PATCH 75/75] Further fixes to work around certain accelerators being missed, and additional command bleed-through. --- .../windowManager/windowInputGenerator.cpp | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Engine/source/windowManager/windowInputGenerator.cpp b/Engine/source/windowManager/windowInputGenerator.cpp index fb95c4be8..608aadb8a 100644 --- a/Engine/source/windowManager/windowInputGenerator.cpp +++ b/Engine/source/windowManager/windowInputGenerator.cpp @@ -82,33 +82,33 @@ WindowInputGenerator::~WindowInputGenerator() //----------------------------------------------------------------------------- void WindowInputGenerator::generateInputEvent( InputEventInfo &inputEvent ) { - if( !mInputController || !mFocused ) + if (!mInputController || !mFocused) return; - if (inputEvent.action == SI_MAKE && inputEvent.deviceType == KeyboardDeviceType) - { - for( int i = 0; i < mAcceleratorMap.size(); ++i ) - { - const AccKeyMap &acc = mAcceleratorMap[i]; - if( acc.modifier & inputEvent.modifier && acc.keyCode == inputEvent.objInst ) - { - Con::evaluatef(acc.cmd); - return; - } - } - } + if (inputEvent.action == SI_MAKE && inputEvent.deviceType == KeyboardDeviceType) + { + for (int i = 0; i < mAcceleratorMap.size(); ++i) + { + const AccKeyMap &acc = mAcceleratorMap[i]; + if (!mWindow->getKeyboardTranslation() && + (acc.modifier & inputEvent.modifier || (acc.modifier == 0 && inputEvent.modifier == 0)) + && acc.keyCode == inputEvent.objInst) + { + Con::evaluatef(acc.cmd); + return; + } + } + } // Give the ActionMap first shot. if (ActionMap::handleEventGlobal(&inputEvent)) return; - if( mInputController->processInputEvent( inputEvent ) ) + if (mInputController->processInputEvent(inputEvent)) return; if (mWindow->getKeyboardTranslation()) - { return; - } // If we get here we failed to process it with anything prior... so let // the ActionMap handle it.