diff --git a/AssetProcessorPlatformConfig.setreg b/AssetProcessorPlatformConfig.setreg
deleted file mode 100644
index d3cf6d6272..0000000000
--- a/AssetProcessorPlatformConfig.setreg
+++ /dev/null
@@ -1,611 +0,0 @@
-{
- // ---- Enable/Disable platforms for the entire project. AssetProcessor will automatically add the current platform by default.
-
- // PLATFORM DEFINITIONS
- // [Platform (unique identifier)]
- // tags=(comma-seperated-tags)
- //
- // note: the 'identifier' of a platform is the word(s) following the "Platform" keyword (so [Platform pc] means identifier
- // is 'pc' for example. This is used to name its assets folder in the cache and should be used in your bootstrap.cfg
- // or your main.cpp to choose what assets to load for that particular platform.
- // Its primary use is to enable additional non-host platforms (Ios, android...) that are not the current platform.
- // note: 'tags' is a comma-seperated list of tags to tag the platform with that builders can inspect to decide what to do.
-
- // while builders can accept any tags you add in order to make decisions, common tags are
- // tools - this platform can host the tools and editor and such
- // renderer - this platform runs the client engine and renders on a GPU. If missing we could be on a server-only platform
- // mobile - a mobile platform such as a set top box or phone with limited resources
- // console - a console platform
- // server - a server platform of some kind, usually headless, no renderer.
-
- "Amazon": {
- "AssetProcessor": {
- "Settings": {
- "Platform pc": {
- "tags": "tools,renderer,dx12,vulkan,null"
- },
- "Platform es3": {
- "tags": "android,mobile,renderer,vulkan"
- },
- "Platform ios": {
- "tags": "mobile,renderer,metal"
- },
- "Platform osx_gl": {
- "tags": "tools,renderer,metal,null"
- },
- // this is an example of a headless platform that has no renderer.
- // To use this you would still need to make sure 'assetplatform' in your startup params in your main() chooses this 'server' platform as your server 'assets' flavor
- "Platform server": {
- "tags": "server,dx12,vulkan"
- },
- // this section allows you to turn on various platforms in addition to the host platform you're running on
- // 'enabled' is AUTOMATICALLY TRUE for the current platform that you are running on, so it is not necessary to force it to true for that platform
- // To enable any additional platform, just uncomment the appropriate line below.
- "Platforms": {
- //"pc": "enabled",
- //"es3": "enabled",
- //"ios": "enabled",
- //"osx_gl": "enabled",
- //"server": "enabled"
- },
- // ---- The number of worker jobs, 0 means use the number of Logical Cores
- "Jobs": {
- "minJobs": 1,
- "maxJobs": 0
- },
- // cacheServerAddress is the location of the asset server cache.
- // Currently for a network share server this would be the absolute file path to the network share folder.
- "Server": {
- //"cacheServerAddress": ""
- },
-
- // ---- add any metadata file type here that needs to be monitored by the AssetProcessor.
- // Modifying these meta file will cause the source asset to re-compile again.
- // They are specified in the following format
- // metadata extension=original extension to replace
- // if the metadata extension does not replace the original, then the original can be blank
- // so for example if your normal file is blah.tif and your metafile for that file is blah.tif.exportsettings
- // then your declaration would be exportsettings= ; ie, it would be blank
- // however if your metafile REPLACES the extension (for example, if you have the file blah.i_caf and its metafile is blah.exportsettings)
- // then you specify the original extension here to narrow the scope.
- // If a relative path to a specific file is provided instead of an extension, a change to the file will change all files
- // with the associated extension (e.g. Animations/SkeletonList.xml=i_caf will cause all i_caf files to recompile when
- // Animations/SkeletonList.xml within the current game project changes)
-
- "MetaDataTypes": {
- "animsettings": "i_caf",
- "Animations/SkeletonList.xml": "i_caf",
- "cbc": "abc",
- "fbx.assetinfo": "fbx"
- },
-
- // ---- add any folders to scan here. The priority order is the order they appear here
- // available macros are
- // @ROOT@ - the location of asset root
- // @PROJECTROOT@ - the location of the project root, for example 'Q:\MyProjects\RPGSample'
- // note that they are sorted by their 'order' value, and the lower the order the more important an asset is
- // lower order numbers override higher ones.
- // If specified, output will be prepended to every path found in that recognizer's watch folder.
- // Note that you can also make the scan folder platform specific by using the keywords include and exclude.
- // Both include and exclude can contain either platform tags, platform identifiers or both.
- // if no include is specified, all currently enabled platforms are included by default.
- // If includes ARE specified, it will be filtered down by the list of currently enabled platforms.
- // "ScanFolder (unique identifier)": {
- // "include": "(comma seperated platform tags or identifiers)",
- // "exclude": "(comma seperated platform tags or identifiers)"
- // }
- // For example if you want to include a scan folder only for platforms that have the platform tags tools and renderer
- // but omit it for platform osx_gl, you will have a scanfolder rule like
- // "ScanFolder (unique identifier)": {
- // "watch": "@ROOT@/foo",
- // "include": "tools, renderer",
- // "exclude": "osx_gl"
- // }
-
- "ScanFolder Game": {
- "watch": "@PROJECTROOT@",
- "display": "@PROJECTNAME@",
- "recursive": 1,
- "order": 0
- },
- // gems will be auto-added from 100 onwards
- "ScanFolder Root": {
- "watch": "@ROOT@",
- "recursive": 0,
- "order": 10000
- },
- "ScanFolder Engine": {
- "watch": "@ENGINEROOT@/Engine",
- "recursive": 1,
- "order": 20000
- },
- "ScanFolder Editor": {
- "watch": "@ENGINEROOT@/Editor",
- "output": "editor",
- "recursive": 1,
- "order": 30000,
- "include": "tools,renderer"
- },
-
- // Excludes files that match the pattern or glob
- // if you use a pattern, remember to escape your backslashes (\\)
- "Exclude _LevelBackups": {
- "pattern": ".*\\\\/Levels\\\\/.*\\\\/_savebackup\\\\/.*"
- },
- "Exclude _LevelAutoBackups": {
- "pattern": ".*\\\\/Levels\\\\/.*\\\\/_autobackup\\\\/.*"
- },
- "Exclude HoldFiles": {
- "pattern": ".*\\\\/Levels\\\\/.*_hold\\\\/.*"
- },
- // note that $ has meaning to regex, so we escape it.
- "Exclude TempFiles": {
- "pattern": ".*\\\\/\\\\$tmp[0-9]*_.*"
- },
- "Exclude AlembicCompressionTemplates": {
- "pattern": ".*\\\\/Presets\\\\/GeomCache\\\\/.*"
- },
- "Exclude TmpAnimationCompression": {
- "pattern": ".*\\\\/Editor\\\\/Tmp\\\\/AnimationCompression\\\\/.*"
- },
- "Exclude EventLog": {
- "pattern": ".*\\\\/Editor\\\\/.*eventlog\\\\.xml"
- },
- "Exclude GameGemsCode": {
- "pattern": ".*\\\\/Gem\\\\/Code\\\\/.*"
- },
- "Exclude GameGemsResources": {
- "pattern": ".*\\\\/Gem\\\\/Resources\\\\/.*"
- },
- "Exclude Private Certs": {
- "pattern": ".*\\DynamicContent\\\\/Certificates\\\\/Private\\\\/.*"
- },
- "Exclude CMakeLists": {
- "pattern": ".*\\\\/CMakeLists.txt"
- },
- "Exclude CMakeFiles": {
- "pattern": ".*\\\\/.*\\\\.cmake"
- },
- "Exclude User": {
- "pattern": ".*/[Uu]ser/.*"
- },
- "Exclude Build": {
- "pattern": ".*/[Bb]uild/.*"
- },
- "Exclude UserSettings": {
- "pattern": ".*/UserSettings.xml"
- },
-
- // ------------------------------------------------------------------------------
- // Large Worlds Test
- // ------------------------------------------------------------------------------
- "Exclude Work In Progress Folders": {
- "pattern": ".*\\\\/WIP\\\\/.*"
- },
- "Exclude Content Source Folders": {
- "pattern": ".*\\\\/CONTENT_SOURCE\\\\/.*"
- },
- "Exclude Art Source Folders": {
- "pattern": ".*\\\\/ArtSource\\\\/.*"
- },
- //------------------------------------------------------------------------------
- // RC params mapping examples
- //------------------------------------------------------------------------------
-
- // note that productAssetType is a means of setting the output asset Type (as in AZ::Data::AssetType) of a simple job
- // and is the recommended way to specify that a certain kind of file (such as '*.myextension') becomes registered as the
- // actual UUID of that type in the engine itself.
-
- // Use a regex for matching files, same params for all platforms
- // "RC TGAs": {
- // "pattern": ".+\\\\.tga$",
- // "params": "/tga /texture"
- //}
-
- // Use a glob, have special params for es3 platform
- // "RC TIFFs": {
- // "glob": "*.tif",
- // "params": "/texture",
- // "es3": "/pvrt"
- //}
-
- // You can also modify a version to compile all matching files again
- // By default the version is empty
- // "RC tif": {
- // "glob": "*.tif",
- // "params": "\\someparams",
- // "version": 1.0
- //}
- // This will make the AssetProcessor compile all the .tif files again
-
- // you can also optionally supply a priority.
- // this is used to sort jobs when no other external circumstance sorts them
- // for example, copy jobs will be higher in priority than other jobs that are not copy jobs
- // however if they're both copy jobs or both not, and no other circumstances apply, then priority will be used.
- // default priority is zero if not specified
-
- // you can specify an option to skip processing for a file type based on the platform.
- // for example, if you dont want to process tif files for ios, you can make tif files
- // process on any platform except for ios:
- // "RC tif": {
- // "glob": "*.tif",
- // "params": "\\someparams",
- // "ios": "skip"
- //}
-
- // you can specify an option to output product dependencies for a copy job.
- // please note that you only need to set this option when cry code is required to parse the asset.
- // otherwise product dependencies will be output automatically by the CopyDependencyBuilder.
- // for example, if you want to output the product dependencies for font assets:
- // "RC font": {
- // "glob": "*.font",
- // "params": "copy",
- // "outputProductDependencies": true
- //}
-
- // you can also specify an option to make all jobs critical that matches some pattern/glob.
- // for example, if you want to make all png files critical than set critical to true.
- // Note that by default all copy jobs are critical.
- // Critical jobs are processed before non critical jobs and also prevent the runtime or editor from starting until they are all complete.
- // "RC png": {
- // "glob": "*.png",
- // "params": "\\someparams",
- // "critical": true
- //}
-
- // you can also specify an option to make all the job store in the asset server cache location if you are running AP in server mode.
- // For example, if you want to store all png jobs in the asset server cache location including their logs, you can set checkServer = true.
- // The client(i.e if you are running AP in non-server mode) will also check for this flag to know which jobs to fetch from the asset server cache location.
- // if unsucessful, it will process the job locally as usual.
- // "RC png": {
- // "glob": "*.png",
- // "params": "\\someparams",
- // "critical": true,
- // "checkServer": true
- //}
-
- // note that the FULL PATH to the file will be used as the match, not the relative path
- // so ensure start your patterns with .* or as appropriate.
- // Also, any rules which match will apply - so if you have two rules which both apply to PNG files for example
- // but you only want one, you might want to use exclusion patterns:
-
- //Example: process everything EXCEPT the ones in the libs/ui folder with these params
- // "RC png-normal": {
- // "pattern": "(?!.*libs\\\\/ui\\\\/).*\\.png",
- // "params": "/imagecompressor=CTSquish /streaming=0",
- // "lockSource": true
- //}
-
- //Example: Process everything in the libs/ui folder with linear color space
- // "RC png-ui": {
- // "pattern": "(.*libs\\\\/ui\\\\/).*\\.png",
- // "params": "/imagecompressor=CTSquish /streaming=0 /colorspace=linear,linear",
- // "lockSource": true
- //}
-
- // More example Regexes:
- // "pattern": "(?!(.*libs\\\\/ui\\\\/)|(.*editor\\\\/).*\\\\.png"
- // This pattern will not match anything with editor/ or libs/ui/ in it
- // "pattern": "((.*libs\\\\/ui\\\\/)|(.*editor\\\\/).*\\\\.png"
- // This pattern will only match anything with editor/ or libs/ui/ in it
-
- // Give every [Section Name] its own unique Name or else they will overwrite each other!
- "RC i_caf": {
- "glob": "*.i_caf",
- "params": "/cafAlignTracks=1 /animConfigFolder=Animations /skipdba=1 /refresh=1",
- // force server to send the 'pc' platform to RC.EXE so it compiles the same as PC.
- "server": "/cafAlignTracks=1 /animConfigFolder=Animations /skipdba=1 /refresh=1 /p=pc",
- "priority": 5,
- "productAssetType": "{6023CFF8-FCBA-4528-A8BF-6E0E10B9AB9C}"
- },
- "RC caf": {
- "glob": "*.caf",
- "params": "copy",
- "productAssetType": "{6023CFF8-FCBA-4528-A8BF-6E0E10B9AB9C}"
- },
- "RC mp4": {
- "glob": "*.mp4",
- "params": "copy",
- "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}"
- },
- "RC mkv": {
- "glob": "*.mkv",
- "params": "copy",
- "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}"
- },
- "RC webm": {
- "glob": "*.webm",
- "params": "copy",
- "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}"
- },
- "RC mov": {
- "glob": "*.mov",
- "params": "copy",
- "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}"
- },
- "RC bk2": {
- "glob": "*.bk2",
- "params": "copy",
- "productAssetType": "{BF4879B9-B893-41D2-80E9-24A7BDCD2B50}"
- },
- "RC img": {
- "glob": "*.img",
- "params": "copy"
- },
- "RC dba": {
- "glob": "*.dba",
- "params": "copy",
- "productAssetType": "{511562BE-65A5-4538-A5F1-AC685366243E}",
- "version": 2
- },
- "RC cgf": {
- "glob": "*.cgf",
- "params": "/VertexPositionFormat=exporter /VertexIndexFormat=u32",
- // on server, feed rc.exe the param /p=pc to force it to compile assets for server platform in pc format.
- "server": "/VertexPositionFormat=exporter /VertexIndexFormat=u32 /p=pc",
- "lockSource": true,
- "priority": 10
- // allow CGF files to compile first, so untextured models appear before their textures for faster startup
- // other available params: /SplitLODs=1
- },
- "RC surfaceTagNameList": {
- "glob": "*.surfaceTagNameList",
- "params": "copy",
- "productAssetType": "{A471B2A9-85FC-4993-842D-1881CBC03A2B}"
- },
- "RC gradImageSettings": {
- "glob": "*.gradimagesettings",
- "params": "copy",
- "productAssetType": "{B36FEB5C-41B6-4B58-A212-21EF5AEF523C}"
- },
- "RC fbx": {
- "glob": "*.fbx",
- // Priority set to 9 so its "before" things like materials but after things like actors and motions (which build using a proper AssetBuilderSDK builder and thus are not in this file)
- "priority": 9,
- "version": 5
- },
- "RC chr": {
- "glob": "*.chr",
- "params": "copy",
- "productAssetType": "{60161B46-21F0-4396-A4F0-F2CCF0664CDE}",
- "version": 2
- },
- "RC skin": {
- "glob": "*.skin",
- "params": "copy"
- },
- "RC cfi": {
- "glob": "*.cfi",
- "params": "copy"
- },
- "RC cfx": {
- "glob": "*.cfx",
- "params": "copy"
- },
- "RC cfr": {
- "glob": "*.cfr",
- "params": "copy"
- },
- // Warning: If you change the VertexIndexFormat, make sure you update the vtx_idx typedef in Code\CryEngine\CryCommon\ProjectDefines.h
- "RC abc": {
- "glob": "*.abc",
- "params": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u32",
- "console": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u32",
- "mobile": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u16",
- "version": 3,
- "server": "skip"
- },
- "RC png-entityicon": {
- "pattern": "(.*EntityIcons\\\\/).*\\\\.png",
- "productAssetType": "{3436C30E-E2C5-4C3B-A7B9-66C94A28701B}",
- "params": "skip",
- "tools": "copy"
- },
- "RC usm": {
- "glob": "*.usm",
- "params": "copy",
- "server": "skip"
- },
- "RC animevents": {
- "glob": "*.animevents",
- "params": "copy",
- "productAssetType": "{C1D209C1-F81A-4586-A34E-1615995F9F3F}",
- "version": 2
- },
- "RC adb": {
- "glob": "*.adb",
- "params": "copy",
- "productAssetType": "{50908273-CA36-4668-9828-15DD5092F973}"
- },
- "RC bspace": {
- "glob": "*.bspace",
- "params": "copy"
- },
- "RC cdf": {
- "glob": "*.cdf",
- "params": "copy",
- "productAssetType": "{DF036C63-9AE6-4AC3-A6AC-8A1D76126C01}"
- },
- // note - this used to be skinnedMeshAsset but its now Character Definition File specific.
- // .skin has its own type.
-
- "RC chrparams": {
- "glob": "*.chrparams",
- "params": "copy",
- "productAssetType": "{4BBB785A-6824-4803-A607-F9323E7BEEF1}",
- "version": 2
- },
- "RC comb": {
- "glob": "*.comb",
- "params": "copy"
- },
- "RC dlg": {
- "glob": "*.dlg",
- "params": "copy"
- },
- "RC csv": {
- "glob": "*.csv",
- "params": "copy"
- },
- "RC json": {
- "glob": "*.json",
- "params": "copy"
- },
- "RC lmg": {
- "glob": "*.lmg",
- "params": "copy"
- },
- "RC smtl": {
- "glob": "*.smtl",
- "params": "copy"
- },
- "RC sub": {
- "glob": "*.sub",
- "params": "copy",
- "productAssetType": "{71F9D30E-13F7-40D6-A3C9-E5358004B31F}",
- "version": 2
- },
- "RC sbsar": {
- "glob": "*.sbsar",
- "params": "copy"
- },
- "RC loc.agsxml": {
- "glob": "*.loc.agsxml",
- "params": "copy",
- "version": 1
- },
- "RC node": {
- "glob": "*.node",
- "params": "copy"
- },
- "RC veg": {
- "glob": "*.veg",
- "params": "copy"
- },
- "RC dat": {
- "glob": "*.dat",
- "params": "copy"
- },
- "RC lut": {
- "glob": "*.lut",
- "params": "copy"
- },
- "RC txt": {
- "pattern": "^(?!.*PreloadLibs.txt).*\\\\.txt",
- "params": "copy"
- },
- "RC cal": {
- "glob": "*.cal",
- "params": "copy"
- },
- "RC grp": {
- "glob": "*.grp",
- "params": "copy",
- "productAssetType": "{7629EDD3-A361-49A2-B271-252127097D81}",
- "version": 2
- },
- "RC xls": {
- "glob": "*.xls",
- "params": "copy"
- },
- "RC ini": {
- "glob": "*.ini",
- "params": "copy"
- },
- "RC ttf": {
- "glob": "*.ttf",
- "params": "copy"
- },
- "RC otf": {
- "glob": "*.otf",
- "params": "copy"
- },
- "RC ext": {
- "glob": "*.ext",
- "params": "copy"
- },
- // Copy all pak files except level.pak, level.pak has its own builder.
- "RC pak": {
- "pattern": "^((?!\\\\/level\\\\.pak).)*\\\\.pak$",
- "params": "copy"
- },
- "RC ctc": {
- "glob": "*.ctc",
- "params": "copy"
- },
- "RC uiprefab": {
- "glob": "*.uiprefab",
- "params": "copy",
- "server": "skip"
- },
- "RC sprite": {
- "glob": "*.sprite",
- "params": "copy",
- "server": "skip"
- },
- "RC bin": {
- "glob": "*.bin",
- "params": "copy"
- },
- "RC inputbindings": {
- "glob": "*.inputbindings",
- "params": "copy",
- "productAssetType": "{25971C7A-26E2-4D08-A146-2EFCC1C36B0C}"
- },
- "RC physmaterial": {
- "glob": "*.physmaterial",
- "params": "copy",
- "productAssetType": "{9E366D8C-33BB-4825-9A1F-FA3ADBE11D0F}"
- },
- "RC ocm": {
- "glob": "*.ocm",
- "params": "copy"
- },
- // Feature tests use the raw .tif files for the golden image comparison
- "RC goldenimages": {
- "pattern": ".*GoldenImages\\\\/.*\\\\.tif",
- "params": "copy",
- "server": "skip"
- },
- // Copy over certificates for use with FileDataSource
- "RC CertificatePEM": {
- "glob": "*.pem",
- "params": "copy"
- },
- // Copy over certificates for use with Dynamic Content
- "RC CertificateDER": {
- "glob": "*.der",
- "params": "copy"
- },
- "RC PhysXMeshAsset": {
- "glob": "*.pxmesh",
- "params": "copy",
- "productAssetType": "{7A2871B9-5EAB-4DE0-A901-B0D2C6920DDB}"
- },
- // Copy over cooked PhysX heightfield
- "RC PhysX HeightField": {
- "glob": "*.pxheightfield",
- "params": "copy",
- "productAssetType": "{B61189FE-B2D7-4AF1-8951-CB5C0F7834FC}"
- },
- "RC filetag": {
- "glob": "*.filetag",
- "params": "copy",
- "productAssetType": "{F3BE5CAB-85B7-44B7-9495-863863F6B267}"
- },
- // Precompiled shader srg
- "RC azsrg": {
- "glob": "*.azsrg",
- "params": "copy",
- "productAssetType": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}"
- },
- // Precompiled shader variant
- "RC azshadervariant": {
- "glob": "*.azshadervariant",
- "params": "copy",
- "productAssetType": "{9F4D654B-4439-4C61-8DCD-F1C7C5560768}"
- }
- }
- }
- }
-}
diff --git a/Editor/CryDesigner_TimeOfDay.xml b/Assets/Editor/CryDesigner_TimeOfDay.xml
similarity index 100%
rename from Editor/CryDesigner_TimeOfDay.xml
rename to Assets/Editor/CryDesigner_TimeOfDay.xml
diff --git a/Editor/Editor.tip b/Assets/Editor/Editor.tip
similarity index 100%
rename from Editor/Editor.tip
rename to Assets/Editor/Editor.tip
diff --git a/Gems/ScriptCanvas/Assets/Editor/Icons/AssetBrowser/ScriptCanvas_16.png b/Assets/Editor/Editor/Icons/AssetBrowser/ScriptCanvas_16.png
similarity index 100%
rename from Gems/ScriptCanvas/Assets/Editor/Icons/AssetBrowser/ScriptCanvas_16.png
rename to Assets/Editor/Editor/Icons/AssetBrowser/ScriptCanvas_16.png
diff --git a/Editor/EditorParticlePanels.xml b/Assets/Editor/EditorParticlePanels.xml
similarity index 100%
rename from Editor/EditorParticlePanels.xml
rename to Assets/Editor/EditorParticlePanels.xml
diff --git a/Editor/EditorParticlePanelsDefault.xml b/Assets/Editor/EditorParticlePanelsDefault.xml
similarity index 100%
rename from Editor/EditorParticlePanelsDefault.xml
rename to Assets/Editor/EditorParticlePanelsDefault.xml
diff --git a/Editor/Fonts/Open_Sans/LICENSE.txt b/Assets/Editor/Fonts/Open_Sans/LICENSE.txt
similarity index 100%
rename from Editor/Fonts/Open_Sans/LICENSE.txt
rename to Assets/Editor/Fonts/Open_Sans/LICENSE.txt
diff --git a/Editor/Fonts/Open_Sans/OpenSans-Bold.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-Bold.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-Bold.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-Bold.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-BoldItalic.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-BoldItalic.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-BoldItalic.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-BoldItalic.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-ExtraBold.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-ExtraBold.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-ExtraBold.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-ExtraBold.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-ExtraBoldItalic.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-Italic.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-Italic.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-Italic.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-Italic.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-Light.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-Light.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-Light.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-Light.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-LightItalic.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-LightItalic.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-LightItalic.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-LightItalic.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-Regular.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-Regular.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-Regular.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-Regular.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-Semibold.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-Semibold.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-Semibold.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-Semibold.ttf
diff --git a/Editor/Fonts/Open_Sans/OpenSans-SemiboldItalic.ttf b/Assets/Editor/Fonts/Open_Sans/OpenSans-SemiboldItalic.ttf
similarity index 100%
rename from Editor/Fonts/Open_Sans/OpenSans-SemiboldItalic.ttf
rename to Assets/Editor/Fonts/Open_Sans/OpenSans-SemiboldItalic.ttf
diff --git a/Editor/Icons/AssetBrowser/ABC_16.svg b/Assets/Editor/Icons/AssetBrowser/ABC_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/ABC_16.svg
rename to Assets/Editor/Icons/AssetBrowser/ABC_16.svg
diff --git a/Editor/Icons/AssetBrowser/Audio_16.svg b/Assets/Editor/Icons/AssetBrowser/Audio_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Audio_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Audio_16.svg
diff --git a/Editor/Icons/AssetBrowser/CaretClosed_16.svg b/Assets/Editor/Icons/AssetBrowser/CaretClosed_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/CaretClosed_16.svg
rename to Assets/Editor/Icons/AssetBrowser/CaretClosed_16.svg
diff --git a/Editor/Icons/AssetBrowser/CaretOpen_16.svg b/Assets/Editor/Icons/AssetBrowser/CaretOpen_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/CaretOpen_16.svg
rename to Assets/Editor/Icons/AssetBrowser/CaretOpen_16.svg
diff --git a/Editor/Icons/AssetBrowser/DefaultProduct_16.svg b/Assets/Editor/Icons/AssetBrowser/DefaultProduct_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/DefaultProduct_16.svg
rename to Assets/Editor/Icons/AssetBrowser/DefaultProduct_16.svg
diff --git a/Editor/Icons/AssetBrowser/Default_16.svg b/Assets/Editor/Icons/AssetBrowser/Default_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Default_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Default_16.svg
diff --git a/Editor/Icons/AssetBrowser/FBX_16.svg b/Assets/Editor/Icons/AssetBrowser/FBX_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/FBX_16.svg
rename to Assets/Editor/Icons/AssetBrowser/FBX_16.svg
diff --git a/Editor/Icons/AssetBrowser/Folder_16.svg b/Assets/Editor/Icons/AssetBrowser/Folder_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Folder_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Folder_16.svg
diff --git a/Editor/Icons/AssetBrowser/Font_16.svg b/Assets/Editor/Icons/AssetBrowser/Font_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Font_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Font_16.svg
diff --git a/Editor/Icons/AssetBrowser/GemFolder_16.svg b/Assets/Editor/Icons/AssetBrowser/GemFolder_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/GemFolder_16.svg
rename to Assets/Editor/Icons/AssetBrowser/GemFolder_16.svg
diff --git a/Editor/Icons/AssetBrowser/Image_16.svg b/Assets/Editor/Icons/AssetBrowser/Image_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Image_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Image_16.svg
diff --git a/Editor/Icons/AssetBrowser/InputBindings_16.svg b/Assets/Editor/Icons/AssetBrowser/InputBindings_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/InputBindings_16.svg
rename to Assets/Editor/Icons/AssetBrowser/InputBindings_16.svg
diff --git a/Editor/Icons/AssetBrowser/LegacyAnimation_16.svg b/Assets/Editor/Icons/AssetBrowser/LegacyAnimation_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/LegacyAnimation_16.svg
rename to Assets/Editor/Icons/AssetBrowser/LegacyAnimation_16.svg
diff --git a/Editor/Icons/AssetBrowser/LegacyMesh_16.svg b/Assets/Editor/Icons/AssetBrowser/LegacyMesh_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/LegacyMesh_16.svg
rename to Assets/Editor/Icons/AssetBrowser/LegacyMesh_16.svg
diff --git a/Editor/Icons/AssetBrowser/LegacySkin_16.svg b/Assets/Editor/Icons/AssetBrowser/LegacySkin_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/LegacySkin_16.svg
rename to Assets/Editor/Icons/AssetBrowser/LegacySkin_16.svg
diff --git a/Editor/Icons/AssetBrowser/LensFlare_16.svg b/Assets/Editor/Icons/AssetBrowser/LensFlare_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/LensFlare_16.svg
rename to Assets/Editor/Icons/AssetBrowser/LensFlare_16.svg
diff --git a/Editor/Icons/AssetBrowser/Lua_16.svg b/Assets/Editor/Icons/AssetBrowser/Lua_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Lua_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Lua_16.svg
diff --git a/Editor/Icons/AssetBrowser/Material_16.svg b/Assets/Editor/Icons/AssetBrowser/Material_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Material_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Material_16.svg
diff --git a/Editor/Icons/AssetBrowser/NonWritable_16.svg b/Assets/Editor/Icons/AssetBrowser/NonWritable_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/NonWritable_16.svg
rename to Assets/Editor/Icons/AssetBrowser/NonWritable_16.svg
diff --git a/Editor/Icons/AssetBrowser/Particle_16.svg b/Assets/Editor/Icons/AssetBrowser/Particle_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Particle_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Particle_16.svg
diff --git a/Editor/Icons/AssetBrowser/Slice_16.svg b/Assets/Editor/Icons/AssetBrowser/Slice_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Slice_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Slice_16.svg
diff --git a/Editor/Icons/AssetBrowser/Writable_16.svg b/Assets/Editor/Icons/AssetBrowser/Writable_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/Writable_16.svg
rename to Assets/Editor/Icons/AssetBrowser/Writable_16.svg
diff --git a/Editor/Icons/AssetBrowser/XML_16.svg b/Assets/Editor/Icons/AssetBrowser/XML_16.svg
similarity index 100%
rename from Editor/Icons/AssetBrowser/XML_16.svg
rename to Assets/Editor/Icons/AssetBrowser/XML_16.svg
diff --git a/Editor/Icons/AssetBrowser/in_progress.gif b/Assets/Editor/Icons/AssetBrowser/in_progress.gif
similarity index 100%
rename from Editor/Icons/AssetBrowser/in_progress.gif
rename to Assets/Editor/Icons/AssetBrowser/in_progress.gif
diff --git a/Editor/Icons/AssetImporter/animation.png b/Assets/Editor/Icons/AssetImporter/animation.png
similarity index 100%
rename from Editor/Icons/AssetImporter/animation.png
rename to Assets/Editor/Icons/AssetImporter/animation.png
diff --git a/Editor/Icons/AssetImporter/animation_on.png b/Assets/Editor/Icons/AssetImporter/animation_on.png
similarity index 100%
rename from Editor/Icons/AssetImporter/animation_on.png
rename to Assets/Editor/Icons/AssetImporter/animation_on.png
diff --git a/Editor/Icons/AssetImporter/group_icon.png b/Assets/Editor/Icons/AssetImporter/group_icon.png
similarity index 100%
rename from Editor/Icons/AssetImporter/group_icon.png
rename to Assets/Editor/Icons/AssetImporter/group_icon.png
diff --git a/Editor/Icons/AssetImporter/mesh.png b/Assets/Editor/Icons/AssetImporter/mesh.png
similarity index 100%
rename from Editor/Icons/AssetImporter/mesh.png
rename to Assets/Editor/Icons/AssetImporter/mesh.png
diff --git a/Editor/Icons/AssetImporter/mesh_on.png b/Assets/Editor/Icons/AssetImporter/mesh_on.png
similarity index 100%
rename from Editor/Icons/AssetImporter/mesh_on.png
rename to Assets/Editor/Icons/AssetImporter/mesh_on.png
diff --git a/Editor/Icons/AssetImporter/skeleton.png b/Assets/Editor/Icons/AssetImporter/skeleton.png
similarity index 100%
rename from Editor/Icons/AssetImporter/skeleton.png
rename to Assets/Editor/Icons/AssetImporter/skeleton.png
diff --git a/Editor/Icons/AssetImporter/skeleton_on.png b/Assets/Editor/Icons/AssetImporter/skeleton_on.png
similarity index 100%
rename from Editor/Icons/AssetImporter/skeleton_on.png
rename to Assets/Editor/Icons/AssetImporter/skeleton_on.png
diff --git a/Editor/Icons/AssetImporter/skin.png b/Assets/Editor/Icons/AssetImporter/skin.png
similarity index 100%
rename from Editor/Icons/AssetImporter/skin.png
rename to Assets/Editor/Icons/AssetImporter/skin.png
diff --git a/Editor/Icons/AssetImporter/skin_on.png b/Assets/Editor/Icons/AssetImporter/skin_on.png
similarity index 100%
rename from Editor/Icons/AssetImporter/skin_on.png
rename to Assets/Editor/Icons/AssetImporter/skin_on.png
diff --git a/Editor/Icons/AssetImporter/tree.png b/Assets/Editor/Icons/AssetImporter/tree.png
similarity index 100%
rename from Editor/Icons/AssetImporter/tree.png
rename to Assets/Editor/Icons/AssetImporter/tree.png
diff --git a/Editor/Icons/Assets/InputBindings.png b/Assets/Editor/Icons/Assets/InputBindings.png
similarity index 100%
rename from Editor/Icons/Assets/InputBindings.png
rename to Assets/Editor/Icons/Assets/InputBindings.png
diff --git a/Editor/Icons/Assets/Lua.png b/Assets/Editor/Icons/Assets/Lua.png
similarity index 100%
rename from Editor/Icons/Assets/Lua.png
rename to Assets/Editor/Icons/Assets/Lua.png
diff --git a/Editor/Icons/Assets/PhysicsMaterial.png b/Assets/Editor/Icons/Assets/PhysicsMaterial.png
similarity index 100%
rename from Editor/Icons/Assets/PhysicsMaterial.png
rename to Assets/Editor/Icons/Assets/PhysicsMaterial.png
diff --git a/Editor/Icons/Components/AreaLight.svg b/Assets/Editor/Icons/Components/AreaLight.svg
similarity index 100%
rename from Editor/Icons/Components/AreaLight.svg
rename to Assets/Editor/Icons/Components/AreaLight.svg
diff --git a/Editor/Icons/Components/Attachment.svg b/Assets/Editor/Icons/Components/Attachment.svg
similarity index 100%
rename from Editor/Icons/Components/Attachment.svg
rename to Assets/Editor/Icons/Components/Attachment.svg
diff --git a/Editor/Icons/Components/AudioAnimation.svg b/Assets/Editor/Icons/Components/AudioAnimation.svg
similarity index 100%
rename from Editor/Icons/Components/AudioAnimation.svg
rename to Assets/Editor/Icons/Components/AudioAnimation.svg
diff --git a/Editor/Icons/Components/AudioAnimationEventsProxy.svg b/Assets/Editor/Icons/Components/AudioAnimationEventsProxy.svg
similarity index 100%
rename from Editor/Icons/Components/AudioAnimationEventsProxy.svg
rename to Assets/Editor/Icons/Components/AudioAnimationEventsProxy.svg
diff --git a/Editor/Icons/Components/AudioArea.png b/Assets/Editor/Icons/Components/AudioArea.png
similarity index 100%
rename from Editor/Icons/Components/AudioArea.png
rename to Assets/Editor/Icons/Components/AudioArea.png
diff --git a/Editor/Icons/Components/AudioAreaEnvironment.svg b/Assets/Editor/Icons/Components/AudioAreaEnvironment.svg
similarity index 100%
rename from Editor/Icons/Components/AudioAreaEnvironment.svg
rename to Assets/Editor/Icons/Components/AudioAreaEnvironment.svg
diff --git a/Editor/Icons/Components/AudioEnvironment.svg b/Assets/Editor/Icons/Components/AudioEnvironment.svg
similarity index 100%
rename from Editor/Icons/Components/AudioEnvironment.svg
rename to Assets/Editor/Icons/Components/AudioEnvironment.svg
diff --git a/Editor/Icons/Components/AudioListener.svg b/Assets/Editor/Icons/Components/AudioListener.svg
similarity index 100%
rename from Editor/Icons/Components/AudioListener.svg
rename to Assets/Editor/Icons/Components/AudioListener.svg
diff --git a/Editor/Icons/Components/AudioMultiPosition.png b/Assets/Editor/Icons/Components/AudioMultiPosition.png
similarity index 100%
rename from Editor/Icons/Components/AudioMultiPosition.png
rename to Assets/Editor/Icons/Components/AudioMultiPosition.png
diff --git a/Editor/Icons/Components/AudioPreload.svg b/Assets/Editor/Icons/Components/AudioPreload.svg
similarity index 100%
rename from Editor/Icons/Components/AudioPreload.svg
rename to Assets/Editor/Icons/Components/AudioPreload.svg
diff --git a/Editor/Icons/Components/AudioProxy.svg b/Assets/Editor/Icons/Components/AudioProxy.svg
similarity index 100%
rename from Editor/Icons/Components/AudioProxy.svg
rename to Assets/Editor/Icons/Components/AudioProxy.svg
diff --git a/Editor/Icons/Components/AudioRtpc.svg b/Assets/Editor/Icons/Components/AudioRtpc.svg
similarity index 100%
rename from Editor/Icons/Components/AudioRtpc.svg
rename to Assets/Editor/Icons/Components/AudioRtpc.svg
diff --git a/Editor/Icons/Components/AudioSwitch.svg b/Assets/Editor/Icons/Components/AudioSwitch.svg
similarity index 100%
rename from Editor/Icons/Components/AudioSwitch.svg
rename to Assets/Editor/Icons/Components/AudioSwitch.svg
diff --git a/Editor/Icons/Components/AudioTrigger.svg b/Assets/Editor/Icons/Components/AudioTrigger.svg
similarity index 100%
rename from Editor/Icons/Components/AudioTrigger.svg
rename to Assets/Editor/Icons/Components/AudioTrigger.svg
diff --git a/Editor/Icons/Components/BehaviorTree.svg b/Assets/Editor/Icons/Components/BehaviorTree.svg
similarity index 100%
rename from Editor/Icons/Components/BehaviorTree.svg
rename to Assets/Editor/Icons/Components/BehaviorTree.svg
diff --git a/Editor/Icons/Components/Box.png b/Assets/Editor/Icons/Components/Box.png
similarity index 100%
rename from Editor/Icons/Components/Box.png
rename to Assets/Editor/Icons/Components/Box.png
diff --git a/Editor/Icons/Components/Box_Shape.svg b/Assets/Editor/Icons/Components/Box_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Box_Shape.svg
rename to Assets/Editor/Icons/Components/Box_Shape.svg
diff --git a/Editor/Icons/Components/Capsule_Shape.svg b/Assets/Editor/Icons/Components/Capsule_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Capsule_Shape.svg
rename to Assets/Editor/Icons/Components/Capsule_Shape.svg
diff --git a/Editor/Icons/Components/CharacterPhysics.svg b/Assets/Editor/Icons/Components/CharacterPhysics.svg
similarity index 100%
rename from Editor/Icons/Components/CharacterPhysics.svg
rename to Assets/Editor/Icons/Components/CharacterPhysics.svg
diff --git a/Editor/Icons/Components/Cloth.svg b/Assets/Editor/Icons/Components/Cloth.svg
similarity index 100%
rename from Editor/Icons/Components/Cloth.svg
rename to Assets/Editor/Icons/Components/Cloth.svg
diff --git a/Editor/Icons/Components/CloudGemMessageOfTheDay.svg b/Assets/Editor/Icons/Components/CloudGemMessageOfTheDay.svg
similarity index 100%
rename from Editor/Icons/Components/CloudGemMessageOfTheDay.svg
rename to Assets/Editor/Icons/Components/CloudGemMessageOfTheDay.svg
diff --git a/Editor/Icons/Components/ColliderBox.png b/Assets/Editor/Icons/Components/ColliderBox.png
similarity index 100%
rename from Editor/Icons/Components/ColliderBox.png
rename to Assets/Editor/Icons/Components/ColliderBox.png
diff --git a/Editor/Icons/Components/ColliderCapsule.png b/Assets/Editor/Icons/Components/ColliderCapsule.png
similarity index 100%
rename from Editor/Icons/Components/ColliderCapsule.png
rename to Assets/Editor/Icons/Components/ColliderCapsule.png
diff --git a/Editor/Icons/Components/ColliderCylinder.png b/Assets/Editor/Icons/Components/ColliderCylinder.png
similarity index 100%
rename from Editor/Icons/Components/ColliderCylinder.png
rename to Assets/Editor/Icons/Components/ColliderCylinder.png
diff --git a/Editor/Icons/Components/ColliderMesh.svg b/Assets/Editor/Icons/Components/ColliderMesh.svg
similarity index 100%
rename from Editor/Icons/Components/ColliderMesh.svg
rename to Assets/Editor/Icons/Components/ColliderMesh.svg
diff --git a/Editor/Icons/Components/ColliderSphere.png b/Assets/Editor/Icons/Components/ColliderSphere.png
similarity index 100%
rename from Editor/Icons/Components/ColliderSphere.png
rename to Assets/Editor/Icons/Components/ColliderSphere.png
diff --git a/Editor/Icons/Components/Comment.svg b/Assets/Editor/Icons/Components/Comment.svg
similarity index 100%
rename from Editor/Icons/Components/Comment.svg
rename to Assets/Editor/Icons/Components/Comment.svg
diff --git a/Editor/Icons/Components/Component_Placeholder.svg b/Assets/Editor/Icons/Components/Component_Placeholder.svg
similarity index 100%
rename from Editor/Icons/Components/Component_Placeholder.svg
rename to Assets/Editor/Icons/Components/Component_Placeholder.svg
diff --git a/Editor/Icons/Components/Compound_Shape.svg b/Assets/Editor/Icons/Components/Compound_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Compound_Shape.svg
rename to Assets/Editor/Icons/Components/Compound_Shape.svg
diff --git a/Editor/Icons/Components/Cylinder.png b/Assets/Editor/Icons/Components/Cylinder.png
similarity index 100%
rename from Editor/Icons/Components/Cylinder.png
rename to Assets/Editor/Icons/Components/Cylinder.png
diff --git a/Editor/Icons/Components/Cylinder_Shape.svg b/Assets/Editor/Icons/Components/Cylinder_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Cylinder_Shape.svg
rename to Assets/Editor/Icons/Components/Cylinder_Shape.svg
diff --git a/Editor/Icons/Components/DebugDrawLine.svg b/Assets/Editor/Icons/Components/DebugDrawLine.svg
similarity index 100%
rename from Editor/Icons/Components/DebugDrawLine.svg
rename to Assets/Editor/Icons/Components/DebugDrawLine.svg
diff --git a/Editor/Icons/Components/DebugDrawObb.svg b/Assets/Editor/Icons/Components/DebugDrawObb.svg
similarity index 100%
rename from Editor/Icons/Components/DebugDrawObb.svg
rename to Assets/Editor/Icons/Components/DebugDrawObb.svg
diff --git a/Editor/Icons/Components/DebugDrawRay.svg b/Assets/Editor/Icons/Components/DebugDrawRay.svg
similarity index 100%
rename from Editor/Icons/Components/DebugDrawRay.svg
rename to Assets/Editor/Icons/Components/DebugDrawRay.svg
diff --git a/Editor/Icons/Components/DebugDrawSphere.svg b/Assets/Editor/Icons/Components/DebugDrawSphere.svg
similarity index 100%
rename from Editor/Icons/Components/DebugDrawSphere.svg
rename to Assets/Editor/Icons/Components/DebugDrawSphere.svg
diff --git a/Editor/Icons/Components/DebugDrawText.svg b/Assets/Editor/Icons/Components/DebugDrawText.svg
similarity index 100%
rename from Editor/Icons/Components/DebugDrawText.svg
rename to Assets/Editor/Icons/Components/DebugDrawText.svg
diff --git a/Editor/Icons/Components/Decal.svg b/Assets/Editor/Icons/Components/Decal.svg
similarity index 100%
rename from Editor/Icons/Components/Decal.svg
rename to Assets/Editor/Icons/Components/Decal.svg
diff --git a/Editor/Icons/Components/Disabled/Animation_white.png b/Assets/Editor/Icons/Components/Disabled/Animation_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Animation_white.png
rename to Assets/Editor/Icons/Components/Disabled/Animation_white.png
diff --git a/Editor/Icons/Components/Disabled/Attachment_white.png b/Assets/Editor/Icons/Components/Disabled/Attachment_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Attachment_white.png
rename to Assets/Editor/Icons/Components/Disabled/Attachment_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioAreaEnvironment_white.png b/Assets/Editor/Icons/Components/Disabled/AudioAreaEnvironment_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioAreaEnvironment_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioAreaEnvironment_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioArea_white.png b/Assets/Editor/Icons/Components/Disabled/AudioArea_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioArea_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioArea_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioEnvironment_white.png b/Assets/Editor/Icons/Components/Disabled/AudioEnvironment_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioEnvironment_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioEnvironment_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioListener_white.png b/Assets/Editor/Icons/Components/Disabled/AudioListener_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioListener_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioListener_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioRtpc_white.png b/Assets/Editor/Icons/Components/Disabled/AudioRtpc_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioRtpc_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioRtpc_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioSwitch_white.png b/Assets/Editor/Icons/Components/Disabled/AudioSwitch_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioSwitch_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioSwitch_white.png
diff --git a/Editor/Icons/Components/Disabled/AudioTrigger_white.png b/Assets/Editor/Icons/Components/Disabled/AudioTrigger_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/AudioTrigger_white.png
rename to Assets/Editor/Icons/Components/Disabled/AudioTrigger_white.png
diff --git a/Editor/Icons/Components/Disabled/BehaviorTree_white.png b/Assets/Editor/Icons/Components/Disabled/BehaviorTree_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/BehaviorTree_white.png
rename to Assets/Editor/Icons/Components/Disabled/BehaviorTree_white.png
diff --git a/Editor/Icons/Components/Disabled/Box_Shape_white.png b/Assets/Editor/Icons/Components/Disabled/Box_Shape_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Box_Shape_white.png
rename to Assets/Editor/Icons/Components/Disabled/Box_Shape_white.png
diff --git a/Editor/Icons/Components/Disabled/Box_collider_white.png b/Assets/Editor/Icons/Components/Disabled/Box_collider_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Box_collider_white.png
rename to Assets/Editor/Icons/Components/Disabled/Box_collider_white.png
diff --git a/Editor/Icons/Components/Disabled/Box_white.png b/Assets/Editor/Icons/Components/Disabled/Box_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Box_white.png
rename to Assets/Editor/Icons/Components/Disabled/Box_white.png
diff --git a/Editor/Icons/Components/Disabled/Capsule_Shape_white.png b/Assets/Editor/Icons/Components/Disabled/Capsule_Shape_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Capsule_Shape_white.png
rename to Assets/Editor/Icons/Components/Disabled/Capsule_Shape_white.png
diff --git a/Editor/Icons/Components/Disabled/Capsule_white.png b/Assets/Editor/Icons/Components/Disabled/Capsule_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Capsule_white.png
rename to Assets/Editor/Icons/Components/Disabled/Capsule_white.png
diff --git a/Editor/Icons/Components/Disabled/CharacterPhysics_white.png b/Assets/Editor/Icons/Components/Disabled/CharacterPhysics_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/CharacterPhysics_white.png
rename to Assets/Editor/Icons/Components/Disabled/CharacterPhysics_white.png
diff --git a/Editor/Icons/Components/Disabled/Comment.png b/Assets/Editor/Icons/Components/Disabled/Comment.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Comment.png
rename to Assets/Editor/Icons/Components/Disabled/Comment.png
diff --git a/Editor/Icons/Components/Disabled/ComponentPlaceholder_white.png b/Assets/Editor/Icons/Components/Disabled/ComponentPlaceholder_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/ComponentPlaceholder_white.png
rename to Assets/Editor/Icons/Components/Disabled/ComponentPlaceholder_white.png
diff --git a/Editor/Icons/Components/Disabled/Component_Placeholder_white.png b/Assets/Editor/Icons/Components/Disabled/Component_Placeholder_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Component_Placeholder_white.png
rename to Assets/Editor/Icons/Components/Disabled/Component_Placeholder_white.png
diff --git a/Editor/Icons/Components/Disabled/Cylinder_Shape_white.png b/Assets/Editor/Icons/Components/Disabled/Cylinder_Shape_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Cylinder_Shape_white.png
rename to Assets/Editor/Icons/Components/Disabled/Cylinder_Shape_white.png
diff --git a/Editor/Icons/Components/Disabled/Cylinder_white.png b/Assets/Editor/Icons/Components/Disabled/Cylinder_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Cylinder_white.png
rename to Assets/Editor/Icons/Components/Disabled/Cylinder_white.png
diff --git a/Editor/Icons/Components/Disabled/Decal_white.png b/Assets/Editor/Icons/Components/Disabled/Decal_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Decal_white.png
rename to Assets/Editor/Icons/Components/Disabled/Decal_white.png
diff --git a/Editor/Icons/Components/Disabled/DynamicContent_white.png b/Assets/Editor/Icons/Components/Disabled/DynamicContent_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/DynamicContent_white.png
rename to Assets/Editor/Icons/Components/Disabled/DynamicContent_white.png
diff --git a/Editor/Icons/Components/Disabled/DynamicMesh_white.png b/Assets/Editor/Icons/Components/Disabled/DynamicMesh_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/DynamicMesh_white.png
rename to Assets/Editor/Icons/Components/Disabled/DynamicMesh_white.png
diff --git a/Editor/Icons/Components/Disabled/EntityInSlice_white.png b/Assets/Editor/Icons/Components/Disabled/EntityInSlice_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/EntityInSlice_white.png
rename to Assets/Editor/Icons/Components/Disabled/EntityInSlice_white.png
diff --git a/Editor/Icons/Components/Disabled/Entity_white.png b/Assets/Editor/Icons/Components/Disabled/Entity_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Entity_white.png
rename to Assets/Editor/Icons/Components/Disabled/Entity_white.png
diff --git a/Editor/Icons/Components/Disabled/FogVolume_white.png b/Assets/Editor/Icons/Components/Disabled/FogVolume_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/FogVolume_white.png
rename to Assets/Editor/Icons/Components/Disabled/FogVolume_white.png
diff --git a/Editor/Icons/Components/Disabled/ForceVolume_white.png b/Assets/Editor/Icons/Components/Disabled/ForceVolume_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/ForceVolume_white.png
rename to Assets/Editor/Icons/Components/Disabled/ForceVolume_white.png
diff --git a/Editor/Icons/Components/Disabled/GeometryCache_white.png b/Assets/Editor/Icons/Components/Disabled/GeometryCache_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/GeometryCache_white.png
rename to Assets/Editor/Icons/Components/Disabled/GeometryCache_white.png
diff --git a/Editor/Icons/Components/Disabled/HttpClientComponent_white.png b/Assets/Editor/Icons/Components/Disabled/HttpClientComponent_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/HttpClientComponent_white.png
rename to Assets/Editor/Icons/Components/Disabled/HttpClientComponent_white.png
diff --git a/Editor/Icons/Components/Disabled/LensFlare_white.png b/Assets/Editor/Icons/Components/Disabled/LensFlare_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/LensFlare_white.png
rename to Assets/Editor/Icons/Components/Disabled/LensFlare_white.png
diff --git a/Editor/Icons/Components/Disabled/Light_white.png b/Assets/Editor/Icons/Components/Disabled/Light_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Light_white.png
rename to Assets/Editor/Icons/Components/Disabled/Light_white.png
diff --git a/Editor/Icons/Components/Disabled/LightningArc_white.png b/Assets/Editor/Icons/Components/Disabled/LightningArc_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/LightningArc_white.png
rename to Assets/Editor/Icons/Components/Disabled/LightningArc_white.png
diff --git a/Editor/Icons/Components/Disabled/Lightning_white.png b/Assets/Editor/Icons/Components/Disabled/Lightning_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Lightning_white.png
rename to Assets/Editor/Icons/Components/Disabled/Lightning_white.png
diff --git a/Editor/Icons/Components/Disabled/LookAt_white.png b/Assets/Editor/Icons/Components/Disabled/LookAt_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/LookAt_white.png
rename to Assets/Editor/Icons/Components/Disabled/LookAt_white.png
diff --git a/Editor/Icons/Components/Disabled/MannequinScopeContext_white.png b/Assets/Editor/Icons/Components/Disabled/MannequinScopeContext_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/MannequinScopeContext_white.png
rename to Assets/Editor/Icons/Components/Disabled/MannequinScopeContext_white.png
diff --git a/Editor/Icons/Components/Disabled/Mannequin_white.png b/Assets/Editor/Icons/Components/Disabled/Mannequin_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Mannequin_white.png
rename to Assets/Editor/Icons/Components/Disabled/Mannequin_white.png
diff --git a/Editor/Icons/Components/Disabled/Mesh_collidaer_white 2.png b/Assets/Editor/Icons/Components/Disabled/Mesh_collidaer_white 2.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Mesh_collidaer_white 2.png
rename to Assets/Editor/Icons/Components/Disabled/Mesh_collidaer_white 2.png
diff --git a/Editor/Icons/Components/Disabled/NavigationArea_white.png b/Assets/Editor/Icons/Components/Disabled/NavigationArea_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/NavigationArea_white.png
rename to Assets/Editor/Icons/Components/Disabled/NavigationArea_white.png
diff --git a/Editor/Icons/Components/Disabled/NavigationSeed_white.png b/Assets/Editor/Icons/Components/Disabled/NavigationSeed_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/NavigationSeed_white.png
rename to Assets/Editor/Icons/Components/Disabled/NavigationSeed_white.png
diff --git a/Editor/Icons/Components/Disabled/Navigation_white.png b/Assets/Editor/Icons/Components/Disabled/Navigation_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Navigation_white.png
rename to Assets/Editor/Icons/Components/Disabled/Navigation_white.png
diff --git a/Editor/Icons/Components/Disabled/NetBinding_white.png b/Assets/Editor/Icons/Components/Disabled/NetBinding_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/NetBinding_white.png
rename to Assets/Editor/Icons/Components/Disabled/NetBinding_white.png
diff --git a/Editor/Icons/Components/Disabled/ObjectAvoidance_white.png b/Assets/Editor/Icons/Components/Disabled/ObjectAvoidance_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/ObjectAvoidance_white.png
rename to Assets/Editor/Icons/Components/Disabled/ObjectAvoidance_white.png
diff --git a/Editor/Icons/Components/Disabled/Particle_white.png b/Assets/Editor/Icons/Components/Disabled/Particle_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Particle_white.png
rename to Assets/Editor/Icons/Components/Disabled/Particle_white.png
diff --git a/Editor/Icons/Components/Disabled/PhysicsConstraint_white.png b/Assets/Editor/Icons/Components/Disabled/PhysicsConstraint_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/PhysicsConstraint_white.png
rename to Assets/Editor/Icons/Components/Disabled/PhysicsConstraint_white.png
diff --git a/Editor/Icons/Components/Disabled/PolygonPrism_white.png b/Assets/Editor/Icons/Components/Disabled/PolygonPrism_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/PolygonPrism_white.png
rename to Assets/Editor/Icons/Components/Disabled/PolygonPrism_white.png
diff --git a/Editor/Icons/Components/Disabled/PrimitiveCollider_white.png b/Assets/Editor/Icons/Components/Disabled/PrimitiveCollider_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/PrimitiveCollider_white.png
rename to Assets/Editor/Icons/Components/Disabled/PrimitiveCollider_white.png
diff --git a/Editor/Icons/Components/Disabled/Ragdoll.png b/Assets/Editor/Icons/Components/Disabled/Ragdoll.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Ragdoll.png
rename to Assets/Editor/Icons/Components/Disabled/Ragdoll.png
diff --git a/Editor/Icons/Components/Disabled/Ragdoll_white.png b/Assets/Editor/Icons/Components/Disabled/Ragdoll_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Ragdoll_white.png
rename to Assets/Editor/Icons/Components/Disabled/Ragdoll_white.png
diff --git a/Editor/Icons/Components/Disabled/RandomTimedSpawner_white.png b/Assets/Editor/Icons/Components/Disabled/RandomTimedSpawner_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/RandomTimedSpawner_white.png
rename to Assets/Editor/Icons/Components/Disabled/RandomTimedSpawner_white.png
diff --git a/Editor/Icons/Components/Disabled/RigidPhysics_white.png b/Assets/Editor/Icons/Components/Disabled/RigidPhysics_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/RigidPhysics_white.png
rename to Assets/Editor/Icons/Components/Disabled/RigidPhysics_white.png
diff --git a/Editor/Icons/Components/Disabled/Script_white.png b/Assets/Editor/Icons/Components/Disabled/Script_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Script_white.png
rename to Assets/Editor/Icons/Components/Disabled/Script_white.png
diff --git a/Editor/Icons/Components/Disabled/SequenceAgent_white.png b/Assets/Editor/Icons/Components/Disabled/SequenceAgent_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/SequenceAgent_white.png
rename to Assets/Editor/Icons/Components/Disabled/SequenceAgent_white.png
diff --git a/Editor/Icons/Components/Disabled/Sequence_white.png b/Assets/Editor/Icons/Components/Disabled/Sequence_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Sequence_white.png
rename to Assets/Editor/Icons/Components/Disabled/Sequence_white.png
diff --git a/Editor/Icons/Components/Disabled/Shadow.png b/Assets/Editor/Icons/Components/Disabled/Shadow.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Shadow.png
rename to Assets/Editor/Icons/Components/Disabled/Shadow.png
diff --git a/Editor/Icons/Components/Disabled/SimpleState_white.png b/Assets/Editor/Icons/Components/Disabled/SimpleState_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/SimpleState_white.png
rename to Assets/Editor/Icons/Components/Disabled/SimpleState_white.png
diff --git a/Editor/Icons/Components/Disabled/SkinnedMesh_white.png b/Assets/Editor/Icons/Components/Disabled/SkinnedMesh_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/SkinnedMesh_white.png
rename to Assets/Editor/Icons/Components/Disabled/SkinnedMesh_white.png
diff --git a/Editor/Icons/Components/Disabled/SkyHighlight_white.png b/Assets/Editor/Icons/Components/Disabled/SkyHighlight_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/SkyHighlight_white.png
rename to Assets/Editor/Icons/Components/Disabled/SkyHighlight_white.png
diff --git a/Editor/Icons/Components/Disabled/Snow_white.png b/Assets/Editor/Icons/Components/Disabled/Snow_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Snow_white.png
rename to Assets/Editor/Icons/Components/Disabled/Snow_white.png
diff --git a/Editor/Icons/Components/Disabled/Spawner_white.png b/Assets/Editor/Icons/Components/Disabled/Spawner_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Spawner_white.png
rename to Assets/Editor/Icons/Components/Disabled/Spawner_white.png
diff --git a/Editor/Icons/Components/Disabled/Sphere_Shape_white.png b/Assets/Editor/Icons/Components/Disabled/Sphere_Shape_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Sphere_Shape_white.png
rename to Assets/Editor/Icons/Components/Disabled/Sphere_Shape_white.png
diff --git a/Editor/Icons/Components/Disabled/Sphere_white.png b/Assets/Editor/Icons/Components/Disabled/Sphere_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Sphere_white.png
rename to Assets/Editor/Icons/Components/Disabled/Sphere_white.png
diff --git a/Editor/Icons/Components/Disabled/Spline_white.png b/Assets/Editor/Icons/Components/Disabled/Spline_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Spline_white.png
rename to Assets/Editor/Icons/Components/Disabled/Spline_white.png
diff --git a/Editor/Icons/Components/Disabled/StaticData_white.png b/Assets/Editor/Icons/Components/Disabled/StaticData_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/StaticData_white.png
rename to Assets/Editor/Icons/Components/Disabled/StaticData_white.png
diff --git a/Editor/Icons/Components/Disabled/StaticMesh_white.png b/Assets/Editor/Icons/Components/Disabled/StaticMesh_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/StaticMesh_white.png
rename to Assets/Editor/Icons/Components/Disabled/StaticMesh_white.png
diff --git a/Editor/Icons/Components/Disabled/StaticPhysics_white.png b/Assets/Editor/Icons/Components/Disabled/StaticPhysics_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/StaticPhysics_white.png
rename to Assets/Editor/Icons/Components/Disabled/StaticPhysics_white.png
diff --git a/Editor/Icons/Components/Disabled/Tag_white.png b/Assets/Editor/Icons/Components/Disabled/Tag_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Tag_white.png
rename to Assets/Editor/Icons/Components/Disabled/Tag_white.png
diff --git a/Editor/Icons/Components/Disabled/Transform_white.png b/Assets/Editor/Icons/Components/Disabled/Transform_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Transform_white.png
rename to Assets/Editor/Icons/Components/Disabled/Transform_white.png
diff --git a/Editor/Icons/Components/Disabled/Trigger_white.png b/Assets/Editor/Icons/Components/Disabled/Trigger_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/Trigger_white.png
rename to Assets/Editor/Icons/Components/Disabled/Trigger_white.png
diff --git a/Editor/Icons/Components/Disabled/UiCanvasOnMesh_white.png b/Assets/Editor/Icons/Components/Disabled/UiCanvasOnMesh_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/UiCanvasOnMesh_white.png
rename to Assets/Editor/Icons/Components/Disabled/UiCanvasOnMesh_white.png
diff --git a/Editor/Icons/Components/Disabled/UiCanvasRef_white.png b/Assets/Editor/Icons/Components/Disabled/UiCanvasRef_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/UiCanvasRef_white.png
rename to Assets/Editor/Icons/Components/Disabled/UiCanvasRef_white.png
diff --git a/Editor/Icons/Components/Disabled/WaterVolume_white.png b/Assets/Editor/Icons/Components/Disabled/WaterVolume_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/WaterVolume_white.png
rename to Assets/Editor/Icons/Components/Disabled/WaterVolume_white.png
diff --git a/Editor/Icons/Components/Disabled/WindVolume_white.png b/Assets/Editor/Icons/Components/Disabled/WindVolume_white.png
similarity index 100%
rename from Editor/Icons/Components/Disabled/WindVolume_white.png
rename to Assets/Editor/Icons/Components/Disabled/WindVolume_white.png
diff --git a/Editor/Icons/Components/Disk_Shape.svg b/Assets/Editor/Icons/Components/Disk_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Disk_Shape.svg
rename to Assets/Editor/Icons/Components/Disk_Shape.svg
diff --git a/Editor/Icons/Components/DynamicContent.png b/Assets/Editor/Icons/Components/DynamicContent.png
similarity index 100%
rename from Editor/Icons/Components/DynamicContent.png
rename to Assets/Editor/Icons/Components/DynamicContent.png
diff --git a/Editor/Icons/Components/DynamicMesh.png b/Assets/Editor/Icons/Components/DynamicMesh.png
similarity index 100%
rename from Editor/Icons/Components/DynamicMesh.png
rename to Assets/Editor/Icons/Components/DynamicMesh.png
diff --git a/Editor/Icons/Components/Entity.png b/Assets/Editor/Icons/Components/Entity.png
similarity index 100%
rename from Editor/Icons/Components/Entity.png
rename to Assets/Editor/Icons/Components/Entity.png
diff --git a/Editor/Icons/Components/EntityInSlice.png b/Assets/Editor/Icons/Components/EntityInSlice.png
similarity index 100%
rename from Editor/Icons/Components/EntityInSlice.png
rename to Assets/Editor/Icons/Components/EntityInSlice.png
diff --git a/Editor/Icons/Components/EnvironmentProbe.svg b/Assets/Editor/Icons/Components/EnvironmentProbe.svg
similarity index 100%
rename from Editor/Icons/Components/EnvironmentProbe.svg
rename to Assets/Editor/Icons/Components/EnvironmentProbe.svg
diff --git a/Editor/Icons/Components/Flipbook.png b/Assets/Editor/Icons/Components/Flipbook.png
similarity index 100%
rename from Editor/Icons/Components/Flipbook.png
rename to Assets/Editor/Icons/Components/Flipbook.png
diff --git a/Editor/Icons/Components/FogVolume.svg b/Assets/Editor/Icons/Components/FogVolume.svg
similarity index 100%
rename from Editor/Icons/Components/FogVolume.svg
rename to Assets/Editor/Icons/Components/FogVolume.svg
diff --git a/Editor/Icons/Components/Footstep1.svg b/Assets/Editor/Icons/Components/Footstep1.svg
similarity index 100%
rename from Editor/Icons/Components/Footstep1.svg
rename to Assets/Editor/Icons/Components/Footstep1.svg
diff --git a/Editor/Icons/Components/ForceRegion.png b/Assets/Editor/Icons/Components/ForceRegion.png
similarity index 100%
rename from Editor/Icons/Components/ForceRegion.png
rename to Assets/Editor/Icons/Components/ForceRegion.png
diff --git a/Editor/Icons/Components/ForceVolume.svg b/Assets/Editor/Icons/Components/ForceVolume.svg
similarity index 100%
rename from Editor/Icons/Components/ForceVolume.svg
rename to Assets/Editor/Icons/Components/ForceVolume.svg
diff --git a/Editor/Icons/Components/GeometryCache.svg b/Assets/Editor/Icons/Components/GeometryCache.svg
similarity index 100%
rename from Editor/Icons/Components/GeometryCache.svg
rename to Assets/Editor/Icons/Components/GeometryCache.svg
diff --git a/Editor/Icons/Components/HttpClientComponent.png b/Assets/Editor/Icons/Components/HttpClientComponent.png
similarity index 100%
rename from Editor/Icons/Components/HttpClientComponent.png
rename to Assets/Editor/Icons/Components/HttpClientComponent.png
diff --git a/Editor/Icons/Components/Layers.svg b/Assets/Editor/Icons/Components/Layers.svg
similarity index 100%
rename from Editor/Icons/Components/Layers.svg
rename to Assets/Editor/Icons/Components/Layers.svg
diff --git a/Editor/Icons/Components/LegacyTerrain.svg b/Assets/Editor/Icons/Components/LegacyTerrain.svg
similarity index 100%
rename from Editor/Icons/Components/LegacyTerrain.svg
rename to Assets/Editor/Icons/Components/LegacyTerrain.svg
diff --git a/Editor/Icons/Components/LensFlare.svg b/Assets/Editor/Icons/Components/LensFlare.svg
similarity index 100%
rename from Editor/Icons/Components/LensFlare.svg
rename to Assets/Editor/Icons/Components/LensFlare.svg
diff --git a/Editor/Icons/Components/Light.png b/Assets/Editor/Icons/Components/Light.png
similarity index 100%
rename from Editor/Icons/Components/Light.png
rename to Assets/Editor/Icons/Components/Light.png
diff --git a/Editor/Icons/Components/Lightning.svg b/Assets/Editor/Icons/Components/Lightning.svg
similarity index 100%
rename from Editor/Icons/Components/Lightning.svg
rename to Assets/Editor/Icons/Components/Lightning.svg
diff --git a/Editor/Icons/Components/LightningArc.svg b/Assets/Editor/Icons/Components/LightningArc.svg
similarity index 100%
rename from Editor/Icons/Components/LightningArc.svg
rename to Assets/Editor/Icons/Components/LightningArc.svg
diff --git a/Editor/Icons/Components/LookAt.png b/Assets/Editor/Icons/Components/LookAt.png
similarity index 100%
rename from Editor/Icons/Components/LookAt.png
rename to Assets/Editor/Icons/Components/LookAt.png
diff --git a/Editor/Icons/Components/LuaScript.svg b/Assets/Editor/Icons/Components/LuaScript.svg
similarity index 100%
rename from Editor/Icons/Components/LuaScript.svg
rename to Assets/Editor/Icons/Components/LuaScript.svg
diff --git a/Editor/Icons/Components/Mannequin.svg b/Assets/Editor/Icons/Components/Mannequin.svg
similarity index 100%
rename from Editor/Icons/Components/Mannequin.svg
rename to Assets/Editor/Icons/Components/Mannequin.svg
diff --git a/Editor/Icons/Components/MannequinScopeContext.svg b/Assets/Editor/Icons/Components/MannequinScopeContext.svg
similarity index 100%
rename from Editor/Icons/Components/MannequinScopeContext.svg
rename to Assets/Editor/Icons/Components/MannequinScopeContext.svg
diff --git a/Editor/Icons/Components/MotionParameterSmoothing.svg b/Assets/Editor/Icons/Components/MotionParameterSmoothing.svg
similarity index 100%
rename from Editor/Icons/Components/MotionParameterSmoothing.svg
rename to Assets/Editor/Icons/Components/MotionParameterSmoothing.svg
diff --git a/Editor/Icons/Components/Navigation.svg b/Assets/Editor/Icons/Components/Navigation.svg
similarity index 100%
rename from Editor/Icons/Components/Navigation.svg
rename to Assets/Editor/Icons/Components/Navigation.svg
diff --git a/Editor/Icons/Components/NavigationArea.svg b/Assets/Editor/Icons/Components/NavigationArea.svg
similarity index 100%
rename from Editor/Icons/Components/NavigationArea.svg
rename to Assets/Editor/Icons/Components/NavigationArea.svg
diff --git a/Editor/Icons/Components/NavigationSeed.svg b/Assets/Editor/Icons/Components/NavigationSeed.svg
similarity index 100%
rename from Editor/Icons/Components/NavigationSeed.svg
rename to Assets/Editor/Icons/Components/NavigationSeed.svg
diff --git a/Editor/Icons/Components/NetBinding.svg b/Assets/Editor/Icons/Components/NetBinding.svg
similarity index 100%
rename from Editor/Icons/Components/NetBinding.svg
rename to Assets/Editor/Icons/Components/NetBinding.svg
diff --git a/Editor/Icons/Components/ObjectAvoidance.png b/Assets/Editor/Icons/Components/ObjectAvoidance.png
similarity index 100%
rename from Editor/Icons/Components/ObjectAvoidance.png
rename to Assets/Editor/Icons/Components/ObjectAvoidance.png
diff --git a/Editor/Icons/Components/Particle.svg b/Assets/Editor/Icons/Components/Particle.svg
similarity index 100%
rename from Editor/Icons/Components/Particle.svg
rename to Assets/Editor/Icons/Components/Particle.svg
diff --git a/Editor/Icons/Components/PhysXCharacter.svg b/Assets/Editor/Icons/Components/PhysXCharacter.svg
similarity index 100%
rename from Editor/Icons/Components/PhysXCharacter.svg
rename to Assets/Editor/Icons/Components/PhysXCharacter.svg
diff --git a/Editor/Icons/Components/PhysXCollider.svg b/Assets/Editor/Icons/Components/PhysXCollider.svg
similarity index 100%
rename from Editor/Icons/Components/PhysXCollider.svg
rename to Assets/Editor/Icons/Components/PhysXCollider.svg
diff --git a/Editor/Icons/Components/PhysXRagdoll.svg b/Assets/Editor/Icons/Components/PhysXRagdoll.svg
similarity index 100%
rename from Editor/Icons/Components/PhysXRagdoll.svg
rename to Assets/Editor/Icons/Components/PhysXRagdoll.svg
diff --git a/Editor/Icons/Components/PhysXRigidBody.svg b/Assets/Editor/Icons/Components/PhysXRigidBody.svg
similarity index 100%
rename from Editor/Icons/Components/PhysXRigidBody.svg
rename to Assets/Editor/Icons/Components/PhysXRigidBody.svg
diff --git a/Editor/Icons/Components/PhysXTerrain.svg b/Assets/Editor/Icons/Components/PhysXTerrain.svg
similarity index 100%
rename from Editor/Icons/Components/PhysXTerrain.svg
rename to Assets/Editor/Icons/Components/PhysXTerrain.svg
diff --git a/Editor/Icons/Components/Physics.png b/Assets/Editor/Icons/Components/Physics.png
similarity index 100%
rename from Editor/Icons/Components/Physics.png
rename to Assets/Editor/Icons/Components/Physics.png
diff --git a/Editor/Icons/Components/PhysicsConstraint.svg b/Assets/Editor/Icons/Components/PhysicsConstraint.svg
similarity index 100%
rename from Editor/Icons/Components/PhysicsConstraint.svg
rename to Assets/Editor/Icons/Components/PhysicsConstraint.svg
diff --git a/Editor/Icons/Components/PointLight.svg b/Assets/Editor/Icons/Components/PointLight.svg
similarity index 100%
rename from Editor/Icons/Components/PointLight.svg
rename to Assets/Editor/Icons/Components/PointLight.svg
diff --git a/Editor/Icons/Components/PolygonPrism.svg b/Assets/Editor/Icons/Components/PolygonPrism.svg
similarity index 100%
rename from Editor/Icons/Components/PolygonPrism.svg
rename to Assets/Editor/Icons/Components/PolygonPrism.svg
diff --git a/Editor/Icons/Components/PrimitiveCollider.svg b/Assets/Editor/Icons/Components/PrimitiveCollider.svg
similarity index 100%
rename from Editor/Icons/Components/PrimitiveCollider.svg
rename to Assets/Editor/Icons/Components/PrimitiveCollider.svg
diff --git a/Editor/Icons/Components/ProjectorLight.svg b/Assets/Editor/Icons/Components/ProjectorLight.svg
similarity index 100%
rename from Editor/Icons/Components/ProjectorLight.svg
rename to Assets/Editor/Icons/Components/ProjectorLight.svg
diff --git a/Editor/Icons/Components/Quad_Shape.svg b/Assets/Editor/Icons/Components/Quad_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Quad_Shape.svg
rename to Assets/Editor/Icons/Components/Quad_Shape.svg
diff --git a/Editor/Icons/Components/Ragdoll.png b/Assets/Editor/Icons/Components/Ragdoll.png
similarity index 100%
rename from Editor/Icons/Components/Ragdoll.png
rename to Assets/Editor/Icons/Components/Ragdoll.png
diff --git a/Editor/Icons/Components/RandomTimedSpawner.svg b/Assets/Editor/Icons/Components/RandomTimedSpawner.svg
similarity index 100%
rename from Editor/Icons/Components/RandomTimedSpawner.svg
rename to Assets/Editor/Icons/Components/RandomTimedSpawner.svg
diff --git a/Editor/Icons/Components/RigidPhysics.svg b/Assets/Editor/Icons/Components/RigidPhysics.svg
similarity index 100%
rename from Editor/Icons/Components/RigidPhysics.svg
rename to Assets/Editor/Icons/Components/RigidPhysics.svg
diff --git a/Editor/Icons/Components/ScriptEventAssetReference.png b/Assets/Editor/Icons/Components/ScriptEventAssetReference.png
similarity index 100%
rename from Editor/Icons/Components/ScriptEventAssetReference.png
rename to Assets/Editor/Icons/Components/ScriptEventAssetReference.png
diff --git a/Editor/Icons/Components/Sequence.png b/Assets/Editor/Icons/Components/Sequence.png
similarity index 100%
rename from Editor/Icons/Components/Sequence.png
rename to Assets/Editor/Icons/Components/Sequence.png
diff --git a/Editor/Icons/Components/SequenceAgent.png b/Assets/Editor/Icons/Components/SequenceAgent.png
similarity index 100%
rename from Editor/Icons/Components/SequenceAgent.png
rename to Assets/Editor/Icons/Components/SequenceAgent.png
diff --git a/Editor/Icons/Components/Shadow.svg b/Assets/Editor/Icons/Components/Shadow.svg
similarity index 100%
rename from Editor/Icons/Components/Shadow.svg
rename to Assets/Editor/Icons/Components/Shadow.svg
diff --git a/Editor/Icons/Components/SimpleAnimation.svg b/Assets/Editor/Icons/Components/SimpleAnimation.svg
similarity index 100%
rename from Editor/Icons/Components/SimpleAnimation.svg
rename to Assets/Editor/Icons/Components/SimpleAnimation.svg
diff --git a/Editor/Icons/Components/SimpleLODDistance.svg b/Assets/Editor/Icons/Components/SimpleLODDistance.svg
similarity index 100%
rename from Editor/Icons/Components/SimpleLODDistance.svg
rename to Assets/Editor/Icons/Components/SimpleLODDistance.svg
diff --git a/Editor/Icons/Components/SimpleMotion.svg b/Assets/Editor/Icons/Components/SimpleMotion.svg
similarity index 100%
rename from Editor/Icons/Components/SimpleMotion.svg
rename to Assets/Editor/Icons/Components/SimpleMotion.svg
diff --git a/Editor/Icons/Components/SimpleState.svg b/Assets/Editor/Icons/Components/SimpleState.svg
similarity index 100%
rename from Editor/Icons/Components/SimpleState.svg
rename to Assets/Editor/Icons/Components/SimpleState.svg
diff --git a/Editor/Icons/Components/SkinnedMesh.svg b/Assets/Editor/Icons/Components/SkinnedMesh.svg
similarity index 100%
rename from Editor/Icons/Components/SkinnedMesh.svg
rename to Assets/Editor/Icons/Components/SkinnedMesh.svg
diff --git a/Editor/Icons/Components/SkyHighlight.svg b/Assets/Editor/Icons/Components/SkyHighlight.svg
similarity index 100%
rename from Editor/Icons/Components/SkyHighlight.svg
rename to Assets/Editor/Icons/Components/SkyHighlight.svg
diff --git a/Editor/Icons/Components/Snow.svg b/Assets/Editor/Icons/Components/Snow.svg
similarity index 100%
rename from Editor/Icons/Components/Snow.svg
rename to Assets/Editor/Icons/Components/Snow.svg
diff --git a/Editor/Icons/Components/Spawner.svg b/Assets/Editor/Icons/Components/Spawner.svg
similarity index 100%
rename from Editor/Icons/Components/Spawner.svg
rename to Assets/Editor/Icons/Components/Spawner.svg
diff --git a/Editor/Icons/Components/Sphere.png b/Assets/Editor/Icons/Components/Sphere.png
similarity index 100%
rename from Editor/Icons/Components/Sphere.png
rename to Assets/Editor/Icons/Components/Sphere.png
diff --git a/Editor/Icons/Components/Sphere_Shape.svg b/Assets/Editor/Icons/Components/Sphere_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Sphere_Shape.svg
rename to Assets/Editor/Icons/Components/Sphere_Shape.svg
diff --git a/Editor/Icons/Components/Spline.svg b/Assets/Editor/Icons/Components/Spline.svg
similarity index 100%
rename from Editor/Icons/Components/Spline.svg
rename to Assets/Editor/Icons/Components/Spline.svg
diff --git a/Editor/Icons/Components/StaticData.png b/Assets/Editor/Icons/Components/StaticData.png
similarity index 100%
rename from Editor/Icons/Components/StaticData.png
rename to Assets/Editor/Icons/Components/StaticData.png
diff --git a/Editor/Icons/Components/StaticMesh.svg b/Assets/Editor/Icons/Components/StaticMesh.svg
similarity index 100%
rename from Editor/Icons/Components/StaticMesh.svg
rename to Assets/Editor/Icons/Components/StaticMesh.svg
diff --git a/Editor/Icons/Components/StaticPhysics.svg b/Assets/Editor/Icons/Components/StaticPhysics.svg
similarity index 100%
rename from Editor/Icons/Components/StaticPhysics.svg
rename to Assets/Editor/Icons/Components/StaticPhysics.svg
diff --git a/Editor/Icons/Components/Tag.svg b/Assets/Editor/Icons/Components/Tag.svg
similarity index 100%
rename from Editor/Icons/Components/Tag.svg
rename to Assets/Editor/Icons/Components/Tag.svg
diff --git a/Editor/Icons/Components/Transform.svg b/Assets/Editor/Icons/Components/Transform.svg
similarity index 100%
rename from Editor/Icons/Components/Transform.svg
rename to Assets/Editor/Icons/Components/Transform.svg
diff --git a/Editor/Icons/Components/TriggerArea.svg b/Assets/Editor/Icons/Components/TriggerArea.svg
similarity index 100%
rename from Editor/Icons/Components/TriggerArea.svg
rename to Assets/Editor/Icons/Components/TriggerArea.svg
diff --git a/Editor/Icons/Components/Tube_Shape.svg b/Assets/Editor/Icons/Components/Tube_Shape.svg
similarity index 100%
rename from Editor/Icons/Components/Tube_Shape.svg
rename to Assets/Editor/Icons/Components/Tube_Shape.svg
diff --git a/Editor/Icons/Components/UICanvasAssetRef.svg b/Assets/Editor/Icons/Components/UICanvasAssetRef.svg
similarity index 100%
rename from Editor/Icons/Components/UICanvasAssetRef.svg
rename to Assets/Editor/Icons/Components/UICanvasAssetRef.svg
diff --git a/Editor/Icons/Components/UICanvasOnMesh.svg b/Assets/Editor/Icons/Components/UICanvasOnMesh.svg
similarity index 100%
rename from Editor/Icons/Components/UICanvasOnMesh.svg
rename to Assets/Editor/Icons/Components/UICanvasOnMesh.svg
diff --git a/Editor/Icons/Components/UICanvasProxyRef.svg b/Assets/Editor/Icons/Components/UICanvasProxyRef.svg
similarity index 100%
rename from Editor/Icons/Components/UICanvasProxyRef.svg
rename to Assets/Editor/Icons/Components/UICanvasProxyRef.svg
diff --git a/Editor/Icons/Components/VRPreview.svg b/Assets/Editor/Icons/Components/VRPreview.svg
similarity index 100%
rename from Editor/Icons/Components/VRPreview.svg
rename to Assets/Editor/Icons/Components/VRPreview.svg
diff --git a/Editor/Icons/Components/Viewport/Animation.png b/Assets/Editor/Icons/Components/Viewport/Animation.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Animation.png
rename to Assets/Editor/Icons/Components/Viewport/Animation.png
diff --git a/Editor/Icons/Components/Viewport/AreaLight.png b/Assets/Editor/Icons/Components/Viewport/AreaLight.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AreaLight.png
rename to Assets/Editor/Icons/Components/Viewport/AreaLight.png
diff --git a/Editor/Icons/Components/Viewport/Attachment.png b/Assets/Editor/Icons/Components/Viewport/Attachment.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Attachment.png
rename to Assets/Editor/Icons/Components/Viewport/Attachment.png
diff --git a/Editor/Icons/Components/Viewport/AudioArea.png b/Assets/Editor/Icons/Components/Viewport/AudioArea.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioArea.png
rename to Assets/Editor/Icons/Components/Viewport/AudioArea.png
diff --git a/Editor/Icons/Components/Viewport/AudioAreaEnvironment.png b/Assets/Editor/Icons/Components/Viewport/AudioAreaEnvironment.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioAreaEnvironment.png
rename to Assets/Editor/Icons/Components/Viewport/AudioAreaEnvironment.png
diff --git a/Editor/Icons/Components/Viewport/AudioEnvironment.png b/Assets/Editor/Icons/Components/Viewport/AudioEnvironment.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioEnvironment.png
rename to Assets/Editor/Icons/Components/Viewport/AudioEnvironment.png
diff --git a/Editor/Icons/Components/Viewport/AudioListener.png b/Assets/Editor/Icons/Components/Viewport/AudioListener.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioListener.png
rename to Assets/Editor/Icons/Components/Viewport/AudioListener.png
diff --git a/Editor/Icons/Components/Viewport/AudioMultiPosition.png b/Assets/Editor/Icons/Components/Viewport/AudioMultiPosition.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioMultiPosition.png
rename to Assets/Editor/Icons/Components/Viewport/AudioMultiPosition.png
diff --git a/Editor/Icons/Components/Viewport/AudioRtpc.png b/Assets/Editor/Icons/Components/Viewport/AudioRtpc.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioRtpc.png
rename to Assets/Editor/Icons/Components/Viewport/AudioRtpc.png
diff --git a/Editor/Icons/Components/Viewport/AudioSwitch.png b/Assets/Editor/Icons/Components/Viewport/AudioSwitch.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioSwitch.png
rename to Assets/Editor/Icons/Components/Viewport/AudioSwitch.png
diff --git a/Editor/Icons/Components/Viewport/AudioTrigger.png b/Assets/Editor/Icons/Components/Viewport/AudioTrigger.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/AudioTrigger.png
rename to Assets/Editor/Icons/Components/Viewport/AudioTrigger.png
diff --git a/Editor/Icons/Components/Viewport/BehaviorTree.png b/Assets/Editor/Icons/Components/Viewport/BehaviorTree.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/BehaviorTree.png
rename to Assets/Editor/Icons/Components/Viewport/BehaviorTree.png
diff --git a/Editor/Icons/Components/Viewport/Box.png b/Assets/Editor/Icons/Components/Viewport/Box.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Box.png
rename to Assets/Editor/Icons/Components/Viewport/Box.png
diff --git a/Editor/Icons/Components/Viewport/Box_Shape.png b/Assets/Editor/Icons/Components/Viewport/Box_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Box_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Box_Shape.png
diff --git a/Editor/Icons/Components/Viewport/Capsule.png b/Assets/Editor/Icons/Components/Viewport/Capsule.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Capsule.png
rename to Assets/Editor/Icons/Components/Viewport/Capsule.png
diff --git a/Editor/Icons/Components/Viewport/Capsule_Shape.png b/Assets/Editor/Icons/Components/Viewport/Capsule_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Capsule_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Capsule_Shape.png
diff --git a/Editor/Icons/Components/Viewport/CharacterPhysics.png b/Assets/Editor/Icons/Components/Viewport/CharacterPhysics.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/CharacterPhysics.png
rename to Assets/Editor/Icons/Components/Viewport/CharacterPhysics.png
diff --git a/Editor/Icons/Components/Viewport/Comment.png b/Assets/Editor/Icons/Components/Viewport/Comment.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Comment.png
rename to Assets/Editor/Icons/Components/Viewport/Comment.png
diff --git a/Editor/Icons/Components/Viewport/ComponentPlaceholder.png b/Assets/Editor/Icons/Components/Viewport/ComponentPlaceholder.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/ComponentPlaceholder.png
rename to Assets/Editor/Icons/Components/Viewport/ComponentPlaceholder.png
diff --git a/Editor/Icons/Components/Viewport/Component_Placeholder.png b/Assets/Editor/Icons/Components/Viewport/Component_Placeholder.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Component_Placeholder.png
rename to Assets/Editor/Icons/Components/Viewport/Component_Placeholder.png
diff --git a/Editor/Icons/Components/Viewport/Cylinder.png b/Assets/Editor/Icons/Components/Viewport/Cylinder.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Cylinder.png
rename to Assets/Editor/Icons/Components/Viewport/Cylinder.png
diff --git a/Editor/Icons/Components/Viewport/Cylinder_Shape.png b/Assets/Editor/Icons/Components/Viewport/Cylinder_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Cylinder_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Cylinder_Shape.png
diff --git a/Editor/Icons/Components/Viewport/Decal.png b/Assets/Editor/Icons/Components/Viewport/Decal.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Decal.png
rename to Assets/Editor/Icons/Components/Viewport/Decal.png
diff --git a/Editor/Icons/Components/Viewport/Disk_Shape.png b/Assets/Editor/Icons/Components/Viewport/Disk_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Disk_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Disk_Shape.png
diff --git a/Editor/Icons/Components/Viewport/DynamicContent.png b/Assets/Editor/Icons/Components/Viewport/DynamicContent.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/DynamicContent.png
rename to Assets/Editor/Icons/Components/Viewport/DynamicContent.png
diff --git a/Editor/Icons/Components/Viewport/DynamicMesh.png b/Assets/Editor/Icons/Components/Viewport/DynamicMesh.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/DynamicMesh.png
rename to Assets/Editor/Icons/Components/Viewport/DynamicMesh.png
diff --git a/Editor/Icons/Components/Viewport/Entity.png b/Assets/Editor/Icons/Components/Viewport/Entity.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Entity.png
rename to Assets/Editor/Icons/Components/Viewport/Entity.png
diff --git a/Editor/Icons/Components/Viewport/EntityInSlice.png b/Assets/Editor/Icons/Components/Viewport/EntityInSlice.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/EntityInSlice.png
rename to Assets/Editor/Icons/Components/Viewport/EntityInSlice.png
diff --git a/Editor/Icons/Components/Viewport/EnvironmentProbe.png b/Assets/Editor/Icons/Components/Viewport/EnvironmentProbe.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/EnvironmentProbe.png
rename to Assets/Editor/Icons/Components/Viewport/EnvironmentProbe.png
diff --git a/Editor/Icons/Components/Viewport/Flipbook.png b/Assets/Editor/Icons/Components/Viewport/Flipbook.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Flipbook.png
rename to Assets/Editor/Icons/Components/Viewport/Flipbook.png
diff --git a/Editor/Icons/Components/Viewport/FogVolume.png b/Assets/Editor/Icons/Components/Viewport/FogVolume.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/FogVolume.png
rename to Assets/Editor/Icons/Components/Viewport/FogVolume.png
diff --git a/Editor/Icons/Components/Viewport/ForceVolume.png b/Assets/Editor/Icons/Components/Viewport/ForceVolume.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/ForceVolume.png
rename to Assets/Editor/Icons/Components/Viewport/ForceVolume.png
diff --git a/Editor/Icons/Components/Viewport/GeometryCache.png b/Assets/Editor/Icons/Components/Viewport/GeometryCache.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/GeometryCache.png
rename to Assets/Editor/Icons/Components/Viewport/GeometryCache.png
diff --git a/Editor/Icons/Components/Viewport/HttpClientComponent.png b/Assets/Editor/Icons/Components/Viewport/HttpClientComponent.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/HttpClientComponent.png
rename to Assets/Editor/Icons/Components/Viewport/HttpClientComponent.png
diff --git a/Editor/Icons/Components/Viewport/LensFlare.png b/Assets/Editor/Icons/Components/Viewport/LensFlare.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/LensFlare.png
rename to Assets/Editor/Icons/Components/Viewport/LensFlare.png
diff --git a/Editor/Icons/Components/Viewport/Light.png b/Assets/Editor/Icons/Components/Viewport/Light.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Light.png
rename to Assets/Editor/Icons/Components/Viewport/Light.png
diff --git a/Editor/Icons/Components/Viewport/Lightning.png b/Assets/Editor/Icons/Components/Viewport/Lightning.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Lightning.png
rename to Assets/Editor/Icons/Components/Viewport/Lightning.png
diff --git a/Editor/Icons/Components/Viewport/LightningArc.png b/Assets/Editor/Icons/Components/Viewport/LightningArc.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/LightningArc.png
rename to Assets/Editor/Icons/Components/Viewport/LightningArc.png
diff --git a/Editor/Icons/Components/Viewport/LookAt.png b/Assets/Editor/Icons/Components/Viewport/LookAt.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/LookAt.png
rename to Assets/Editor/Icons/Components/Viewport/LookAt.png
diff --git a/Editor/Icons/Components/Viewport/Mannequin.png b/Assets/Editor/Icons/Components/Viewport/Mannequin.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Mannequin.png
rename to Assets/Editor/Icons/Components/Viewport/Mannequin.png
diff --git a/Editor/Icons/Components/Viewport/MannequinScopeContext.png b/Assets/Editor/Icons/Components/Viewport/MannequinScopeContext.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/MannequinScopeContext.png
rename to Assets/Editor/Icons/Components/Viewport/MannequinScopeContext.png
diff --git a/Editor/Icons/Components/Viewport/MeshCollider.png b/Assets/Editor/Icons/Components/Viewport/MeshCollider.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/MeshCollider.png
rename to Assets/Editor/Icons/Components/Viewport/MeshCollider.png
diff --git a/Editor/Icons/Components/Viewport/MotionParameterSmoothing.png b/Assets/Editor/Icons/Components/Viewport/MotionParameterSmoothing.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/MotionParameterSmoothing.png
rename to Assets/Editor/Icons/Components/Viewport/MotionParameterSmoothing.png
diff --git a/Editor/Icons/Components/Viewport/Navigation.png b/Assets/Editor/Icons/Components/Viewport/Navigation.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Navigation.png
rename to Assets/Editor/Icons/Components/Viewport/Navigation.png
diff --git a/Editor/Icons/Components/Viewport/NavigationArea.png b/Assets/Editor/Icons/Components/Viewport/NavigationArea.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/NavigationArea.png
rename to Assets/Editor/Icons/Components/Viewport/NavigationArea.png
diff --git a/Editor/Icons/Components/Viewport/NavigationSeed.png b/Assets/Editor/Icons/Components/Viewport/NavigationSeed.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/NavigationSeed.png
rename to Assets/Editor/Icons/Components/Viewport/NavigationSeed.png
diff --git a/Editor/Icons/Components/Viewport/NetBinding.png b/Assets/Editor/Icons/Components/Viewport/NetBinding.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/NetBinding.png
rename to Assets/Editor/Icons/Components/Viewport/NetBinding.png
diff --git a/Editor/Icons/Components/Viewport/Nova.png b/Assets/Editor/Icons/Components/Viewport/Nova.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Nova.png
rename to Assets/Editor/Icons/Components/Viewport/Nova.png
diff --git a/Editor/Icons/Components/Viewport/ObjectAvoidance.png b/Assets/Editor/Icons/Components/Viewport/ObjectAvoidance.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/ObjectAvoidance.png
rename to Assets/Editor/Icons/Components/Viewport/ObjectAvoidance.png
diff --git a/Editor/Icons/Components/Viewport/Particle.png b/Assets/Editor/Icons/Components/Viewport/Particle.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Particle.png
rename to Assets/Editor/Icons/Components/Viewport/Particle.png
diff --git a/Editor/Icons/Components/Viewport/Physics.png b/Assets/Editor/Icons/Components/Viewport/Physics.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Physics.png
rename to Assets/Editor/Icons/Components/Viewport/Physics.png
diff --git a/Editor/Icons/Components/Viewport/PhysicsConstraint.png b/Assets/Editor/Icons/Components/Viewport/PhysicsConstraint.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/PhysicsConstraint.png
rename to Assets/Editor/Icons/Components/Viewport/PhysicsConstraint.png
diff --git a/Editor/Icons/Components/Viewport/PointLight.png b/Assets/Editor/Icons/Components/Viewport/PointLight.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/PointLight.png
rename to Assets/Editor/Icons/Components/Viewport/PointLight.png
diff --git a/Editor/Icons/Components/Viewport/PolygonPrism.png b/Assets/Editor/Icons/Components/Viewport/PolygonPrism.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/PolygonPrism.png
rename to Assets/Editor/Icons/Components/Viewport/PolygonPrism.png
diff --git a/Editor/Icons/Components/Viewport/Primitive Collider.png b/Assets/Editor/Icons/Components/Viewport/Primitive Collider.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Primitive Collider.png
rename to Assets/Editor/Icons/Components/Viewport/Primitive Collider.png
diff --git a/Editor/Icons/Components/Viewport/PrimitiveCollider.png b/Assets/Editor/Icons/Components/Viewport/PrimitiveCollider.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/PrimitiveCollider.png
rename to Assets/Editor/Icons/Components/Viewport/PrimitiveCollider.png
diff --git a/Editor/Icons/Components/Viewport/ProjectorLight.png b/Assets/Editor/Icons/Components/Viewport/ProjectorLight.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/ProjectorLight.png
rename to Assets/Editor/Icons/Components/Viewport/ProjectorLight.png
diff --git a/Editor/Icons/Components/Viewport/Quad_Shape.png b/Assets/Editor/Icons/Components/Viewport/Quad_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Quad_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Quad_Shape.png
diff --git a/Editor/Icons/Components/Viewport/Ragdoll.png b/Assets/Editor/Icons/Components/Viewport/Ragdoll.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Ragdoll.png
rename to Assets/Editor/Icons/Components/Viewport/Ragdoll.png
diff --git a/Editor/Icons/Components/Viewport/RandomTimedSpawner.png b/Assets/Editor/Icons/Components/Viewport/RandomTimedSpawner.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/RandomTimedSpawner.png
rename to Assets/Editor/Icons/Components/Viewport/RandomTimedSpawner.png
diff --git a/Editor/Icons/Components/Viewport/RigidPhysics.png b/Assets/Editor/Icons/Components/Viewport/RigidPhysics.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/RigidPhysics.png
rename to Assets/Editor/Icons/Components/Viewport/RigidPhysics.png
diff --git a/Editor/Icons/Components/Viewport/Script.png b/Assets/Editor/Icons/Components/Viewport/Script.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Script.png
rename to Assets/Editor/Icons/Components/Viewport/Script.png
diff --git a/Editor/Icons/Components/Viewport/ScriptEventAssetReference.png b/Assets/Editor/Icons/Components/Viewport/ScriptEventAssetReference.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/ScriptEventAssetReference.png
rename to Assets/Editor/Icons/Components/Viewport/ScriptEventAssetReference.png
diff --git a/Editor/Icons/Components/Viewport/Sequence.png b/Assets/Editor/Icons/Components/Viewport/Sequence.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Sequence.png
rename to Assets/Editor/Icons/Components/Viewport/Sequence.png
diff --git a/Editor/Icons/Components/Viewport/SequenceAgent.png b/Assets/Editor/Icons/Components/Viewport/SequenceAgent.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/SequenceAgent.png
rename to Assets/Editor/Icons/Components/Viewport/SequenceAgent.png
diff --git a/Editor/Icons/Components/Viewport/Shadow.png b/Assets/Editor/Icons/Components/Viewport/Shadow.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Shadow.png
rename to Assets/Editor/Icons/Components/Viewport/Shadow.png
diff --git a/Editor/Icons/Components/Viewport/SimpleState.png b/Assets/Editor/Icons/Components/Viewport/SimpleState.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/SimpleState.png
rename to Assets/Editor/Icons/Components/Viewport/SimpleState.png
diff --git a/Editor/Icons/Components/Viewport/SkinnedMesh.png b/Assets/Editor/Icons/Components/Viewport/SkinnedMesh.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/SkinnedMesh.png
rename to Assets/Editor/Icons/Components/Viewport/SkinnedMesh.png
diff --git a/Editor/Icons/Components/Viewport/SkyHighlight.png b/Assets/Editor/Icons/Components/Viewport/SkyHighlight.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/SkyHighlight.png
rename to Assets/Editor/Icons/Components/Viewport/SkyHighlight.png
diff --git a/Editor/Icons/Components/Viewport/Snow.png b/Assets/Editor/Icons/Components/Viewport/Snow.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Snow.png
rename to Assets/Editor/Icons/Components/Viewport/Snow.png
diff --git a/Editor/Icons/Components/Viewport/Spawner.png b/Assets/Editor/Icons/Components/Viewport/Spawner.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Spawner.png
rename to Assets/Editor/Icons/Components/Viewport/Spawner.png
diff --git a/Editor/Icons/Components/Viewport/Sphere.png b/Assets/Editor/Icons/Components/Viewport/Sphere.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Sphere.png
rename to Assets/Editor/Icons/Components/Viewport/Sphere.png
diff --git a/Editor/Icons/Components/Viewport/Sphere_Shape.png b/Assets/Editor/Icons/Components/Viewport/Sphere_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Sphere_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Sphere_Shape.png
diff --git a/Editor/Icons/Components/Viewport/Spline.png b/Assets/Editor/Icons/Components/Viewport/Spline.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Spline.png
rename to Assets/Editor/Icons/Components/Viewport/Spline.png
diff --git a/Editor/Icons/Components/Viewport/StaticData.png b/Assets/Editor/Icons/Components/Viewport/StaticData.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/StaticData.png
rename to Assets/Editor/Icons/Components/Viewport/StaticData.png
diff --git a/Editor/Icons/Components/Viewport/StaticMesh.png b/Assets/Editor/Icons/Components/Viewport/StaticMesh.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/StaticMesh.png
rename to Assets/Editor/Icons/Components/Viewport/StaticMesh.png
diff --git a/Editor/Icons/Components/Viewport/StaticPhysics.png b/Assets/Editor/Icons/Components/Viewport/StaticPhysics.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/StaticPhysics.png
rename to Assets/Editor/Icons/Components/Viewport/StaticPhysics.png
diff --git a/Editor/Icons/Components/Viewport/Tag.png b/Assets/Editor/Icons/Components/Viewport/Tag.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Tag.png
rename to Assets/Editor/Icons/Components/Viewport/Tag.png
diff --git a/Editor/Icons/Components/Viewport/TerrainPhysics.png b/Assets/Editor/Icons/Components/Viewport/TerrainPhysics.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/TerrainPhysics.png
rename to Assets/Editor/Icons/Components/Viewport/TerrainPhysics.png
diff --git a/Editor/Icons/Components/Viewport/Transform.png b/Assets/Editor/Icons/Components/Viewport/Transform.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Transform.png
rename to Assets/Editor/Icons/Components/Viewport/Transform.png
diff --git a/Editor/Icons/Components/Viewport/Trigger.png b/Assets/Editor/Icons/Components/Viewport/Trigger.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Trigger.png
rename to Assets/Editor/Icons/Components/Viewport/Trigger.png
diff --git a/Editor/Icons/Components/Viewport/Tube_Shape.png b/Assets/Editor/Icons/Components/Viewport/Tube_Shape.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/Tube_Shape.png
rename to Assets/Editor/Icons/Components/Viewport/Tube_Shape.png
diff --git a/Editor/Icons/Components/Viewport/UiCanvasOnMesh.png b/Assets/Editor/Icons/Components/Viewport/UiCanvasOnMesh.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/UiCanvasOnMesh.png
rename to Assets/Editor/Icons/Components/Viewport/UiCanvasOnMesh.png
diff --git a/Editor/Icons/Components/Viewport/UiCanvasRef.png b/Assets/Editor/Icons/Components/Viewport/UiCanvasRef.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/UiCanvasRef.png
rename to Assets/Editor/Icons/Components/Viewport/UiCanvasRef.png
diff --git a/Editor/Icons/Components/Viewport/VRPreview.png b/Assets/Editor/Icons/Components/Viewport/VRPreview.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/VRPreview.png
rename to Assets/Editor/Icons/Components/Viewport/VRPreview.png
diff --git a/Editor/Icons/Components/Viewport/WaterVolume.png b/Assets/Editor/Icons/Components/Viewport/WaterVolume.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/WaterVolume.png
rename to Assets/Editor/Icons/Components/Viewport/WaterVolume.png
diff --git a/Editor/Icons/Components/Viewport/WindVolume.png b/Assets/Editor/Icons/Components/Viewport/WindVolume.png
similarity index 100%
rename from Editor/Icons/Components/Viewport/WindVolume.png
rename to Assets/Editor/Icons/Components/Viewport/WindVolume.png
diff --git a/Editor/Icons/Components/WaterRippleGenerator.svg b/Assets/Editor/Icons/Components/WaterRippleGenerator.svg
similarity index 100%
rename from Editor/Icons/Components/WaterRippleGenerator.svg
rename to Assets/Editor/Icons/Components/WaterRippleGenerator.svg
diff --git a/Editor/Icons/Components/WaterVolume.svg b/Assets/Editor/Icons/Components/WaterVolume.svg
similarity index 100%
rename from Editor/Icons/Components/WaterVolume.svg
rename to Assets/Editor/Icons/Components/WaterVolume.svg
diff --git a/Editor/Icons/Components/WindVolume.svg b/Assets/Editor/Icons/Components/WindVolume.svg
similarity index 100%
rename from Editor/Icons/Components/WindVolume.svg
rename to Assets/Editor/Icons/Components/WindVolume.svg
diff --git a/Editor/Icons/PhysX/Move.svg b/Assets/Editor/Icons/PhysX/Move.svg
similarity index 100%
rename from Editor/Icons/PhysX/Move.svg
rename to Assets/Editor/Icons/PhysX/Move.svg
diff --git a/Editor/Icons/PhysX/Rotate.svg b/Assets/Editor/Icons/PhysX/Rotate.svg
similarity index 100%
rename from Editor/Icons/PhysX/Rotate.svg
rename to Assets/Editor/Icons/PhysX/Rotate.svg
diff --git a/Editor/Icons/PhysX/Scale.svg b/Assets/Editor/Icons/PhysX/Scale.svg
similarity index 100%
rename from Editor/Icons/PhysX/Scale.svg
rename to Assets/Editor/Icons/PhysX/Scale.svg
diff --git a/Editor/Icons/PropertyEditor/Browse.png b/Assets/Editor/Icons/PropertyEditor/Browse.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/Browse.png
rename to Assets/Editor/Icons/PropertyEditor/Browse.png
diff --git a/Editor/Icons/PropertyEditor/Browse_on.png b/Assets/Editor/Icons/PropertyEditor/Browse_on.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/Browse_on.png
rename to Assets/Editor/Icons/PropertyEditor/Browse_on.png
diff --git a/Editor/Icons/PropertyEditor/add.png b/Assets/Editor/Icons/PropertyEditor/add.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/add.png
rename to Assets/Editor/Icons/PropertyEditor/add.png
diff --git a/Editor/Icons/PropertyEditor/cross-circle-small.png b/Assets/Editor/Icons/PropertyEditor/cross-circle-small.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/cross-circle-small.png
rename to Assets/Editor/Icons/PropertyEditor/cross-circle-small.png
diff --git a/Editor/Icons/PropertyEditor/cross-small.png b/Assets/Editor/Icons/PropertyEditor/cross-small.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/cross-small.png
rename to Assets/Editor/Icons/PropertyEditor/cross-small.png
diff --git a/Editor/Icons/PropertyEditor/error_icon.png b/Assets/Editor/Icons/PropertyEditor/error_icon.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/error_icon.png
rename to Assets/Editor/Icons/PropertyEditor/error_icon.png
diff --git a/Editor/Icons/PropertyEditor/group_closed.png b/Assets/Editor/Icons/PropertyEditor/group_closed.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/group_closed.png
rename to Assets/Editor/Icons/PropertyEditor/group_closed.png
diff --git a/Editor/Icons/PropertyEditor/group_open.png b/Assets/Editor/Icons/PropertyEditor/group_open.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/group_open.png
rename to Assets/Editor/Icons/PropertyEditor/group_open.png
diff --git a/Editor/Icons/PropertyEditor/image_icon.svg b/Assets/Editor/Icons/PropertyEditor/image_icon.svg
similarity index 100%
rename from Editor/Icons/PropertyEditor/image_icon.svg
rename to Assets/Editor/Icons/PropertyEditor/image_icon.svg
diff --git a/Editor/Icons/PropertyEditor/list-add-small.png b/Assets/Editor/Icons/PropertyEditor/list-add-small.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/list-add-small.png
rename to Assets/Editor/Icons/PropertyEditor/list-add-small.png
diff --git a/Editor/Icons/PropertyEditor/open_in.png b/Assets/Editor/Icons/PropertyEditor/open_in.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/open_in.png
rename to Assets/Editor/Icons/PropertyEditor/open_in.png
diff --git a/Editor/Icons/PropertyEditor/point_hand.png b/Assets/Editor/Icons/PropertyEditor/point_hand.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/point_hand.png
rename to Assets/Editor/Icons/PropertyEditor/point_hand.png
diff --git a/Editor/Icons/PropertyEditor/remove.png b/Assets/Editor/Icons/PropertyEditor/remove.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/remove.png
rename to Assets/Editor/Icons/PropertyEditor/remove.png
diff --git a/Editor/Icons/PropertyEditor/reset_icon.png b/Assets/Editor/Icons/PropertyEditor/reset_icon.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/reset_icon.png
rename to Assets/Editor/Icons/PropertyEditor/reset_icon.png
diff --git a/Editor/Icons/PropertyEditor/tool_cancel.png b/Assets/Editor/Icons/PropertyEditor/tool_cancel.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/tool_cancel.png
rename to Assets/Editor/Icons/PropertyEditor/tool_cancel.png
diff --git a/Editor/Icons/PropertyEditor/tool_cancel_highlight.png b/Assets/Editor/Icons/PropertyEditor/tool_cancel_highlight.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/tool_cancel_highlight.png
rename to Assets/Editor/Icons/PropertyEditor/tool_cancel_highlight.png
diff --git a/Editor/Icons/PropertyEditor/tool_cancel_hover.png b/Assets/Editor/Icons/PropertyEditor/tool_cancel_hover.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/tool_cancel_hover.png
rename to Assets/Editor/Icons/PropertyEditor/tool_cancel_hover.png
diff --git a/Editor/Icons/PropertyEditor/trash-small.png b/Assets/Editor/Icons/PropertyEditor/trash-small.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/trash-small.png
rename to Assets/Editor/Icons/PropertyEditor/trash-small.png
diff --git a/Editor/Icons/PropertyEditor/tree_closed.png b/Assets/Editor/Icons/PropertyEditor/tree_closed.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/tree_closed.png
rename to Assets/Editor/Icons/PropertyEditor/tree_closed.png
diff --git a/Editor/Icons/PropertyEditor/tree_open.png b/Assets/Editor/Icons/PropertyEditor/tree_open.png
similarity index 100%
rename from Editor/Icons/PropertyEditor/tree_open.png
rename to Assets/Editor/Icons/PropertyEditor/tree_open.png
diff --git a/Editor/Icons/RotationWarning.png b/Assets/Editor/Icons/RotationWarning.png
similarity index 100%
rename from Editor/Icons/RotationWarning.png
rename to Assets/Editor/Icons/RotationWarning.png
diff --git a/Editor/Icons/ScaleWarning.png b/Assets/Editor/Icons/ScaleWarning.png
similarity index 100%
rename from Editor/Icons/ScaleWarning.png
rename to Assets/Editor/Icons/ScaleWarning.png
diff --git a/Editor/Icons/ScriptCanvas/Add.png b/Assets/Editor/Icons/ScriptCanvas/Add.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Add.png
rename to Assets/Editor/Icons/ScriptCanvas/Add.png
diff --git a/Editor/Icons/ScriptCanvas/And.png b/Assets/Editor/Icons/ScriptCanvas/And.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/And.png
rename to Assets/Editor/Icons/ScriptCanvas/And.png
diff --git a/Editor/Icons/ScriptCanvas/Boolean.png b/Assets/Editor/Icons/ScriptCanvas/Boolean.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Boolean.png
rename to Assets/Editor/Icons/ScriptCanvas/Boolean.png
diff --git a/Editor/Icons/ScriptCanvas/Breakpoint.png b/Assets/Editor/Icons/ScriptCanvas/Breakpoint.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Breakpoint.png
rename to Assets/Editor/Icons/ScriptCanvas/Breakpoint.png
diff --git a/Editor/Icons/ScriptCanvas/Bus.png b/Assets/Editor/Icons/ScriptCanvas/Bus.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Bus.png
rename to Assets/Editor/Icons/ScriptCanvas/Bus.png
diff --git a/Editor/Icons/ScriptCanvas/Connect.png b/Assets/Editor/Icons/ScriptCanvas/Connect.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Connect.png
rename to Assets/Editor/Icons/ScriptCanvas/Connect.png
diff --git a/Editor/Icons/ScriptCanvas/Delay.png b/Assets/Editor/Icons/ScriptCanvas/Delay.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Delay.png
rename to Assets/Editor/Icons/ScriptCanvas/Delay.png
diff --git a/Editor/Icons/ScriptCanvas/Disabled/ScriptCanvas_white.png b/Assets/Editor/Icons/ScriptCanvas/Disabled/ScriptCanvas_white.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Disabled/ScriptCanvas_white.png
rename to Assets/Editor/Icons/ScriptCanvas/Disabled/ScriptCanvas_white.png
diff --git a/Editor/Icons/ScriptCanvas/Disconnect.png b/Assets/Editor/Icons/ScriptCanvas/Disconnect.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Disconnect.png
rename to Assets/Editor/Icons/ScriptCanvas/Disconnect.png
diff --git a/Editor/Icons/ScriptCanvas/Divide.png b/Assets/Editor/Icons/ScriptCanvas/Divide.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Divide.png
rename to Assets/Editor/Icons/ScriptCanvas/Divide.png
diff --git a/Editor/Icons/ScriptCanvas/EntityRef.png b/Assets/Editor/Icons/ScriptCanvas/EntityRef.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/EntityRef.png
rename to Assets/Editor/Icons/ScriptCanvas/EntityRef.png
diff --git a/Editor/Icons/ScriptCanvas/Libraries/All.png b/Assets/Editor/Icons/ScriptCanvas/Libraries/All.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Libraries/All.png
rename to Assets/Editor/Icons/ScriptCanvas/Libraries/All.png
diff --git a/Editor/Icons/ScriptCanvas/Libraries/Core.png b/Assets/Editor/Icons/ScriptCanvas/Libraries/Core.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Libraries/Core.png
rename to Assets/Editor/Icons/ScriptCanvas/Libraries/Core.png
diff --git a/Editor/Icons/ScriptCanvas/Libraries/Entity.png b/Assets/Editor/Icons/ScriptCanvas/Libraries/Entity.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Libraries/Entity.png
rename to Assets/Editor/Icons/ScriptCanvas/Libraries/Entity.png
diff --git a/Editor/Icons/ScriptCanvas/Libraries/Logic.png b/Assets/Editor/Icons/ScriptCanvas/Libraries/Logic.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Libraries/Logic.png
rename to Assets/Editor/Icons/ScriptCanvas/Libraries/Logic.png
diff --git a/Editor/Icons/ScriptCanvas/Libraries/Math.png b/Assets/Editor/Icons/ScriptCanvas/Libraries/Math.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Libraries/Math.png
rename to Assets/Editor/Icons/ScriptCanvas/Libraries/Math.png
diff --git a/Editor/Icons/ScriptCanvas/Multiply.png b/Assets/Editor/Icons/ScriptCanvas/Multiply.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Multiply.png
rename to Assets/Editor/Icons/ScriptCanvas/Multiply.png
diff --git a/Editor/Icons/ScriptCanvas/Not.png b/Assets/Editor/Icons/ScriptCanvas/Not.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Not.png
rename to Assets/Editor/Icons/ScriptCanvas/Not.png
diff --git a/Editor/Icons/ScriptCanvas/Number.png b/Assets/Editor/Icons/ScriptCanvas/Number.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Number.png
rename to Assets/Editor/Icons/ScriptCanvas/Number.png
diff --git a/Editor/Icons/ScriptCanvas/Or.png b/Assets/Editor/Icons/ScriptCanvas/Or.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Or.png
rename to Assets/Editor/Icons/ScriptCanvas/Or.png
diff --git a/Editor/Icons/ScriptCanvas/Placeholder.png b/Assets/Editor/Icons/ScriptCanvas/Placeholder.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Placeholder.png
rename to Assets/Editor/Icons/ScriptCanvas/Placeholder.png
diff --git a/Editor/Icons/ScriptCanvas/Print.png b/Assets/Editor/Icons/ScriptCanvas/Print.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Print.png
rename to Assets/Editor/Icons/ScriptCanvas/Print.png
diff --git a/Editor/Icons/ScriptCanvas/Random.png b/Assets/Editor/Icons/ScriptCanvas/Random.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Random.png
rename to Assets/Editor/Icons/ScriptCanvas/Random.png
diff --git a/Editor/Icons/ScriptCanvas/Rotate.png b/Assets/Editor/Icons/ScriptCanvas/Rotate.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Rotate.png
rename to Assets/Editor/Icons/ScriptCanvas/Rotate.png
diff --git a/Editor/Icons/ScriptCanvas/ScriptCanvas.svg b/Assets/Editor/Icons/ScriptCanvas/ScriptCanvas.svg
similarity index 100%
rename from Editor/Icons/ScriptCanvas/ScriptCanvas.svg
rename to Assets/Editor/Icons/ScriptCanvas/ScriptCanvas.svg
diff --git a/Editor/Icons/ScriptCanvas/Start.png b/Assets/Editor/Icons/ScriptCanvas/Start.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Start.png
rename to Assets/Editor/Icons/ScriptCanvas/Start.png
diff --git a/Editor/Icons/ScriptCanvas/Step In.png b/Assets/Editor/Icons/ScriptCanvas/Step In.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Step In.png
rename to Assets/Editor/Icons/ScriptCanvas/Step In.png
diff --git a/Editor/Icons/ScriptCanvas/Step Over.png b/Assets/Editor/Icons/ScriptCanvas/Step Over.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Step Over.png
rename to Assets/Editor/Icons/ScriptCanvas/Step Over.png
diff --git a/Editor/Icons/ScriptCanvas/String.png b/Assets/Editor/Icons/ScriptCanvas/String.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/String.png
rename to Assets/Editor/Icons/ScriptCanvas/String.png
diff --git a/Editor/Icons/ScriptCanvas/Subtract.png b/Assets/Editor/Icons/ScriptCanvas/Subtract.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Subtract.png
rename to Assets/Editor/Icons/ScriptCanvas/Subtract.png
diff --git a/Editor/Icons/ScriptCanvas/Sum.png b/Assets/Editor/Icons/ScriptCanvas/Sum.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Sum.png
rename to Assets/Editor/Icons/ScriptCanvas/Sum.png
diff --git a/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas.png b/Assets/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas.png
rename to Assets/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas.png
diff --git a/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas_Function.png b/Assets/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas_Function.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas_Function.png
rename to Assets/Editor/Icons/ScriptCanvas/Viewport/ScriptCanvas_Function.png
diff --git a/Editor/Icons/ScriptCanvas/Xor.png b/Assets/Editor/Icons/ScriptCanvas/Xor.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/Xor.png
rename to Assets/Editor/Icons/ScriptCanvas/Xor.png
diff --git a/Editor/Icons/ScriptCanvas/settings.png b/Assets/Editor/Icons/ScriptCanvas/settings.png
similarity index 100%
rename from Editor/Icons/ScriptCanvas/settings.png
rename to Assets/Editor/Icons/ScriptCanvas/settings.png
diff --git a/Editor/Icons/WhiteBox/Move.svg b/Assets/Editor/Icons/WhiteBox/Move.svg
similarity index 100%
rename from Editor/Icons/WhiteBox/Move.svg
rename to Assets/Editor/Icons/WhiteBox/Move.svg
diff --git a/Editor/Icons/WhiteBox/RestoreMode.svg b/Assets/Editor/Icons/WhiteBox/RestoreMode.svg
similarity index 100%
rename from Editor/Icons/WhiteBox/RestoreMode.svg
rename to Assets/Editor/Icons/WhiteBox/RestoreMode.svg
diff --git a/Editor/Icons/WhiteBox/Rotate.svg b/Assets/Editor/Icons/WhiteBox/Rotate.svg
similarity index 100%
rename from Editor/Icons/WhiteBox/Rotate.svg
rename to Assets/Editor/Icons/WhiteBox/Rotate.svg
diff --git a/Editor/Icons/WhiteBox/Scale.svg b/Assets/Editor/Icons/WhiteBox/Scale.svg
similarity index 100%
rename from Editor/Icons/WhiteBox/Scale.svg
rename to Assets/Editor/Icons/WhiteBox/Scale.svg
diff --git a/Editor/Icons/WhiteBox/SketchMode.svg b/Assets/Editor/Icons/WhiteBox/SketchMode.svg
similarity index 100%
rename from Editor/Icons/WhiteBox/SketchMode.svg
rename to Assets/Editor/Icons/WhiteBox/SketchMode.svg
diff --git a/Editor/Icons/animation/add.png b/Assets/Editor/Icons/animation/add.png
similarity index 100%
rename from Editor/Icons/animation/add.png
rename to Assets/Editor/Icons/animation/add.png
diff --git a/Editor/Icons/animation/animation.png b/Assets/Editor/Icons/animation/animation.png
similarity index 100%
rename from Editor/Icons/animation/animation.png
rename to Assets/Editor/Icons/animation/animation.png
diff --git a/Editor/Icons/animation/animation_additive.png b/Assets/Editor/Icons/animation/animation_additive.png
similarity index 100%
rename from Editor/Icons/animation/animation_additive.png
rename to Assets/Editor/Icons/animation/animation_additive.png
diff --git a/Editor/Icons/animation/animation_aimpose.png b/Assets/Editor/Icons/animation/animation_aimpose.png
similarity index 100%
rename from Editor/Icons/animation/animation_aimpose.png
rename to Assets/Editor/Icons/animation/animation_aimpose.png
diff --git a/Editor/Icons/animation/animation_bspace.png b/Assets/Editor/Icons/animation/animation_bspace.png
similarity index 100%
rename from Editor/Icons/animation/animation_bspace.png
rename to Assets/Editor/Icons/animation/animation_bspace.png
diff --git a/Editor/Icons/animation/animation_comb.png b/Assets/Editor/Icons/animation/animation_comb.png
similarity index 100%
rename from Editor/Icons/animation/animation_comb.png
rename to Assets/Editor/Icons/animation/animation_comb.png
diff --git a/Editor/Icons/animation/animation_lookpose.png b/Assets/Editor/Icons/animation/animation_lookpose.png
similarity index 100%
rename from Editor/Icons/animation/animation_lookpose.png
rename to Assets/Editor/Icons/animation/animation_lookpose.png
diff --git a/Editor/Icons/animation/animation_offline.png b/Assets/Editor/Icons/animation/animation_offline.png
similarity index 100%
rename from Editor/Icons/animation/animation_offline.png
rename to Assets/Editor/Icons/animation/animation_offline.png
diff --git a/Editor/Icons/animation/attachment.png b/Assets/Editor/Icons/animation/attachment.png
similarity index 100%
rename from Editor/Icons/animation/attachment.png
rename to Assets/Editor/Icons/animation/attachment.png
diff --git a/Editor/Icons/animation/audio_event_16.png b/Assets/Editor/Icons/animation/audio_event_16.png
similarity index 100%
rename from Editor/Icons/animation/audio_event_16.png
rename to Assets/Editor/Icons/animation/audio_event_16.png
diff --git a/Editor/Icons/animation/back_16.png b/Assets/Editor/Icons/animation/back_16.png
similarity index 100%
rename from Editor/Icons/animation/back_16.png
rename to Assets/Editor/Icons/animation/back_16.png
diff --git a/Editor/Icons/animation/bind_pose.png b/Assets/Editor/Icons/animation/bind_pose.png
similarity index 100%
rename from Editor/Icons/animation/bind_pose.png
rename to Assets/Editor/Icons/animation/bind_pose.png
diff --git a/Editor/Icons/animation/bone.png b/Assets/Editor/Icons/animation/bone.png
similarity index 100%
rename from Editor/Icons/animation/bone.png
rename to Assets/Editor/Icons/animation/bone.png
diff --git a/Editor/Icons/animation/build.png b/Assets/Editor/Icons/animation/build.png
similarity index 100%
rename from Editor/Icons/animation/build.png
rename to Assets/Editor/Icons/animation/build.png
diff --git a/Editor/Icons/animation/character.png b/Assets/Editor/Icons/animation/character.png
similarity index 100%
rename from Editor/Icons/animation/character.png
rename to Assets/Editor/Icons/animation/character.png
diff --git a/Editor/Icons/animation/close.png b/Assets/Editor/Icons/animation/close.png
similarity index 100%
rename from Editor/Icons/animation/close.png
rename to Assets/Editor/Icons/animation/close.png
diff --git a/Editor/Icons/animation/close_highlight.png b/Assets/Editor/Icons/animation/close_highlight.png
similarity index 100%
rename from Editor/Icons/animation/close_highlight.png
rename to Assets/Editor/Icons/animation/close_highlight.png
diff --git a/Editor/Icons/animation/create_cdf.png b/Assets/Editor/Icons/animation/create_cdf.png
similarity index 100%
rename from Editor/Icons/animation/create_cdf.png
rename to Assets/Editor/Icons/animation/create_cdf.png
diff --git a/Editor/Icons/animation/display_options.png b/Assets/Editor/Icons/animation/display_options.png
similarity index 100%
rename from Editor/Icons/animation/display_options.png
rename to Assets/Editor/Icons/animation/display_options.png
diff --git a/Editor/Icons/animation/filter_16.png b/Assets/Editor/Icons/animation/filter_16.png
similarity index 100%
rename from Editor/Icons/animation/filter_16.png
rename to Assets/Editor/Icons/animation/filter_16.png
diff --git a/Editor/Icons/animation/footsteps.png b/Assets/Editor/Icons/animation/footsteps.png
similarity index 100%
rename from Editor/Icons/animation/footsteps.png
rename to Assets/Editor/Icons/animation/footsteps.png
diff --git a/Editor/Icons/animation/force_recompile.png b/Assets/Editor/Icons/animation/force_recompile.png
similarity index 100%
rename from Editor/Icons/animation/force_recompile.png
rename to Assets/Editor/Icons/animation/force_recompile.png
diff --git a/Editor/Icons/animation/forward_16.png b/Assets/Editor/Icons/animation/forward_16.png
similarity index 100%
rename from Editor/Icons/animation/forward_16.png
rename to Assets/Editor/Icons/animation/forward_16.png
diff --git a/Editor/Icons/animation/gizmo_location.png b/Assets/Editor/Icons/animation/gizmo_location.png
similarity index 100%
rename from Editor/Icons/animation/gizmo_location.png
rename to Assets/Editor/Icons/animation/gizmo_location.png
diff --git a/Editor/Icons/animation/grid.png b/Assets/Editor/Icons/animation/grid.png
similarity index 100%
rename from Editor/Icons/animation/grid.png
rename to Assets/Editor/Icons/animation/grid.png
diff --git a/Editor/Icons/animation/group.png b/Assets/Editor/Icons/animation/group.png
similarity index 100%
rename from Editor/Icons/animation/group.png
rename to Assets/Editor/Icons/animation/group.png
diff --git a/Editor/Icons/animation/import.png b/Assets/Editor/Icons/animation/import.png
similarity index 100%
rename from Editor/Icons/animation/import.png
rename to Assets/Editor/Icons/animation/import.png
diff --git a/Editor/Icons/animation/in_folder_16.png b/Assets/Editor/Icons/animation/in_folder_16.png
similarity index 100%
rename from Editor/Icons/animation/in_folder_16.png
rename to Assets/Editor/Icons/animation/in_folder_16.png
diff --git a/Editor/Icons/animation/in_folder_and_pak_16.png b/Assets/Editor/Icons/animation/in_folder_and_pak_16.png
similarity index 100%
rename from Editor/Icons/animation/in_folder_and_pak_16.png
rename to Assets/Editor/Icons/animation/in_folder_and_pak_16.png
diff --git a/Editor/Icons/animation/in_pak_16.png b/Assets/Editor/Icons/animation/in_pak_16.png
similarity index 100%
rename from Editor/Icons/animation/in_pak_16.png
rename to Assets/Editor/Icons/animation/in_pak_16.png
diff --git a/Editor/Icons/animation/lock_16.png b/Assets/Editor/Icons/animation/lock_16.png
similarity index 100%
rename from Editor/Icons/animation/lock_16.png
rename to Assets/Editor/Icons/animation/lock_16.png
diff --git a/Editor/Icons/animation/new_animation.png b/Assets/Editor/Icons/animation/new_animation.png
similarity index 100%
rename from Editor/Icons/animation/new_animation.png
rename to Assets/Editor/Icons/animation/new_animation.png
diff --git a/Editor/Icons/animation/physics.png b/Assets/Editor/Icons/animation/physics.png
similarity index 100%
rename from Editor/Icons/animation/physics.png
rename to Assets/Editor/Icons/animation/physics.png
diff --git a/Editor/Icons/animation/playback_options.png b/Assets/Editor/Icons/animation/playback_options.png
similarity index 100%
rename from Editor/Icons/animation/playback_options.png
rename to Assets/Editor/Icons/animation/playback_options.png
diff --git a/Editor/Icons/animation/redo.png b/Assets/Editor/Icons/animation/redo.png
similarity index 100%
rename from Editor/Icons/animation/redo.png
rename to Assets/Editor/Icons/animation/redo.png
diff --git a/Editor/Icons/animation/revert.png b/Assets/Editor/Icons/animation/revert.png
similarity index 100%
rename from Editor/Icons/animation/revert.png
rename to Assets/Editor/Icons/animation/revert.png
diff --git a/Editor/Icons/animation/rig.png b/Assets/Editor/Icons/animation/rig.png
similarity index 100%
rename from Editor/Icons/animation/rig.png
rename to Assets/Editor/Icons/animation/rig.png
diff --git a/Editor/Icons/animation/save.png b/Assets/Editor/Icons/animation/save.png
similarity index 100%
rename from Editor/Icons/animation/save.png
rename to Assets/Editor/Icons/animation/save.png
diff --git a/Editor/Icons/animation/selection_16.png b/Assets/Editor/Icons/animation/selection_16.png
similarity index 100%
rename from Editor/Icons/animation/selection_16.png
rename to Assets/Editor/Icons/animation/selection_16.png
diff --git a/Editor/Icons/animation/show_in_explorer.png b/Assets/Editor/Icons/animation/show_in_explorer.png
similarity index 100%
rename from Editor/Icons/animation/show_in_explorer.png
rename to Assets/Editor/Icons/animation/show_in_explorer.png
diff --git a/Editor/Icons/animation/skeleton.png b/Assets/Editor/Icons/animation/skeleton.png
similarity index 100%
rename from Editor/Icons/animation/skeleton.png
rename to Assets/Editor/Icons/animation/skeleton.png
diff --git a/Editor/Icons/animation/skin.png b/Assets/Editor/Icons/animation/skin.png
similarity index 100%
rename from Editor/Icons/animation/skin.png
rename to Assets/Editor/Icons/animation/skin.png
diff --git a/Editor/Icons/animation/source_asset_16.png b/Assets/Editor/Icons/animation/source_asset_16.png
similarity index 100%
rename from Editor/Icons/animation/source_asset_16.png
rename to Assets/Editor/Icons/animation/source_asset_16.png
diff --git a/Editor/Icons/animation/tool_move.png b/Assets/Editor/Icons/animation/tool_move.png
similarity index 100%
rename from Editor/Icons/animation/tool_move.png
rename to Assets/Editor/Icons/animation/tool_move.png
diff --git a/Editor/Icons/animation/tool_rotate.png b/Assets/Editor/Icons/animation/tool_rotate.png
similarity index 100%
rename from Editor/Icons/animation/tool_rotate.png
rename to Assets/Editor/Icons/animation/tool_rotate.png
diff --git a/Editor/Icons/animation/tool_scale.png b/Assets/Editor/Icons/animation/tool_scale.png
similarity index 100%
rename from Editor/Icons/animation/tool_scale.png
rename to Assets/Editor/Icons/animation/tool_scale.png
diff --git a/Editor/Icons/animation/tool_select.png b/Assets/Editor/Icons/animation/tool_select.png
similarity index 100%
rename from Editor/Icons/animation/tool_select.png
rename to Assets/Editor/Icons/animation/tool_select.png
diff --git a/Editor/Icons/animation/undo.png b/Assets/Editor/Icons/animation/undo.png
similarity index 100%
rename from Editor/Icons/animation/undo.png
rename to Assets/Editor/Icons/animation/undo.png
diff --git a/Editor/Icons/checkmark_checked.png b/Assets/Editor/Icons/checkmark_checked.png
similarity index 100%
rename from Editor/Icons/checkmark_checked.png
rename to Assets/Editor/Icons/checkmark_checked.png
diff --git a/Editor/Icons/checkmark_checked_hover.png b/Assets/Editor/Icons/checkmark_checked_hover.png
similarity index 100%
rename from Editor/Icons/checkmark_checked_hover.png
rename to Assets/Editor/Icons/checkmark_checked_hover.png
diff --git a/Editor/Icons/checkmark_unchecked_hover.png b/Assets/Editor/Icons/checkmark_unchecked_hover.png
similarity index 100%
rename from Editor/Icons/checkmark_unchecked_hover.png
rename to Assets/Editor/Icons/checkmark_unchecked_hover.png
diff --git a/Editor/Icons/close.png b/Assets/Editor/Icons/close.png
similarity index 100%
rename from Editor/Icons/close.png
rename to Assets/Editor/Icons/close.png
diff --git a/Editor/Icons/float.png b/Assets/Editor/Icons/float.png
similarity index 100%
rename from Editor/Icons/float.png
rename to Assets/Editor/Icons/float.png
diff --git a/Editor/Icons/lc_camera.png b/Assets/Editor/Icons/lc_camera.png
similarity index 100%
rename from Editor/Icons/lc_camera.png
rename to Assets/Editor/Icons/lc_camera.png
diff --git a/Editor/Icons/lc_exportandlaunch.png b/Assets/Editor/Icons/lc_exportandlaunch.png
similarity index 100%
rename from Editor/Icons/lc_exportandlaunch.png
rename to Assets/Editor/Icons/lc_exportandlaunch.png
diff --git a/Editor/Icons/lc_pc.png b/Assets/Editor/Icons/lc_pc.png
similarity index 100%
rename from Editor/Icons/lc_pc.png
rename to Assets/Editor/Icons/lc_pc.png
diff --git a/Editor/Icons/lc_power.png b/Assets/Editor/Icons/lc_power.png
similarity index 100%
rename from Editor/Icons/lc_power.png
rename to Assets/Editor/Icons/lc_power.png
diff --git a/Editor/Icons/lc_sshot.png b/Assets/Editor/Icons/lc_sshot.png
similarity index 100%
rename from Editor/Icons/lc_sshot.png
rename to Assets/Editor/Icons/lc_sshot.png
diff --git a/Editor/Icons/lc_sync.png b/Assets/Editor/Icons/lc_sync.png
similarity index 100%
rename from Editor/Icons/lc_sync.png
rename to Assets/Editor/Icons/lc_sync.png
diff --git a/Editor/Icons/reset.png b/Assets/Editor/Icons/reset.png
similarity index 100%
rename from Editor/Icons/reset.png
rename to Assets/Editor/Icons/reset.png
diff --git a/Editor/Icons/split.png b/Assets/Editor/Icons/split.png
similarity index 100%
rename from Editor/Icons/split.png
rename to Assets/Editor/Icons/split.png
diff --git a/Editor/LambdaFunctions/LwALambdaFunction.js b/Assets/Editor/LambdaFunctions/LwALambdaFunction.js
similarity index 100%
rename from Editor/LambdaFunctions/LwALambdaFunction.js
rename to Assets/Editor/LambdaFunctions/LwALambdaFunction.js
diff --git a/Editor/LambdaFunctions/LwFacebookLambdaFunction.js b/Assets/Editor/LambdaFunctions/LwFacebookLambdaFunction.js
similarity index 100%
rename from Editor/LambdaFunctions/LwFacebookLambdaFunction.js
rename to Assets/Editor/LambdaFunctions/LwFacebookLambdaFunction.js
diff --git a/Editor/LambdaFunctions/LwGenericOpenIdConnectLambdaFunction.js b/Assets/Editor/LambdaFunctions/LwGenericOpenIdConnectLambdaFunction.js
similarity index 100%
rename from Editor/LambdaFunctions/LwGenericOpenIdConnectLambdaFunction.js
rename to Assets/Editor/LambdaFunctions/LwGenericOpenIdConnectLambdaFunction.js
diff --git a/Editor/LambdaFunctions/LwGoogleLambdaFunction.js b/Assets/Editor/LambdaFunctions/LwGoogleLambdaFunction.js
similarity index 100%
rename from Editor/LambdaFunctions/LwGoogleLambdaFunction.js
rename to Assets/Editor/LambdaFunctions/LwGoogleLambdaFunction.js
diff --git a/Editor/LevelTemplates.xml b/Assets/Editor/LevelTemplates.xml
similarity index 100%
rename from Editor/LevelTemplates.xml
rename to Assets/Editor/LevelTemplates.xml
diff --git a/Editor/MapScreenshotSettings.xml b/Assets/Editor/MapScreenshotSettings.xml
similarity index 100%
rename from Editor/MapScreenshotSettings.xml
rename to Assets/Editor/MapScreenshotSettings.xml
diff --git a/Editor/Materials/ShaderList.xml b/Assets/Editor/Materials/ShaderList.xml
similarity index 100%
rename from Editor/Materials/ShaderList.xml
rename to Assets/Editor/Materials/ShaderList.xml
diff --git a/Editor/Materials/Stripes.tif b/Assets/Editor/Materials/Stripes.tif
similarity index 100%
rename from Editor/Materials/Stripes.tif
rename to Assets/Editor/Materials/Stripes.tif
diff --git a/Editor/Materials/Stripes.tif.exportsettings b/Assets/Editor/Materials/Stripes.tif.exportsettings
similarity index 100%
rename from Editor/Materials/Stripes.tif.exportsettings
rename to Assets/Editor/Materials/Stripes.tif.exportsettings
diff --git a/Editor/Materials/areasolid.dds b/Assets/Editor/Materials/areasolid.dds
similarity index 100%
rename from Editor/Materials/areasolid.dds
rename to Assets/Editor/Materials/areasolid.dds
diff --git a/Editor/Materials/areasolid.mtl b/Assets/Editor/Materials/areasolid.mtl
similarity index 100%
rename from Editor/Materials/areasolid.mtl
rename to Assets/Editor/Materials/areasolid.mtl
diff --git a/Editor/Materials/crydesigner_selection.mtl b/Assets/Editor/Materials/crydesigner_selection.mtl
similarity index 100%
rename from Editor/Materials/crydesigner_selection.mtl
rename to Assets/Editor/Materials/crydesigner_selection.mtl
diff --git a/Editor/Materials/default_rope.mtl b/Assets/Editor/Materials/default_rope.mtl
similarity index 100%
rename from Editor/Materials/default_rope.mtl
rename to Assets/Editor/Materials/default_rope.mtl
diff --git a/Assets/Editor/Materials/lodgen_template.mtl b/Assets/Editor/Materials/lodgen_template.mtl
new file mode 100644
index 0000000000..761eff9154
--- /dev/null
+++ b/Assets/Editor/Materials/lodgen_template.mtl
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/Editor/Materials/refpicture.mtl b/Assets/Editor/Materials/refpicture.mtl
similarity index 100%
rename from Editor/Materials/refpicture.mtl
rename to Assets/Editor/Materials/refpicture.mtl
diff --git a/Editor/Materials/voxel_editor.mtl b/Assets/Editor/Materials/voxel_editor.mtl
similarity index 100%
rename from Editor/Materials/voxel_editor.mtl
rename to Assets/Editor/Materials/voxel_editor.mtl
diff --git a/Editor/Materials/voxel_editor.png b/Assets/Editor/Materials/voxel_editor.png
similarity index 100%
rename from Editor/Materials/voxel_editor.png
rename to Assets/Editor/Materials/voxel_editor.png
diff --git a/Editor/Materials/voxel_editor.png.exportsettings b/Assets/Editor/Materials/voxel_editor.png.exportsettings
similarity index 100%
rename from Editor/Materials/voxel_editor.png.exportsettings
rename to Assets/Editor/Materials/voxel_editor.png.exportsettings
diff --git a/Editor/MissionTemplate.lua b/Assets/Editor/MissionTemplate.lua
similarity index 100%
rename from Editor/MissionTemplate.lua
rename to Assets/Editor/MissionTemplate.lua
diff --git a/Editor/ModellingPanel.xml b/Assets/Editor/ModellingPanel.xml
similarity index 100%
rename from Editor/ModellingPanel.xml
rename to Assets/Editor/ModellingPanel.xml
diff --git a/Editor/NewEntityTemplate.ent_template b/Assets/Editor/NewEntityTemplate.ent_template
similarity index 100%
rename from Editor/NewEntityTemplate.ent_template
rename to Assets/Editor/NewEntityTemplate.ent_template
diff --git a/Editor/NewEntityTemplate.lua_template b/Assets/Editor/NewEntityTemplate.lua_template
similarity index 100%
rename from Editor/NewEntityTemplate.lua_template
rename to Assets/Editor/NewEntityTemplate.lua_template
diff --git a/Editor/ObjectIcons/AreaTrigger.bmp b/Assets/Editor/ObjectIcons/AreaTrigger.bmp
similarity index 100%
rename from Editor/ObjectIcons/AreaTrigger.bmp
rename to Assets/Editor/ObjectIcons/AreaTrigger.bmp
diff --git a/Editor/ObjectIcons/AudioAreaAmbience.bmp b/Assets/Editor/ObjectIcons/AudioAreaAmbience.bmp
similarity index 100%
rename from Editor/ObjectIcons/AudioAreaAmbience.bmp
rename to Assets/Editor/ObjectIcons/AudioAreaAmbience.bmp
diff --git a/Editor/ObjectIcons/AudioAreaEntity.bmp b/Assets/Editor/ObjectIcons/AudioAreaEntity.bmp
similarity index 100%
rename from Editor/ObjectIcons/AudioAreaEntity.bmp
rename to Assets/Editor/ObjectIcons/AudioAreaEntity.bmp
diff --git a/Editor/ObjectIcons/AudioAreaRandom.bmp b/Assets/Editor/ObjectIcons/AudioAreaRandom.bmp
similarity index 100%
rename from Editor/ObjectIcons/AudioAreaRandom.bmp
rename to Assets/Editor/ObjectIcons/AudioAreaRandom.bmp
diff --git a/Editor/ObjectIcons/Camera.bmp b/Assets/Editor/ObjectIcons/Camera.bmp
similarity index 100%
rename from Editor/ObjectIcons/Camera.bmp
rename to Assets/Editor/ObjectIcons/Camera.bmp
diff --git a/Editor/ObjectIcons/Checkpoint.bmp b/Assets/Editor/ObjectIcons/Checkpoint.bmp
similarity index 100%
rename from Editor/ObjectIcons/Checkpoint.bmp
rename to Assets/Editor/ObjectIcons/Checkpoint.bmp
diff --git a/Editor/ObjectIcons/ClipVolume.bmp b/Assets/Editor/ObjectIcons/ClipVolume.bmp
similarity index 100%
rename from Editor/ObjectIcons/ClipVolume.bmp
rename to Assets/Editor/ObjectIcons/ClipVolume.bmp
diff --git a/Editor/ObjectIcons/Clock.bmp b/Assets/Editor/ObjectIcons/Clock.bmp
similarity index 100%
rename from Editor/ObjectIcons/Clock.bmp
rename to Assets/Editor/ObjectIcons/Clock.bmp
diff --git a/Editor/ObjectIcons/Clouds.bmp b/Assets/Editor/ObjectIcons/Clouds.bmp
similarity index 100%
rename from Editor/ObjectIcons/Clouds.bmp
rename to Assets/Editor/ObjectIcons/Clouds.bmp
diff --git a/Editor/ObjectIcons/Comment.bmp b/Assets/Editor/ObjectIcons/Comment.bmp
similarity index 100%
rename from Editor/ObjectIcons/Comment.bmp
rename to Assets/Editor/ObjectIcons/Comment.bmp
diff --git a/Editor/ObjectIcons/DeadBody.bmp b/Assets/Editor/ObjectIcons/DeadBody.bmp
similarity index 100%
rename from Editor/ObjectIcons/DeadBody.bmp
rename to Assets/Editor/ObjectIcons/DeadBody.bmp
diff --git a/Editor/ObjectIcons/Decal.bmp b/Assets/Editor/ObjectIcons/Decal.bmp
similarity index 100%
rename from Editor/ObjectIcons/Decal.bmp
rename to Assets/Editor/ObjectIcons/Decal.bmp
diff --git a/Editor/ObjectIcons/Dialog.bmp b/Assets/Editor/ObjectIcons/Dialog.bmp
similarity index 100%
rename from Editor/ObjectIcons/Dialog.bmp
rename to Assets/Editor/ObjectIcons/Dialog.bmp
diff --git a/Editor/ObjectIcons/Flash.bmp b/Assets/Editor/ObjectIcons/Flash.bmp
similarity index 100%
rename from Editor/ObjectIcons/Flash.bmp
rename to Assets/Editor/ObjectIcons/Flash.bmp
diff --git a/Editor/ObjectIcons/Fog.bmp b/Assets/Editor/ObjectIcons/Fog.bmp
similarity index 100%
rename from Editor/ObjectIcons/Fog.bmp
rename to Assets/Editor/ObjectIcons/Fog.bmp
diff --git a/Editor/ObjectIcons/FogVolume.bmp b/Assets/Editor/ObjectIcons/FogVolume.bmp
similarity index 100%
rename from Editor/ObjectIcons/FogVolume.bmp
rename to Assets/Editor/ObjectIcons/FogVolume.bmp
diff --git a/Editor/ObjectIcons/GravitySphere.bmp b/Assets/Editor/ObjectIcons/GravitySphere.bmp
similarity index 100%
rename from Editor/ObjectIcons/GravitySphere.bmp
rename to Assets/Editor/ObjectIcons/GravitySphere.bmp
diff --git a/Editor/ObjectIcons/Item.bmp b/Assets/Editor/ObjectIcons/Item.bmp
similarity index 100%
rename from Editor/ObjectIcons/Item.bmp
rename to Assets/Editor/ObjectIcons/Item.bmp
diff --git a/Editor/ObjectIcons/Ladder.bmp b/Assets/Editor/ObjectIcons/Ladder.bmp
similarity index 100%
rename from Editor/ObjectIcons/Ladder.bmp
rename to Assets/Editor/ObjectIcons/Ladder.bmp
diff --git a/Editor/ObjectIcons/Light.bmp b/Assets/Editor/ObjectIcons/Light.bmp
similarity index 100%
rename from Editor/ObjectIcons/Light.bmp
rename to Assets/Editor/ObjectIcons/Light.bmp
diff --git a/Editor/ObjectIcons/LightPropagationVolume.bmp b/Assets/Editor/ObjectIcons/LightPropagationVolume.bmp
similarity index 100%
rename from Editor/ObjectIcons/LightPropagationVolume.bmp
rename to Assets/Editor/ObjectIcons/LightPropagationVolume.bmp
diff --git a/Editor/ObjectIcons/Lightning.bmp b/Assets/Editor/ObjectIcons/Lightning.bmp
similarity index 100%
rename from Editor/ObjectIcons/Lightning.bmp
rename to Assets/Editor/ObjectIcons/Lightning.bmp
diff --git a/Editor/ObjectIcons/Magnet.bmp b/Assets/Editor/ObjectIcons/Magnet.bmp
similarity index 100%
rename from Editor/ObjectIcons/Magnet.bmp
rename to Assets/Editor/ObjectIcons/Magnet.bmp
diff --git a/Editor/ObjectIcons/MultiTrigger.bmp b/Assets/Editor/ObjectIcons/MultiTrigger.bmp
similarity index 100%
rename from Editor/ObjectIcons/MultiTrigger.bmp
rename to Assets/Editor/ObjectIcons/MultiTrigger.bmp
diff --git a/Editor/ObjectIcons/ODD.bmp b/Assets/Editor/ObjectIcons/ODD.bmp
similarity index 100%
rename from Editor/ObjectIcons/ODD.bmp
rename to Assets/Editor/ObjectIcons/ODD.bmp
diff --git a/Editor/ObjectIcons/Particles.bmp b/Assets/Editor/ObjectIcons/Particles.bmp
similarity index 100%
rename from Editor/ObjectIcons/Particles.bmp
rename to Assets/Editor/ObjectIcons/Particles.bmp
diff --git a/Editor/ObjectIcons/PrecacheCamera.bmp b/Assets/Editor/ObjectIcons/PrecacheCamera.bmp
similarity index 100%
rename from Editor/ObjectIcons/PrecacheCamera.bmp
rename to Assets/Editor/ObjectIcons/PrecacheCamera.bmp
diff --git a/Editor/ObjectIcons/Prefab.bmp b/Assets/Editor/ObjectIcons/Prefab.bmp
similarity index 100%
rename from Editor/ObjectIcons/Prefab.bmp
rename to Assets/Editor/ObjectIcons/Prefab.bmp
diff --git a/Editor/ObjectIcons/Prompt.bmp b/Assets/Editor/ObjectIcons/Prompt.bmp
similarity index 100%
rename from Editor/ObjectIcons/Prompt.bmp
rename to Assets/Editor/ObjectIcons/Prompt.bmp
diff --git a/Editor/ObjectIcons/SavePoint.bmp b/Assets/Editor/ObjectIcons/SavePoint.bmp
similarity index 100%
rename from Editor/ObjectIcons/SavePoint.bmp
rename to Assets/Editor/ObjectIcons/SavePoint.bmp
diff --git a/Editor/ObjectIcons/Seed.bmp b/Assets/Editor/ObjectIcons/Seed.bmp
similarity index 100%
rename from Editor/ObjectIcons/Seed.bmp
rename to Assets/Editor/ObjectIcons/Seed.bmp
diff --git a/Editor/ObjectIcons/Sound.bmp b/Assets/Editor/ObjectIcons/Sound.bmp
similarity index 100%
rename from Editor/ObjectIcons/Sound.bmp
rename to Assets/Editor/ObjectIcons/Sound.bmp
diff --git a/Editor/ObjectIcons/SpawnPoint.bmp b/Assets/Editor/ObjectIcons/SpawnPoint.bmp
similarity index 100%
rename from Editor/ObjectIcons/SpawnPoint.bmp
rename to Assets/Editor/ObjectIcons/SpawnPoint.bmp
diff --git a/Editor/ObjectIcons/T.bmp b/Assets/Editor/ObjectIcons/T.bmp
similarity index 100%
rename from Editor/ObjectIcons/T.bmp
rename to Assets/Editor/ObjectIcons/T.bmp
diff --git a/Editor/ObjectIcons/TagPoint.bmp b/Assets/Editor/ObjectIcons/TagPoint.bmp
similarity index 100%
rename from Editor/ObjectIcons/TagPoint.bmp
rename to Assets/Editor/ObjectIcons/TagPoint.bmp
diff --git a/Editor/ObjectIcons/Trigger.bmp b/Assets/Editor/ObjectIcons/Trigger.bmp
similarity index 100%
rename from Editor/ObjectIcons/Trigger.bmp
rename to Assets/Editor/ObjectIcons/Trigger.bmp
diff --git a/Editor/ObjectIcons/UiCanvasRefEntity.bmp b/Assets/Editor/ObjectIcons/UiCanvasRefEntity.bmp
similarity index 100%
rename from Editor/ObjectIcons/UiCanvasRefEntity.bmp
rename to Assets/Editor/ObjectIcons/UiCanvasRefEntity.bmp
diff --git a/Editor/ObjectIcons/User.bmp b/Assets/Editor/ObjectIcons/User.bmp
similarity index 100%
rename from Editor/ObjectIcons/User.bmp
rename to Assets/Editor/ObjectIcons/User.bmp
diff --git a/Editor/ObjectIcons/VVVArea.bmp b/Assets/Editor/ObjectIcons/VVVArea.bmp
similarity index 100%
rename from Editor/ObjectIcons/VVVArea.bmp
rename to Assets/Editor/ObjectIcons/VVVArea.bmp
diff --git a/Editor/ObjectIcons/W.bmp b/Assets/Editor/ObjectIcons/W.bmp
similarity index 100%
rename from Editor/ObjectIcons/W.bmp
rename to Assets/Editor/ObjectIcons/W.bmp
diff --git a/Editor/ObjectIcons/Water.bmp b/Assets/Editor/ObjectIcons/Water.bmp
similarity index 100%
rename from Editor/ObjectIcons/Water.bmp
rename to Assets/Editor/ObjectIcons/Water.bmp
diff --git a/Editor/ObjectIcons/animobject.bmp b/Assets/Editor/ObjectIcons/animobject.bmp
similarity index 100%
rename from Editor/ObjectIcons/animobject.bmp
rename to Assets/Editor/ObjectIcons/animobject.bmp
diff --git a/Editor/ObjectIcons/bird.bmp b/Assets/Editor/ObjectIcons/bird.bmp
similarity index 100%
rename from Editor/ObjectIcons/bird.bmp
rename to Assets/Editor/ObjectIcons/bird.bmp
diff --git a/Editor/ObjectIcons/bug.bmp b/Assets/Editor/ObjectIcons/bug.bmp
similarity index 100%
rename from Editor/ObjectIcons/bug.bmp
rename to Assets/Editor/ObjectIcons/bug.bmp
diff --git a/Editor/ObjectIcons/character.bmp b/Assets/Editor/ObjectIcons/character.bmp
similarity index 100%
rename from Editor/ObjectIcons/character.bmp
rename to Assets/Editor/ObjectIcons/character.bmp
diff --git a/Editor/ObjectIcons/death.bmp b/Assets/Editor/ObjectIcons/death.bmp
similarity index 100%
rename from Editor/ObjectIcons/death.bmp
rename to Assets/Editor/ObjectIcons/death.bmp
diff --git a/Editor/ObjectIcons/door.bmp b/Assets/Editor/ObjectIcons/door.bmp
similarity index 100%
rename from Editor/ObjectIcons/door.bmp
rename to Assets/Editor/ObjectIcons/door.bmp
diff --git a/Editor/ObjectIcons/elevator.bmp b/Assets/Editor/ObjectIcons/elevator.bmp
similarity index 100%
rename from Editor/ObjectIcons/elevator.bmp
rename to Assets/Editor/ObjectIcons/elevator.bmp
diff --git a/Editor/ObjectIcons/environmentProbe.bmp b/Assets/Editor/ObjectIcons/environmentProbe.bmp
similarity index 100%
rename from Editor/ObjectIcons/environmentProbe.bmp
rename to Assets/Editor/ObjectIcons/environmentProbe.bmp
diff --git a/Editor/ObjectIcons/explosion.bmp b/Assets/Editor/ObjectIcons/explosion.bmp
similarity index 100%
rename from Editor/ObjectIcons/explosion.bmp
rename to Assets/Editor/ObjectIcons/explosion.bmp
diff --git a/Editor/ObjectIcons/fish.bmp b/Assets/Editor/ObjectIcons/fish.bmp
similarity index 100%
rename from Editor/ObjectIcons/fish.bmp
rename to Assets/Editor/ObjectIcons/fish.bmp
diff --git a/Editor/ObjectIcons/forbiddenarea.bmp b/Assets/Editor/ObjectIcons/forbiddenarea.bmp
similarity index 100%
rename from Editor/ObjectIcons/forbiddenarea.bmp
rename to Assets/Editor/ObjectIcons/forbiddenarea.bmp
diff --git a/Editor/ObjectIcons/hazard.bmp b/Assets/Editor/ObjectIcons/hazard.bmp
similarity index 100%
rename from Editor/ObjectIcons/hazard.bmp
rename to Assets/Editor/ObjectIcons/hazard.bmp
diff --git a/Editor/ObjectIcons/health.bmp b/Assets/Editor/ObjectIcons/health.bmp
similarity index 100%
rename from Editor/ObjectIcons/health.bmp
rename to Assets/Editor/ObjectIcons/health.bmp
diff --git a/Editor/ObjectIcons/ledge.bmp b/Assets/Editor/ObjectIcons/ledge.bmp
similarity index 100%
rename from Editor/ObjectIcons/ledge.bmp
rename to Assets/Editor/ObjectIcons/ledge.bmp
diff --git a/Editor/ObjectIcons/mine.bmp b/Assets/Editor/ObjectIcons/mine.bmp
similarity index 100%
rename from Editor/ObjectIcons/mine.bmp
rename to Assets/Editor/ObjectIcons/mine.bmp
diff --git a/Editor/ObjectIcons/physicsobject.bmp b/Assets/Editor/ObjectIcons/physicsobject.bmp
similarity index 100%
rename from Editor/ObjectIcons/physicsobject.bmp
rename to Assets/Editor/ObjectIcons/physicsobject.bmp
diff --git a/Editor/ObjectIcons/prefabbuilding.bmp b/Assets/Editor/ObjectIcons/prefabbuilding.bmp
similarity index 100%
rename from Editor/ObjectIcons/prefabbuilding.bmp
rename to Assets/Editor/ObjectIcons/prefabbuilding.bmp
diff --git a/Editor/ObjectIcons/proceduralbuilding.bmp b/Assets/Editor/ObjectIcons/proceduralbuilding.bmp
similarity index 100%
rename from Editor/ObjectIcons/proceduralbuilding.bmp
rename to Assets/Editor/ObjectIcons/proceduralbuilding.bmp
diff --git a/Editor/ObjectIcons/proceduralobject.bmp b/Assets/Editor/ObjectIcons/proceduralobject.bmp
similarity index 100%
rename from Editor/ObjectIcons/proceduralobject.bmp
rename to Assets/Editor/ObjectIcons/proceduralobject.bmp
diff --git a/Editor/ObjectIcons/proximitytrigger.bmp b/Assets/Editor/ObjectIcons/proximitytrigger.bmp
similarity index 100%
rename from Editor/ObjectIcons/proximitytrigger.bmp
rename to Assets/Editor/ObjectIcons/proximitytrigger.bmp
diff --git a/Editor/ObjectIcons/river.bmp b/Assets/Editor/ObjectIcons/river.bmp
similarity index 100%
rename from Editor/ObjectIcons/river.bmp
rename to Assets/Editor/ObjectIcons/river.bmp
diff --git a/Editor/ObjectIcons/road.bmp b/Assets/Editor/ObjectIcons/road.bmp
similarity index 100%
rename from Editor/ObjectIcons/road.bmp
rename to Assets/Editor/ObjectIcons/road.bmp
diff --git a/Editor/ObjectIcons/rope.bmp b/Assets/Editor/ObjectIcons/rope.bmp
similarity index 100%
rename from Editor/ObjectIcons/rope.bmp
rename to Assets/Editor/ObjectIcons/rope.bmp
diff --git a/Editor/ObjectIcons/sequence.bmp b/Assets/Editor/ObjectIcons/sequence.bmp
similarity index 100%
rename from Editor/ObjectIcons/sequence.bmp
rename to Assets/Editor/ObjectIcons/sequence.bmp
diff --git a/Editor/ObjectIcons/shake.bmp b/Assets/Editor/ObjectIcons/shake.bmp
similarity index 100%
rename from Editor/ObjectIcons/shake.bmp
rename to Assets/Editor/ObjectIcons/shake.bmp
diff --git a/Editor/ObjectIcons/smartobject.bmp b/Assets/Editor/ObjectIcons/smartobject.bmp
similarity index 100%
rename from Editor/ObjectIcons/smartobject.bmp
rename to Assets/Editor/ObjectIcons/smartobject.bmp
diff --git a/Editor/ObjectIcons/spawngroup.bmp b/Assets/Editor/ObjectIcons/spawngroup.bmp
similarity index 100%
rename from Editor/ObjectIcons/spawngroup.bmp
rename to Assets/Editor/ObjectIcons/spawngroup.bmp
diff --git a/Editor/ObjectIcons/spectator.bmp b/Assets/Editor/ObjectIcons/spectator.bmp
similarity index 100%
rename from Editor/ObjectIcons/spectator.bmp
rename to Assets/Editor/ObjectIcons/spectator.bmp
diff --git a/Editor/ObjectIcons/switch.bmp b/Assets/Editor/ObjectIcons/switch.bmp
similarity index 100%
rename from Editor/ObjectIcons/switch.bmp
rename to Assets/Editor/ObjectIcons/switch.bmp
diff --git a/Editor/ObjectIcons/territory.bmp b/Assets/Editor/ObjectIcons/territory.bmp
similarity index 100%
rename from Editor/ObjectIcons/territory.bmp
rename to Assets/Editor/ObjectIcons/territory.bmp
diff --git a/Editor/ObjectIcons/tornado.bmp b/Assets/Editor/ObjectIcons/tornado.bmp
similarity index 100%
rename from Editor/ObjectIcons/tornado.bmp
rename to Assets/Editor/ObjectIcons/tornado.bmp
diff --git a/Editor/ObjectIcons/vehicle.bmp b/Assets/Editor/ObjectIcons/vehicle.bmp
similarity index 100%
rename from Editor/ObjectIcons/vehicle.bmp
rename to Assets/Editor/ObjectIcons/vehicle.bmp
diff --git a/Editor/ObjectIcons/voxel.bmp b/Assets/Editor/ObjectIcons/voxel.bmp
similarity index 100%
rename from Editor/ObjectIcons/voxel.bmp
rename to Assets/Editor/ObjectIcons/voxel.bmp
diff --git a/Editor/ObjectIcons/wave.bmp b/Assets/Editor/ObjectIcons/wave.bmp
similarity index 100%
rename from Editor/ObjectIcons/wave.bmp
rename to Assets/Editor/ObjectIcons/wave.bmp
diff --git a/Editor/ObjectTemplates.xml b/Assets/Editor/ObjectTemplates.xml
similarity index 100%
rename from Editor/ObjectTemplates.xml
rename to Assets/Editor/ObjectTemplates.xml
diff --git a/Editor/Objects/Arrow.cgf b/Assets/Editor/Objects/Arrow.cgf
similarity index 100%
rename from Editor/Objects/Arrow.cgf
rename to Assets/Editor/Objects/Arrow.cgf
diff --git a/Editor/Objects/Axis.cgf b/Assets/Editor/Objects/Axis.cgf
similarity index 100%
rename from Editor/Objects/Axis.cgf
rename to Assets/Editor/Objects/Axis.cgf
diff --git a/Editor/Objects/Clock.cgf b/Assets/Editor/Objects/Clock.cgf
similarity index 100%
rename from Editor/Objects/Clock.cgf
rename to Assets/Editor/Objects/Clock.cgf
diff --git a/Editor/Objects/Comment.cgf b/Assets/Editor/Objects/Comment.cgf
similarity index 100%
rename from Editor/Objects/Comment.cgf
rename to Assets/Editor/Objects/Comment.cgf
diff --git a/Editor/Objects/CryDesigner_camera.grp b/Assets/Editor/Objects/CryDesigner_camera.grp
similarity index 100%
rename from Editor/Objects/CryDesigner_camera.grp
rename to Assets/Editor/Objects/CryDesigner_camera.grp
diff --git a/Editor/Objects/M.cgf b/Assets/Editor/Objects/M.cgf
similarity index 100%
rename from Editor/Objects/M.cgf
rename to Assets/Editor/Objects/M.cgf
diff --git a/Editor/Objects/MtlBox.cgf b/Assets/Editor/Objects/MtlBox.cgf
similarity index 100%
rename from Editor/Objects/MtlBox.cgf
rename to Assets/Editor/Objects/MtlBox.cgf
diff --git a/Editor/Objects/MtlObjects.max b/Assets/Editor/Objects/MtlObjects.max
similarity index 100%
rename from Editor/Objects/MtlObjects.max
rename to Assets/Editor/Objects/MtlObjects.max
diff --git a/Editor/Objects/MtlPlane.cgf b/Assets/Editor/Objects/MtlPlane.cgf
similarity index 100%
rename from Editor/Objects/MtlPlane.cgf
rename to Assets/Editor/Objects/MtlPlane.cgf
diff --git a/Editor/Objects/MtlSphere.cgf b/Assets/Editor/Objects/MtlSphere.cgf
similarity index 100%
rename from Editor/Objects/MtlSphere.cgf
rename to Assets/Editor/Objects/MtlSphere.cgf
diff --git a/Editor/Objects/MtlSwatch.cgf b/Assets/Editor/Objects/MtlSwatch.cgf
similarity index 100%
rename from Editor/Objects/MtlSwatch.cgf
rename to Assets/Editor/Objects/MtlSwatch.cgf
diff --git a/Editor/Objects/MtlTeapot.cgf b/Assets/Editor/Objects/MtlTeapot.cgf
similarity index 100%
rename from Editor/Objects/MtlTeapot.cgf
rename to Assets/Editor/Objects/MtlTeapot.cgf
diff --git a/Editor/Objects/MusicTheme.cgf b/Assets/Editor/Objects/MusicTheme.cgf
similarity index 100%
rename from Editor/Objects/MusicTheme.cgf
rename to Assets/Editor/Objects/MusicTheme.cgf
diff --git a/Editor/Objects/Particles.cgf b/Assets/Editor/Objects/Particles.cgf
similarity index 100%
rename from Editor/Objects/Particles.cgf
rename to Assets/Editor/Objects/Particles.cgf
diff --git a/Editor/Objects/Pyramid.cgf b/Assets/Editor/Objects/Pyramid.cgf
similarity index 100%
rename from Editor/Objects/Pyramid.cgf
rename to Assets/Editor/Objects/Pyramid.cgf
diff --git a/Editor/Objects/S.cgf b/Assets/Editor/Objects/S.cgf
similarity index 100%
rename from Editor/Objects/S.cgf
rename to Assets/Editor/Objects/S.cgf
diff --git a/Editor/Objects/Sound.cgf b/Assets/Editor/Objects/Sound.cgf
similarity index 100%
rename from Editor/Objects/Sound.cgf
rename to Assets/Editor/Objects/Sound.cgf
diff --git a/Editor/Objects/Sphere.cgf b/Assets/Editor/Objects/Sphere.cgf
similarity index 100%
rename from Editor/Objects/Sphere.cgf
rename to Assets/Editor/Objects/Sphere.cgf
diff --git a/Editor/Objects/T.cgf b/Assets/Editor/Objects/T.cgf
similarity index 100%
rename from Editor/Objects/T.cgf
rename to Assets/Editor/Objects/T.cgf
diff --git a/Editor/Objects/Vis.cgf b/Assets/Editor/Objects/Vis.cgf
similarity index 100%
rename from Editor/Objects/Vis.cgf
rename to Assets/Editor/Objects/Vis.cgf
diff --git a/Editor/Objects/W.cgf b/Assets/Editor/Objects/W.cgf
similarity index 100%
rename from Editor/Objects/W.cgf
rename to Assets/Editor/Objects/W.cgf
diff --git a/Editor/Objects/ai_hide_point.cgf b/Assets/Editor/Objects/ai_hide_point.cgf
similarity index 100%
rename from Editor/Objects/ai_hide_point.cgf
rename to Assets/Editor/Objects/ai_hide_point.cgf
diff --git a/Editor/Objects/anchor.cgf b/Assets/Editor/Objects/anchor.cgf
similarity index 100%
rename from Editor/Objects/anchor.cgf
rename to Assets/Editor/Objects/anchor.cgf
diff --git a/Editor/Objects/assaultspawn.cgf b/Assets/Editor/Objects/assaultspawn.cgf
similarity index 100%
rename from Editor/Objects/assaultspawn.cgf
rename to Assets/Editor/Objects/assaultspawn.cgf
diff --git a/Editor/Objects/border.cgf b/Assets/Editor/Objects/border.cgf
similarity index 100%
rename from Editor/Objects/border.cgf
rename to Assets/Editor/Objects/border.cgf
diff --git a/Editor/Objects/box.cgf b/Assets/Editor/Objects/box.cgf
similarity index 100%
rename from Editor/Objects/box.cgf
rename to Assets/Editor/Objects/box.cgf
diff --git a/Editor/Objects/box_nodraw.cgf b/Assets/Editor/Objects/box_nodraw.cgf
similarity index 100%
rename from Editor/Objects/box_nodraw.cgf
rename to Assets/Editor/Objects/box_nodraw.cgf
diff --git a/Editor/Objects/buyzone.cgf b/Assets/Editor/Objects/buyzone.cgf
similarity index 100%
rename from Editor/Objects/buyzone.cgf
rename to Assets/Editor/Objects/buyzone.cgf
diff --git a/Editor/Objects/c2_car_jump_cross.cgf b/Assets/Editor/Objects/c2_car_jump_cross.cgf
similarity index 100%
rename from Editor/Objects/c2_car_jump_cross.cgf
rename to Assets/Editor/Objects/c2_car_jump_cross.cgf
diff --git a/Editor/Objects/c2_crawl_h150.cgf b/Assets/Editor/Objects/c2_crawl_h150.cgf
similarity index 100%
rename from Editor/Objects/c2_crawl_h150.cgf
rename to Assets/Editor/Objects/c2_crawl_h150.cgf
diff --git a/Editor/Objects/c2_duck_v125.cgf b/Assets/Editor/Objects/c2_duck_v125.cgf
similarity index 100%
rename from Editor/Objects/c2_duck_v125.cgf
rename to Assets/Editor/Objects/c2_duck_v125.cgf
diff --git a/Editor/Objects/c2_jump_h1200.cgf b/Assets/Editor/Objects/c2_jump_h1200.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_h1200.cgf
rename to Assets/Editor/Objects/c2_jump_h1200.cgf
diff --git a/Editor/Objects/c2_jump_h500.cgf b/Assets/Editor/Objects/c2_jump_h500.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_h500.cgf
rename to Assets/Editor/Objects/c2_jump_h500.cgf
diff --git a/Editor/Objects/c2_jump_h900.cgf b/Assets/Editor/Objects/c2_jump_h900.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_h900.cgf
rename to Assets/Editor/Objects/c2_jump_h900.cgf
diff --git a/Editor/Objects/c2_jump_h900_v150.cgf b/Assets/Editor/Objects/c2_jump_h900_v150.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_h900_v150.cgf
rename to Assets/Editor/Objects/c2_jump_h900_v150.cgf
diff --git a/Editor/Objects/c2_jump_v150.cgf b/Assets/Editor/Objects/c2_jump_v150.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_v150.cgf
rename to Assets/Editor/Objects/c2_jump_v150.cgf
diff --git a/Editor/Objects/c2_jump_v300.cgf b/Assets/Editor/Objects/c2_jump_v300.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_v300.cgf
rename to Assets/Editor/Objects/c2_jump_v300.cgf
diff --git a/Editor/Objects/c2_jump_v450.cgf b/Assets/Editor/Objects/c2_jump_v450.cgf
similarity index 100%
rename from Editor/Objects/c2_jump_v450.cgf
rename to Assets/Editor/Objects/c2_jump_v450.cgf
diff --git a/Editor/Objects/c2_jumpdown_v900.cgf b/Assets/Editor/Objects/c2_jumpdown_v900.cgf
similarity index 100%
rename from Editor/Objects/c2_jumpdown_v900.cgf
rename to Assets/Editor/Objects/c2_jumpdown_v900.cgf
diff --git a/Editor/Objects/c2_jumpwindow_combo_v550.cgf b/Assets/Editor/Objects/c2_jumpwindow_combo_v550.cgf
similarity index 100%
rename from Editor/Objects/c2_jumpwindow_combo_v550.cgf
rename to Assets/Editor/Objects/c2_jumpwindow_combo_v550.cgf
diff --git a/Editor/Objects/c2_jumpwindow_v550.cgf b/Assets/Editor/Objects/c2_jumpwindow_v550.cgf
similarity index 100%
rename from Editor/Objects/c2_jumpwindow_v550.cgf
rename to Assets/Editor/Objects/c2_jumpwindow_v550.cgf
diff --git a/Editor/Objects/c2_jumpzigzag_v300_v750_lft.cgf b/Assets/Editor/Objects/c2_jumpzigzag_v300_v750_lft.cgf
similarity index 100%
rename from Editor/Objects/c2_jumpzigzag_v300_v750_lft.cgf
rename to Assets/Editor/Objects/c2_jumpzigzag_v300_v750_lft.cgf
diff --git a/Editor/Objects/c2_jumpzigzag_v300_v750_rgt.cgf b/Assets/Editor/Objects/c2_jumpzigzag_v300_v750_rgt.cgf
similarity index 100%
rename from Editor/Objects/c2_jumpzigzag_v300_v750_rgt.cgf
rename to Assets/Editor/Objects/c2_jumpzigzag_v300_v750_rgt.cgf
diff --git a/Editor/Objects/c2_slide_h400.cgf b/Assets/Editor/Objects/c2_slide_h400.cgf
similarity index 100%
rename from Editor/Objects/c2_slide_h400.cgf
rename to Assets/Editor/Objects/c2_slide_h400.cgf
diff --git a/Editor/Objects/c2_slidedown_v1800.cgf b/Assets/Editor/Objects/c2_slidedown_v1800.cgf
similarity index 100%
rename from Editor/Objects/c2_slidedown_v1800.cgf
rename to Assets/Editor/Objects/c2_slidedown_v1800.cgf
diff --git a/Editor/Objects/c2_vault_v125.cgf b/Assets/Editor/Objects/c2_vault_v125.cgf
similarity index 100%
rename from Editor/Objects/c2_vault_v125.cgf
rename to Assets/Editor/Objects/c2_vault_v125.cgf
diff --git a/Editor/Objects/c2_vault_v800.cgf b/Assets/Editor/Objects/c2_vault_v800.cgf
similarity index 100%
rename from Editor/Objects/c2_vault_v800.cgf
rename to Assets/Editor/Objects/c2_vault_v800.cgf
diff --git a/Editor/Objects/c2_wall_jump_h900_v450.cgf b/Assets/Editor/Objects/c2_wall_jump_h900_v450.cgf
similarity index 100%
rename from Editor/Objects/c2_wall_jump_h900_v450.cgf
rename to Assets/Editor/Objects/c2_wall_jump_h900_v450.cgf
diff --git a/Editor/Objects/c2_wall_run_h900_v300.cgf b/Assets/Editor/Objects/c2_wall_run_h900_v300.cgf
similarity index 100%
rename from Editor/Objects/c2_wall_run_h900_v300.cgf
rename to Assets/Editor/Objects/c2_wall_run_h900_v300.cgf
diff --git a/Editor/Objects/c3_dive_h900.cgf b/Assets/Editor/Objects/c3_dive_h900.cgf
similarity index 100%
rename from Editor/Objects/c3_dive_h900.cgf
rename to Assets/Editor/Objects/c3_dive_h900.cgf
diff --git a/Editor/Objects/c3_doorbreak_human.cgf b/Assets/Editor/Objects/c3_doorbreak_human.cgf
similarity index 100%
rename from Editor/Objects/c3_doorbreak_human.cgf
rename to Assets/Editor/Objects/c3_doorbreak_human.cgf
diff --git a/Editor/Objects/c3_doorframe.cgf b/Assets/Editor/Objects/c3_doorframe.cgf
similarity index 100%
rename from Editor/Objects/c3_doorframe.cgf
rename to Assets/Editor/Objects/c3_doorframe.cgf
diff --git a/Editor/Objects/c3_jump_v150_large.cgf b/Assets/Editor/Objects/c3_jump_v150_large.cgf
similarity index 100%
rename from Editor/Objects/c3_jump_v150_large.cgf
rename to Assets/Editor/Objects/c3_jump_v150_large.cgf
diff --git a/Editor/Objects/c3_jump_v300_large.cgf b/Assets/Editor/Objects/c3_jump_v300_large.cgf
similarity index 100%
rename from Editor/Objects/c3_jump_v300_large.cgf
rename to Assets/Editor/Objects/c3_jump_v300_large.cgf
diff --git a/Editor/Objects/c3_jump_v450_large.cgf b/Assets/Editor/Objects/c3_jump_v450_large.cgf
similarity index 100%
rename from Editor/Objects/c3_jump_v450_large.cgf
rename to Assets/Editor/Objects/c3_jump_v450_large.cgf
diff --git a/Editor/Objects/c3_repeldown_v2600.cgf b/Assets/Editor/Objects/c3_repeldown_v2600.cgf
similarity index 100%
rename from Editor/Objects/c3_repeldown_v2600.cgf
rename to Assets/Editor/Objects/c3_repeldown_v2600.cgf
diff --git a/Editor/Objects/c3_repeldown_v900.cgf b/Assets/Editor/Objects/c3_repeldown_v900.cgf
similarity index 100%
rename from Editor/Objects/c3_repeldown_v900.cgf
rename to Assets/Editor/Objects/c3_repeldown_v900.cgf
diff --git a/Editor/Objects/c3_so_cornerPopOutSearchLeft.cgf b/Assets/Editor/Objects/c3_so_cornerPopOutSearchLeft.cgf
similarity index 100%
rename from Editor/Objects/c3_so_cornerPopOutSearchLeft.cgf
rename to Assets/Editor/Objects/c3_so_cornerPopOutSearchLeft.cgf
diff --git a/Editor/Objects/c3_so_cornerPopOutSearchRight.cgf b/Assets/Editor/Objects/c3_so_cornerPopOutSearchRight.cgf
similarity index 100%
rename from Editor/Objects/c3_so_cornerPopOutSearchRight.cgf
rename to Assets/Editor/Objects/c3_so_cornerPopOutSearchRight.cgf
diff --git a/Editor/Objects/c3_vault_v125_large.cgf b/Assets/Editor/Objects/c3_vault_v125_large.cgf
similarity index 100%
rename from Editor/Objects/c3_vault_v125_large.cgf
rename to Assets/Editor/Objects/c3_vault_v125_large.cgf
diff --git a/Editor/Objects/c3_zipline_7500_15.cgf b/Assets/Editor/Objects/c3_zipline_7500_15.cgf
similarity index 100%
rename from Editor/Objects/c3_zipline_7500_15.cgf
rename to Assets/Editor/Objects/c3_zipline_7500_15.cgf
diff --git a/Editor/Objects/collision_dummy_100x50.cgf b/Assets/Editor/Objects/collision_dummy_100x50.cgf
similarity index 100%
rename from Editor/Objects/collision_dummy_100x50.cgf
rename to Assets/Editor/Objects/collision_dummy_100x50.cgf
diff --git a/Editor/Objects/collision_dummy_25x50.cgf b/Assets/Editor/Objects/collision_dummy_25x50.cgf
similarity index 100%
rename from Editor/Objects/collision_dummy_25x50.cgf
rename to Assets/Editor/Objects/collision_dummy_25x50.cgf
diff --git a/Editor/Objects/collision_dummy_50x50.cgf b/Assets/Editor/Objects/collision_dummy_50x50.cgf
similarity index 100%
rename from Editor/Objects/collision_dummy_50x50.cgf
rename to Assets/Editor/Objects/collision_dummy_50x50.cgf
diff --git a/Editor/Objects/corner270.cgf b/Assets/Editor/Objects/corner270.cgf
similarity index 100%
rename from Editor/Objects/corner270.cgf
rename to Assets/Editor/Objects/corner270.cgf
diff --git a/Editor/Objects/editor_helpers.max b/Assets/Editor/Objects/editor_helpers.max
similarity index 100%
rename from Editor/Objects/editor_helpers.max
rename to Assets/Editor/Objects/editor_helpers.max
diff --git a/Editor/Objects/energypoint.cgf b/Assets/Editor/Objects/energypoint.cgf
similarity index 100%
rename from Editor/Objects/energypoint.cgf
rename to Assets/Editor/Objects/energypoint.cgf
diff --git a/Editor/Objects/entrypoint.cgf b/Assets/Editor/Objects/entrypoint.cgf
similarity index 100%
rename from Editor/Objects/entrypoint.cgf
rename to Assets/Editor/Objects/entrypoint.cgf
diff --git a/Editor/Objects/envcube.cgf b/Assets/Editor/Objects/envcube.cgf
similarity index 100%
rename from Editor/Objects/envcube.cgf
rename to Assets/Editor/Objects/envcube.cgf
diff --git a/Editor/Objects/envcube.max b/Assets/Editor/Objects/envcube.max
similarity index 100%
rename from Editor/Objects/envcube.max
rename to Assets/Editor/Objects/envcube.max
diff --git a/Editor/Objects/envcube.mtl b/Assets/Editor/Objects/envcube.mtl
similarity index 100%
rename from Editor/Objects/envcube.mtl
rename to Assets/Editor/Objects/envcube.mtl
diff --git a/Editor/Objects/factory.cgf b/Assets/Editor/Objects/factory.cgf
similarity index 100%
rename from Editor/Objects/factory.cgf
rename to Assets/Editor/Objects/factory.cgf
diff --git a/Editor/Objects/flock.cgf b/Assets/Editor/Objects/flock.cgf
similarity index 100%
rename from Editor/Objects/flock.cgf
rename to Assets/Editor/Objects/flock.cgf
diff --git a/Editor/Objects/forbiddenarea.cgf b/Assets/Editor/Objects/forbiddenarea.cgf
similarity index 100%
rename from Editor/Objects/forbiddenarea.cgf
rename to Assets/Editor/Objects/forbiddenarea.cgf
diff --git a/Editor/Objects/gradb.dds b/Assets/Editor/Objects/gradb.dds
similarity index 100%
rename from Editor/Objects/gradb.dds
rename to Assets/Editor/Objects/gradb.dds
diff --git a/Editor/Objects/gradf.dds b/Assets/Editor/Objects/gradf.dds
similarity index 100%
rename from Editor/Objects/gradf.dds
rename to Assets/Editor/Objects/gradf.dds
diff --git a/Editor/Objects/helper.mtl b/Assets/Editor/Objects/helper.mtl
similarity index 100%
rename from Editor/Objects/helper.mtl
rename to Assets/Editor/Objects/helper.mtl
diff --git a/Editor/Objects/helper_illum.mtl b/Assets/Editor/Objects/helper_illum.mtl
similarity index 100%
rename from Editor/Objects/helper_illum.mtl
rename to Assets/Editor/Objects/helper_illum.mtl
diff --git a/Editor/Objects/hidepoint.cgf b/Assets/Editor/Objects/hidepoint.cgf
similarity index 100%
rename from Editor/Objects/hidepoint.cgf
rename to Assets/Editor/Objects/hidepoint.cgf
diff --git a/Editor/Objects/hidepoint_sec.cgf b/Assets/Editor/Objects/hidepoint_sec.cgf
similarity index 100%
rename from Editor/Objects/hidepoint_sec.cgf
rename to Assets/Editor/Objects/hidepoint_sec.cgf
diff --git a/Editor/Objects/highvault.cgf b/Assets/Editor/Objects/highvault.cgf
similarity index 100%
rename from Editor/Objects/highvault.cgf
rename to Assets/Editor/Objects/highvault.cgf
diff --git a/Editor/Objects/hq.cgf b/Assets/Editor/Objects/hq.cgf
similarity index 100%
rename from Editor/Objects/hq.cgf
rename to Assets/Editor/Objects/hq.cgf
diff --git a/Editor/Objects/invisiblebox.cgf b/Assets/Editor/Objects/invisiblebox.cgf
similarity index 100%
rename from Editor/Objects/invisiblebox.cgf
rename to Assets/Editor/Objects/invisiblebox.cgf
diff --git a/Editor/Objects/invisibleobstruct.cgf b/Assets/Editor/Objects/invisibleobstruct.cgf
similarity index 100%
rename from Editor/Objects/invisibleobstruct.cgf
rename to Assets/Editor/Objects/invisibleobstruct.cgf
diff --git a/Editor/Objects/invisibleocclude.cgf b/Assets/Editor/Objects/invisibleocclude.cgf
similarity index 100%
rename from Editor/Objects/invisibleocclude.cgf
rename to Assets/Editor/Objects/invisibleocclude.cgf
diff --git a/Editor/Objects/invisiblewall.cgf b/Assets/Editor/Objects/invisiblewall.cgf
similarity index 100%
rename from Editor/Objects/invisiblewall.cgf
rename to Assets/Editor/Objects/invisiblewall.cgf
diff --git a/Editor/Objects/jump_150.cgf b/Assets/Editor/Objects/jump_150.cgf
similarity index 100%
rename from Editor/Objects/jump_150.cgf
rename to Assets/Editor/Objects/jump_150.cgf
diff --git a/Editor/Objects/jump_300.cgf b/Assets/Editor/Objects/jump_300.cgf
similarity index 100%
rename from Editor/Objects/jump_300.cgf
rename to Assets/Editor/Objects/jump_300.cgf
diff --git a/Editor/Objects/jump_450.cgf b/Assets/Editor/Objects/jump_450.cgf
similarity index 100%
rename from Editor/Objects/jump_450.cgf
rename to Assets/Editor/Objects/jump_450.cgf
diff --git a/Editor/Objects/leap_1000.cgf b/Assets/Editor/Objects/leap_1000.cgf
similarity index 100%
rename from Editor/Objects/leap_1000.cgf
rename to Assets/Editor/Objects/leap_1000.cgf
diff --git a/Editor/Objects/leap_500.cgf b/Assets/Editor/Objects/leap_500.cgf
similarity index 100%
rename from Editor/Objects/leap_500.cgf
rename to Assets/Editor/Objects/leap_500.cgf
diff --git a/Editor/Objects/light_omni.cgf b/Assets/Editor/Objects/light_omni.cgf
similarity index 100%
rename from Editor/Objects/light_omni.cgf
rename to Assets/Editor/Objects/light_omni.cgf
diff --git a/Editor/Objects/light_spot.cgf b/Assets/Editor/Objects/light_spot.cgf
similarity index 100%
rename from Editor/Objects/light_spot.cgf
rename to Assets/Editor/Objects/light_spot.cgf
diff --git a/Editor/Objects/lightsphere.cgf b/Assets/Editor/Objects/lightsphere.cgf
similarity index 100%
rename from Editor/Objects/lightsphere.cgf
rename to Assets/Editor/Objects/lightsphere.cgf
diff --git a/Editor/Objects/measurehelper_A.cgf b/Assets/Editor/Objects/measurehelper_A.cgf
similarity index 100%
rename from Editor/Objects/measurehelper_A.cgf
rename to Assets/Editor/Objects/measurehelper_A.cgf
diff --git a/Editor/Objects/measurehelper_B.cgf b/Assets/Editor/Objects/measurehelper_B.cgf
similarity index 100%
rename from Editor/Objects/measurehelper_B.cgf
rename to Assets/Editor/Objects/measurehelper_B.cgf
diff --git a/Editor/Objects/mtlbox.mtl b/Assets/Editor/Objects/mtlbox.mtl
similarity index 100%
rename from Editor/Objects/mtlbox.mtl
rename to Assets/Editor/Objects/mtlbox.mtl
diff --git a/Editor/Objects/mtlobjects.mtl b/Assets/Editor/Objects/mtlobjects.mtl
similarity index 100%
rename from Editor/Objects/mtlobjects.mtl
rename to Assets/Editor/Objects/mtlobjects.mtl
diff --git a/Editor/Objects/objective.cgf b/Assets/Editor/Objects/objective.cgf
similarity index 100%
rename from Editor/Objects/objective.cgf
rename to Assets/Editor/Objects/objective.cgf
diff --git a/Editor/Objects/phoenix.cgf b/Assets/Editor/Objects/phoenix.cgf
similarity index 100%
rename from Editor/Objects/phoenix.cgf
rename to Assets/Editor/Objects/phoenix.cgf
diff --git a/Editor/Objects/refpicture.cgf b/Assets/Editor/Objects/refpicture.cgf
similarity index 100%
rename from Editor/Objects/refpicture.cgf
rename to Assets/Editor/Objects/refpicture.cgf
diff --git a/Editor/Objects/refpicture.max b/Assets/Editor/Objects/refpicture.max
similarity index 100%
rename from Editor/Objects/refpicture.max
rename to Assets/Editor/Objects/refpicture.max
diff --git a/Editor/Objects/reinforcement_point.cgf b/Assets/Editor/Objects/reinforcement_point.cgf
similarity index 100%
rename from Editor/Objects/reinforcement_point.cgf
rename to Assets/Editor/Objects/reinforcement_point.cgf
diff --git a/Editor/Objects/smartobject_helper.max b/Assets/Editor/Objects/smartobject_helper.max
similarity index 100%
rename from Editor/Objects/smartobject_helper.max
rename to Assets/Editor/Objects/smartobject_helper.max
diff --git a/Editor/Objects/spawngroup.cgf b/Assets/Editor/Objects/spawngroup.cgf
similarity index 100%
rename from Editor/Objects/spawngroup.cgf
rename to Assets/Editor/Objects/spawngroup.cgf
diff --git a/Editor/Objects/spawnpointhelper.cgf b/Assets/Editor/Objects/spawnpointhelper.cgf
similarity index 100%
rename from Editor/Objects/spawnpointhelper.cgf
rename to Assets/Editor/Objects/spawnpointhelper.cgf
diff --git a/Editor/Objects/spawnpointhelper.mtl b/Assets/Editor/Objects/spawnpointhelper.mtl
similarity index 100%
rename from Editor/Objects/spawnpointhelper.mtl
rename to Assets/Editor/Objects/spawnpointhelper.mtl
diff --git a/Editor/Objects/stayOnWallFire_left.cgf b/Assets/Editor/Objects/stayOnWallFire_left.cgf
similarity index 100%
rename from Editor/Objects/stayOnWallFire_left.cgf
rename to Assets/Editor/Objects/stayOnWallFire_left.cgf
diff --git a/Editor/Objects/suit_jump_300.cgf b/Assets/Editor/Objects/suit_jump_300.cgf
similarity index 100%
rename from Editor/Objects/suit_jump_300.cgf
rename to Assets/Editor/Objects/suit_jump_300.cgf
diff --git a/Editor/Objects/suit_jump_800.cgf b/Assets/Editor/Objects/suit_jump_800.cgf
similarity index 100%
rename from Editor/Objects/suit_jump_800.cgf
rename to Assets/Editor/Objects/suit_jump_800.cgf
diff --git a/Editor/Objects/suit_leap_800.cgf b/Assets/Editor/Objects/suit_leap_800.cgf
similarity index 100%
rename from Editor/Objects/suit_leap_800.cgf
rename to Assets/Editor/Objects/suit_leap_800.cgf
diff --git a/Editor/Plugins/ParticleEditorPlugin/defaults/DefaultParticleEmitters.xml b/Assets/Editor/Plugins/ParticleEditorPlugin/defaults/DefaultParticleEmitters.xml
similarity index 100%
rename from Editor/Plugins/ParticleEditorPlugin/defaults/DefaultParticleEmitters.xml
rename to Assets/Editor/Plugins/ParticleEditorPlugin/defaults/DefaultParticleEmitters.xml
diff --git a/Editor/Plugins/ParticleEditorPlugin/defaults/defaultParticle.dds b/Assets/Editor/Plugins/ParticleEditorPlugin/defaults/defaultParticle.dds
similarity index 100%
rename from Editor/Plugins/ParticleEditorPlugin/defaults/defaultParticle.dds
rename to Assets/Editor/Plugins/ParticleEditorPlugin/defaults/defaultParticle.dds
diff --git a/Editor/Plugins/ParticleEditorPlugin/defaults/feather01.tif b/Assets/Editor/Plugins/ParticleEditorPlugin/defaults/feather01.tif
similarity index 100%
rename from Editor/Plugins/ParticleEditorPlugin/defaults/feather01.tif
rename to Assets/Editor/Plugins/ParticleEditorPlugin/defaults/feather01.tif
diff --git a/Editor/Plugins/ParticleEditorPlugin/defaults/puffup01.tif b/Assets/Editor/Plugins/ParticleEditorPlugin/defaults/puffup01.tif
similarity index 100%
rename from Editor/Plugins/ParticleEditorPlugin/defaults/puffup01.tif
rename to Assets/Editor/Plugins/ParticleEditorPlugin/defaults/puffup01.tif
diff --git a/Editor/Plugins/ParticleEditorPlugin/settings/ToolTips.xml b/Assets/Editor/Plugins/ParticleEditorPlugin/settings/ToolTips.xml
similarity index 100%
rename from Editor/Plugins/ParticleEditorPlugin/settings/ToolTips.xml
rename to Assets/Editor/Plugins/ParticleEditorPlugin/settings/ToolTips.xml
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Left.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Left.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Left.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Left.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_TopLeft.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_TopLeft.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_TopLeft.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_TopLeft.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Whole.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Whole.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Whole.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Anchor_Whole.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Selected.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Selected.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Selected.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Selected.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Unselected.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Unselected.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Unselected.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Border_Unselected.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Canvas_Background.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Canvas_Background.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Canvas_Background.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Canvas_Background.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/DottedLine.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/DottedLine.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/DottedLine.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/DottedLine.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Pivot.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Pivot.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Pivot.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Pivot.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Center_Square.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Center_Square.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Center_Square.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Center_Square.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Circle.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Circle.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Circle.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Circle.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_X.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_X.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_X.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_X.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_Y.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_Y.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_Y.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Square_Y.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_X.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_X.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_X.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_X.tif
diff --git a/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_Y.tif b/Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_Y.tif
similarity index 100%
rename from Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_Y.tif
rename to Assets/Editor/Plugins/UiCanvasEditor/CanvasIcons/Transform_Gizmo_Line_Triangle_Y.tif
diff --git a/Editor/Presets/GeomCache/game.cbc b/Assets/Editor/Presets/GeomCache/game.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/game.cbc
rename to Assets/Editor/Presets/GeomCache/game.cbc
diff --git a/Editor/Presets/GeomCache/game_lz4hc.cbc b/Assets/Editor/Presets/GeomCache/game_lz4hc.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/game_lz4hc.cbc
rename to Assets/Editor/Presets/GeomCache/game_lz4hc.cbc
diff --git a/Editor/Presets/GeomCache/game_z_up.cbc b/Assets/Editor/Presets/GeomCache/game_z_up.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/game_z_up.cbc
rename to Assets/Editor/Presets/GeomCache/game_z_up.cbc
diff --git a/Editor/Presets/GeomCache/game_z_up_lz4hc.cbc b/Assets/Editor/Presets/GeomCache/game_z_up_lz4hc.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/game_z_up_lz4hc.cbc
rename to Assets/Editor/Presets/GeomCache/game_z_up_lz4hc.cbc
diff --git a/Editor/Presets/GeomCache/prerendered.cbc b/Assets/Editor/Presets/GeomCache/prerendered.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/prerendered.cbc
rename to Assets/Editor/Presets/GeomCache/prerendered.cbc
diff --git a/Editor/Presets/GeomCache/prerendered_z_up.cbc b/Assets/Editor/Presets/GeomCache/prerendered_z_up.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/prerendered_z_up.cbc
rename to Assets/Editor/Presets/GeomCache/prerendered_z_up.cbc
diff --git a/Editor/Presets/GeomCache/rigids_only.cbc b/Assets/Editor/Presets/GeomCache/rigids_only.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/rigids_only.cbc
rename to Assets/Editor/Presets/GeomCache/rigids_only.cbc
diff --git a/Editor/Presets/GeomCache/rigids_only_z_up.cbc b/Assets/Editor/Presets/GeomCache/rigids_only_z_up.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/rigids_only_z_up.cbc
rename to Assets/Editor/Presets/GeomCache/rigids_only_z_up.cbc
diff --git a/Editor/Presets/GeomCache/uncompressed.cbc b/Assets/Editor/Presets/GeomCache/uncompressed.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/uncompressed.cbc
rename to Assets/Editor/Presets/GeomCache/uncompressed.cbc
diff --git a/Editor/Presets/GeomCache/uncompressed_z_up.cbc b/Assets/Editor/Presets/GeomCache/uncompressed_z_up.cbc
similarity index 100%
rename from Editor/Presets/GeomCache/uncompressed_z_up.cbc
rename to Assets/Editor/Presets/GeomCache/uncompressed_z_up.cbc
diff --git a/Editor/Presets/MobileSettings/GPUAndDriverLists.json b/Assets/Editor/Presets/MobileSettings/GPUAndDriverLists.json
similarity index 100%
rename from Editor/Presets/MobileSettings/GPUAndDriverLists.json
rename to Assets/Editor/Presets/MobileSettings/GPUAndDriverLists.json
diff --git a/Editor/Presets/MobileSettings/IPhone7.lms b/Assets/Editor/Presets/MobileSettings/IPhone7.lms
similarity index 100%
rename from Editor/Presets/MobileSettings/IPhone7.lms
rename to Assets/Editor/Presets/MobileSettings/IPhone7.lms
diff --git a/Editor/Presets/MobileSettings/IpadPro.lms b/Assets/Editor/Presets/MobileSettings/IpadPro.lms
similarity index 100%
rename from Editor/Presets/MobileSettings/IpadPro.lms
rename to Assets/Editor/Presets/MobileSettings/IpadPro.lms
diff --git a/Editor/Presets/MobileSettings/MobileFeatureBlackList.json b/Assets/Editor/Presets/MobileSettings/MobileFeatureBlackList.json
similarity index 100%
rename from Editor/Presets/MobileSettings/MobileFeatureBlackList.json
rename to Assets/Editor/Presets/MobileSettings/MobileFeatureBlackList.json
diff --git a/Editor/Presets/MobileSettings/Nexus9.lms b/Assets/Editor/Presets/MobileSettings/Nexus9.lms
similarity index 100%
rename from Editor/Presets/MobileSettings/Nexus9.lms
rename to Assets/Editor/Presets/MobileSettings/Nexus9.lms
diff --git a/Editor/Presets/MobileSettings/SamsungGalaxyS7_Mali.lms b/Assets/Editor/Presets/MobileSettings/SamsungGalaxyS7_Mali.lms
similarity index 100%
rename from Editor/Presets/MobileSettings/SamsungGalaxyS7_Mali.lms
rename to Assets/Editor/Presets/MobileSettings/SamsungGalaxyS7_Mali.lms
diff --git a/Editor/Presets/MobileSettings/SamsungGalaxyS7_Qualcomm.lms b/Assets/Editor/Presets/MobileSettings/SamsungGalaxyS7_Qualcomm.lms
similarity index 100%
rename from Editor/Presets/MobileSettings/SamsungGalaxyS7_Qualcomm.lms
rename to Assets/Editor/Presets/MobileSettings/SamsungGalaxyS7_Qualcomm.lms
diff --git a/Editor/PropertyEnumerations.xml b/Assets/Editor/PropertyEnumerations.xml
similarity index 100%
rename from Editor/PropertyEnumerations.xml
rename to Assets/Editor/PropertyEnumerations.xml
diff --git a/Editor/Scripts/Shelves/icons/Albedo.png b/Assets/Editor/Scripts/Shelves/icons/Albedo.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Albedo.png
rename to Assets/Editor/Scripts/Shelves/icons/Albedo.png
diff --git a/Editor/Scripts/Shelves/icons/Diffuse_Lighting.png b/Assets/Editor/Scripts/Shelves/icons/Diffuse_Lighting.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Diffuse_Lighting.png
rename to Assets/Editor/Scripts/Shelves/icons/Diffuse_Lighting.png
diff --git a/Editor/Scripts/Shelves/icons/Diffuse_Texture_Res_360.png b/Assets/Editor/Scripts/Shelves/icons/Diffuse_Texture_Res_360.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Diffuse_Texture_Res_360.png
rename to Assets/Editor/Scripts/Shelves/icons/Diffuse_Texture_Res_360.png
diff --git a/Editor/Scripts/Shelves/icons/Empty_Wireframe.png b/Assets/Editor/Scripts/Shelves/icons/Empty_Wireframe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Empty_Wireframe.png
rename to Assets/Editor/Scripts/Shelves/icons/Empty_Wireframe.png
diff --git a/Editor/Scripts/Shelves/icons/Exit.png b/Assets/Editor/Scripts/Shelves/icons/Exit.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Exit.png
rename to Assets/Editor/Scripts/Shelves/icons/Exit.png
diff --git a/Editor/Scripts/Shelves/icons/Fuzziness.png b/Assets/Editor/Scripts/Shelves/icons/Fuzziness.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Fuzziness.png
rename to Assets/Editor/Scripts/Shelves/icons/Fuzziness.png
diff --git a/Editor/Scripts/Shelves/icons/Gloss.png b/Assets/Editor/Scripts/Shelves/icons/Gloss.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Gloss.png
rename to Assets/Editor/Scripts/Shelves/icons/Gloss.png
diff --git a/Editor/Scripts/Shelves/icons/Normal_Texture_Res_360.png b/Assets/Editor/Scripts/Shelves/icons/Normal_Texture_Res_360.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Normal_Texture_Res_360.png
rename to Assets/Editor/Scripts/Shelves/icons/Normal_Texture_Res_360.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabAddLibrary.png b/Assets/Editor/Scripts/Shelves/icons/PrefabAddLibrary.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabAddLibrary.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabAddLibrary.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabAddSelection.png b/Assets/Editor/Scripts/Shelves/icons/PrefabAddSelection.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabAddSelection.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabAddSelection.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabBreak.png b/Assets/Editor/Scripts/Shelves/icons/PrefabBreak.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabBreak.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabBreak.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabConvert.png b/Assets/Editor/Scripts/Shelves/icons/PrefabConvert.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabConvert.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabConvert.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabCreate.png b/Assets/Editor/Scripts/Shelves/icons/PrefabCreate.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabCreate.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabCreate.png
diff --git a/Editor/Scripts/Shelves/icons/PrefabIsolate.png b/Assets/Editor/Scripts/Shelves/icons/PrefabIsolate.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/PrefabIsolate.png
rename to Assets/Editor/Scripts/Shelves/icons/PrefabIsolate.png
diff --git a/Editor/Scripts/Shelves/icons/Scattering.png b/Assets/Editor/Scripts/Shelves/icons/Scattering.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Scattering.png
rename to Assets/Editor/Scripts/Shelves/icons/Scattering.png
diff --git a/Editor/Scripts/Shelves/icons/Solid_Wireframe.png b/Assets/Editor/Scripts/Shelves/icons/Solid_Wireframe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Solid_Wireframe.png
rename to Assets/Editor/Scripts/Shelves/icons/Solid_Wireframe.png
diff --git a/Editor/Scripts/Shelves/icons/Spec_Amount.png b/Assets/Editor/Scripts/Shelves/icons/Spec_Amount.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Spec_Amount.png
rename to Assets/Editor/Scripts/Shelves/icons/Spec_Amount.png
diff --git a/Editor/Scripts/Shelves/icons/Spec_Lighting.png b/Assets/Editor/Scripts/Shelves/icons/Spec_Lighting.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Spec_Lighting.png
rename to Assets/Editor/Scripts/Shelves/icons/Spec_Lighting.png
diff --git a/Editor/Scripts/Shelves/icons/Texel_Per_Meter_1024.png b/Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_1024.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Texel_Per_Meter_1024.png
rename to Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_1024.png
diff --git a/Editor/Scripts/Shelves/icons/Texel_Per_Meter_256.png b/Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_256.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Texel_Per_Meter_256.png
rename to Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_256.png
diff --git a/Editor/Scripts/Shelves/icons/Texel_Per_Meter_512.png b/Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_512.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/Texel_Per_Meter_512.png
rename to Assets/Editor/Scripts/Shelves/icons/Texel_Per_Meter_512.png
diff --git a/Editor/Scripts/Shelves/icons/all.png b/Assets/Editor/Scripts/Shelves/icons/all.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/all.png
rename to Assets/Editor/Scripts/Shelves/icons/all.png
diff --git a/Editor/Scripts/Shelves/icons/beams.png b/Assets/Editor/Scripts/Shelves/icons/beams.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/beams.png
rename to Assets/Editor/Scripts/Shelves/icons/beams.png
diff --git a/Editor/Scripts/Shelves/icons/blanker.png b/Assets/Editor/Scripts/Shelves/icons/blanker.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/blanker.png
rename to Assets/Editor/Scripts/Shelves/icons/blanker.png
diff --git a/Editor/Scripts/Shelves/icons/bounding_box.png b/Assets/Editor/Scripts/Shelves/icons/bounding_box.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/bounding_box.png
rename to Assets/Editor/Scripts/Shelves/icons/bounding_box.png
diff --git a/Editor/Scripts/Shelves/icons/brushes.png b/Assets/Editor/Scripts/Shelves/icons/brushes.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/brushes.png
rename to Assets/Editor/Scripts/Shelves/icons/brushes.png
diff --git a/Editor/Scripts/Shelves/icons/cloud.png b/Assets/Editor/Scripts/Shelves/icons/cloud.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/cloud.png
rename to Assets/Editor/Scripts/Shelves/icons/cloud.png
diff --git a/Editor/Scripts/Shelves/icons/cloud_dark.png b/Assets/Editor/Scripts/Shelves/icons/cloud_dark.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/cloud_dark.png
rename to Assets/Editor/Scripts/Shelves/icons/cloud_dark.png
diff --git a/Editor/Scripts/Shelves/icons/cloud_dark_rain.png b/Assets/Editor/Scripts/Shelves/icons/cloud_dark_rain.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/cloud_dark_rain.png
rename to Assets/Editor/Scripts/Shelves/icons/cloud_dark_rain.png
diff --git a/Editor/Scripts/Shelves/icons/collisions.png b/Assets/Editor/Scripts/Shelves/icons/collisions.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/collisions.png
rename to Assets/Editor/Scripts/Shelves/icons/collisions.png
diff --git a/Editor/Scripts/Shelves/icons/create_ao_volume_box.png b/Assets/Editor/Scripts/Shelves/icons/create_ao_volume_box.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_ao_volume_box.png
rename to Assets/Editor/Scripts/Shelves/icons/create_ao_volume_box.png
diff --git a/Editor/Scripts/Shelves/icons/create_both_vis_box_envprobe.png b/Assets/Editor/Scripts/Shelves/icons/create_both_vis_box_envprobe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_both_vis_box_envprobe.png
rename to Assets/Editor/Scripts/Shelves/icons/create_both_vis_box_envprobe.png
diff --git a/Editor/Scripts/Shelves/icons/create_envprobe.png b/Assets/Editor/Scripts/Shelves/icons/create_envprobe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_envprobe.png
rename to Assets/Editor/Scripts/Shelves/icons/create_envprobe.png
diff --git a/Editor/Scripts/Shelves/icons/create_portal_box.png b/Assets/Editor/Scripts/Shelves/icons/create_portal_box.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_portal_box.png
rename to Assets/Editor/Scripts/Shelves/icons/create_portal_box.png
diff --git a/Editor/Scripts/Shelves/icons/create_vis_box.png b/Assets/Editor/Scripts/Shelves/icons/create_vis_box.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_vis_box.png
rename to Assets/Editor/Scripts/Shelves/icons/create_vis_box.png
diff --git a/Editor/Scripts/Shelves/icons/create_vis_box_and_portal_box.png b/Assets/Editor/Scripts/Shelves/icons/create_vis_box_and_portal_box.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_vis_box_and_portal_box.png
rename to Assets/Editor/Scripts/Shelves/icons/create_vis_box_and_portal_box.png
diff --git a/Editor/Scripts/Shelves/icons/create_vis_box_env_probe_and_portal.png b/Assets/Editor/Scripts/Shelves/icons/create_vis_box_env_probe_and_portal.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/create_vis_box_env_probe_and_portal.png
rename to Assets/Editor/Scripts/Shelves/icons/create_vis_box_env_probe_and_portal.png
diff --git a/Editor/Scripts/Shelves/icons/cubemap.png b/Assets/Editor/Scripts/Shelves/icons/cubemap.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/cubemap.png
rename to Assets/Editor/Scripts/Shelves/icons/cubemap.png
diff --git a/Editor/Scripts/Shelves/icons/decals.png b/Assets/Editor/Scripts/Shelves/icons/decals.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/decals.png
rename to Assets/Editor/Scripts/Shelves/icons/decals.png
diff --git a/Editor/Scripts/Shelves/icons/default_material.png b/Assets/Editor/Scripts/Shelves/icons/default_material.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/default_material.png
rename to Assets/Editor/Scripts/Shelves/icons/default_material.png
diff --git a/Editor/Scripts/Shelves/icons/default_material_with_normals.png b/Assets/Editor/Scripts/Shelves/icons/default_material_with_normals.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/default_material_with_normals.png
rename to Assets/Editor/Scripts/Shelves/icons/default_material_with_normals.png
diff --git a/Editor/Scripts/Shelves/icons/designer.png b/Assets/Editor/Scripts/Shelves/icons/designer.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/designer.png
rename to Assets/Editor/Scripts/Shelves/icons/designer.png
diff --git a/Editor/Scripts/Shelves/icons/diff_acc.png b/Assets/Editor/Scripts/Shelves/icons/diff_acc.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/diff_acc.png
rename to Assets/Editor/Scripts/Shelves/icons/diff_acc.png
diff --git a/Editor/Scripts/Shelves/icons/display_info.png b/Assets/Editor/Scripts/Shelves/icons/display_info.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/display_info.png
rename to Assets/Editor/Scripts/Shelves/icons/display_info.png
diff --git a/Editor/Scripts/Shelves/icons/dual_layer_mask.png b/Assets/Editor/Scripts/Shelves/icons/dual_layer_mask.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/dual_layer_mask.png
rename to Assets/Editor/Scripts/Shelves/icons/dual_layer_mask.png
diff --git a/Editor/Scripts/Shelves/icons/dynamiclights.png b/Assets/Editor/Scripts/Shelves/icons/dynamiclights.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/dynamiclights.png
rename to Assets/Editor/Scripts/Shelves/icons/dynamiclights.png
diff --git a/Editor/Scripts/Shelves/icons/entities.png b/Assets/Editor/Scripts/Shelves/icons/entities.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/entities.png
rename to Assets/Editor/Scripts/Shelves/icons/entities.png
diff --git a/Editor/Scripts/Shelves/icons/eye_adaptation_speed.png b/Assets/Editor/Scripts/Shelves/icons/eye_adaptation_speed.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/eye_adaptation_speed.png
rename to Assets/Editor/Scripts/Shelves/icons/eye_adaptation_speed.png
diff --git a/Editor/Scripts/Shelves/icons/fog.png b/Assets/Editor/Scripts/Shelves/icons/fog.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/fog.png
rename to Assets/Editor/Scripts/Shelves/icons/fog.png
diff --git a/Editor/Scripts/Shelves/icons/fogvolumes.png b/Assets/Editor/Scripts/Shelves/icons/fogvolumes.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/fogvolumes.png
rename to Assets/Editor/Scripts/Shelves/icons/fogvolumes.png
diff --git a/Editor/Scripts/Shelves/icons/freeze_particles.png b/Assets/Editor/Scripts/Shelves/icons/freeze_particles.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/freeze_particles.png
rename to Assets/Editor/Scripts/Shelves/icons/freeze_particles.png
diff --git a/Editor/Scripts/Shelves/icons/full_shading.png b/Assets/Editor/Scripts/Shelves/icons/full_shading.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/full_shading.png
rename to Assets/Editor/Scripts/Shelves/icons/full_shading.png
diff --git a/Editor/Scripts/Shelves/icons/gamma.png b/Assets/Editor/Scripts/Shelves/icons/gamma.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/gamma.png
rename to Assets/Editor/Scripts/Shelves/icons/gamma.png
diff --git a/Editor/Scripts/Shelves/icons/gi.png b/Assets/Editor/Scripts/Shelves/icons/gi.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/gi.png
rename to Assets/Editor/Scripts/Shelves/icons/gi.png
diff --git a/Editor/Scripts/Shelves/icons/lens_flare.png b/Assets/Editor/Scripts/Shelves/icons/lens_flare.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lens_flare.png
rename to Assets/Editor/Scripts/Shelves/icons/lens_flare.png
diff --git a/Editor/Scripts/Shelves/icons/lighting_only.png b/Assets/Editor/Scripts/Shelves/icons/lighting_only.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lighting_only.png
rename to Assets/Editor/Scripts/Shelves/icons/lighting_only.png
diff --git a/Editor/Scripts/Shelves/icons/lods.png b/Assets/Editor/Scripts/Shelves/icons/lods.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lods.png
rename to Assets/Editor/Scripts/Shelves/icons/lods.png
diff --git a/Editor/Scripts/Shelves/icons/lsao.png b/Assets/Editor/Scripts/Shelves/icons/lsao.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lsao.png
rename to Assets/Editor/Scripts/Shelves/icons/lsao.png
diff --git a/Editor/Scripts/Shelves/icons/lsao_toggle.png b/Assets/Editor/Scripts/Shelves/icons/lsao_toggle.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lsao_toggle.png
rename to Assets/Editor/Scripts/Shelves/icons/lsao_toggle.png
diff --git a/Editor/Scripts/Shelves/icons/lsro.png b/Assets/Editor/Scripts/Shelves/icons/lsro.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/lsro.png
rename to Assets/Editor/Scripts/Shelves/icons/lsro.png
diff --git a/Editor/Scripts/Shelves/icons/normals.png b/Assets/Editor/Scripts/Shelves/icons/normals.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/normals.png
rename to Assets/Editor/Scripts/Shelves/icons/normals.png
diff --git a/Editor/Scripts/Shelves/icons/normals_x.png b/Assets/Editor/Scripts/Shelves/icons/normals_x.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/normals_x.png
rename to Assets/Editor/Scripts/Shelves/icons/normals_x.png
diff --git a/Editor/Scripts/Shelves/icons/normals_y.png b/Assets/Editor/Scripts/Shelves/icons/normals_y.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/normals_y.png
rename to Assets/Editor/Scripts/Shelves/icons/normals_y.png
diff --git a/Editor/Scripts/Shelves/icons/normals_z.png b/Assets/Editor/Scripts/Shelves/icons/normals_z.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/normals_z.png
rename to Assets/Editor/Scripts/Shelves/icons/normals_z.png
diff --git a/Editor/Scripts/Shelves/icons/ocean.png b/Assets/Editor/Scripts/Shelves/icons/ocean.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/ocean.png
rename to Assets/Editor/Scripts/Shelves/icons/ocean.png
diff --git a/Editor/Scripts/Shelves/icons/particles.png b/Assets/Editor/Scripts/Shelves/icons/particles.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/particles.png
rename to Assets/Editor/Scripts/Shelves/icons/particles.png
diff --git a/Editor/Scripts/Shelves/icons/particles_bounds.png b/Assets/Editor/Scripts/Shelves/icons/particles_bounds.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/particles_bounds.png
rename to Assets/Editor/Scripts/Shelves/icons/particles_bounds.png
diff --git a/Editor/Scripts/Shelves/icons/particles_off.png b/Assets/Editor/Scripts/Shelves/icons/particles_off.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/particles_off.png
rename to Assets/Editor/Scripts/Shelves/icons/particles_off.png
diff --git a/Editor/Scripts/Shelves/icons/particles_overdraw.png b/Assets/Editor/Scripts/Shelves/icons/particles_overdraw.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/particles_overdraw.png
rename to Assets/Editor/Scripts/Shelves/icons/particles_overdraw.png
diff --git a/Editor/Scripts/Shelves/icons/particles_screen_coverage.png b/Assets/Editor/Scripts/Shelves/icons/particles_screen_coverage.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/particles_screen_coverage.png
rename to Assets/Editor/Scripts/Shelves/icons/particles_screen_coverage.png
diff --git a/Editor/Scripts/Shelves/icons/placeholder.png b/Assets/Editor/Scripts/Shelves/icons/placeholder.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/placeholder.png
rename to Assets/Editor/Scripts/Shelves/icons/placeholder.png
diff --git a/Editor/Scripts/Shelves/icons/prefab.png b/Assets/Editor/Scripts/Shelves/icons/prefab.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/prefab.png
rename to Assets/Editor/Scripts/Shelves/icons/prefab.png
diff --git a/Editor/Scripts/Shelves/icons/reflections.png b/Assets/Editor/Scripts/Shelves/icons/reflections.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/reflections.png
rename to Assets/Editor/Scripts/Shelves/icons/reflections.png
diff --git a/Editor/Scripts/Shelves/icons/reset.png b/Assets/Editor/Scripts/Shelves/icons/reset.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/reset.png
rename to Assets/Editor/Scripts/Shelves/icons/reset.png
diff --git a/Editor/Scripts/Shelves/icons/selfocc.png b/Assets/Editor/Scripts/Shelves/icons/selfocc.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/selfocc.png
rename to Assets/Editor/Scripts/Shelves/icons/selfocc.png
diff --git a/Editor/Scripts/Shelves/icons/shaded_wireframe.png b/Assets/Editor/Scripts/Shelves/icons/shaded_wireframe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/shaded_wireframe.png
rename to Assets/Editor/Scripts/Shelves/icons/shaded_wireframe.png
diff --git a/Editor/Scripts/Shelves/icons/shadows.png b/Assets/Editor/Scripts/Shelves/icons/shadows.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/shadows.png
rename to Assets/Editor/Scripts/Shelves/icons/shadows.png
diff --git a/Editor/Scripts/Shelves/icons/showlines.png b/Assets/Editor/Scripts/Shelves/icons/showlines.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/showlines.png
rename to Assets/Editor/Scripts/Shelves/icons/showlines.png
diff --git a/Editor/Scripts/Shelves/icons/sky.png b/Assets/Editor/Scripts/Shelves/icons/sky.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/sky.png
rename to Assets/Editor/Scripts/Shelves/icons/sky.png
diff --git a/Editor/Scripts/Shelves/icons/spec_acc.png b/Assets/Editor/Scripts/Shelves/icons/spec_acc.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/spec_acc.png
rename to Assets/Editor/Scripts/Shelves/icons/spec_acc.png
diff --git a/Editor/Scripts/Shelves/icons/spec_lum.png b/Assets/Editor/Scripts/Shelves/icons/spec_lum.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/spec_lum.png
rename to Assets/Editor/Scripts/Shelves/icons/spec_lum.png
diff --git a/Editor/Scripts/Shelves/icons/spec_occ.png b/Assets/Editor/Scripts/Shelves/icons/spec_occ.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/spec_occ.png
rename to Assets/Editor/Scripts/Shelves/icons/spec_occ.png
diff --git a/Editor/Scripts/Shelves/icons/ssao.png b/Assets/Editor/Scripts/Shelves/icons/ssao.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/ssao.png
rename to Assets/Editor/Scripts/Shelves/icons/ssao.png
diff --git a/Editor/Scripts/Shelves/icons/ssdo.png b/Assets/Editor/Scripts/Shelves/icons/ssdo.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/ssdo.png
rename to Assets/Editor/Scripts/Shelves/icons/ssdo.png
diff --git a/Editor/Scripts/Shelves/icons/ssdo_toggle.png b/Assets/Editor/Scripts/Shelves/icons/ssdo_toggle.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/ssdo_toggle.png
rename to Assets/Editor/Scripts/Shelves/icons/ssdo_toggle.png
diff --git a/Editor/Scripts/Shelves/icons/sun.big.png b/Assets/Editor/Scripts/Shelves/icons/sun.big.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/sun.big.png
rename to Assets/Editor/Scripts/Shelves/icons/sun.big.png
diff --git a/Editor/Scripts/Shelves/icons/tangents.png b/Assets/Editor/Scripts/Shelves/icons/tangents.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/tangents.png
rename to Assets/Editor/Scripts/Shelves/icons/tangents.png
diff --git a/Editor/Scripts/Shelves/icons/terrain.png b/Assets/Editor/Scripts/Shelves/icons/terrain.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/terrain.png
rename to Assets/Editor/Scripts/Shelves/icons/terrain.png
diff --git a/Editor/Scripts/Shelves/icons/time_scale_double.png b/Assets/Editor/Scripts/Shelves/icons/time_scale_double.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/time_scale_double.png
rename to Assets/Editor/Scripts/Shelves/icons/time_scale_double.png
diff --git a/Editor/Scripts/Shelves/icons/time_scale_frozen.png b/Assets/Editor/Scripts/Shelves/icons/time_scale_frozen.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/time_scale_frozen.png
rename to Assets/Editor/Scripts/Shelves/icons/time_scale_frozen.png
diff --git a/Editor/Scripts/Shelves/icons/time_scale_half.png b/Assets/Editor/Scripts/Shelves/icons/time_scale_half.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/time_scale_half.png
rename to Assets/Editor/Scripts/Shelves/icons/time_scale_half.png
diff --git a/Editor/Scripts/Shelves/icons/time_scale_quarter.png b/Assets/Editor/Scripts/Shelves/icons/time_scale_quarter.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/time_scale_quarter.png
rename to Assets/Editor/Scripts/Shelves/icons/time_scale_quarter.png
diff --git a/Editor/Scripts/Shelves/icons/time_scale_tenth.png b/Assets/Editor/Scripts/Shelves/icons/time_scale_tenth.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/time_scale_tenth.png
rename to Assets/Editor/Scripts/Shelves/icons/time_scale_tenth.png
diff --git a/Editor/Scripts/Shelves/icons/tod.png b/Assets/Editor/Scripts/Shelves/icons/tod.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/tod.png
rename to Assets/Editor/Scripts/Shelves/icons/tod.png
diff --git a/Editor/Scripts/Shelves/icons/translucency.png b/Assets/Editor/Scripts/Shelves/icons/translucency.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/translucency.png
rename to Assets/Editor/Scripts/Shelves/icons/translucency.png
diff --git a/Editor/Scripts/Shelves/icons/transparency.png b/Assets/Editor/Scripts/Shelves/icons/transparency.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/transparency.png
rename to Assets/Editor/Scripts/Shelves/icons/transparency.png
diff --git a/Editor/Scripts/Shelves/icons/valid_albedo.png b/Assets/Editor/Scripts/Shelves/icons/valid_albedo.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/valid_albedo.png
rename to Assets/Editor/Scripts/Shelves/icons/valid_albedo.png
diff --git a/Editor/Scripts/Shelves/icons/valid_spec_lum.png b/Assets/Editor/Scripts/Shelves/icons/valid_spec_lum.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/valid_spec_lum.png
rename to Assets/Editor/Scripts/Shelves/icons/valid_spec_lum.png
diff --git a/Editor/Scripts/Shelves/icons/vegetation.png b/Assets/Editor/Scripts/Shelves/icons/vegetation.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/vegetation.png
rename to Assets/Editor/Scripts/Shelves/icons/vegetation.png
diff --git a/Editor/Scripts/Shelves/icons/vertex_normals.png b/Assets/Editor/Scripts/Shelves/icons/vertex_normals.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/vertex_normals.png
rename to Assets/Editor/Scripts/Shelves/icons/vertex_normals.png
diff --git a/Editor/Scripts/Shelves/icons/vis_area.png b/Assets/Editor/Scripts/Shelves/icons/vis_area.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/vis_area.png
rename to Assets/Editor/Scripts/Shelves/icons/vis_area.png
diff --git a/Editor/Scripts/Shelves/icons/water_volume.png b/Assets/Editor/Scripts/Shelves/icons/water_volume.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/water_volume.png
rename to Assets/Editor/Scripts/Shelves/icons/water_volume.png
diff --git a/Editor/Scripts/Shelves/icons/wind.png b/Assets/Editor/Scripts/Shelves/icons/wind.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/wind.png
rename to Assets/Editor/Scripts/Shelves/icons/wind.png
diff --git a/Editor/Scripts/Shelves/icons/wireframe.png b/Assets/Editor/Scripts/Shelves/icons/wireframe.png
similarity index 100%
rename from Editor/Scripts/Shelves/icons/wireframe.png
rename to Assets/Editor/Scripts/Shelves/icons/wireframe.png
diff --git a/Editor/Scripts/TrackView/example.py b/Assets/Editor/Scripts/TrackView/example.py
similarity index 100%
rename from Editor/Scripts/TrackView/example.py
rename to Assets/Editor/Scripts/TrackView/example.py
diff --git a/Editor/Scripts/editor_script_validation.py b/Assets/Editor/Scripts/editor_script_validation.py
similarity index 100%
rename from Editor/Scripts/editor_script_validation.py
rename to Assets/Editor/Scripts/editor_script_validation.py
diff --git a/Editor/Scripts/export_all_project_levels.py b/Assets/Editor/Scripts/export_all_project_levels.py
similarity index 100%
rename from Editor/Scripts/export_all_project_levels.py
rename to Assets/Editor/Scripts/export_all_project_levels.py
diff --git a/Editor/Scripts/generatelod.py b/Assets/Editor/Scripts/generatelod.py
similarity index 100%
rename from Editor/Scripts/generatelod.py
rename to Assets/Editor/Scripts/generatelod.py
diff --git a/Editor/Scripts/rename_cgf.py b/Assets/Editor/Scripts/rename_cgf.py
similarity index 100%
rename from Editor/Scripts/rename_cgf.py
rename to Assets/Editor/Scripts/rename_cgf.py
diff --git a/Editor/Scripts/select_story_anim_objects.py b/Assets/Editor/Scripts/select_story_anim_objects.py
similarity index 100%
rename from Editor/Scripts/select_story_anim_objects.py
rename to Assets/Editor/Scripts/select_story_anim_objects.py
diff --git a/Editor/Scripts/tools_shelf_actions.py b/Assets/Editor/Scripts/tools_shelf_actions.py
similarity index 100%
rename from Editor/Scripts/tools_shelf_actions.py
rename to Assets/Editor/Scripts/tools_shelf_actions.py
diff --git a/Editor/SoundTemplates.xml b/Assets/Editor/SoundTemplates.xml
similarity index 100%
rename from Editor/SoundTemplates.xml
rename to Assets/Editor/SoundTemplates.xml
diff --git a/Editor/Styles/AssetImporterWindow.qss b/Assets/Editor/Styles/AssetImporterWindow.qss
similarity index 100%
rename from Editor/Styles/AssetImporterWindow.qss
rename to Assets/Editor/Styles/AssetImporterWindow.qss
diff --git a/Editor/Styles/AssetProcessor.qss b/Assets/Editor/Styles/AssetProcessor.qss
similarity index 100%
rename from Editor/Styles/AssetProcessor.qss
rename to Assets/Editor/Styles/AssetProcessor.qss
diff --git a/Editor/Styles/AssetProcessorGlobalStyleSheet.qss b/Assets/Editor/Styles/AssetProcessorGlobalStyleSheet.qss
similarity index 100%
rename from Editor/Styles/AssetProcessorGlobalStyleSheet.qss
rename to Assets/Editor/Styles/AssetProcessorGlobalStyleSheet.qss
diff --git a/Editor/Styles/AssetProcessorGlobalStyleSheetVariables.json b/Assets/Editor/Styles/AssetProcessorGlobalStyleSheetVariables.json
similarity index 100%
rename from Editor/Styles/AssetProcessorGlobalStyleSheetVariables.json
rename to Assets/Editor/Styles/AssetProcessorGlobalStyleSheetVariables.json
diff --git a/Editor/Styles/CryDark.cjstyles b/Assets/Editor/Styles/CryDark.cjstyles
similarity index 100%
rename from Editor/Styles/CryDark.cjstyles
rename to Assets/Editor/Styles/CryDark.cjstyles
diff --git a/Editor/Styles/CryLight.cjstyles b/Assets/Editor/Styles/CryLight.cjstyles
similarity index 100%
rename from Editor/Styles/CryLight.cjstyles
rename to Assets/Editor/Styles/CryLight.cjstyles
diff --git a/Editor/Styles/MultiMeshSelectionPane.qss b/Assets/Editor/Styles/MultiMeshSelectionPane.qss
similarity index 100%
rename from Editor/Styles/MultiMeshSelectionPane.qss
rename to Assets/Editor/Styles/MultiMeshSelectionPane.qss
diff --git a/Editor/Styles/Office2007.dll b/Assets/Editor/Styles/Office2007.dll
similarity index 100%
rename from Editor/Styles/Office2007.dll
rename to Assets/Editor/Styles/Office2007.dll
diff --git a/Editor/Styles/Office2007Black.dll b/Assets/Editor/Styles/Office2007Black.dll
similarity index 100%
rename from Editor/Styles/Office2007Black.dll
rename to Assets/Editor/Styles/Office2007Black.dll
diff --git a/Editor/Styles/Office2007Silver.dll b/Assets/Editor/Styles/Office2007Silver.dll
similarity index 100%
rename from Editor/Styles/Office2007Silver.dll
rename to Assets/Editor/Styles/Office2007Silver.dll
diff --git a/Editor/Styles/StyleSheetImages/Validation_icon.png b/Assets/Editor/Styles/StyleSheetImages/Validation_icon.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/Validation_icon.png
rename to Assets/Editor/Styles/StyleSheetImages/Validation_icon.png
diff --git a/Editor/Styles/StyleSheetImages/about_dark.png b/Assets/Editor/Styles/StyleSheetImages/about_dark.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/about_dark.png
rename to Assets/Editor/Styles/StyleSheetImages/about_dark.png
diff --git a/Editor/Styles/StyleSheetImages/about_light.png b/Assets/Editor/Styles/StyleSheetImages/about_light.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/about_light.png
rename to Assets/Editor/Styles/StyleSheetImages/about_light.png
diff --git a/Editor/Styles/StyleSheetImages/arrow_down_V2.png b/Assets/Editor/Styles/StyleSheetImages/arrow_down_V2.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/arrow_down_V2.png
rename to Assets/Editor/Styles/StyleSheetImages/arrow_down_V2.png
diff --git a/Editor/Styles/StyleSheetImages/arrow_left_V2.png b/Assets/Editor/Styles/StyleSheetImages/arrow_left_V2.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/arrow_left_V2.png
rename to Assets/Editor/Styles/StyleSheetImages/arrow_left_V2.png
diff --git a/Editor/Styles/StyleSheetImages/arrow_right_V2.png b/Assets/Editor/Styles/StyleSheetImages/arrow_right_V2.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/arrow_right_V2.png
rename to Assets/Editor/Styles/StyleSheetImages/arrow_right_V2.png
diff --git a/Editor/Styles/StyleSheetImages/arrow_up_V2.png b/Assets/Editor/Styles/StyleSheetImages/arrow_up_V2.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/arrow_up_V2.png
rename to Assets/Editor/Styles/StyleSheetImages/arrow_up_V2.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_checked.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_checked.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_checked.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_checked.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_checked_disabled.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_checked_disabled.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_checked_disabled.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_checked_disabled.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_checked_hover.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_checked_hover.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_checked_hover.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_checked_hover.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_checked_pressed.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_checked_pressed.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_checked_pressed.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_checked_pressed.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_indeterminate_hover .png b/Assets/Editor/Styles/StyleSheetImages/checkbox_indeterminate_hover .png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_indeterminate_hover .png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_indeterminate_hover .png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_indeterminate_pressed.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_indeterminate_pressed.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_indeterminate_pressed.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_indeterminate_pressed.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_unchecked.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_unchecked.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_unchecked_disabled.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_disabled.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_unchecked_disabled.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_disabled.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_unchecked_hover.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_hover.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_unchecked_hover.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_hover.png
diff --git a/Editor/Styles/StyleSheetImages/checkbox_unchecked_pressed.png b/Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_pressed.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/checkbox_unchecked_pressed.png
rename to Assets/Editor/Styles/StyleSheetImages/checkbox_unchecked_pressed.png
diff --git a/Editor/Styles/StyleSheetImages/dropdown_arrow.png b/Assets/Editor/Styles/StyleSheetImages/dropdown_arrow.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/dropdown_arrow.png
rename to Assets/Editor/Styles/StyleSheetImages/dropdown_arrow.png
diff --git a/Editor/Styles/StyleSheetImages/error_icon.png b/Assets/Editor/Styles/StyleSheetImages/error_icon.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/error_icon.png
rename to Assets/Editor/Styles/StyleSheetImages/error_icon.png
diff --git a/Editor/Styles/StyleSheetImages/help.png b/Assets/Editor/Styles/StyleSheetImages/help.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/help.png
rename to Assets/Editor/Styles/StyleSheetImages/help.png
diff --git a/Editor/Styles/StyleSheetImages/info_icon.png b/Assets/Editor/Styles/StyleSheetImages/info_icon.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/info_icon.png
rename to Assets/Editor/Styles/StyleSheetImages/info_icon.png
diff --git a/Editor/Styles/StyleSheetImages/radiobutton_checked.png b/Assets/Editor/Styles/StyleSheetImages/radiobutton_checked.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/radiobutton_checked.png
rename to Assets/Editor/Styles/StyleSheetImages/radiobutton_checked.png
diff --git a/Editor/Styles/StyleSheetImages/radiobutton_checked_disabled.png b/Assets/Editor/Styles/StyleSheetImages/radiobutton_checked_disabled.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/radiobutton_checked_disabled.png
rename to Assets/Editor/Styles/StyleSheetImages/radiobutton_checked_disabled.png
diff --git a/Editor/Styles/StyleSheetImages/radiobutton_unchecked.png b/Assets/Editor/Styles/StyleSheetImages/radiobutton_unchecked.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/radiobutton_unchecked.png
rename to Assets/Editor/Styles/StyleSheetImages/radiobutton_unchecked.png
diff --git a/Editor/Styles/StyleSheetImages/radiobutton_unchecked_disabled.png b/Assets/Editor/Styles/StyleSheetImages/radiobutton_unchecked_disabled.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/radiobutton_unchecked_disabled.png
rename to Assets/Editor/Styles/StyleSheetImages/radiobutton_unchecked_disabled.png
diff --git a/Editor/Styles/StyleSheetImages/spinbox_down.png b/Assets/Editor/Styles/StyleSheetImages/spinbox_down.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/spinbox_down.png
rename to Assets/Editor/Styles/StyleSheetImages/spinbox_down.png
diff --git a/Editor/Styles/StyleSheetImages/spinbox_up.png b/Assets/Editor/Styles/StyleSheetImages/spinbox_up.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/spinbox_up.png
rename to Assets/Editor/Styles/StyleSheetImages/spinbox_up.png
diff --git a/Editor/Styles/StyleSheetImages/treeview_arrow_down.png b/Assets/Editor/Styles/StyleSheetImages/treeview_arrow_down.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/treeview_arrow_down.png
rename to Assets/Editor/Styles/StyleSheetImages/treeview_arrow_down.png
diff --git a/Editor/Styles/StyleSheetImages/treeview_arrow_right.png b/Assets/Editor/Styles/StyleSheetImages/treeview_arrow_right.png
similarity index 100%
rename from Editor/Styles/StyleSheetImages/treeview_arrow_right.png
rename to Assets/Editor/Styles/StyleSheetImages/treeview_arrow_right.png
diff --git a/Editor/Styles/stylesheet_Dark.qss b/Assets/Editor/Styles/stylesheet_Dark.qss
similarity index 100%
rename from Editor/Styles/stylesheet_Dark.qss
rename to Assets/Editor/Styles/stylesheet_Dark.qss
diff --git a/Editor/Styles/stylesheet_Light.qss b/Assets/Editor/Styles/stylesheet_Light.qss
similarity index 100%
rename from Editor/Styles/stylesheet_Light.qss
rename to Assets/Editor/Styles/stylesheet_Light.qss
diff --git a/Editor/ToolBox.xml b/Assets/Editor/ToolBox.xml
similarity index 100%
rename from Editor/ToolBox.xml
rename to Assets/Editor/ToolBox.xml
diff --git a/Editor/Translation/scriptcanvas_en_us.ts b/Assets/Editor/Translation/scriptcanvas_en_us.ts
similarity index 100%
rename from Editor/Translation/scriptcanvas_en_us.ts
rename to Assets/Editor/Translation/scriptcanvas_en_us.ts
diff --git a/Editor/UI/AssetBrowserRibbon.xml b/Assets/Editor/UI/AssetBrowserRibbon.xml
similarity index 100%
rename from Editor/UI/AssetBrowserRibbon.xml
rename to Assets/Editor/UI/AssetBrowserRibbon.xml
diff --git a/Editor/UI/Icons/AddSel.png b/Assets/Editor/UI/Icons/AddSel.png
similarity index 100%
rename from Editor/UI/Icons/AddSel.png
rename to Assets/Editor/UI/Icons/AddSel.png
diff --git a/Editor/UI/Icons/AlObjGrid.png b/Assets/Editor/UI/Icons/AlObjGrid.png
similarity index 100%
rename from Editor/UI/Icons/AlObjGrid.png
rename to Assets/Editor/UI/Icons/AlObjGrid.png
diff --git a/Editor/UI/Icons/AlObjSurf.png b/Assets/Editor/UI/Icons/AlObjSurf.png
similarity index 100%
rename from Editor/UI/Icons/AlObjSurf.png
rename to Assets/Editor/UI/Icons/AlObjSurf.png
diff --git a/Editor/UI/Icons/AlSelect.png b/Assets/Editor/UI/Icons/AlSelect.png
similarity index 100%
rename from Editor/UI/Icons/AlSelect.png
rename to Assets/Editor/UI/Icons/AlSelect.png
diff --git a/Editor/UI/Icons/Animation Graph.png b/Assets/Editor/UI/Icons/Animation Graph.png
similarity index 100%
rename from Editor/UI/Icons/Animation Graph.png
rename to Assets/Editor/UI/Icons/Animation Graph.png
diff --git a/Editor/UI/Icons/Asset Browser.png b/Assets/Editor/UI/Icons/Asset Browser.png
similarity index 100%
rename from Editor/UI/Icons/Asset Browser.png
rename to Assets/Editor/UI/Icons/Asset Browser.png
diff --git a/Editor/UI/Icons/AssetBrowserCheckers.png b/Assets/Editor/UI/Icons/AssetBrowserCheckers.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserCheckers.png
rename to Assets/Editor/UI/Icons/AssetBrowserCheckers.png
diff --git a/Editor/UI/Icons/AssetBrowserFilterPresets.png b/Assets/Editor/UI/Icons/AssetBrowserFilterPresets.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserFilterPresets.png
rename to Assets/Editor/UI/Icons/AssetBrowserFilterPresets.png
diff --git a/Editor/UI/Icons/AssetBrowserFromViewportSel.png b/Assets/Editor/UI/Icons/AssetBrowserFromViewportSel.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserFromViewportSel.png
rename to Assets/Editor/UI/Icons/AssetBrowserFromViewportSel.png
diff --git a/Editor/UI/Icons/AssetBrowserRefresh.png b/Assets/Editor/UI/Icons/AssetBrowserRefresh.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserRefresh.png
rename to Assets/Editor/UI/Icons/AssetBrowserRefresh.png
diff --git a/Editor/UI/Icons/AssetBrowserSelectInViewport.png b/Assets/Editor/UI/Icons/AssetBrowserSelectInViewport.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserSelectInViewport.png
rename to Assets/Editor/UI/Icons/AssetBrowserSelectInViewport.png
diff --git a/Editor/UI/Icons/AssetBrowserSound.png b/Assets/Editor/UI/Icons/AssetBrowserSound.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserSound.png
rename to Assets/Editor/UI/Icons/AssetBrowserSound.png
diff --git a/Editor/UI/Icons/AssetBrowserThumbInvalid.png b/Assets/Editor/UI/Icons/AssetBrowserThumbInvalid.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserThumbInvalid.png
rename to Assets/Editor/UI/Icons/AssetBrowserThumbInvalid.png
diff --git a/Editor/UI/Icons/AssetBrowserThumbLoading.png b/Assets/Editor/UI/Icons/AssetBrowserThumbLoading.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserThumbLoading.png
rename to Assets/Editor/UI/Icons/AssetBrowserThumbLoading.png
diff --git a/Editor/UI/Icons/AssetBrowserTooltipShadow.png b/Assets/Editor/UI/Icons/AssetBrowserTooltipShadow.png
similarity index 100%
rename from Editor/UI/Icons/AssetBrowserTooltipShadow.png
rename to Assets/Editor/UI/Icons/AssetBrowserTooltipShadow.png
diff --git a/Editor/UI/Icons/AssetFav.png b/Assets/Editor/UI/Icons/AssetFav.png
similarity index 100%
rename from Editor/UI/Icons/AssetFav.png
rename to Assets/Editor/UI/Icons/AssetFav.png
diff --git a/Editor/UI/Icons/AssetTag.png b/Assets/Editor/UI/Icons/AssetTag.png
similarity index 100%
rename from Editor/UI/Icons/AssetTag.png
rename to Assets/Editor/UI/Icons/AssetTag.png
diff --git a/Editor/UI/Icons/Attach.png b/Assets/Editor/UI/Icons/Attach.png
similarity index 100%
rename from Editor/UI/Icons/Attach.png
rename to Assets/Editor/UI/Icons/Attach.png
diff --git a/Editor/UI/Icons/AutoSync.png b/Assets/Editor/UI/Icons/AutoSync.png
similarity index 100%
rename from Editor/UI/Icons/AutoSync.png
rename to Assets/Editor/UI/Icons/AutoSync.png
diff --git a/Editor/UI/Icons/Character Tool.png b/Assets/Editor/UI/Icons/Character Tool.png
similarity index 100%
rename from Editor/UI/Icons/Character Tool.png
rename to Assets/Editor/UI/Icons/Character Tool.png
diff --git a/Editor/UI/Icons/Clone.png b/Assets/Editor/UI/Icons/Clone.png
similarity index 100%
rename from Editor/UI/Icons/Clone.png
rename to Assets/Editor/UI/Icons/Clone.png
diff --git a/Editor/UI/Icons/CloseGroup.png b/Assets/Editor/UI/Icons/CloseGroup.png
similarity index 100%
rename from Editor/UI/Icons/CloseGroup.png
rename to Assets/Editor/UI/Icons/CloseGroup.png
diff --git a/Editor/UI/Icons/Cloud.png b/Assets/Editor/UI/Icons/Cloud.png
similarity index 100%
rename from Editor/UI/Icons/Cloud.png
rename to Assets/Editor/UI/Icons/Cloud.png
diff --git a/Editor/UI/Icons/ConOpt.png b/Assets/Editor/UI/Icons/ConOpt.png
similarity index 100%
rename from Editor/UI/Icons/ConOpt.png
rename to Assets/Editor/UI/Icons/ConOpt.png
diff --git a/Editor/UI/Icons/ConvertSelToBrushes.png b/Assets/Editor/UI/Icons/ConvertSelToBrushes.png
similarity index 100%
rename from Editor/UI/Icons/ConvertSelToBrushes.png
rename to Assets/Editor/UI/Icons/ConvertSelToBrushes.png
diff --git a/Editor/UI/Icons/ConvertSelToDesigner.png b/Assets/Editor/UI/Icons/ConvertSelToDesigner.png
similarity index 100%
rename from Editor/UI/Icons/ConvertSelToDesigner.png
rename to Assets/Editor/UI/Icons/ConvertSelToDesigner.png
diff --git a/Editor/UI/Icons/ConvertSelToSimpleEntity.png b/Assets/Editor/UI/Icons/ConvertSelToSimpleEntity.png
similarity index 100%
rename from Editor/UI/Icons/ConvertSelToSimpleEntity.png
rename to Assets/Editor/UI/Icons/ConvertSelToSimpleEntity.png
diff --git a/Editor/UI/Icons/ConvertSelToStaticEntity.png b/Assets/Editor/UI/Icons/ConvertSelToStaticEntity.png
similarity index 100%
rename from Editor/UI/Icons/ConvertSelToStaticEntity.png
rename to Assets/Editor/UI/Icons/ConvertSelToStaticEntity.png
diff --git a/Editor/UI/Icons/Database View.png b/Assets/Editor/UI/Icons/Database View.png
similarity index 100%
rename from Editor/UI/Icons/Database View.png
rename to Assets/Editor/UI/Icons/Database View.png
diff --git a/Editor/UI/Icons/DelSel.png b/Assets/Editor/UI/Icons/DelSel.png
similarity index 100%
rename from Editor/UI/Icons/DelSel.png
rename to Assets/Editor/UI/Icons/DelSel.png
diff --git a/Editor/UI/Icons/Delete.png b/Assets/Editor/UI/Icons/Delete.png
similarity index 100%
rename from Editor/UI/Icons/Delete.png
rename to Assets/Editor/UI/Icons/Delete.png
diff --git a/Editor/UI/Icons/Detach.png b/Assets/Editor/UI/Icons/Detach.png
similarity index 100%
rename from Editor/UI/Icons/Detach.png
rename to Assets/Editor/UI/Icons/Detach.png
diff --git a/Editor/UI/Icons/Dialog Editor.png b/Assets/Editor/UI/Icons/Dialog Editor.png
similarity index 100%
rename from Editor/UI/Icons/Dialog Editor.png
rename to Assets/Editor/UI/Icons/Dialog Editor.png
diff --git a/Editor/UI/Icons/Edit Terrain Lighting.png b/Assets/Editor/UI/Icons/Edit Terrain Lighting.png
similarity index 100%
rename from Editor/UI/Icons/Edit Terrain Lighting.png
rename to Assets/Editor/UI/Icons/Edit Terrain Lighting.png
diff --git a/Editor/UI/Icons/Edit Vegetation.png b/Assets/Editor/UI/Icons/Edit Vegetation.png
similarity index 100%
rename from Editor/UI/Icons/Edit Vegetation.png
rename to Assets/Editor/UI/Icons/Edit Vegetation.png
diff --git a/Editor/UI/Icons/Editor Settings Manager.png b/Assets/Editor/UI/Icons/Editor Settings Manager.png
similarity index 100%
rename from Editor/UI/Icons/Editor Settings Manager.png
rename to Assets/Editor/UI/Icons/Editor Settings Manager.png
diff --git a/Editor/UI/Icons/Error Report.png b/Assets/Editor/UI/Icons/Error Report.png
similarity index 100%
rename from Editor/UI/Icons/Error Report.png
rename to Assets/Editor/UI/Icons/Error Report.png
diff --git a/Editor/UI/Icons/Export Block.png b/Assets/Editor/UI/Icons/Export Block.png
similarity index 100%
rename from Editor/UI/Icons/Export Block.png
rename to Assets/Editor/UI/Icons/Export Block.png
diff --git a/Editor/UI/Icons/Facial Editor.png b/Assets/Editor/UI/Icons/Facial Editor.png
similarity index 100%
rename from Editor/UI/Icons/Facial Editor.png
rename to Assets/Editor/UI/Icons/Facial Editor.png
diff --git a/Editor/UI/Icons/Fetch.png b/Assets/Editor/UI/Icons/Fetch.png
similarity index 100%
rename from Editor/UI/Icons/Fetch.png
rename to Assets/Editor/UI/Icons/Fetch.png
diff --git a/Editor/UI/Icons/Flatten Terrain.png b/Assets/Editor/UI/Icons/Flatten Terrain.png
similarity index 100%
rename from Editor/UI/Icons/Flatten Terrain.png
rename to Assets/Editor/UI/Icons/Flatten Terrain.png
diff --git a/Editor/UI/Icons/Follow.png b/Assets/Editor/UI/Icons/Follow.png
similarity index 100%
rename from Editor/UI/Icons/Follow.png
rename to Assets/Editor/UI/Icons/Follow.png
diff --git a/Editor/UI/Icons/FollowSnap.png b/Assets/Editor/UI/Icons/FollowSnap.png
similarity index 100%
rename from Editor/UI/Icons/FollowSnap.png
rename to Assets/Editor/UI/Icons/FollowSnap.png
diff --git a/Editor/UI/Icons/ForceSyncLevelToConsole.png b/Assets/Editor/UI/Icons/ForceSyncLevelToConsole.png
similarity index 100%
rename from Editor/UI/Icons/ForceSyncLevelToConsole.png
rename to Assets/Editor/UI/Icons/ForceSyncLevelToConsole.png
diff --git a/Editor/UI/Icons/Freeze.png b/Assets/Editor/UI/Icons/Freeze.png
similarity index 100%
rename from Editor/UI/Icons/Freeze.png
rename to Assets/Editor/UI/Icons/Freeze.png
diff --git a/Editor/UI/Icons/Front.png b/Assets/Editor/UI/Icons/Front.png
similarity index 100%
rename from Editor/UI/Icons/Front.png
rename to Assets/Editor/UI/Icons/Front.png
diff --git a/Editor/UI/Icons/GetPhysics.png b/Assets/Editor/UI/Icons/GetPhysics.png
similarity index 100%
rename from Editor/UI/Icons/GetPhysics.png
rename to Assets/Editor/UI/Icons/GetPhysics.png
diff --git a/Editor/UI/Icons/GoToObj.png b/Assets/Editor/UI/Icons/GoToObj.png
similarity index 100%
rename from Editor/UI/Icons/GoToObj.png
rename to Assets/Editor/UI/Icons/GoToObj.png
diff --git a/Editor/UI/Icons/GotoTagPoint.png b/Assets/Editor/UI/Icons/GotoTagPoint.png
similarity index 100%
rename from Editor/UI/Icons/GotoTagPoint.png
rename to Assets/Editor/UI/Icons/GotoTagPoint.png
diff --git a/Editor/UI/Icons/Group.png b/Assets/Editor/UI/Icons/Group.png
similarity index 100%
rename from Editor/UI/Icons/Group.png
rename to Assets/Editor/UI/Icons/Group.png
diff --git a/Editor/UI/Icons/Hide.png b/Assets/Editor/UI/Icons/Hide.png
similarity index 100%
rename from Editor/UI/Icons/Hide.png
rename to Assets/Editor/UI/Icons/Hide.png
diff --git a/Editor/UI/Icons/Hold.png b/Assets/Editor/UI/Icons/Hold.png
similarity index 100%
rename from Editor/UI/Icons/Hold.png
rename to Assets/Editor/UI/Icons/Hold.png
diff --git a/Editor/UI/Icons/Import Block.png b/Assets/Editor/UI/Icons/Import Block.png
similarity index 100%
rename from Editor/UI/Icons/Import Block.png
rename to Assets/Editor/UI/Icons/Import Block.png
diff --git a/Editor/UI/Icons/ImportExport Terrain Texture.png b/Assets/Editor/UI/Icons/ImportExport Terrain Texture.png
similarity index 100%
rename from Editor/UI/Icons/ImportExport Terrain Texture.png
rename to Assets/Editor/UI/Icons/ImportExport Terrain Texture.png
diff --git a/Editor/UI/Icons/Invert.png b/Assets/Editor/UI/Icons/Invert.png
similarity index 100%
rename from Editor/UI/Icons/Invert.png
rename to Assets/Editor/UI/Icons/Invert.png
diff --git a/Editor/UI/Icons/LNM Editor.png b/Assets/Editor/UI/Icons/LNM Editor.png
similarity index 100%
rename from Editor/UI/Icons/LNM Editor.png
rename to Assets/Editor/UI/Icons/LNM Editor.png
diff --git a/Editor/UI/Icons/LaunchLevel.png b/Assets/Editor/UI/Icons/LaunchLevel.png
similarity index 100%
rename from Editor/UI/Icons/LaunchLevel.png
rename to Assets/Editor/UI/Icons/LaunchLevel.png
diff --git a/Editor/UI/Icons/Layer Editor.png b/Assets/Editor/UI/Icons/Layer Editor.png
similarity index 100%
rename from Editor/UI/Icons/Layer Editor.png
rename to Assets/Editor/UI/Icons/Layer Editor.png
diff --git a/Editor/UI/Icons/Layer.png b/Assets/Editor/UI/Icons/Layer.png
similarity index 100%
rename from Editor/UI/Icons/Layer.png
rename to Assets/Editor/UI/Icons/Layer.png
diff --git a/Editor/UI/Icons/Left.png b/Assets/Editor/UI/Icons/Left.png
similarity index 100%
rename from Editor/UI/Icons/Left.png
rename to Assets/Editor/UI/Icons/Left.png
diff --git a/Editor/UI/Icons/Lighting Tool.png b/Assets/Editor/UI/Icons/Lighting Tool.png
similarity index 100%
rename from Editor/UI/Icons/Lighting Tool.png
rename to Assets/Editor/UI/Icons/Lighting Tool.png
diff --git a/Editor/UI/Icons/Link.png b/Assets/Editor/UI/Icons/Link.png
similarity index 100%
rename from Editor/UI/Icons/Link.png
rename to Assets/Editor/UI/Icons/Link.png
diff --git a/Editor/UI/Icons/LoadGameLevel.png b/Assets/Editor/UI/Icons/LoadGameLevel.png
similarity index 100%
rename from Editor/UI/Icons/LoadGameLevel.png
rename to Assets/Editor/UI/Icons/LoadGameLevel.png
diff --git a/Editor/UI/Icons/LoadGameLevel_16x16.png b/Assets/Editor/UI/Icons/LoadGameLevel_16x16.png
similarity index 100%
rename from Editor/UI/Icons/LoadGameLevel_16x16.png
rename to Assets/Editor/UI/Icons/LoadGameLevel_16x16.png
diff --git a/Editor/UI/Icons/LoadLevel.png b/Assets/Editor/UI/Icons/LoadLevel.png
similarity index 100%
rename from Editor/UI/Icons/LoadLevel.png
rename to Assets/Editor/UI/Icons/LoadLevel.png
diff --git a/Editor/UI/Icons/LoadSelObj.png b/Assets/Editor/UI/Icons/LoadSelObj.png
similarity index 100%
rename from Editor/UI/Icons/LoadSelObj.png
rename to Assets/Editor/UI/Icons/LoadSelObj.png
diff --git a/Editor/UI/Icons/LoadSelObj_16x16.png b/Assets/Editor/UI/Icons/LoadSelObj_16x16.png
similarity index 100%
rename from Editor/UI/Icons/LoadSelObj_16x16.png
rename to Assets/Editor/UI/Icons/LoadSelObj_16x16.png
diff --git a/Editor/UI/Icons/MakePref.png b/Assets/Editor/UI/Icons/MakePref.png
similarity index 100%
rename from Editor/UI/Icons/MakePref.png
rename to Assets/Editor/UI/Icons/MakePref.png
diff --git a/Editor/UI/Icons/Mannequin Editor.png b/Assets/Editor/UI/Icons/Mannequin Editor.png
similarity index 100%
rename from Editor/UI/Icons/Mannequin Editor.png
rename to Assets/Editor/UI/Icons/Mannequin Editor.png
diff --git a/Editor/UI/Icons/Mannequin.png b/Assets/Editor/UI/Icons/Mannequin.png
similarity index 100%
rename from Editor/UI/Icons/Mannequin.png
rename to Assets/Editor/UI/Icons/Mannequin.png
diff --git a/Editor/UI/Icons/Map.png b/Assets/Editor/UI/Icons/Map.png
similarity index 100%
rename from Editor/UI/Icons/Map.png
rename to Assets/Editor/UI/Icons/Map.png
diff --git a/Editor/UI/Icons/Material Editor.png b/Assets/Editor/UI/Icons/Material Editor.png
similarity index 100%
rename from Editor/UI/Icons/Material Editor.png
rename to Assets/Editor/UI/Icons/Material Editor.png
diff --git a/Editor/UI/Icons/Material_Editor_16x16.png b/Assets/Editor/UI/Icons/Material_Editor_16x16.png
similarity index 100%
rename from Editor/UI/Icons/Material_Editor_16x16.png
rename to Assets/Editor/UI/Icons/Material_Editor_16x16.png
diff --git a/Editor/UI/Icons/Measurement System Tool.png b/Assets/Editor/UI/Icons/Measurement System Tool.png
similarity index 100%
rename from Editor/UI/Icons/Measurement System Tool.png
rename to Assets/Editor/UI/Icons/Measurement System Tool.png
diff --git a/Editor/UI/Icons/Missing Asset Resolver.png b/Assets/Editor/UI/Icons/Missing Asset Resolver.png
similarity index 100%
rename from Editor/UI/Icons/Missing Asset Resolver.png
rename to Assets/Editor/UI/Icons/Missing Asset Resolver.png
diff --git a/Editor/UI/Icons/Model Preview.png b/Assets/Editor/UI/Icons/Model Preview.png
similarity index 100%
rename from Editor/UI/Icons/Model Preview.png
rename to Assets/Editor/UI/Icons/Model Preview.png
diff --git a/Editor/UI/Icons/Modular Editor.png b/Assets/Editor/UI/Icons/Modular Editor.png
similarity index 100%
rename from Editor/UI/Icons/Modular Editor.png
rename to Assets/Editor/UI/Icons/Modular Editor.png
diff --git a/Editor/UI/Icons/Move.png b/Assets/Editor/UI/Icons/Move.png
similarity index 100%
rename from Editor/UI/Icons/Move.png
rename to Assets/Editor/UI/Icons/Move.png
diff --git a/Editor/UI/Icons/NavContinuousUpdate.png b/Assets/Editor/UI/Icons/NavContinuousUpdate.png
similarity index 100%
rename from Editor/UI/Icons/NavContinuousUpdate.png
rename to Assets/Editor/UI/Icons/NavContinuousUpdate.png
diff --git a/Editor/UI/Icons/NavContinuousUpdate2.png b/Assets/Editor/UI/Icons/NavContinuousUpdate2.png
similarity index 100%
rename from Editor/UI/Icons/NavContinuousUpdate2.png
rename to Assets/Editor/UI/Icons/NavContinuousUpdate2.png
diff --git a/Editor/UI/Icons/NavDebugDisplay.png b/Assets/Editor/UI/Icons/NavDebugDisplay.png
similarity index 100%
rename from Editor/UI/Icons/NavDebugDisplay.png
rename to Assets/Editor/UI/Icons/NavDebugDisplay.png
diff --git a/Editor/UI/Icons/NavNewArea.png b/Assets/Editor/UI/Icons/NavNewArea.png
similarity index 100%
rename from Editor/UI/Icons/NavNewArea.png
rename to Assets/Editor/UI/Icons/NavNewArea.png
diff --git a/Editor/UI/Icons/NavNewSeed.png b/Assets/Editor/UI/Icons/NavNewSeed.png
similarity index 100%
rename from Editor/UI/Icons/NavNewSeed.png
rename to Assets/Editor/UI/Icons/NavNewSeed.png
diff --git a/Editor/UI/Icons/NavShowAreas.png b/Assets/Editor/UI/Icons/NavShowAreas.png
similarity index 100%
rename from Editor/UI/Icons/NavShowAreas.png
rename to Assets/Editor/UI/Icons/NavShowAreas.png
diff --git a/Editor/UI/Icons/NavShowAreas2.png b/Assets/Editor/UI/Icons/NavShowAreas2.png
similarity index 100%
rename from Editor/UI/Icons/NavShowAreas2.png
rename to Assets/Editor/UI/Icons/NavShowAreas2.png
diff --git a/Editor/UI/Icons/OpenGroup.png b/Assets/Editor/UI/Icons/OpenGroup.png
similarity index 100%
rename from Editor/UI/Icons/OpenGroup.png
rename to Assets/Editor/UI/Icons/OpenGroup.png
diff --git a/Editor/UI/Icons/Perspective.png b/Assets/Editor/UI/Icons/Perspective.png
similarity index 100%
rename from Editor/UI/Icons/Perspective.png
rename to Assets/Editor/UI/Icons/Perspective.png
diff --git a/Editor/UI/Icons/QCollapsePanel/collapsed.png b/Assets/Editor/UI/Icons/QCollapsePanel/collapsed.png
similarity index 100%
rename from Editor/UI/Icons/QCollapsePanel/collapsed.png
rename to Assets/Editor/UI/Icons/QCollapsePanel/collapsed.png
diff --git a/Editor/UI/Icons/QCollapsePanel/open.png b/Assets/Editor/UI/Icons/QCollapsePanel/open.png
similarity index 100%
rename from Editor/UI/Icons/QCollapsePanel/open.png
rename to Assets/Editor/UI/Icons/QCollapsePanel/open.png
diff --git a/Editor/UI/Icons/QEditorCollapseGroup/arrow_down_V2.png b/Assets/Editor/UI/Icons/QEditorCollapseGroup/arrow_down_V2.png
similarity index 100%
rename from Editor/UI/Icons/QEditorCollapseGroup/arrow_down_V2.png
rename to Assets/Editor/UI/Icons/QEditorCollapseGroup/arrow_down_V2.png
diff --git a/Editor/UI/Icons/QEditorCollapseGroup/arrow_right_V2.png b/Assets/Editor/UI/Icons/QEditorCollapseGroup/arrow_right_V2.png
similarity index 100%
rename from Editor/UI/Icons/QEditorCollapseGroup/arrow_right_V2.png
rename to Assets/Editor/UI/Icons/QEditorCollapseGroup/arrow_right_V2.png
diff --git a/Editor/UI/Icons/Redo.png b/Assets/Editor/UI/Icons/Redo.png
similarity index 100%
rename from Editor/UI/Icons/Redo.png
rename to Assets/Editor/UI/Icons/Redo.png
diff --git a/Editor/UI/Icons/RefCoord.png b/Assets/Editor/UI/Icons/RefCoord.png
similarity index 100%
rename from Editor/UI/Icons/RefCoord.png
rename to Assets/Editor/UI/Icons/RefCoord.png
diff --git a/Editor/UI/Icons/Reload Terrain-.png b/Assets/Editor/UI/Icons/Reload Terrain-.png
similarity index 100%
rename from Editor/UI/Icons/Reload Terrain-.png
rename to Assets/Editor/UI/Icons/Reload Terrain-.png
diff --git a/Editor/UI/Icons/Reload Terrain.png b/Assets/Editor/UI/Icons/Reload Terrain.png
similarity index 100%
rename from Editor/UI/Icons/Reload Terrain.png
rename to Assets/Editor/UI/Icons/Reload Terrain.png
diff --git a/Editor/UI/Icons/ReloadAll.png b/Assets/Editor/UI/Icons/ReloadAll.png
similarity index 100%
rename from Editor/UI/Icons/ReloadAll.png
rename to Assets/Editor/UI/Icons/ReloadAll.png
diff --git a/Editor/UI/Icons/Rename.png b/Assets/Editor/UI/Icons/Rename.png
similarity index 100%
rename from Editor/UI/Icons/Rename.png
rename to Assets/Editor/UI/Icons/Rename.png
diff --git a/Editor/UI/Icons/ResetPhysics.png b/Assets/Editor/UI/Icons/ResetPhysics.png
similarity index 100%
rename from Editor/UI/Icons/ResetPhysics.png
rename to Assets/Editor/UI/Icons/ResetPhysics.png
diff --git a/Editor/UI/Icons/Resize Terrain.png b/Assets/Editor/UI/Icons/Resize Terrain.png
similarity index 100%
rename from Editor/UI/Icons/Resize Terrain.png
rename to Assets/Editor/UI/Icons/Resize Terrain.png
diff --git a/Editor/UI/Icons/Rotate.png b/Assets/Editor/UI/Icons/Rotate.png
similarity index 100%
rename from Editor/UI/Icons/Rotate.png
rename to Assets/Editor/UI/Icons/Rotate.png
diff --git a/Editor/UI/Icons/Ruler.png b/Assets/Editor/UI/Icons/Ruler.png
similarity index 100%
rename from Editor/UI/Icons/Ruler.png
rename to Assets/Editor/UI/Icons/Ruler.png
diff --git a/Editor/UI/Icons/Save as Geometry.png b/Assets/Editor/UI/Icons/Save as Geometry.png
similarity index 100%
rename from Editor/UI/Icons/Save as Geometry.png
rename to Assets/Editor/UI/Icons/Save as Geometry.png
diff --git a/Editor/UI/Icons/SaveGameLevel.png b/Assets/Editor/UI/Icons/SaveGameLevel.png
similarity index 100%
rename from Editor/UI/Icons/SaveGameLevel.png
rename to Assets/Editor/UI/Icons/SaveGameLevel.png
diff --git a/Editor/UI/Icons/SaveSelObj.png b/Assets/Editor/UI/Icons/SaveSelObj.png
similarity index 100%
rename from Editor/UI/Icons/SaveSelObj.png
rename to Assets/Editor/UI/Icons/SaveSelObj.png
diff --git a/Editor/UI/Icons/SaveTagPoint.png b/Assets/Editor/UI/Icons/SaveTagPoint.png
similarity index 100%
rename from Editor/UI/Icons/SaveTagPoint.png
rename to Assets/Editor/UI/Icons/SaveTagPoint.png
diff --git a/Editor/UI/Icons/Scale.png b/Assets/Editor/UI/Icons/Scale.png
similarity index 100%
rename from Editor/UI/Icons/Scale.png
rename to Assets/Editor/UI/Icons/Scale.png
diff --git a/Editor/UI/Icons/SelObjType.png b/Assets/Editor/UI/Icons/SelObjType.png
similarity index 100%
rename from Editor/UI/Icons/SelObjType.png
rename to Assets/Editor/UI/Icons/SelObjType.png
diff --git a/Editor/UI/Icons/Select Objects.png b/Assets/Editor/UI/Icons/Select Objects.png
similarity index 100%
rename from Editor/UI/Icons/Select Objects.png
rename to Assets/Editor/UI/Icons/Select Objects.png
diff --git a/Editor/UI/Icons/Select.png b/Assets/Editor/UI/Icons/Select.png
similarity index 100%
rename from Editor/UI/Icons/Select.png
rename to Assets/Editor/UI/Icons/Select.png
diff --git a/Editor/UI/Icons/SelectAll.png b/Assets/Editor/UI/Icons/SelectAll.png
similarity index 100%
rename from Editor/UI/Icons/SelectAll.png
rename to Assets/Editor/UI/Icons/SelectAll.png
diff --git a/Editor/UI/Icons/SelectNone.png b/Assets/Editor/UI/Icons/SelectNone.png
similarity index 100%
rename from Editor/UI/Icons/SelectNone.png
rename to Assets/Editor/UI/Icons/SelectNone.png
diff --git a/Editor/UI/Icons/SelectObjects.png b/Assets/Editor/UI/Icons/SelectObjects.png
similarity index 100%
rename from Editor/UI/Icons/SelectObjects.png
rename to Assets/Editor/UI/Icons/SelectObjects.png
diff --git a/Editor/UI/Icons/SelectTerrainArea.png b/Assets/Editor/UI/Icons/SelectTerrainArea.png
similarity index 100%
rename from Editor/UI/Icons/SelectTerrainArea.png
rename to Assets/Editor/UI/Icons/SelectTerrainArea.png
diff --git a/Editor/UI/Icons/SelectionMask.bmp b/Assets/Editor/UI/Icons/SelectionMask.bmp
similarity index 100%
rename from Editor/UI/Icons/SelectionMask.bmp
rename to Assets/Editor/UI/Icons/SelectionMask.bmp
diff --git a/Editor/UI/Icons/SetHeight.png b/Assets/Editor/UI/Icons/SetHeight.png
similarity index 100%
rename from Editor/UI/Icons/SetHeight.png
rename to Assets/Editor/UI/Icons/SetHeight.png
diff --git a/Editor/UI/Icons/ShowRollup.png b/Assets/Editor/UI/Icons/ShowRollup.png
similarity index 100%
rename from Editor/UI/Icons/ShowRollup.png
rename to Assets/Editor/UI/Icons/ShowRollup.png
diff --git a/Editor/UI/Icons/SimObj.png b/Assets/Editor/UI/Icons/SimObj.png
similarity index 100%
rename from Editor/UI/Icons/SimObj.png
rename to Assets/Editor/UI/Icons/SimObj.png
diff --git a/Editor/UI/Icons/Smart Objects Editor.png b/Assets/Editor/UI/Icons/Smart Objects Editor.png
similarity index 100%
rename from Editor/UI/Icons/Smart Objects Editor.png
rename to Assets/Editor/UI/Icons/Smart Objects Editor.png
diff --git a/Editor/UI/Icons/Smooth Terrain.png b/Assets/Editor/UI/Icons/Smooth Terrain.png
similarity index 100%
rename from Editor/UI/Icons/Smooth Terrain.png
rename to Assets/Editor/UI/Icons/Smooth Terrain.png
diff --git a/Editor/UI/Icons/SnapAngle.png b/Assets/Editor/UI/Icons/SnapAngle.png
similarity index 100%
rename from Editor/UI/Icons/SnapAngle.png
rename to Assets/Editor/UI/Icons/SnapAngle.png
diff --git a/Editor/UI/Icons/SnapGrid.png b/Assets/Editor/UI/Icons/SnapGrid.png
similarity index 100%
rename from Editor/UI/Icons/SnapGrid.png
rename to Assets/Editor/UI/Icons/SnapGrid.png
diff --git a/Editor/UI/Icons/SyncCamera.png b/Assets/Editor/UI/Icons/SyncCamera.png
similarity index 100%
rename from Editor/UI/Icons/SyncCamera.png
rename to Assets/Editor/UI/Icons/SyncCamera.png
diff --git a/Editor/UI/Icons/SyncData.png b/Assets/Editor/UI/Icons/SyncData.png
similarity index 100%
rename from Editor/UI/Icons/SyncData.png
rename to Assets/Editor/UI/Icons/SyncData.png
diff --git a/Editor/UI/Icons/Terrain Editor.png b/Assets/Editor/UI/Icons/Terrain Editor.png
similarity index 100%
rename from Editor/UI/Icons/Terrain Editor.png
rename to Assets/Editor/UI/Icons/Terrain Editor.png
diff --git a/Editor/UI/Icons/Terrain Texture Layers.png b/Assets/Editor/UI/Icons/Terrain Texture Layers.png
similarity index 100%
rename from Editor/UI/Icons/Terrain Texture Layers.png
rename to Assets/Editor/UI/Icons/Terrain Texture Layers.png
diff --git a/Editor/UI/Icons/Time of Day.png b/Assets/Editor/UI/Icons/Time of Day.png
similarity index 100%
rename from Editor/UI/Icons/Time of Day.png
rename to Assets/Editor/UI/Icons/Time of Day.png
diff --git a/Editor/UI/Icons/Top.png b/Assets/Editor/UI/Icons/Top.png
similarity index 100%
rename from Editor/UI/Icons/Top.png
rename to Assets/Editor/UI/Icons/Top.png
diff --git a/Editor/UI/Icons/Track View.png b/Assets/Editor/UI/Icons/Track View.png
similarity index 100%
rename from Editor/UI/Icons/Track View.png
rename to Assets/Editor/UI/Icons/Track View.png
diff --git a/Editor/UI/Icons/UI Emulator.png b/Assets/Editor/UI/Icons/UI Emulator.png
similarity index 100%
rename from Editor/UI/Icons/UI Emulator.png
rename to Assets/Editor/UI/Icons/UI Emulator.png
diff --git a/Editor/UI/Icons/Undo.png b/Assets/Editor/UI/Icons/Undo.png
similarity index 100%
rename from Editor/UI/Icons/Undo.png
rename to Assets/Editor/UI/Icons/Undo.png
diff --git a/Editor/UI/Icons/Unfreeze.png b/Assets/Editor/UI/Icons/Unfreeze.png
similarity index 100%
rename from Editor/UI/Icons/Unfreeze.png
rename to Assets/Editor/UI/Icons/Unfreeze.png
diff --git a/Editor/UI/Icons/Ungroup.png b/Assets/Editor/UI/Icons/Ungroup.png
similarity index 100%
rename from Editor/UI/Icons/Ungroup.png
rename to Assets/Editor/UI/Icons/Ungroup.png
diff --git a/Editor/UI/Icons/UnhideAll.png b/Assets/Editor/UI/Icons/UnhideAll.png
similarity index 100%
rename from Editor/UI/Icons/UnhideAll.png
rename to Assets/Editor/UI/Icons/UnhideAll.png
diff --git a/Editor/UI/Icons/UnhideAll_32.png b/Assets/Editor/UI/Icons/UnhideAll_32.png
similarity index 100%
rename from Editor/UI/Icons/UnhideAll_32.png
rename to Assets/Editor/UI/Icons/UnhideAll_32.png
diff --git a/Editor/UI/Icons/Unlink.png b/Assets/Editor/UI/Icons/Unlink.png
similarity index 100%
rename from Editor/UI/Icons/Unlink.png
rename to Assets/Editor/UI/Icons/Unlink.png
diff --git a/Editor/UI/Icons/UploadFilesToConsole.png b/Assets/Editor/UI/Icons/UploadFilesToConsole.png
similarity index 100%
rename from Editor/UI/Icons/UploadFilesToConsole.png
rename to Assets/Editor/UI/Icons/UploadFilesToConsole.png
diff --git a/Editor/UI/Icons/Vehicle Editor.png b/Assets/Editor/UI/Icons/Vehicle Editor.png
similarity index 100%
rename from Editor/UI/Icons/Vehicle Editor.png
rename to Assets/Editor/UI/Icons/Vehicle Editor.png
diff --git a/Editor/UI/Icons/VertexSnapping.png b/Assets/Editor/UI/Icons/VertexSnapping.png
similarity index 100%
rename from Editor/UI/Icons/VertexSnapping.png
rename to Assets/Editor/UI/Icons/VertexSnapping.png
diff --git a/Editor/UI/Icons/Visual Log Viewer.png b/Assets/Editor/UI/Icons/Visual Log Viewer.png
similarity index 100%
rename from Editor/UI/Icons/Visual Log Viewer.png
rename to Assets/Editor/UI/Icons/Visual Log Viewer.png
diff --git a/Editor/UI/Icons/VisualBudgetSystemAnalyzeOne.png b/Assets/Editor/UI/Icons/VisualBudgetSystemAnalyzeOne.png
similarity index 100%
rename from Editor/UI/Icons/VisualBudgetSystemAnalyzeOne.png
rename to Assets/Editor/UI/Icons/VisualBudgetSystemAnalyzeOne.png
diff --git a/Editor/UI/Icons/VisualBudgetSystemShow.png b/Assets/Editor/UI/Icons/VisualBudgetSystemShow.png
similarity index 100%
rename from Editor/UI/Icons/VisualBudgetSystemShow.png
rename to Assets/Editor/UI/Icons/VisualBudgetSystemShow.png
diff --git a/Editor/UI/Icons/VisualizeNavigationAccessibility.png b/Assets/Editor/UI/Icons/VisualizeNavigationAccessibility.png
similarity index 100%
rename from Editor/UI/Icons/VisualizeNavigationAccessibility.png
rename to Assets/Editor/UI/Icons/VisualizeNavigationAccessibility.png
diff --git a/Editor/UI/Icons/XAxis.png b/Assets/Editor/UI/Icons/XAxis.png
similarity index 100%
rename from Editor/UI/Icons/XAxis.png
rename to Assets/Editor/UI/Icons/XAxis.png
diff --git a/Editor/UI/Icons/XYAxis.png b/Assets/Editor/UI/Icons/XYAxis.png
similarity index 100%
rename from Editor/UI/Icons/XYAxis.png
rename to Assets/Editor/UI/Icons/XYAxis.png
diff --git a/Editor/UI/Icons/YAxis.png b/Assets/Editor/UI/Icons/YAxis.png
similarity index 100%
rename from Editor/UI/Icons/YAxis.png
rename to Assets/Editor/UI/Icons/YAxis.png
diff --git a/Editor/UI/Icons/Z View.png b/Assets/Editor/UI/Icons/Z View.png
similarity index 100%
rename from Editor/UI/Icons/Z View.png
rename to Assets/Editor/UI/Icons/Z View.png
diff --git a/Editor/UI/Icons/ZAxis.png b/Assets/Editor/UI/Icons/ZAxis.png
similarity index 100%
rename from Editor/UI/Icons/ZAxis.png
rename to Assets/Editor/UI/Icons/ZAxis.png
diff --git a/Editor/UI/Icons/asset_animated_geom.png b/Assets/Editor/UI/Icons/asset_animated_geom.png
similarity index 100%
rename from Editor/UI/Icons/asset_animated_geom.png
rename to Assets/Editor/UI/Icons/asset_animated_geom.png
diff --git a/Editor/UI/Icons/asset_character.png b/Assets/Editor/UI/Icons/asset_character.png
similarity index 100%
rename from Editor/UI/Icons/asset_character.png
rename to Assets/Editor/UI/Icons/asset_character.png
diff --git a/Editor/UI/Icons/asset_material.png b/Assets/Editor/UI/Icons/asset_material.png
similarity index 100%
rename from Editor/UI/Icons/asset_material.png
rename to Assets/Editor/UI/Icons/asset_material.png
diff --git a/Editor/UI/Icons/asset_missing_thumb.png b/Assets/Editor/UI/Icons/asset_missing_thumb.png
similarity index 100%
rename from Editor/UI/Icons/asset_missing_thumb.png
rename to Assets/Editor/UI/Icons/asset_missing_thumb.png
diff --git a/Editor/UI/Icons/asset_model.png b/Assets/Editor/UI/Icons/asset_model.png
similarity index 100%
rename from Editor/UI/Icons/asset_model.png
rename to Assets/Editor/UI/Icons/asset_model.png
diff --git a/Editor/UI/Icons/asset_sound.png b/Assets/Editor/UI/Icons/asset_sound.png
similarity index 100%
rename from Editor/UI/Icons/asset_sound.png
rename to Assets/Editor/UI/Icons/asset_sound.png
diff --git a/Editor/UI/Icons/asset_texture.png b/Assets/Editor/UI/Icons/asset_texture.png
similarity index 100%
rename from Editor/UI/Icons/asset_texture.png
rename to Assets/Editor/UI/Icons/asset_texture.png
diff --git a/Editor/UI/Icons/mann_clip.png b/Assets/Editor/UI/Icons/mann_clip.png
similarity index 100%
rename from Editor/UI/Icons/mann_clip.png
rename to Assets/Editor/UI/Icons/mann_clip.png
diff --git a/Editor/UI/Icons/mann_folder.png b/Assets/Editor/UI/Icons/mann_folder.png
similarity index 100%
rename from Editor/UI/Icons/mann_folder.png
rename to Assets/Editor/UI/Icons/mann_folder.png
diff --git a/Editor/UI/Icons/mann_tag.png b/Assets/Editor/UI/Icons/mann_tag.png
similarity index 100%
rename from Editor/UI/Icons/mann_tag.png
rename to Assets/Editor/UI/Icons/mann_tag.png
diff --git a/Editor/UI/Icons/toolbar/Load_Icon.png b/Assets/Editor/UI/Icons/toolbar/Load_Icon.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/Load_Icon.png
rename to Assets/Editor/UI/Icons/toolbar/Load_Icon.png
diff --git a/Editor/UI/Icons/toolbar/itemAdd.png b/Assets/Editor/UI/Icons/toolbar/itemAdd.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemAdd.png
rename to Assets/Editor/UI/Icons/toolbar/itemAdd.png
diff --git a/Editor/UI/Icons/toolbar/itemAssign.png b/Assets/Editor/UI/Icons/toolbar/itemAssign.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemAssign.png
rename to Assets/Editor/UI/Icons/toolbar/itemAssign.png
diff --git a/Editor/UI/Icons/toolbar/itemClone.png b/Assets/Editor/UI/Icons/toolbar/itemClone.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemClone.png
rename to Assets/Editor/UI/Icons/toolbar/itemClone.png
diff --git a/Editor/UI/Icons/toolbar/itemGetProperties.png b/Assets/Editor/UI/Icons/toolbar/itemGetProperties.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemGetProperties.png
rename to Assets/Editor/UI/Icons/toolbar/itemGetProperties.png
diff --git a/Editor/UI/Icons/toolbar/itemReload.png b/Assets/Editor/UI/Icons/toolbar/itemReload.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemReload.png
rename to Assets/Editor/UI/Icons/toolbar/itemReload.png
diff --git a/Editor/UI/Icons/toolbar/itemRemove.png b/Assets/Editor/UI/Icons/toolbar/itemRemove.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/itemRemove.png
rename to Assets/Editor/UI/Icons/toolbar/itemRemove.png
diff --git a/Editor/UI/Icons/toolbar/libraryAdd.png b/Assets/Editor/UI/Icons/toolbar/libraryAdd.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/libraryAdd.png
rename to Assets/Editor/UI/Icons/toolbar/libraryAdd.png
diff --git a/Editor/UI/Icons/toolbar/libraryLoad.png b/Assets/Editor/UI/Icons/toolbar/libraryLoad.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/libraryLoad.png
rename to Assets/Editor/UI/Icons/toolbar/libraryLoad.png
diff --git a/Editor/UI/Icons/toolbar/libraryReload.png b/Assets/Editor/UI/Icons/toolbar/libraryReload.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/libraryReload.png
rename to Assets/Editor/UI/Icons/toolbar/libraryReload.png
diff --git a/Editor/UI/Icons/toolbar/libraryRemove.png b/Assets/Editor/UI/Icons/toolbar/libraryRemove.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/libraryRemove.png
rename to Assets/Editor/UI/Icons/toolbar/libraryRemove.png
diff --git a/Editor/UI/Icons/toolbar/librarySave.png b/Assets/Editor/UI/Icons/toolbar/librarySave.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/librarySave.png
rename to Assets/Editor/UI/Icons/toolbar/librarySave.png
diff --git a/Editor/UI/Icons/toolbar/particleSpecialActivate.png b/Assets/Editor/UI/Icons/toolbar/particleSpecialActivate.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/particleSpecialActivate.png
rename to Assets/Editor/UI/Icons/toolbar/particleSpecialActivate.png
diff --git a/Editor/UI/Icons/toolbar/particleSpecialReset.png b/Assets/Editor/UI/Icons/toolbar/particleSpecialReset.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/particleSpecialReset.png
rename to Assets/Editor/UI/Icons/toolbar/particleSpecialReset.png
diff --git a/Editor/UI/Icons/toolbar/standardCopy.png b/Assets/Editor/UI/Icons/toolbar/standardCopy.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/standardCopy.png
rename to Assets/Editor/UI/Icons/toolbar/standardCopy.png
diff --git a/Editor/UI/Icons/toolbar/standardPaste.png b/Assets/Editor/UI/Icons/toolbar/standardPaste.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/standardPaste.png
rename to Assets/Editor/UI/Icons/toolbar/standardPaste.png
diff --git a/Editor/UI/Icons/toolbar/standardRedo.png b/Assets/Editor/UI/Icons/toolbar/standardRedo.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/standardRedo.png
rename to Assets/Editor/UI/Icons/toolbar/standardRedo.png
diff --git a/Editor/UI/Icons/toolbar/standardUndo.png b/Assets/Editor/UI/Icons/toolbar/standardUndo.png
similarity index 100%
rename from Editor/UI/Icons/toolbar/standardUndo.png
rename to Assets/Editor/UI/Icons/toolbar/standardUndo.png
diff --git a/Editor/UI/Icons/treeview/ParticleEditor/empty_icon.png b/Assets/Editor/UI/Icons/treeview/ParticleEditor/empty_icon.png
similarity index 100%
rename from Editor/UI/Icons/treeview/ParticleEditor/empty_icon.png
rename to Assets/Editor/UI/Icons/treeview/ParticleEditor/empty_icon.png
diff --git a/Editor/UI/Icons/treeview/ParticleEditor/group_icon.png b/Assets/Editor/UI/Icons/treeview/ParticleEditor/group_icon.png
similarity index 100%
rename from Editor/UI/Icons/treeview/ParticleEditor/group_icon.png
rename to Assets/Editor/UI/Icons/treeview/ParticleEditor/group_icon.png
diff --git a/Editor/UI/Icons/treeview/ParticleEditor/group_with_lod_icon.png b/Assets/Editor/UI/Icons/treeview/ParticleEditor/group_with_lod_icon.png
similarity index 100%
rename from Editor/UI/Icons/treeview/ParticleEditor/group_with_lod_icon.png
rename to Assets/Editor/UI/Icons/treeview/ParticleEditor/group_with_lod_icon.png
diff --git a/Editor/UI/Icons/treeview/ParticleEditor/lod_icon.png b/Assets/Editor/UI/Icons/treeview/ParticleEditor/lod_icon.png
similarity index 100%
rename from Editor/UI/Icons/treeview/ParticleEditor/lod_icon.png
rename to Assets/Editor/UI/Icons/treeview/ParticleEditor/lod_icon.png
diff --git a/Editor/UI/Icons/treeview/group.png b/Assets/Editor/UI/Icons/treeview/group.png
similarity index 100%
rename from Editor/UI/Icons/treeview/group.png
rename to Assets/Editor/UI/Icons/treeview/group.png
diff --git a/Editor/UI/Icons/treeview/group_inactive.png b/Assets/Editor/UI/Icons/treeview/group_inactive.png
similarity index 100%
rename from Editor/UI/Icons/treeview/group_inactive.png
rename to Assets/Editor/UI/Icons/treeview/group_inactive.png
diff --git a/Editor/UI/Icons/treeview/item.png b/Assets/Editor/UI/Icons/treeview/item.png
similarity index 100%
rename from Editor/UI/Icons/treeview/item.png
rename to Assets/Editor/UI/Icons/treeview/item.png
diff --git a/Editor/UI/Icons/treeview/item_inactive.png b/Assets/Editor/UI/Icons/treeview/item_inactive.png
similarity index 100%
rename from Editor/UI/Icons/treeview/item_inactive.png
rename to Assets/Editor/UI/Icons/treeview/item_inactive.png
diff --git a/Editor/UI/WipFeatures.xml b/Assets/Editor/UI/WipFeatures.xml
similarity index 100%
rename from Editor/UI/WipFeatures.xml
rename to Assets/Editor/UI/WipFeatures.xml
diff --git a/Editor/UI/releaseTranslations.py b/Assets/Editor/UI/releaseTranslations.py
similarity index 100%
rename from Editor/UI/releaseTranslations.py
rename to Assets/Editor/UI/releaseTranslations.py
diff --git a/Editor/UI/removeTranslationFiles.py b/Assets/Editor/UI/removeTranslationFiles.py
similarity index 100%
rename from Editor/UI/removeTranslationFiles.py
rename to Assets/Editor/UI/removeTranslationFiles.py
diff --git a/Editor/UI/updateTranslatableText.py b/Assets/Editor/UI/updateTranslatableText.py
similarity index 100%
rename from Editor/UI/updateTranslatableText.py
rename to Assets/Editor/UI/updateTranslatableText.py
diff --git a/Editor/UserTools.xml b/Assets/Editor/UserTools.xml
similarity index 100%
rename from Editor/UserTools.xml
rename to Assets/Editor/UserTools.xml
diff --git a/Editor/asset_thumbnail.tod b/Assets/Editor/asset_thumbnail.tod
similarity index 100%
rename from Editor/asset_thumbnail.tod
rename to Assets/Editor/asset_thumbnail.tod
diff --git a/Editor/default_time_of_day.xml b/Assets/Editor/default_time_of_day.xml
similarity index 100%
rename from Editor/default_time_of_day.xml
rename to Assets/Editor/default_time_of_day.xml
diff --git a/Editor/uiCanvasEditorResolutionPresets.xml b/Assets/Editor/uiCanvasEditorResolutionPresets.xml
similarity index 100%
rename from Editor/uiCanvasEditorResolutionPresets.xml
rename to Assets/Editor/uiCanvasEditorResolutionPresets.xml
diff --git a/Engine/Config/AutoTestChain.cfg b/Assets/Engine/Config/AutoTestChain.cfg
similarity index 100%
rename from Engine/Config/AutoTestChain.cfg
rename to Assets/Engine/Config/AutoTestChain.cfg
diff --git a/Engine/Config/AutoTestTimeDemo.cfg b/Assets/Engine/Config/AutoTestTimeDemo.cfg
similarity index 100%
rename from Engine/Config/AutoTestTimeDemo.cfg
rename to Assets/Engine/Config/AutoTestTimeDemo.cfg
diff --git a/Engine/Config/AutotestPlaythrough.cfg b/Assets/Engine/Config/AutotestPlaythrough.cfg
similarity index 100%
rename from Engine/Config/AutotestPlaythrough.cfg
rename to Assets/Engine/Config/AutotestPlaythrough.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Full.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Full.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Full.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Full.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_GameEffects.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_GameEffects.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_GameEffects.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_GameEffects.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_ObjectDetail.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_ObjectDetail.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_ObjectDetail.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_ObjectDetail.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Particles.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Particles.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Particles.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Particles.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Physics.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Physics.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Physics.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Physics.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_PostProcessing.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_PostProcessing.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_PostProcessing.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_PostProcessing.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Quality.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Quality.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Quality.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Quality.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Shading.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Shading.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Shading.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Shading.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Shadows.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Shadows.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Shadows.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Shadows.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Sound.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Sound.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Sound.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Sound.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Texture.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Texture.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Texture.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Texture.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_TextureResolution.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_TextureResolution.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_TextureResolution.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_TextureResolution.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_VolumetricEffects.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_VolumetricEffects.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_VolumetricEffects.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_VolumetricEffects.cfg
diff --git a/Engine/Config/CVarGroups/sys_spec_Water.cfg b/Assets/Engine/Config/CVarGroups/sys_spec_Water.cfg
similarity index 100%
rename from Engine/Config/CVarGroups/sys_spec_Water.cfg
rename to Assets/Engine/Config/CVarGroups/sys_spec_Water.cfg
diff --git a/Engine/Config/HDD_cache.xml b/Assets/Engine/Config/HDD_cache.xml
similarity index 100%
rename from Engine/Config/HDD_cache.xml
rename to Assets/Engine/Config/HDD_cache.xml
diff --git a/Engine/Config/PerfHud_PC.xml b/Assets/Engine/Config/PerfHud_PC.xml
similarity index 100%
rename from Engine/Config/PerfHud_PC.xml
rename to Assets/Engine/Config/PerfHud_PC.xml
diff --git a/Engine/Config/aidebug.cfg b/Assets/Engine/Config/aidebug.cfg
similarity index 100%
rename from Engine/Config/aidebug.cfg
rename to Assets/Engine/Config/aidebug.cfg
diff --git a/Engine/Config/artprof.cfg b/Assets/Engine/Config/artprof.cfg
similarity index 100%
rename from Engine/Config/artprof.cfg
rename to Assets/Engine/Config/artprof.cfg
diff --git a/Engine/Config/artprof_user.cfg b/Assets/Engine/Config/artprof_user.cfg
similarity index 100%
rename from Engine/Config/artprof_user.cfg
rename to Assets/Engine/Config/artprof_user.cfg
diff --git a/Engine/Config/benchmark_cpu.cfg b/Assets/Engine/Config/benchmark_cpu.cfg
similarity index 100%
rename from Engine/Config/benchmark_cpu.cfg
rename to Assets/Engine/Config/benchmark_cpu.cfg
diff --git a/Engine/Config/benchmark_gpu.cfg b/Assets/Engine/Config/benchmark_gpu.cfg
similarity index 100%
rename from Engine/Config/benchmark_gpu.cfg
rename to Assets/Engine/Config/benchmark_gpu.cfg
diff --git a/Engine/Config/config.dat b/Assets/Engine/Config/config.dat
similarity index 100%
rename from Engine/Config/config.dat
rename to Assets/Engine/Config/config.dat
diff --git a/Engine/Config/engine_core.thread_config b/Assets/Engine/Config/engine_core.thread_config
similarity index 100%
rename from Engine/Config/engine_core.thread_config
rename to Assets/Engine/Config/engine_core.thread_config
diff --git a/Engine/Config/engine_sandbox.thread_config b/Assets/Engine/Config/engine_sandbox.thread_config
similarity index 100%
rename from Engine/Config/engine_sandbox.thread_config
rename to Assets/Engine/Config/engine_sandbox.thread_config
diff --git a/Engine/Config/gpu/amd.txt b/Assets/Engine/Config/gpu/amd.txt
similarity index 100%
rename from Engine/Config/gpu/amd.txt
rename to Assets/Engine/Config/gpu/amd.txt
diff --git a/Engine/Config/gpu/android_gpus.xml b/Assets/Engine/Config/gpu/android_gpus.xml
similarity index 100%
rename from Engine/Config/gpu/android_gpus.xml
rename to Assets/Engine/Config/gpu/android_gpus.xml
diff --git a/Engine/Config/gpu/android_models.xml b/Assets/Engine/Config/gpu/android_models.xml
similarity index 100%
rename from Engine/Config/gpu/android_models.xml
rename to Assets/Engine/Config/gpu/android_models.xml
diff --git a/Engine/Config/gpu/intel.txt b/Assets/Engine/Config/gpu/intel.txt
similarity index 100%
rename from Engine/Config/gpu/intel.txt
rename to Assets/Engine/Config/gpu/intel.txt
diff --git a/Engine/Config/gpu/ios_models.xml b/Assets/Engine/Config/gpu/ios_models.xml
similarity index 100%
rename from Engine/Config/gpu/ios_models.xml
rename to Assets/Engine/Config/gpu/ios_models.xml
diff --git a/Engine/Config/gpu/nvidia.txt b/Assets/Engine/Config/gpu/nvidia.txt
similarity index 100%
rename from Engine/Config/gpu/nvidia.txt
rename to Assets/Engine/Config/gpu/nvidia.txt
diff --git a/Engine/Config/mgpu.cfg b/Assets/Engine/Config/mgpu.cfg
similarity index 100%
rename from Engine/Config/mgpu.cfg
rename to Assets/Engine/Config/mgpu.cfg
diff --git a/Engine/Config/multiplayer.cfg b/Assets/Engine/Config/multiplayer.cfg
similarity index 100%
rename from Engine/Config/multiplayer.cfg
rename to Assets/Engine/Config/multiplayer.cfg
diff --git a/Engine/Config/multiplayer_console.cfg b/Assets/Engine/Config/multiplayer_console.cfg
similarity index 100%
rename from Engine/Config/multiplayer_console.cfg
rename to Assets/Engine/Config/multiplayer_console.cfg
diff --git a/Engine/Config/multiplayer_pc.cfg b/Assets/Engine/Config/multiplayer_pc.cfg
similarity index 100%
rename from Engine/Config/multiplayer_pc.cfg
rename to Assets/Engine/Config/multiplayer_pc.cfg
diff --git a/Engine/Config/performance.cfg b/Assets/Engine/Config/performance.cfg
similarity index 100%
rename from Engine/Config/performance.cfg
rename to Assets/Engine/Config/performance.cfg
diff --git a/Engine/Config/recording.cfg b/Assets/Engine/Config/recording.cfg
similarity index 100%
rename from Engine/Config/recording.cfg
rename to Assets/Engine/Config/recording.cfg
diff --git a/Engine/Config/singleplayer.cfg b/Assets/Engine/Config/singleplayer.cfg
similarity index 100%
rename from Engine/Config/singleplayer.cfg
rename to Assets/Engine/Config/singleplayer.cfg
diff --git a/Engine/Config/sketch_off.cfg b/Assets/Engine/Config/sketch_off.cfg
similarity index 100%
rename from Engine/Config/sketch_off.cfg
rename to Assets/Engine/Config/sketch_off.cfg
diff --git a/Engine/Config/sketch_on.cfg b/Assets/Engine/Config/sketch_on.cfg
similarity index 100%
rename from Engine/Config/sketch_on.cfg
rename to Assets/Engine/Config/sketch_on.cfg
diff --git a/Engine/Config/spec/android_MaliT760.cfg b/Assets/Engine/Config/spec/android_MaliT760.cfg
similarity index 100%
rename from Engine/Config/spec/android_MaliT760.cfg
rename to Assets/Engine/Config/spec/android_MaliT760.cfg
diff --git a/Engine/Config/spec/android_high.cfg b/Assets/Engine/Config/spec/android_high.cfg
similarity index 100%
rename from Engine/Config/spec/android_high.cfg
rename to Assets/Engine/Config/spec/android_high.cfg
diff --git a/Engine/Config/spec/android_high_nogmem.cfg b/Assets/Engine/Config/spec/android_high_nogmem.cfg
similarity index 100%
rename from Engine/Config/spec/android_high_nogmem.cfg
rename to Assets/Engine/Config/spec/android_high_nogmem.cfg
diff --git a/Engine/Config/spec/android_low.cfg b/Assets/Engine/Config/spec/android_low.cfg
similarity index 100%
rename from Engine/Config/spec/android_low.cfg
rename to Assets/Engine/Config/spec/android_low.cfg
diff --git a/Engine/Config/spec/android_medium.cfg b/Assets/Engine/Config/spec/android_medium.cfg
similarity index 100%
rename from Engine/Config/spec/android_medium.cfg
rename to Assets/Engine/Config/spec/android_medium.cfg
diff --git a/Engine/Config/spec/android_veryhigh.cfg b/Assets/Engine/Config/spec/android_veryhigh.cfg
similarity index 100%
rename from Engine/Config/spec/android_veryhigh.cfg
rename to Assets/Engine/Config/spec/android_veryhigh.cfg
diff --git a/Engine/Config/spec/ios_high.cfg b/Assets/Engine/Config/spec/ios_high.cfg
similarity index 100%
rename from Engine/Config/spec/ios_high.cfg
rename to Assets/Engine/Config/spec/ios_high.cfg
diff --git a/Engine/Config/spec/ios_low.cfg b/Assets/Engine/Config/spec/ios_low.cfg
similarity index 100%
rename from Engine/Config/spec/ios_low.cfg
rename to Assets/Engine/Config/spec/ios_low.cfg
diff --git a/Engine/Config/spec/ios_medium.cfg b/Assets/Engine/Config/spec/ios_medium.cfg
similarity index 100%
rename from Engine/Config/spec/ios_medium.cfg
rename to Assets/Engine/Config/spec/ios_medium.cfg
diff --git a/Engine/Config/spec/ios_veryhigh.cfg b/Assets/Engine/Config/spec/ios_veryhigh.cfg
similarity index 100%
rename from Engine/Config/spec/ios_veryhigh.cfg
rename to Assets/Engine/Config/spec/ios_veryhigh.cfg
diff --git a/Engine/Config/spec/osx_metal_high.cfg b/Assets/Engine/Config/spec/osx_metal_high.cfg
similarity index 100%
rename from Engine/Config/spec/osx_metal_high.cfg
rename to Assets/Engine/Config/spec/osx_metal_high.cfg
diff --git a/Engine/Config/spec/osx_metal_low.cfg b/Assets/Engine/Config/spec/osx_metal_low.cfg
similarity index 100%
rename from Engine/Config/spec/osx_metal_low.cfg
rename to Assets/Engine/Config/spec/osx_metal_low.cfg
diff --git a/Engine/Config/spec/osx_metal_medium.cfg b/Assets/Engine/Config/spec/osx_metal_medium.cfg
similarity index 100%
rename from Engine/Config/spec/osx_metal_medium.cfg
rename to Assets/Engine/Config/spec/osx_metal_medium.cfg
diff --git a/Engine/Config/spec/osx_metal_veryhigh.cfg b/Assets/Engine/Config/spec/osx_metal_veryhigh.cfg
similarity index 100%
rename from Engine/Config/spec/osx_metal_veryhigh.cfg
rename to Assets/Engine/Config/spec/osx_metal_veryhigh.cfg
diff --git a/Engine/Config/spec/pc_high.cfg b/Assets/Engine/Config/spec/pc_high.cfg
similarity index 100%
rename from Engine/Config/spec/pc_high.cfg
rename to Assets/Engine/Config/spec/pc_high.cfg
diff --git a/Engine/Config/spec/pc_low.cfg b/Assets/Engine/Config/spec/pc_low.cfg
similarity index 100%
rename from Engine/Config/spec/pc_low.cfg
rename to Assets/Engine/Config/spec/pc_low.cfg
diff --git a/Engine/Config/spec/pc_medium.cfg b/Assets/Engine/Config/spec/pc_medium.cfg
similarity index 100%
rename from Engine/Config/spec/pc_medium.cfg
rename to Assets/Engine/Config/spec/pc_medium.cfg
diff --git a/Engine/Config/spec/pc_veryhigh.cfg b/Assets/Engine/Config/spec/pc_veryhigh.cfg
similarity index 100%
rename from Engine/Config/spec/pc_veryhigh.cfg
rename to Assets/Engine/Config/spec/pc_veryhigh.cfg
diff --git a/Engine/Config/statoscope.cfg b/Assets/Engine/Config/statoscope.cfg
similarity index 100%
rename from Engine/Config/statoscope.cfg
rename to Assets/Engine/Config/statoscope.cfg
diff --git a/Engine/Config/user.cfg b/Assets/Engine/Config/user.cfg
similarity index 100%
rename from Engine/Config/user.cfg
rename to Assets/Engine/Config/user.cfg
diff --git a/Engine/Config/vid_capture_reset.cfg b/Assets/Engine/Config/vid_capture_reset.cfg
similarity index 100%
rename from Engine/Config/vid_capture_reset.cfg
rename to Assets/Engine/Config/vid_capture_reset.cfg
diff --git a/Engine/Config/vid_capture_setup.cfg b/Assets/Engine/Config/vid_capture_setup.cfg
similarity index 100%
rename from Engine/Config/vid_capture_setup.cfg
rename to Assets/Engine/Config/vid_capture_setup.cfg
diff --git a/Engine/Config/vid_capture_start.cfg b/Assets/Engine/Config/vid_capture_start.cfg
similarity index 100%
rename from Engine/Config/vid_capture_start.cfg
rename to Assets/Engine/Config/vid_capture_start.cfg
diff --git a/Engine/Config/vid_capture_stop.cfg b/Assets/Engine/Config/vid_capture_stop.cfg
similarity index 100%
rename from Engine/Config/vid_capture_stop.cfg
rename to Assets/Engine/Config/vid_capture_stop.cfg
diff --git a/Engine/Config/vr.cfg b/Assets/Engine/Config/vr.cfg
similarity index 100%
rename from Engine/Config/vr.cfg
rename to Assets/Engine/Config/vr.cfg
diff --git a/Engine/EngineAssets/Animated/WaterVolume.dds b/Assets/Engine/EngineAssets/Animated/WaterVolume.dds
similarity index 100%
rename from Engine/EngineAssets/Animated/WaterVolume.dds
rename to Assets/Engine/EngineAssets/Animated/WaterVolume.dds
diff --git a/Engine/EngineAssets/CodeCoverage/hit.tif b/Assets/Engine/EngineAssets/CodeCoverage/hit.tif
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/hit.tif
rename to Assets/Engine/EngineAssets/CodeCoverage/hit.tif
diff --git a/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings
rename to Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings
diff --git a/Engine/EngineAssets/CodeCoverage/pbar.tif b/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/pbar.tif
rename to Assets/Engine/EngineAssets/CodeCoverage/pbar.tif
diff --git a/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings
rename to Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings
diff --git a/Engine/EngineAssets/CodeCoverage/unexpected.tif b/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/unexpected.tif
rename to Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif
diff --git a/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings
rename to Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings
diff --git a/Engine/EngineAssets/GeomCaches/defaultGeomCache.abc b/Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.abc
similarity index 100%
rename from Engine/EngineAssets/GeomCaches/defaultGeomCache.abc
rename to Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.abc
diff --git a/Engine/EngineAssets/GeomCaches/defaultGeomCache.cbc b/Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.cbc
similarity index 100%
rename from Engine/EngineAssets/GeomCaches/defaultGeomCache.cbc
rename to Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.cbc
diff --git a/Engine/EngineAssets/GeomCaches/defaultGeomCache.ma b/Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.ma
similarity index 100%
rename from Engine/EngineAssets/GeomCaches/defaultGeomCache.ma
rename to Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.ma
diff --git a/Engine/EngineAssets/GeomCaches/defaultGeomCache.mtl b/Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.mtl
similarity index 100%
rename from Engine/EngineAssets/GeomCaches/defaultGeomCache.mtl
rename to Assets/Engine/EngineAssets/GeomCaches/defaultGeomCache.mtl
diff --git a/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF b/Assets/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF
similarity index 100%
rename from Engine/EngineAssets/Icons/AverageMemoryUsage.TIF
rename to Assets/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF
diff --git a/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF.exportsettings b/Assets/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/AverageMemoryUsage.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Icons/AverageMemoryUsage.TIF.exportsettings
diff --git a/Engine/EngineAssets/Icons/HighMemoryUsage.TIF b/Assets/Engine/EngineAssets/Icons/HighMemoryUsage.TIF
similarity index 100%
rename from Engine/EngineAssets/Icons/HighMemoryUsage.TIF
rename to Assets/Engine/EngineAssets/Icons/HighMemoryUsage.TIF
diff --git a/Engine/EngineAssets/Icons/HighMemoryUsage.TIF.exportsettings b/Assets/Engine/EngineAssets/Icons/HighMemoryUsage.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/HighMemoryUsage.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Icons/HighMemoryUsage.TIF.exportsettings
diff --git a/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif b/Assets/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif
rename to Assets/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif
diff --git a/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/LevelShaderCacheMiss.tif.exportsettings
diff --git a/Engine/EngineAssets/Icons/LivePreview.TIF b/Assets/Engine/EngineAssets/Icons/LivePreview.TIF
similarity index 100%
rename from Engine/EngineAssets/Icons/LivePreview.TIF
rename to Assets/Engine/EngineAssets/Icons/LivePreview.TIF
diff --git a/Engine/EngineAssets/Icons/LivePreview.TIF.exportsettings b/Assets/Engine/EngineAssets/Icons/LivePreview.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/LivePreview.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Icons/LivePreview.TIF.exportsettings
diff --git a/Engine/EngineAssets/Icons/LowMemoryUsage.TIF b/Assets/Engine/EngineAssets/Icons/LowMemoryUsage.TIF
similarity index 100%
rename from Engine/EngineAssets/Icons/LowMemoryUsage.TIF
rename to Assets/Engine/EngineAssets/Icons/LowMemoryUsage.TIF
diff --git a/Engine/EngineAssets/Icons/LowMemoryUsage.TIF.exportsettings b/Assets/Engine/EngineAssets/Icons/LowMemoryUsage.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/LowMemoryUsage.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Icons/LowMemoryUsage.TIF.exportsettings
diff --git a/Engine/EngineAssets/Icons/NavigationProcessing.tif b/Assets/Engine/EngineAssets/Icons/NavigationProcessing.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/NavigationProcessing.tif
rename to Assets/Engine/EngineAssets/Icons/NavigationProcessing.tif
diff --git a/Engine/EngineAssets/Icons/NavigationProcessing.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/NavigationProcessing.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/NavigationProcessing.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/NavigationProcessing.tif.exportsettings
diff --git a/Engine/EngineAssets/Icons/NullSoundSystem.tif b/Assets/Engine/EngineAssets/Icons/NullSoundSystem.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/NullSoundSystem.tif
rename to Assets/Engine/EngineAssets/Icons/NullSoundSystem.tif
diff --git a/Engine/EngineAssets/Icons/NullSoundSystem.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/NullSoundSystem.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/NullSoundSystem.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/NullSoundSystem.tif.exportsettings
diff --git a/Engine/EngineAssets/Icons/ShaderCompiling.tif b/Assets/Engine/EngineAssets/Icons/ShaderCompiling.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/ShaderCompiling.tif
rename to Assets/Engine/EngineAssets/Icons/ShaderCompiling.tif
diff --git a/Engine/EngineAssets/Icons/ShaderCompiling.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/ShaderCompiling.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/ShaderCompiling.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/ShaderCompiling.tif.exportsettings
diff --git a/Engine/EngineAssets/Icons/Streaming.tif b/Assets/Engine/EngineAssets/Icons/Streaming.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/Streaming.tif
rename to Assets/Engine/EngineAssets/Icons/Streaming.tif
diff --git a/Engine/EngineAssets/Icons/Streaming.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/Streaming.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/Streaming.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/Streaming.tif.exportsettings
diff --git a/Engine/EngineAssets/Icons/StreamingTerrain.tif b/Assets/Engine/EngineAssets/Icons/StreamingTerrain.tif
similarity index 100%
rename from Engine/EngineAssets/Icons/StreamingTerrain.tif
rename to Assets/Engine/EngineAssets/Icons/StreamingTerrain.tif
diff --git a/Engine/EngineAssets/Icons/StreamingTerrain.tif.exportsettings b/Assets/Engine/EngineAssets/Icons/StreamingTerrain.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Icons/StreamingTerrain.tif.exportsettings
rename to Assets/Engine/EngineAssets/Icons/StreamingTerrain.tif.exportsettings
diff --git a/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly b/Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly
diff --git a/Engine/EngineAssets/LevelForSliceEditing/filelist.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/filelist.xml
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml
diff --git a/Engine/EngineAssets/LevelForSliceEditing/level.pak b/Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/level.pak
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak
diff --git a/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml
diff --git a/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat
diff --git a/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml
diff --git a/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml
diff --git a/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat
diff --git a/Engine/EngineAssets/LevelForSliceEditing/tags.txt b/Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt
similarity index 100%
rename from Engine/EngineAssets/LevelForSliceEditing/tags.txt
rename to Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt
diff --git a/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl b/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl b/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/OceanInto.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/OceanInto.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/OceanOutof.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl b/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl
diff --git a/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl b/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl
rename to Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl
diff --git a/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl b/Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/PhysProxyTooBig.mtl
rename to Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl
diff --git a/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl b/Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl
rename to Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl
diff --git a/Engine/EngineAssets/Materials/Water/ocean_default.mtl b/Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/Water/ocean_default.mtl
rename to Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl
diff --git a/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl b/Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl
rename to Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl
diff --git a/Engine/EngineAssets/Materials/decals/default.mtl b/Assets/Engine/EngineAssets/Materials/decals/default.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/decals/default.mtl
rename to Assets/Engine/EngineAssets/Materials/decals/default.mtl
diff --git a/Engine/EngineAssets/Materials/lens_optics.mtl b/Assets/Engine/EngineAssets/Materials/lens_optics.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/lens_optics.mtl
rename to Assets/Engine/EngineAssets/Materials/lens_optics.mtl
diff --git a/Engine/EngineAssets/Materials/sky/sky.mtl b/Assets/Engine/EngineAssets/Materials/sky/sky.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/sky/sky.mtl
rename to Assets/Engine/EngineAssets/Materials/sky/sky.mtl
diff --git a/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl b/Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/hologram.mtl
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl
diff --git a/Engine/EngineAssets/Materials/test/Holotest/test2.tif b/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/test2.tif
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif
diff --git a/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings
diff --git a/Engine/EngineAssets/Materials/test/Holotest/tews1.tif b/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/tews1.tif
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif
diff --git a/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings
diff --git a/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf b/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/tile1.cgf
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf
diff --git a/Engine/EngineAssets/Materials/test/Holotest/tile1.max b/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max
similarity index 100%
rename from Engine/EngineAssets/Materials/test/Holotest/tile1.max
rename to Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max
diff --git a/Engine/EngineAssets/Materials/test/chromium.mtl b/Assets/Engine/EngineAssets/Materials/test/chromium.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/chromium.mtl
rename to Assets/Engine/EngineAssets/Materials/test/chromium.mtl
diff --git a/Engine/EngineAssets/Materials/test/glass2.mtl b/Assets/Engine/EngineAssets/Materials/test/glass2.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/glass2.mtl
rename to Assets/Engine/EngineAssets/Materials/test/glass2.mtl
diff --git a/Engine/EngineAssets/Materials/test/hologram.mtl b/Assets/Engine/EngineAssets/Materials/test/hologram.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/hologram.mtl
rename to Assets/Engine/EngineAssets/Materials/test/hologram.mtl
diff --git a/Engine/EngineAssets/Materials/test/lightbeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/lightbeam.mtl
rename to Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl
diff --git a/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl b/Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl
rename to Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl
diff --git a/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/lighthouseBeam.mtl
rename to Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl
diff --git a/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl
rename to Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl
diff --git a/Engine/EngineAssets/Materials/test/nodraw.mtl b/Assets/Engine/EngineAssets/Materials/test/nodraw.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/nodraw.mtl
rename to Assets/Engine/EngineAssets/Materials/test/nodraw.mtl
diff --git a/Engine/EngineAssets/Materials/test/sky.mtl b/Assets/Engine/EngineAssets/Materials/test/sky.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/sky.mtl
rename to Assets/Engine/EngineAssets/Materials/test/sky.mtl
diff --git a/Engine/EngineAssets/Materials/test/skyHDR.mtl b/Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/skyHDR.mtl
rename to Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl
diff --git a/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif b/Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif
rename to Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif
diff --git a/Engine/EngineAssets/Materials/test/textures/templeBeam.tif b/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif
similarity index 100%
rename from Engine/EngineAssets/Materials/test/textures/templeBeam.tif
rename to Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif
diff --git a/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings
rename to Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings
diff --git a/Engine/EngineAssets/Materials/test/volumeObject.mtl b/Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/volumeObject.mtl
rename to Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl
diff --git a/Engine/EngineAssets/Materials/test/volumeObject2.mtl b/Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl
similarity index 100%
rename from Engine/EngineAssets/Materials/test/volumeObject2.mtl
rename to Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl
diff --git a/Engine/EngineAssets/Objects/Default.cgf b/Assets/Engine/EngineAssets/Objects/Default.cgf
similarity index 100%
rename from Engine/EngineAssets/Objects/Default.cgf
rename to Assets/Engine/EngineAssets/Objects/Default.cgf
diff --git a/Engine/EngineAssets/Objects/helper.mtl b/Assets/Engine/EngineAssets/Objects/helper.mtl
similarity index 100%
rename from Engine/EngineAssets/Objects/helper.mtl
rename to Assets/Engine/EngineAssets/Objects/helper.mtl
diff --git a/Engine/EngineAssets/Production/MidGray.tif b/Assets/Engine/EngineAssets/Production/MidGray.tif
similarity index 100%
rename from Engine/EngineAssets/Production/MidGray.tif
rename to Assets/Engine/EngineAssets/Production/MidGray.tif
diff --git a/Engine/EngineAssets/Production/MidGray.tif.exportsettings b/Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Production/MidGray.tif.exportsettings
rename to Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings
diff --git a/Engine/EngineAssets/Production/TangentReference_ddn.tif b/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Production/TangentReference_ddn.tif
rename to Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif
diff --git a/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Production/UV.tif b/Assets/Engine/EngineAssets/Production/UV.tif
similarity index 100%
rename from Engine/EngineAssets/Production/UV.tif
rename to Assets/Engine/EngineAssets/Production/UV.tif
diff --git a/Engine/EngineAssets/Production/UV.tif.exportsettings b/Assets/Engine/EngineAssets/Production/UV.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Production/UV.tif.exportsettings
rename to Assets/Engine/EngineAssets/Production/UV.tif.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/AreaTex.dds b/Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/AreaTex.dds
rename to Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds
diff --git a/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds b/Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/NormalsFitting.dds
rename to Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds
diff --git a/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif
rename to Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif
diff --git a/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif
rename to Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif
diff --git a/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/SearchTex.dds b/Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/SearchTex.dds
rename to Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_love.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_music.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_square.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_star.TIF
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF
diff --git a/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings
diff --git a/Engine/EngineAssets/ScreenSpace/film_grain.dds b/Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/film_grain.dds
rename to Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds
diff --git a/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif b/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif
rename to Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif
diff --git a/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings
rename to Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings
diff --git a/Engine/EngineAssets/Shading/SonarVisionGradient.TIF b/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/SonarVisionGradient.TIF
rename to Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF
diff --git a/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings
diff --git a/Engine/EngineAssets/Shading/ThermalVisionGradient.tif b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif
similarity index 100%
rename from Engine/EngineAssets/Shading/ThermalVisionGradient.tif
rename to Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif
diff --git a/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings
rename to Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings
diff --git a/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF
rename to Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF
diff --git a/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings
diff --git a/Engine/EngineAssets/Shading/WaterFoam.TIF b/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/WaterFoam.TIF
rename to Assets/Engine/EngineAssets/Shading/WaterFoam.TIF
diff --git a/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings
diff --git a/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds b/Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds
similarity index 100%
rename from Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds
rename to Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds
diff --git a/Engine/EngineAssets/Shading/defaultProbe_cm.tif b/Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif
similarity index 100%
rename from Engine/EngineAssets/Shading/defaultProbe_cm.tif
rename to Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif
diff --git a/Engine/EngineAssets/Shading/environmentBRDF.tif b/Assets/Engine/EngineAssets/Shading/environmentBRDF.tif
similarity index 100%
rename from Engine/EngineAssets/Shading/environmentBRDF.tif
rename to Assets/Engine/EngineAssets/Shading/environmentBRDF.tif
diff --git a/Engine/EngineAssets/Shading/generic_reflections.tif b/Assets/Engine/EngineAssets/Shading/generic_reflections.tif
similarity index 100%
rename from Engine/EngineAssets/Shading/generic_reflections.tif
rename to Assets/Engine/EngineAssets/Shading/generic_reflections.tif
diff --git a/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings
rename to Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings
diff --git a/Engine/EngineAssets/Shading/layer_effect_anim_function.tif b/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif
similarity index 100%
rename from Engine/EngineAssets/Shading/layer_effect_anim_function.tif
rename to Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif
diff --git a/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings
rename to Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings
diff --git a/Engine/EngineAssets/Shading/nanosuit_mask.TIF b/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/nanosuit_mask.TIF
rename to Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF
diff --git a/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings
diff --git a/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF b/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF
rename to Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF
diff --git a/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings
diff --git a/Engine/EngineAssets/Shading/vignetting.TIF b/Assets/Engine/EngineAssets/Shading/vignetting.TIF
similarity index 100%
rename from Engine/EngineAssets/Shading/vignetting.TIF
rename to Assets/Engine/EngineAssets/Shading/vignetting.TIF
diff --git a/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Shading/vignetting.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings
diff --git a/Engine/EngineAssets/Sky/optical.lut b/Assets/Engine/EngineAssets/Sky/optical.lut
similarity index 100%
rename from Engine/EngineAssets/Sky/optical.lut
rename to Assets/Engine/EngineAssets/Sky/optical.lut
diff --git a/Engine/EngineAssets/Sky/stars.dat b/Assets/Engine/EngineAssets/Sky/stars.dat
similarity index 100%
rename from Engine/EngineAssets/Sky/stars.dat
rename to Assets/Engine/EngineAssets/Sky/stars.dat
diff --git a/Engine/EngineAssets/Slices/DefaultLevelSetup.slice b/Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice
similarity index 100%
rename from Engine/EngineAssets/Slices/DefaultLevelSetup.slice
rename to Assets/Engine/EngineAssets/Slices/DefaultLevelSetup.slice
diff --git a/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif
diff --git a/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif
diff --git a/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif
diff --git a/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultSolids.mtl
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl
diff --git a/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif
diff --git a/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif
diff --git a/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif
rename to Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif
diff --git a/Engine/EngineAssets/TextureMsg/NotFound.psd b/Assets/Engine/EngineAssets/TextureMsg/NotFound.psd
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound.psd
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound.psd
diff --git a/Engine/EngineAssets/TextureMsg/NotFound.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound.tif
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound.tif
diff --git a/Engine/EngineAssets/TextureMsg/NotFound_a.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound_a.tif
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif
diff --git a/Engine/EngineAssets/TextureMsg/NotFound_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound_cm.tif
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif
diff --git a/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound_ddn.tif
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif
diff --git a/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/NotFound_ddna.tif
rename to Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif
diff --git a/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif b/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif
rename to Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif
diff --git a/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/RCError.psd b/Assets/Engine/EngineAssets/TextureMsg/RCError.psd
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError.psd
rename to Assets/Engine/EngineAssets/TextureMsg/RCError.psd
diff --git a/Engine/EngineAssets/TextureMsg/RCError.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError.tif
rename to Assets/Engine/EngineAssets/TextureMsg/RCError.tif
diff --git a/Engine/EngineAssets/TextureMsg/RCError_a.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_a.tif
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif
diff --git a/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/RCError_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_cm.tif
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif
diff --git a/Engine/EngineAssets/TextureMsg/RCError_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_ddn.tif
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif
diff --git a/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/RCError_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_ddna.tif
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif
diff --git a/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMe.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMe.tif
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif
diff --git a/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif b/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ShaderCompiling.tif
rename to Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif
diff --git a/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/ShaderError.tif b/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ShaderError.tif
rename to Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif
diff --git a/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling.tif
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif
diff --git a/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings
rename to Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings
diff --git a/Engine/EngineAssets/TextureMsg/color_Black.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Black.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Black.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Black.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Blue.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Blue.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Cyan.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Cyan.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Green.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Green.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Green.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Green.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Magenta.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Magenta.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Orange.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Orange.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Purple.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Purple.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Red.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Red.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Red.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Red.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_White.tif b/Assets/Engine/EngineAssets/TextureMsg/color_White.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_White.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_White.tif
diff --git a/Engine/EngineAssets/TextureMsg/color_Yellow.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/color_Yellow.tif
rename to Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif
diff --git a/Engine/EngineAssets/TextureMsg/mipmapdebug.tif b/Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/mipmapdebug.tif
rename to Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif
diff --git a/Engine/EngineAssets/TextureMsg/orange_for_designer.tif b/Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif
similarity index 100%
rename from Engine/EngineAssets/TextureMsg/orange_for_designer.tif
rename to Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif
diff --git a/Engine/EngineAssets/Textures/BlackAlpha.tif b/Assets/Engine/EngineAssets/Textures/BlackAlpha.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/BlackAlpha.tif
rename to Assets/Engine/EngineAssets/Textures/BlackAlpha.tif
diff --git a/Engine/EngineAssets/Textures/BlackCM.tif b/Assets/Engine/EngineAssets/Textures/BlackCM.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/BlackCM.tif
rename to Assets/Engine/EngineAssets/Textures/BlackCM.tif
diff --git a/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/BlackCM.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/Cubemap/default_level_cubemap.tif b/Assets/Engine/EngineAssets/Textures/Cubemap/default_level_cubemap.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/Cubemap/default_level_cubemap.tif
rename to Assets/Engine/EngineAssets/Textures/Cubemap/default_level_cubemap.tif
diff --git a/Engine/EngineAssets/Textures/Cursor_Green.tif b/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/Cursor_Green.tif
rename to Assets/Engine/EngineAssets/Textures/Cursor_Green.tif
diff --git a/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/FogVolShadowJitter.tif b/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/FogVolShadowJitter.tif
rename to Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif
diff --git a/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds b/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/Frozen/frost_noise3.dds
rename to Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds
diff --git a/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif b/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/Frozen/frost_noise4.tif
rename to Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif
diff --git a/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif b/Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/Frozen/snow_spatter.tif
rename to Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif
diff --git a/Engine/EngineAssets/Textures/GreyAlpha.tif b/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/GreyAlpha.tif
rename to Assets/Engine/EngineAssets/Textures/GreyAlpha.tif
diff --git a/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/Palette/cloak_interlation.dds
rename to Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds
diff --git a/Engine/EngineAssets/Textures/Palette/cloak_palette.tif b/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/Palette/cloak_palette.tif
rename to Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif
diff --git a/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/Palette/cloak_sparks.dds
rename to Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds
diff --git a/Engine/EngineAssets/Textures/Palette/cloak_transition.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/Palette/cloak_transition.dds
rename to Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds
diff --git a/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif b/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif
rename to Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif
diff --git a/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/VolumeRaster.tif b/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/VolumeRaster.tif
rename to Assets/Engine/EngineAssets/Textures/VolumeRaster.tif
diff --git a/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/alienhud_distortionimage.tif b/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/alienhud_distortionimage.tif
rename to Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif
diff --git a/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/alienhud_noise1.tif b/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/alienhud_noise1.tif
rename to Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif
diff --git a/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/black.tif b/Assets/Engine/EngineAssets/Textures/black.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/black.tif
rename to Assets/Engine/EngineAssets/Textures/black.tif
diff --git a/Engine/EngineAssets/Textures/black.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/black.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/black.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/black.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/caustics_sampler.dds b/Assets/Engine/EngineAssets/Textures/caustics_sampler.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/caustics_sampler.dds
rename to Assets/Engine/EngineAssets/Textures/caustics_sampler.dds
diff --git a/Engine/EngineAssets/Textures/color.tif b/Assets/Engine/EngineAssets/Textures/color.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/color.tif
rename to Assets/Engine/EngineAssets/Textures/color.tif
diff --git a/Engine/EngineAssets/Textures/default_cch.tif b/Assets/Engine/EngineAssets/Textures/default_cch.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/default_cch.tif
rename to Assets/Engine/EngineAssets/Textures/default_cch.tif
diff --git a/Engine/EngineAssets/Textures/default_cch.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/default_cch.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/defaults/16_12.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_12.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/defaults/16_12.tif
rename to Assets/Engine/EngineAssets/Textures/defaults/16_12.tif
diff --git a/Engine/EngineAssets/Textures/defaults/16_34.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_34.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/defaults/16_34.tif
rename to Assets/Engine/EngineAssets/Textures/defaults/16_34.tif
diff --git a/Engine/EngineAssets/Textures/defaults/16_5.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_5.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/defaults/16_5.tif
rename to Assets/Engine/EngineAssets/Textures/defaults/16_5.tif
diff --git a/Engine/EngineAssets/Textures/defaults/16_grey.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/defaults/16_grey.tif
rename to Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif
diff --git a/Engine/EngineAssets/Textures/defaults/spot_default.tif b/Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/defaults/spot_default.tif
rename to Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif
diff --git a/Engine/EngineAssets/Textures/detailDecalVariation.tif b/Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/detailDecalVariation.tif
rename to Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif
diff --git a/Engine/EngineAssets/Textures/dither_2.dds b/Assets/Engine/EngineAssets/Textures/dither_2.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/dither_2.dds
rename to Assets/Engine/EngineAssets/Textures/dither_2.dds
diff --git a/Engine/EngineAssets/Textures/dither_pattern_2d.dds b/Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/dither_pattern_2d.dds
rename to Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds
diff --git a/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_Glow001.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif
diff --git a/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_Glow002.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif
diff --git a/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif
diff --git a/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif
diff --git a/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif
diff --git a/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/Flare_Sun001.tif
rename to Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif
diff --git a/Engine/EngineAssets/Textures/flares/flare01.tif b/Assets/Engine/EngineAssets/Textures/flares/flare01.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/flare01.tif
rename to Assets/Engine/EngineAssets/Textures/flares/flare01.tif
diff --git a/Engine/EngineAssets/Textures/flares/flare02.tif b/Assets/Engine/EngineAssets/Textures/flares/flare02.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/flare02.tif
rename to Assets/Engine/EngineAssets/Textures/flares/flare02.tif
diff --git a/Engine/EngineAssets/Textures/flares/ghost_grey.tif b/Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/ghost_grey.tif
rename to Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif
diff --git a/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif b/Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/ghost_multicolor.tif
rename to Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/ghost.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/ghost.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/glow.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/glow.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/orbs.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/orbs.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/ring.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/ring.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/test_demo.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/test_demo.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif
rename to Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif
diff --git a/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/flares/iris_shaft.tif b/Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/iris_shaft.tif
rename to Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif
diff --git a/Engine/EngineAssets/Textures/flares/lens_blurshape.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/lens_blurshape.tif
rename to Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif
diff --git a/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif
rename to Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif
diff --git a/Engine/EngineAssets/Textures/flares/lens_noise01.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/lens_noise01.tif
rename to Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif
diff --git a/Engine/EngineAssets/Textures/flares/lens_raindrops.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/lens_raindrops.tif
rename to Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif
diff --git a/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/lens_raindrops02.tif
rename to Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif
diff --git a/Engine/EngineAssets/Textures/flares/orb_01.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_01.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/orb_01.tif
rename to Assets/Engine/EngineAssets/Textures/flares/orb_01.tif
diff --git a/Engine/EngineAssets/Textures/flares/orb_cell01.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/orb_cell01.tif
rename to Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif
diff --git a/Engine/EngineAssets/Textures/flares/orb_cell02.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/orb_cell02.tif
rename to Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif
diff --git a/Engine/EngineAssets/Textures/flares/orb_cell03.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/orb_cell03.tif
rename to Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif
diff --git a/Engine/EngineAssets/Textures/flares/orb_cell04.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/orb_cell04.tif
rename to Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif
diff --git a/Engine/EngineAssets/Textures/flares/spectrum_full.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/spectrum_full.tif
rename to Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif
diff --git a/Engine/EngineAssets/Textures/flares/spectrum_half.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/spectrum_half.tif
rename to Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif
diff --git a/Engine/EngineAssets/Textures/flares/spectrum_quater.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/spectrum_quater.tif
rename to Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif
diff --git a/Engine/EngineAssets/Textures/flares/spectrum_specs.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/spectrum_specs.tif
rename to Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif
diff --git a/Engine/EngineAssets/Textures/flares/streak01.tif b/Assets/Engine/EngineAssets/Textures/flares/streak01.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/streak01.tif
rename to Assets/Engine/EngineAssets/Textures/flares/streak01.tif
diff --git a/Engine/EngineAssets/Textures/flares/visor_scratch.tif b/Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/flares/visor_scratch.tif
rename to Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif
diff --git a/Engine/EngineAssets/Textures/fresnel_sampler.dds b/Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/fresnel_sampler.dds
rename to Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds
diff --git a/Engine/EngineAssets/Textures/fringe_map.dds b/Assets/Engine/EngineAssets/Textures/fringe_map.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/fringe_map.dds
rename to Assets/Engine/EngineAssets/Textures/fringe_map.dds
diff --git a/Engine/EngineAssets/Textures/frost_refl2.tif b/Assets/Engine/EngineAssets/Textures/frost_refl2.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/frost_refl2.tif
rename to Assets/Engine/EngineAssets/Textures/frost_refl2.tif
diff --git a/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds b/Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds
rename to Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds
diff --git a/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif
diff --git a/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/glass_decalatlas_diff.tif
rename to Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif
diff --git a/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/grey.dds b/Assets/Engine/EngineAssets/Textures/grey.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/grey.dds
rename to Assets/Engine/EngineAssets/Textures/grey.dds
diff --git a/Engine/EngineAssets/Textures/hex.tif b/Assets/Engine/EngineAssets/Textures/hex.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hex.tif
rename to Assets/Engine/EngineAssets/Textures/hex.tif
diff --git a/Engine/EngineAssets/Textures/hex.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hex.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hex_ddn.tif b/Assets/Engine/EngineAssets/Textures/hex_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/hex_ddn.tif
diff --git a/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hex_grad.tif b/Assets/Engine/EngineAssets/Textures/hex_grad.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_grad.tif
rename to Assets/Engine/EngineAssets/Textures/hex_grad.tif
diff --git a/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_grad.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hex_line.tif b/Assets/Engine/EngineAssets/Textures/hex_line.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_line.tif
rename to Assets/Engine/EngineAssets/Textures/hex_line.tif
diff --git a/Engine/EngineAssets/Textures/hex_line.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_line.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hex_rand.tif b/Assets/Engine/EngineAssets/Textures/hex_rand.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_rand.tif
rename to Assets/Engine/EngineAssets/Textures/hex_rand.tif
diff --git a/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hex_rand.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_areas.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_areas.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_healthgradient.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_round.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_round.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_round.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_veinsblood.tif
rename to Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif
diff --git a/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/interference.dds b/Assets/Engine/EngineAssets/Textures/interference.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/interference.dds
rename to Assets/Engine/EngineAssets/Textures/interference.dds
diff --git a/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds b/Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds
rename to Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds
diff --git a/Engine/EngineAssets/Textures/moisturedroplets.tif b/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/moisturedroplets.tif
rename to Assets/Engine/EngineAssets/Textures/moisturedroplets.tif
diff --git a/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/nightvis_grad.tif b/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/nightvis_grad.tif
rename to Assets/Engine/EngineAssets/Textures/nightvis_grad.tif
diff --git a/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/noise.tif b/Assets/Engine/EngineAssets/Textures/noise.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/noise.tif
rename to Assets/Engine/EngineAssets/Textures/noise.tif
diff --git a/Engine/EngineAssets/Textures/noise3d.dds b/Assets/Engine/EngineAssets/Textures/noise3d.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/noise3d.dds
rename to Assets/Engine/EngineAssets/Textures/noise3d.dds
diff --git a/Engine/EngineAssets/Textures/oceanwaves_ddn.tif b/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/oceanwaves_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif
diff --git a/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/palletteInst.dds b/Assets/Engine/EngineAssets/Textures/palletteInst.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/palletteInst.dds
rename to Assets/Engine/EngineAssets/Textures/palletteInst.dds
diff --git a/Engine/EngineAssets/Textures/perlinNoise2d.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise2d.tif
rename to Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif
diff --git a/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif b/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif
rename to Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif
diff --git a/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif b/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif
diff --git a/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/perlinNoise_sum.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise_sum.tif
rename to Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif
diff --git a/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise_sum_small.tif
rename to Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif
diff --git a/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/pixeltex.dds b/Assets/Engine/EngineAssets/Textures/pixeltex.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/pixeltex.dds
rename to Assets/Engine/EngineAssets/Textures/pixeltex.dds
diff --git a/Engine/EngineAssets/Textures/rotrandomcm.dds b/Assets/Engine/EngineAssets/Textures/rotrandomcm.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/rotrandomcm.dds
rename to Assets/Engine/EngineAssets/Textures/rotrandomcm.dds
diff --git a/Engine/EngineAssets/Textures/scratch.tif b/Assets/Engine/EngineAssets/Textures/scratch.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/scratch.tif
rename to Assets/Engine/EngineAssets/Textures/scratch.tif
diff --git a/Engine/EngineAssets/Textures/scratch.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/scratch.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/scratch_ddn.tif b/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/scratch_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/scratch_ddn.tif
diff --git a/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/screen_noisy_bump.dds b/Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/screen_noisy_bump.dds
rename to Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds
diff --git a/Engine/EngineAssets/Textures/screenfrost_alpha.TIF b/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF
similarity index 100%
rename from Engine/EngineAssets/Textures/screenfrost_alpha.TIF
rename to Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF
diff --git a/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings b/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings
diff --git a/Engine/EngineAssets/Textures/screenfrost_ddn.TIF b/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF
similarity index 100%
rename from Engine/EngineAssets/Textures/screenfrost_ddn.TIF
rename to Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF
diff --git a/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings b/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings
rename to Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings
diff --git a/Engine/EngineAssets/Textures/snowflakes.tif b/Assets/Engine/EngineAssets/Textures/snowflakes.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/snowflakes.tif
rename to Assets/Engine/EngineAssets/Textures/snowflakes.tif
diff --git a/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/snowflakes.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/startscreen.tif b/Assets/Engine/EngineAssets/Textures/startscreen.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/startscreen.tif
rename to Assets/Engine/EngineAssets/Textures/startscreen.tif
diff --git a/Engine/EngineAssets/Textures/startscreen.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/startscreen.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/user_tex1.tif b/Assets/Engine/EngineAssets/Textures/user_tex1.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/user_tex1.tif
rename to Assets/Engine/EngineAssets/Textures/user_tex1.tif
diff --git a/Engine/EngineAssets/Textures/user_tex2.tif b/Assets/Engine/EngineAssets/Textures/user_tex2.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/user_tex2.tif
rename to Assets/Engine/EngineAssets/Textures/user_tex2.tif
diff --git a/Engine/EngineAssets/Textures/vector_noise.dds b/Assets/Engine/EngineAssets/Textures/vector_noise.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/vector_noise.dds
rename to Assets/Engine/EngineAssets/Textures/vector_noise.dds
diff --git a/Engine/EngineAssets/Textures/water_droplets.dds b/Assets/Engine/EngineAssets/Textures/water_droplets.dds
similarity index 100%
rename from Engine/EngineAssets/Textures/water_droplets.dds
rename to Assets/Engine/EngineAssets/Textures/water_droplets.dds
diff --git a/Engine/EngineAssets/Textures/water_gloss.tif b/Assets/Engine/EngineAssets/Textures/water_gloss.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/water_gloss.tif
rename to Assets/Engine/EngineAssets/Textures/water_gloss.tif
diff --git a/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/water_gloss.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/white.tif b/Assets/Engine/EngineAssets/Textures/white.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/white.tif
rename to Assets/Engine/EngineAssets/Textures/white.tif
diff --git a/Engine/EngineAssets/Textures/white.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/white.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/white.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/white.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/white_cm.tif b/Assets/Engine/EngineAssets/Textures/white_cm.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/white_cm.tif
rename to Assets/Engine/EngineAssets/Textures/white_cm.tif
diff --git a/Engine/EngineAssets/Textures/white_cm.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings
similarity index 100%
rename from Engine/EngineAssets/Textures/white_cm.tif.exportsettings
rename to Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings
diff --git a/Engine/EngineAssets/Textures/white_ddn.tif b/Assets/Engine/EngineAssets/Textures/white_ddn.tif
similarity index 100%
rename from Engine/EngineAssets/Textures/white_ddn.tif
rename to Assets/Engine/EngineAssets/Textures/white_ddn.tif
diff --git a/Engine/EngineAssets/defaulttextures.xml b/Assets/Engine/EngineAssets/defaulttextures.xml
similarity index 100%
rename from Engine/EngineAssets/defaulttextures.xml
rename to Assets/Engine/EngineAssets/defaulttextures.xml
diff --git a/Engine/Engine_Dependencies.xml b/Assets/Engine/Engine_Dependencies.xml
similarity index 100%
rename from Engine/Engine_Dependencies.xml
rename to Assets/Engine/Engine_Dependencies.xml
diff --git a/Engine/Entities/AnimObject.ent b/Assets/Engine/Entities/AnimObject.ent
similarity index 100%
rename from Engine/Entities/AnimObject.ent
rename to Assets/Engine/Entities/AnimObject.ent
diff --git a/Engine/Entities/AreaBezierVolume.ent b/Assets/Engine/Entities/AreaBezierVolume.ent
similarity index 100%
rename from Engine/Entities/AreaBezierVolume.ent
rename to Assets/Engine/Entities/AreaBezierVolume.ent
diff --git a/Engine/Entities/AreaBox.ent b/Assets/Engine/Entities/AreaBox.ent
similarity index 100%
rename from Engine/Entities/AreaBox.ent
rename to Assets/Engine/Entities/AreaBox.ent
diff --git a/Engine/Entities/AreaShape.ent b/Assets/Engine/Entities/AreaShape.ent
similarity index 100%
rename from Engine/Entities/AreaShape.ent
rename to Assets/Engine/Entities/AreaShape.ent
diff --git a/Engine/Entities/AreaSolid.ent b/Assets/Engine/Entities/AreaSolid.ent
similarity index 100%
rename from Engine/Entities/AreaSolid.ent
rename to Assets/Engine/Entities/AreaSolid.ent
diff --git a/Engine/Entities/AreaSphere.ent b/Assets/Engine/Entities/AreaSphere.ent
similarity index 100%
rename from Engine/Entities/AreaSphere.ent
rename to Assets/Engine/Entities/AreaSphere.ent
diff --git a/Engine/Entities/AreaTrigger.ent b/Assets/Engine/Entities/AreaTrigger.ent
similarity index 100%
rename from Engine/Entities/AreaTrigger.ent
rename to Assets/Engine/Entities/AreaTrigger.ent
diff --git a/Engine/Entities/AudioAreaAmbience.ent b/Assets/Engine/Entities/AudioAreaAmbience.ent
similarity index 100%
rename from Engine/Entities/AudioAreaAmbience.ent
rename to Assets/Engine/Entities/AudioAreaAmbience.ent
diff --git a/Engine/Entities/AudioAreaEntity.ent b/Assets/Engine/Entities/AudioAreaEntity.ent
similarity index 100%
rename from Engine/Entities/AudioAreaEntity.ent
rename to Assets/Engine/Entities/AudioAreaEntity.ent
diff --git a/Engine/Entities/AudioAreaRandom.ent b/Assets/Engine/Entities/AudioAreaRandom.ent
similarity index 100%
rename from Engine/Entities/AudioAreaRandom.ent
rename to Assets/Engine/Entities/AudioAreaRandom.ent
diff --git a/Engine/Entities/AudioTriggerSpot.ent b/Assets/Engine/Entities/AudioTriggerSpot.ent
similarity index 100%
rename from Engine/Entities/AudioTriggerSpot.ent
rename to Assets/Engine/Entities/AudioTriggerSpot.ent
diff --git a/Engine/Entities/BasicEntity.ent b/Assets/Engine/Entities/BasicEntity.ent
similarity index 100%
rename from Engine/Entities/BasicEntity.ent
rename to Assets/Engine/Entities/BasicEntity.ent
diff --git a/Engine/Entities/CActorWrapper.ent b/Assets/Engine/Entities/CActorWrapper.ent
similarity index 100%
rename from Engine/Entities/CActorWrapper.ent
rename to Assets/Engine/Entities/CActorWrapper.ent
diff --git a/Engine/Entities/CameraSource.ent b/Assets/Engine/Entities/CameraSource.ent
similarity index 100%
rename from Engine/Entities/CameraSource.ent
rename to Assets/Engine/Entities/CameraSource.ent
diff --git a/Engine/Entities/CameraTarget.ent b/Assets/Engine/Entities/CameraTarget.ent
similarity index 100%
rename from Engine/Entities/CameraTarget.ent
rename to Assets/Engine/Entities/CameraTarget.ent
diff --git a/Engine/Entities/Comment.ent b/Assets/Engine/Entities/Comment.ent
similarity index 100%
rename from Engine/Entities/Comment.ent
rename to Assets/Engine/Entities/Comment.ent
diff --git a/Engine/Entities/EnvironmentLight.ent b/Assets/Engine/Entities/EnvironmentLight.ent
similarity index 100%
rename from Engine/Entities/EnvironmentLight.ent
rename to Assets/Engine/Entities/EnvironmentLight.ent
diff --git a/Engine/Entities/FogVolume.ent b/Assets/Engine/Entities/FogVolume.ent
similarity index 100%
rename from Engine/Entities/FogVolume.ent
rename to Assets/Engine/Entities/FogVolume.ent
diff --git a/Engine/Entities/GeomCache.ent b/Assets/Engine/Entities/GeomCache.ent
similarity index 100%
rename from Engine/Entities/GeomCache.ent
rename to Assets/Engine/Entities/GeomCache.ent
diff --git a/Engine/Entities/Light.ent b/Assets/Engine/Entities/Light.ent
similarity index 100%
rename from Engine/Entities/Light.ent
rename to Assets/Engine/Entities/Light.ent
diff --git a/Engine/Entities/LivingEntity.ent b/Assets/Engine/Entities/LivingEntity.ent
similarity index 100%
rename from Engine/Entities/LivingEntity.ent
rename to Assets/Engine/Entities/LivingEntity.ent
diff --git a/Engine/Entities/NavigationSeedPoint.ent b/Assets/Engine/Entities/NavigationSeedPoint.ent
similarity index 100%
rename from Engine/Entities/NavigationSeedPoint.ent
rename to Assets/Engine/Entities/NavigationSeedPoint.ent
diff --git a/Engine/Entities/ParticleEffect.ent b/Assets/Engine/Entities/ParticleEffect.ent
similarity index 100%
rename from Engine/Entities/ParticleEffect.ent
rename to Assets/Engine/Entities/ParticleEffect.ent
diff --git a/Engine/Entities/ProceduralObject.ent b/Assets/Engine/Entities/ProceduralObject.ent
similarity index 100%
rename from Engine/Entities/ProceduralObject.ent
rename to Assets/Engine/Entities/ProceduralObject.ent
diff --git a/Engine/Entities/ProximityTrigger.ent b/Assets/Engine/Entities/ProximityTrigger.ent
similarity index 100%
rename from Engine/Entities/ProximityTrigger.ent
rename to Assets/Engine/Entities/ProximityTrigger.ent
diff --git a/Engine/Entities/RigidBody.ent b/Assets/Engine/Entities/RigidBody.ent
similarity index 100%
rename from Engine/Entities/RigidBody.ent
rename to Assets/Engine/Entities/RigidBody.ent
diff --git a/Engine/Entities/RigidBodyEx.ent b/Assets/Engine/Entities/RigidBodyEx.ent
similarity index 100%
rename from Engine/Entities/RigidBodyEx.ent
rename to Assets/Engine/Entities/RigidBodyEx.ent
diff --git a/Engine/Entities/SmartObject.ent b/Assets/Engine/Entities/SmartObject.ent
similarity index 100%
rename from Engine/Entities/SmartObject.ent
rename to Assets/Engine/Entities/SmartObject.ent
diff --git a/Engine/Entities/TagPoint.ent b/Assets/Engine/Entities/TagPoint.ent
similarity index 100%
rename from Engine/Entities/TagPoint.ent
rename to Assets/Engine/Entities/TagPoint.ent
diff --git a/Engine/Entities/UiCanvasRef.ent b/Assets/Engine/Entities/UiCanvasRef.ent
similarity index 100%
rename from Engine/Entities/UiCanvasRef.ent
rename to Assets/Engine/Entities/UiCanvasRef.ent
diff --git a/Engine/Fonts/Vera.ttf b/Assets/Engine/Fonts/Vera.ttf
similarity index 100%
rename from Engine/Fonts/Vera.ttf
rename to Assets/Engine/Fonts/Vera.ttf
diff --git a/Engine/Fonts/VeraMono.ttf b/Assets/Engine/Fonts/VeraMono.ttf
similarity index 100%
rename from Engine/Fonts/VeraMono.ttf
rename to Assets/Engine/Fonts/VeraMono.ttf
diff --git a/Engine/Fonts/Vera_COPYRIGHT.TXT b/Assets/Engine/Fonts/Vera_COPYRIGHT.TXT
similarity index 100%
rename from Engine/Fonts/Vera_COPYRIGHT.TXT
rename to Assets/Engine/Fonts/Vera_COPYRIGHT.TXT
diff --git a/Engine/Fonts/Vera_RELEASENOTES.TXT b/Assets/Engine/Fonts/Vera_RELEASENOTES.TXT
similarity index 100%
rename from Engine/Fonts/Vera_RELEASENOTES.TXT
rename to Assets/Engine/Fonts/Vera_RELEASENOTES.TXT
diff --git a/Engine/Fonts/console.font b/Assets/Engine/Fonts/console.font
similarity index 100%
rename from Engine/Fonts/console.font
rename to Assets/Engine/Fonts/console.font
diff --git a/Engine/Fonts/console.xml b/Assets/Engine/Fonts/console.xml
similarity index 100%
rename from Engine/Fonts/console.xml
rename to Assets/Engine/Fonts/console.xml
diff --git a/Engine/Fonts/default-ui.font b/Assets/Engine/Fonts/default-ui.font
similarity index 100%
rename from Engine/Fonts/default-ui.font
rename to Assets/Engine/Fonts/default-ui.font
diff --git a/Engine/Fonts/default-ui.xml b/Assets/Engine/Fonts/default-ui.xml
similarity index 100%
rename from Engine/Fonts/default-ui.xml
rename to Assets/Engine/Fonts/default-ui.xml
diff --git a/Engine/Fonts/default.font b/Assets/Engine/Fonts/default.font
similarity index 100%
rename from Engine/Fonts/default.font
rename to Assets/Engine/Fonts/default.font
diff --git a/Engine/Fonts/default.xml b/Assets/Engine/Fonts/default.xml
similarity index 100%
rename from Engine/Fonts/default.xml
rename to Assets/Engine/Fonts/default.xml
diff --git a/Engine/Fonts/hud.font b/Assets/Engine/Fonts/hud.font
similarity index 100%
rename from Engine/Fonts/hud.font
rename to Assets/Engine/Fonts/hud.font
diff --git a/Engine/Fonts/hud.xml b/Assets/Engine/Fonts/hud.xml
similarity index 100%
rename from Engine/Fonts/hud.xml
rename to Assets/Engine/Fonts/hud.xml
diff --git a/Engine/Libs/MaterialEffects/FXLibs/collisions.xml b/Assets/Engine/Libs/MaterialEffects/FXLibs/collisions.xml
similarity index 100%
rename from Engine/Libs/MaterialEffects/FXLibs/collisions.xml
rename to Assets/Engine/Libs/MaterialEffects/FXLibs/collisions.xml
diff --git a/Engine/Libs/MaterialEffects/materialeffects.xml b/Assets/Engine/Libs/MaterialEffects/materialeffects.xml
similarity index 100%
rename from Engine/Libs/MaterialEffects/materialeffects.xml
rename to Assets/Engine/Libs/MaterialEffects/materialeffects.xml
diff --git a/Engine/Libs/MaterialEffects/surfacetypes.xml b/Assets/Engine/Libs/MaterialEffects/surfacetypes.xml
similarity index 100%
rename from Engine/Libs/MaterialEffects/surfacetypes.xml
rename to Assets/Engine/Libs/MaterialEffects/surfacetypes.xml
diff --git a/Engine/Libs/PostEffectGroups/Default.xml b/Assets/Engine/Libs/PostEffectGroups/Default.xml
similarity index 100%
rename from Engine/Libs/PostEffectGroups/Default.xml
rename to Assets/Engine/Libs/PostEffectGroups/Default.xml
diff --git a/Engine/Objects/default/editorprimitive.mtl b/Assets/Engine/Objects/default/editorprimitive.mtl
similarity index 100%
rename from Engine/Objects/default/editorprimitive.mtl
rename to Assets/Engine/Objects/default/editorprimitive.mtl
diff --git a/Engine/Objects/default/primitive_capsule.cgf b/Assets/Engine/Objects/default/primitive_capsule.cgf
similarity index 100%
rename from Engine/Objects/default/primitive_capsule.cgf
rename to Assets/Engine/Objects/default/primitive_capsule.cgf
diff --git a/Engine/Objects/default/primitive_cube.cgf b/Assets/Engine/Objects/default/primitive_cube.cgf
similarity index 100%
rename from Engine/Objects/default/primitive_cube.cgf
rename to Assets/Engine/Objects/default/primitive_cube.cgf
diff --git a/Engine/Objects/default/primitive_plane.cgf b/Assets/Engine/Objects/default/primitive_plane.cgf
similarity index 100%
rename from Engine/Objects/default/primitive_plane.cgf
rename to Assets/Engine/Objects/default/primitive_plane.cgf
diff --git a/Engine/Objects/default/primitive_sphere.cgf b/Assets/Engine/Objects/default/primitive_sphere.cgf
similarity index 100%
rename from Engine/Objects/default/primitive_sphere.cgf
rename to Assets/Engine/Objects/default/primitive_sphere.cgf
diff --git a/Engine/Schema/Environment.xmlschema b/Assets/Engine/Schema/Environment.xmlschema
similarity index 100%
rename from Engine/Schema/Environment.xmlschema
rename to Assets/Engine/Schema/Environment.xmlschema
diff --git a/Engine/Schema/FlaresLibrary.xmlschema b/Assets/Engine/Schema/FlaresLibrary.xmlschema
similarity index 100%
rename from Engine/Schema/FlaresLibrary.xmlschema
rename to Assets/Engine/Schema/FlaresLibrary.xmlschema
diff --git a/Engine/Schema/Font.xmlschema b/Assets/Engine/Schema/Font.xmlschema
similarity index 100%
rename from Engine/Schema/Font.xmlschema
rename to Assets/Engine/Schema/Font.xmlschema
diff --git a/Engine/Schema/ParticleLibrary.xmlschema b/Assets/Engine/Schema/ParticleLibrary.xmlschema
similarity index 100%
rename from Engine/Schema/ParticleLibrary.xmlschema
rename to Assets/Engine/Schema/ParticleLibrary.xmlschema
diff --git a/Engine/Schema/cloudlibrary.xmlschema b/Assets/Engine/Schema/cloudlibrary.xmlschema
similarity index 100%
rename from Engine/Schema/cloudlibrary.xmlschema
rename to Assets/Engine/Schema/cloudlibrary.xmlschema
diff --git a/Engine/Schema/editorappdescriptor.xmlschema b/Assets/Engine/Schema/editorappdescriptor.xmlschema
similarity index 100%
rename from Engine/Schema/editorappdescriptor.xmlschema
rename to Assets/Engine/Schema/editorappdescriptor.xmlschema
diff --git a/Engine/Schema/enginedependency.xmlschema b/Assets/Engine/Schema/enginedependency.xmlschema
similarity index 100%
rename from Engine/Schema/enginedependency.xmlschema
rename to Assets/Engine/Schema/enginedependency.xmlschema
diff --git a/Engine/Schema/ent.xmlschema b/Assets/Engine/Schema/ent.xmlschema
similarity index 100%
rename from Engine/Schema/ent.xmlschema
rename to Assets/Engine/Schema/ent.xmlschema
diff --git a/Engine/Schema/gameappdescriptor.xmlschema b/Assets/Engine/Schema/gameappdescriptor.xmlschema
similarity index 100%
rename from Engine/Schema/gameappdescriptor.xmlschema
rename to Assets/Engine/Schema/gameappdescriptor.xmlschema
diff --git a/Engine/Schema/materialeffectlibrary.xmlschema b/Assets/Engine/Schema/materialeffectlibrary.xmlschema
similarity index 100%
rename from Engine/Schema/materialeffectlibrary.xmlschema
rename to Assets/Engine/Schema/materialeffectlibrary.xmlschema
diff --git a/Engine/Schema/materialeffects.xmlschema b/Assets/Engine/Schema/materialeffects.xmlschema
similarity index 100%
rename from Engine/Schema/materialeffects.xmlschema
rename to Assets/Engine/Schema/materialeffects.xmlschema
diff --git a/Engine/Schema/rainandsnowtextures.xmlschema b/Assets/Engine/Schema/rainandsnowtextures.xmlschema
similarity index 100%
rename from Engine/Schema/rainandsnowtextures.xmlschema
rename to Assets/Engine/Schema/rainandsnowtextures.xmlschema
diff --git a/Engine/Schema/surfacetypes.xmlschema b/Assets/Engine/Schema/surfacetypes.xmlschema
similarity index 100%
rename from Engine/Schema/surfacetypes.xmlschema
rename to Assets/Engine/Schema/surfacetypes.xmlschema
diff --git a/Engine/Schema/vegdescriptorlist.xmlschema b/Assets/Engine/Schema/vegdescriptorlist.xmlschema
similarity index 100%
rename from Engine/Schema/vegdescriptorlist.xmlschema
rename to Assets/Engine/Schema/vegdescriptorlist.xmlschema
diff --git a/Engine/Scripts/EngineCommon.lua b/Assets/Engine/Scripts/EngineCommon.lua
similarity index 100%
rename from Engine/Scripts/EngineCommon.lua
rename to Assets/Engine/Scripts/EngineCommon.lua
diff --git a/Engine/Scripts/Entities/AI/NavigationSeedPoint.lua b/Assets/Engine/Scripts/Entities/AI/NavigationSeedPoint.lua
similarity index 100%
rename from Engine/Scripts/Entities/AI/NavigationSeedPoint.lua
rename to Assets/Engine/Scripts/Entities/AI/NavigationSeedPoint.lua
diff --git a/Engine/Scripts/Entities/AI/SmartObject.lua b/Assets/Engine/Scripts/Entities/AI/SmartObject.lua
similarity index 100%
rename from Engine/Scripts/Entities/AI/SmartObject.lua
rename to Assets/Engine/Scripts/Entities/AI/SmartObject.lua
diff --git a/Engine/Scripts/Entities/AI/TagPoint.lua b/Assets/Engine/Scripts/Entities/AI/TagPoint.lua
similarity index 100%
rename from Engine/Scripts/Entities/AI/TagPoint.lua
rename to Assets/Engine/Scripts/Entities/AI/TagPoint.lua
diff --git a/Engine/Scripts/Entities/Actor/CActorWrapper.lua b/Assets/Engine/Scripts/Entities/Actor/CActorWrapper.lua
similarity index 100%
rename from Engine/Scripts/Entities/Actor/CActorWrapper.lua
rename to Assets/Engine/Scripts/Entities/Actor/CActorWrapper.lua
diff --git a/Engine/Scripts/Entities/Anim/MannequinObject.lua b/Assets/Engine/Scripts/Entities/Anim/MannequinObject.lua
similarity index 100%
rename from Engine/Scripts/Entities/Anim/MannequinObject.lua
rename to Assets/Engine/Scripts/Entities/Anim/MannequinObject.lua
diff --git a/Engine/Scripts/Entities/Default/GeomEntity.lua b/Assets/Engine/Scripts/Entities/Default/GeomEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/Default/GeomEntity.lua
rename to Assets/Engine/Scripts/Entities/Default/GeomEntity.lua
diff --git a/Engine/Scripts/Entities/Default/RopeEntity.lua b/Assets/Engine/Scripts/Entities/Default/RopeEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/Default/RopeEntity.lua
rename to Assets/Engine/Scripts/Entities/Default/RopeEntity.lua
diff --git a/Engine/Scripts/Entities/Environment/WaterVolume.lua b/Assets/Engine/Scripts/Entities/Environment/WaterVolume.lua
similarity index 100%
rename from Engine/Scripts/Entities/Environment/WaterVolume.lua
rename to Assets/Engine/Scripts/Entities/Environment/WaterVolume.lua
diff --git a/Engine/Scripts/Entities/Lights/EnvironmentLight.lua b/Assets/Engine/Scripts/Entities/Lights/EnvironmentLight.lua
similarity index 100%
rename from Engine/Scripts/Entities/Lights/EnvironmentLight.lua
rename to Assets/Engine/Scripts/Entities/Lights/EnvironmentLight.lua
diff --git a/Engine/Scripts/Entities/Lights/Light.lua b/Assets/Engine/Scripts/Entities/Lights/Light.lua
similarity index 100%
rename from Engine/Scripts/Entities/Lights/Light.lua
rename to Assets/Engine/Scripts/Entities/Lights/Light.lua
diff --git a/Engine/Scripts/Entities/Others/CameraSource.lua b/Assets/Engine/Scripts/Entities/Others/CameraSource.lua
similarity index 100%
rename from Engine/Scripts/Entities/Others/CameraSource.lua
rename to Assets/Engine/Scripts/Entities/Others/CameraSource.lua
diff --git a/Engine/Scripts/Entities/Others/CameraTarget.lua b/Assets/Engine/Scripts/Entities/Others/CameraTarget.lua
similarity index 100%
rename from Engine/Scripts/Entities/Others/CameraTarget.lua
rename to Assets/Engine/Scripts/Entities/Others/CameraTarget.lua
diff --git a/Engine/Scripts/Entities/Others/Comment.lua b/Assets/Engine/Scripts/Entities/Others/Comment.lua
similarity index 100%
rename from Engine/Scripts/Entities/Others/Comment.lua
rename to Assets/Engine/Scripts/Entities/Others/Comment.lua
diff --git a/Engine/Scripts/Entities/Others/ProceduralObject.lua b/Assets/Engine/Scripts/Entities/Others/ProceduralObject.lua
similarity index 100%
rename from Engine/Scripts/Entities/Others/ProceduralObject.lua
rename to Assets/Engine/Scripts/Entities/Others/ProceduralObject.lua
diff --git a/Engine/Scripts/Entities/Others/RigidBody.lua b/Assets/Engine/Scripts/Entities/Others/RigidBody.lua
similarity index 100%
rename from Engine/Scripts/Entities/Others/RigidBody.lua
rename to Assets/Engine/Scripts/Entities/Others/RigidBody.lua
diff --git a/Engine/Scripts/Entities/Particle/ParticleEffect.lua b/Assets/Engine/Scripts/Entities/Particle/ParticleEffect.lua
similarity index 100%
rename from Engine/Scripts/Entities/Particle/ParticleEffect.lua
rename to Assets/Engine/Scripts/Entities/Particle/ParticleEffect.lua
diff --git a/Engine/Scripts/Entities/Physics/AnimObject.lua b/Assets/Engine/Scripts/Entities/Physics/AnimObject.lua
similarity index 100%
rename from Engine/Scripts/Entities/Physics/AnimObject.lua
rename to Assets/Engine/Scripts/Entities/Physics/AnimObject.lua
diff --git a/Engine/Scripts/Entities/Physics/AreaBezierVolume.lua b/Assets/Engine/Scripts/Entities/Physics/AreaBezierVolume.lua
similarity index 100%
rename from Engine/Scripts/Entities/Physics/AreaBezierVolume.lua
rename to Assets/Engine/Scripts/Entities/Physics/AreaBezierVolume.lua
diff --git a/Engine/Scripts/Entities/Physics/BasicEntity.lua b/Assets/Engine/Scripts/Entities/Physics/BasicEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/Physics/BasicEntity.lua
rename to Assets/Engine/Scripts/Entities/Physics/BasicEntity.lua
diff --git a/Engine/Scripts/Entities/Physics/LivingEntity.lua b/Assets/Engine/Scripts/Entities/Physics/LivingEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/Physics/LivingEntity.lua
rename to Assets/Engine/Scripts/Entities/Physics/LivingEntity.lua
diff --git a/Engine/Scripts/Entities/Physics/RigidBodyEx.lua b/Assets/Engine/Scripts/Entities/Physics/RigidBodyEx.lua
similarity index 100%
rename from Engine/Scripts/Entities/Physics/RigidBodyEx.lua
rename to Assets/Engine/Scripts/Entities/Physics/RigidBodyEx.lua
diff --git a/Engine/Scripts/Entities/Render/FogVolume.lua b/Assets/Engine/Scripts/Entities/Render/FogVolume.lua
similarity index 100%
rename from Engine/Scripts/Entities/Render/FogVolume.lua
rename to Assets/Engine/Scripts/Entities/Render/FogVolume.lua
diff --git a/Engine/Scripts/Entities/Render/GeomCache.lua b/Assets/Engine/Scripts/Entities/Render/GeomCache.lua
similarity index 100%
rename from Engine/Scripts/Entities/Render/GeomCache.lua
rename to Assets/Engine/Scripts/Entities/Render/GeomCache.lua
diff --git a/Engine/Scripts/Entities/Sound/AudioAreaAmbience.lua b/Assets/Engine/Scripts/Entities/Sound/AudioAreaAmbience.lua
similarity index 100%
rename from Engine/Scripts/Entities/Sound/AudioAreaAmbience.lua
rename to Assets/Engine/Scripts/Entities/Sound/AudioAreaAmbience.lua
diff --git a/Engine/Scripts/Entities/Sound/AudioAreaEntity.lua b/Assets/Engine/Scripts/Entities/Sound/AudioAreaEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/Sound/AudioAreaEntity.lua
rename to Assets/Engine/Scripts/Entities/Sound/AudioAreaEntity.lua
diff --git a/Engine/Scripts/Entities/Sound/AudioAreaRandom.lua b/Assets/Engine/Scripts/Entities/Sound/AudioAreaRandom.lua
similarity index 100%
rename from Engine/Scripts/Entities/Sound/AudioAreaRandom.lua
rename to Assets/Engine/Scripts/Entities/Sound/AudioAreaRandom.lua
diff --git a/Engine/Scripts/Entities/Sound/AudioTriggerSpot.lua b/Assets/Engine/Scripts/Entities/Sound/AudioTriggerSpot.lua
similarity index 100%
rename from Engine/Scripts/Entities/Sound/AudioTriggerSpot.lua
rename to Assets/Engine/Scripts/Entities/Sound/AudioTriggerSpot.lua
diff --git a/Engine/Scripts/Entities/Sound/Shared/AudioUtils.lua b/Assets/Engine/Scripts/Entities/Sound/Shared/AudioUtils.lua
similarity index 100%
rename from Engine/Scripts/Entities/Sound/Shared/AudioUtils.lua
rename to Assets/Engine/Scripts/Entities/Sound/Shared/AudioUtils.lua
diff --git a/Engine/Scripts/Entities/Triggers/AreaTrigger.lua b/Assets/Engine/Scripts/Entities/Triggers/AreaTrigger.lua
similarity index 100%
rename from Engine/Scripts/Entities/Triggers/AreaTrigger.lua
rename to Assets/Engine/Scripts/Entities/Triggers/AreaTrigger.lua
diff --git a/Engine/Scripts/Entities/Triggers/ProximityTrigger.lua b/Assets/Engine/Scripts/Entities/Triggers/ProximityTrigger.lua
similarity index 100%
rename from Engine/Scripts/Entities/Triggers/ProximityTrigger.lua
rename to Assets/Engine/Scripts/Entities/Triggers/ProximityTrigger.lua
diff --git a/Engine/Scripts/Entities/UI/UiCanvasRefEntity.lua b/Assets/Engine/Scripts/Entities/UI/UiCanvasRefEntity.lua
similarity index 100%
rename from Engine/Scripts/Entities/UI/UiCanvasRefEntity.lua
rename to Assets/Engine/Scripts/Entities/UI/UiCanvasRefEntity.lua
diff --git a/Engine/Scripts/Utils/Components/GameplayUtils.lua b/Assets/Engine/Scripts/Utils/Components/GameplayUtils.lua
similarity index 100%
rename from Engine/Scripts/Utils/Components/GameplayUtils.lua
rename to Assets/Engine/Scripts/Utils/Components/GameplayUtils.lua
diff --git a/Engine/Scripts/Utils/Components/InputUtils.lua b/Assets/Engine/Scripts/Utils/Components/InputUtils.lua
similarity index 100%
rename from Engine/Scripts/Utils/Components/InputUtils.lua
rename to Assets/Engine/Scripts/Utils/Components/InputUtils.lua
diff --git a/Engine/Scripts/Utils/Components/MultiHandlers.lua b/Assets/Engine/Scripts/Utils/Components/MultiHandlers.lua
similarity index 100%
rename from Engine/Scripts/Utils/Components/MultiHandlers.lua
rename to Assets/Engine/Scripts/Utils/Components/MultiHandlers.lua
diff --git a/Engine/Scripts/Utils/Containers.lua b/Assets/Engine/Scripts/Utils/Containers.lua
similarity index 100%
rename from Engine/Scripts/Utils/Containers.lua
rename to Assets/Engine/Scripts/Utils/Containers.lua
diff --git a/Engine/Scripts/Utils/EntityUtils.lua b/Assets/Engine/Scripts/Utils/EntityUtils.lua
similarity index 100%
rename from Engine/Scripts/Utils/EntityUtils.lua
rename to Assets/Engine/Scripts/Utils/EntityUtils.lua
diff --git a/Engine/Scripts/Utils/Math.lua b/Assets/Engine/Scripts/Utils/Math.lua
similarity index 100%
rename from Engine/Scripts/Utils/Math.lua
rename to Assets/Engine/Scripts/Utils/Math.lua
diff --git a/Engine/SeedAssetList.seed b/Assets/Engine/SeedAssetList.seed
similarity index 100%
rename from Engine/SeedAssetList.seed
rename to Assets/Engine/SeedAssetList.seed
diff --git a/Engine/Shaders/DistanceClouds.ext b/Assets/Engine/Shaders/DistanceClouds.ext
similarity index 100%
rename from Engine/Shaders/DistanceClouds.ext
rename to Assets/Engine/Shaders/DistanceClouds.ext
diff --git a/Engine/Shaders/Eye.ext b/Assets/Engine/Shaders/Eye.ext
similarity index 100%
rename from Engine/Shaders/Eye.ext
rename to Assets/Engine/Shaders/Eye.ext
diff --git a/Engine/Shaders/Fur.ext b/Assets/Engine/Shaders/Fur.ext
similarity index 100%
rename from Engine/Shaders/Fur.ext
rename to Assets/Engine/Shaders/Fur.ext
diff --git a/Engine/Shaders/GeometryBeam.ext b/Assets/Engine/Shaders/GeometryBeam.ext
similarity index 100%
rename from Engine/Shaders/GeometryBeam.ext
rename to Assets/Engine/Shaders/GeometryBeam.ext
diff --git a/Engine/Shaders/Glass.ext b/Assets/Engine/Shaders/Glass.ext
similarity index 100%
rename from Engine/Shaders/Glass.ext
rename to Assets/Engine/Shaders/Glass.ext
diff --git a/Engine/Shaders/HWScripts/CryFX/AuxGeom.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/AuxGeom.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/AuxGeom.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/AuxGeom.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Clouds.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Clouds.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Clouds.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Clouds.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Common.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/Common.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Common.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/Common.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Common.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Common.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Common.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Common.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonDebugPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonDebugPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonDebugPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonDebugPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPassTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPassTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPassTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonMotionBlurPassTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonSVO.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonSVO.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonSVO.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonSVO.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonShadowGenPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPassTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPassTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonShadowGenPassTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonShadowGenPassTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonTessellation.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonTessellation.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonTessellation.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonTessellation.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonViewsPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonViewsPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonViewsPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonViewsPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonViewsPassTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonViewsPassTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonViewsPassTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonViewsPassTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonZPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonZPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonZPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonZPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonZPassTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonZPassTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonZPassTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonZPassTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/CommonZPrePass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/CommonZPrePass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/CommonZPrePass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/CommonZPrePass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/DXTCompress.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DXTCompress.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DXTCompress.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DXTCompress.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Debug.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Debug.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Debug.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Debug.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DebugLight.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DebugLight.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DebugLight.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DebugLight.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DeferredCaustics.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DeferredCaustics.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DeferredCaustics.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DeferredCaustics.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DeferredRain.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DeferredRain.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DeferredRain.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DeferredRain.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DeferredShading.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DeferredShading.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DeferredShading.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DeferredShading.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DeferredShadows.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/DeferredShadows.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DeferredShadows.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/DeferredShadows.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/DeferredSnow.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DeferredSnow.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DeferredSnow.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DeferredSnow.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DepthOfField.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DepthOfField.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DepthOfField.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DepthOfField.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/DistanceClouds.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/DistanceClouds.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/DistanceClouds.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/DistanceClouds.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Eye.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Eye.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Eye.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Eye.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/FXConstantDefs.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FXConstantDefs.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FXConstantDefs.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FXConstantDefs.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/FXSamplerDefs.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FXSamplerDefs.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FXSamplerDefs.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FXSamplerDefs.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/FXStreamDefs.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FXStreamDefs.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FXStreamDefs.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FXStreamDefs.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/FallBack.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/FallBack.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FallBack.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/FallBack.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/FixedPipelineEmu.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/FixedPipelineEmu.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FixedPipelineEmu.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/FixedPipelineEmu.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/FogVolume.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/FogVolume.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FogVolume.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/FogVolume.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Fur.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Fur.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Fur.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Fur.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/FurFinPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FurFinPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FurFinPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FurFinPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/FurObliteratePass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FurObliteratePass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FurObliteratePass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FurObliteratePass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/FurZPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/FurZPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/FurZPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/FurZPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticle.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticle.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticle.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticle.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleBegin.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBegin.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleBegin.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBegin.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSort.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSort.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSort.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSort.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortGlobal2048.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortGlobal2048.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortGlobal2048.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortGlobal2048.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortLocal.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortLocal.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortLocal.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleBitonicSortLocal.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleCurves.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleCurves.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleCurves.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleCurves.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleEmit.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleEmit.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleEmit.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleEmit.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleGatherSortDistance.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleGatherSortDistance.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleGatherSortDistance.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleGatherSortDistance.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleHelpers.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleHelpers.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleHelpers.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleHelpers.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleOddEvenSort.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleOddEvenSort.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleOddEvenSort.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleOddEvenSort.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleRenderNoGS.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleRenderNoGS.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleRenderNoGS.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleRenderNoGS.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GPUParticleUpdate.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleUpdate.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GPUParticleUpdate.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GPUParticleUpdate.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/GeometryBeam.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/GeometryBeam.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/GeometryBeam.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/GeometryBeam.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Glass.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Glass.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Glass.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Glass.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass0.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass0.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass0.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass0.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass1.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass1.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass1.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/HDRDolbyMetadataPass1.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HDRPostProcess.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/HDRPostProcess.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HDRPostProcess.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/HDRPostProcess.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HDRPostProcessDolby.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/HDRPostProcessDolby.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HDRPostProcessDolby.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/HDRPostProcessDolby.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Hair.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Hair.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Hair.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Hair.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Helper.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Helper.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Helper.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Helper.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Hud3D.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Hud3D.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Hud3D.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Hud3D.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HumanSkin.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/HumanSkin.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HumanSkin.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/HumanSkin.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/HumanSkinTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/HumanSkinTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HumanSkinTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/HumanSkinTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/HumanSkinValidations.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/HumanSkinValidations.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/HumanSkinValidations.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/HumanSkinValidations.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Illum.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Illum.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Illum.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Illum.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/IllumTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/IllumTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/IllumTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/IllumTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/IllumValidations.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/IllumValidations.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/IllumValidations.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/IllumValidations.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/LensOptics.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/LensOptics.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/LensOptics.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/LensOptics.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Light.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Light.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Light.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Light.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/LightBeam.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/LightBeam.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/LightBeam.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/LightBeam.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/LightVolumes.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/LightVolumes.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/LightVolumes.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/LightVolumes.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/MeshBaker.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/MeshBaker.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/MeshBaker.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/MeshBaker.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/MeshBakerDilate.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/MeshBakerDilate.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/MeshBakerDilate.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/MeshBakerDilate.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ModificatorTC.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ModificatorTC.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ModificatorTC.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ModificatorTC.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/ModificatorVT.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ModificatorVT.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ModificatorVT.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ModificatorVT.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Monitor.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Monitor.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Monitor.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Monitor.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/MotionBlur.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/MotionBlur.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/MotionBlur.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/MotionBlur.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/MultiLayerAlphaBlend.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/MultiLayerAlphaBlend.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/MultiLayerAlphaBlend.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/MultiLayerAlphaBlend.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/NoDraw.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/NoDraw.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/NoDraw.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/NoDraw.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/OcclusionTest.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/OcclusionTest.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/OcclusionTest.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/OcclusionTest.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticleImposter.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ParticleImposter.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticleImposter.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticleImposter.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticleVT.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ParticleVT.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticleVT.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticleVT.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Particles.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/Particles.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Particles.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/Particles.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Particles.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Particles.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Particles.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Particles.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticlesCustomPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ParticlesCustomPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticlesCustomPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticlesCustomPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticlesNoMat.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ParticlesNoMat.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticlesNoMat.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticlesNoMat.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticlesNoMatMirror.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ParticlesNoMatMirror.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticlesNoMatMirror.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticlesNoMatMirror.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ParticlesShadowPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ParticlesShadowPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ParticlesShadowPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ParticlesShadowPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/PostAA.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/PostAA.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/PostAA.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/PostAA.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/PostEffects.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/PostEffects.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/PostEffects.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/PostEffects.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/PostEffectsGame.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/PostEffectsGame.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/PostEffectsGame.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/PostEffectsGame.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/PostEffectsLib.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/PostEffectsLib.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/PostEffectsLib.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/PostEffectsLib.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/ReferenceImage.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ReferenceImage.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ReferenceImage.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ReferenceImage.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ReferenceImageHDR.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ReferenceImageHDR.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ReferenceImageHDR.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ReferenceImageHDR.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Scopes.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Scopes.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Scopes.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Scopes.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ShadowBlur.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ShadowBlur.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ShadowBlur.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ShadowBlur.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/ShadowCommon.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/ShadowCommon.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ShadowCommon.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/ShadowCommon.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/ShadowMaskGen.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/ShadowMaskGen.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/ShadowMaskGen.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/ShadowMaskGen.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Sketch.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Sketch.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Sketch.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Sketch.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/SketchTerrain.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/SketchTerrain.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/SketchTerrain.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/SketchTerrain.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Sky.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Sky.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Sky.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Sky.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/SkyHDR.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/SkyHDR.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/SkyHDR.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/SkyHDR.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/SoftOcclusionQuery.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/SoftOcclusionQuery.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/SoftOcclusionQuery.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/SoftOcclusionQuery.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Stars.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Stars.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Stars.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Stars.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/StarterGame_GeometryBeamScaling.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/StarterGame_GeometryBeamScaling.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/StarterGame_GeometryBeamScaling.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/StarterGame_GeometryBeamScaling.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Stereo.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Stereo.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Stereo.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Stereo.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Sunshafts.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Sunshafts.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Sunshafts.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Sunshafts.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/TemplBeamProc.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/TemplBeamProc.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/TemplBeamProc.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/TemplBeamProc.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Terrain.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Terrain.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Terrain.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Terrain.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/TerrainValidations.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/TerrainValidations.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/TerrainValidations.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/TerrainValidations.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/TiledShading.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/TiledShading.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/TiledShading.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/TiledShading.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Total_Illumination.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Total_Illumination.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Total_Illumination.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Total_Illumination.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/UI.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/UI.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/UI.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/UI.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Vegetation.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Vegetation.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Vegetation.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Vegetation.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/VegetationTess.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/VegetationTess.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/VegetationTess.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/VegetationTess.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/VegetationValidations.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/VegetationValidations.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/VegetationValidations.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/VegetationValidations.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Video.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Video.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Video.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Video.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/VolumeLighting.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/VolumeLighting.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/VolumeLighting.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/VolumeLighting.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/VolumeObject.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/VolumeObject.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/VolumeObject.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/VolumeObject.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/VolumetricFog.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/VolumetricFog.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/VolumetricFog.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/VolumetricFog.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/Water.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Water.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Water.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Water.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/WaterCausticsPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/WaterCausticsPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/WaterCausticsPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/WaterCausticsPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/WaterFogVolume.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/WaterFogVolume.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/WaterFogVolume.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/WaterFogVolume.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/WaterOceanBottom.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/WaterOceanBottom.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/WaterOceanBottom.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/WaterOceanBottom.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/WaterReflectionsPass.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/WaterReflectionsPass.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/WaterReflectionsPass.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/WaterReflectionsPass.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/WaterVolume.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/WaterVolume.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/WaterVolume.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/WaterVolume.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/Waterfall.cfx b/Assets/Engine/Shaders/HWScripts/CryFX/Waterfall.cfx
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/Waterfall.cfx
rename to Assets/Engine/Shaders/HWScripts/CryFX/Waterfall.cfx
diff --git a/Engine/Shaders/HWScripts/CryFX/fragLib.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/fragLib.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/fragLib.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/fragLib.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/shadeLib.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/shadeLib.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/shadeLib.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/shadeLib.cfi
diff --git a/Engine/Shaders/HWScripts/CryFX/vertexLib.cfi b/Assets/Engine/Shaders/HWScripts/CryFX/vertexLib.cfi
similarity index 100%
rename from Engine/Shaders/HWScripts/CryFX/vertexLib.cfi
rename to Assets/Engine/Shaders/HWScripts/CryFX/vertexLib.cfi
diff --git a/Engine/Shaders/Hair.ext b/Assets/Engine/Shaders/Hair.ext
similarity index 100%
rename from Engine/Shaders/Hair.ext
rename to Assets/Engine/Shaders/Hair.ext
diff --git a/Engine/Shaders/HumanSkin.ext b/Assets/Engine/Shaders/HumanSkin.ext
similarity index 100%
rename from Engine/Shaders/HumanSkin.ext
rename to Assets/Engine/Shaders/HumanSkin.ext
diff --git a/Engine/Shaders/Illum.ext b/Assets/Engine/Shaders/Illum.ext
similarity index 100%
rename from Engine/Shaders/Illum.ext
rename to Assets/Engine/Shaders/Illum.ext
diff --git a/Engine/Shaders/LensOptics.ext b/Assets/Engine/Shaders/LensOptics.ext
similarity index 100%
rename from Engine/Shaders/LensOptics.ext
rename to Assets/Engine/Shaders/LensOptics.ext
diff --git a/Engine/Shaders/LightBeam.ext b/Assets/Engine/Shaders/LightBeam.ext
similarity index 100%
rename from Engine/Shaders/LightBeam.ext
rename to Assets/Engine/Shaders/LightBeam.ext
diff --git a/Engine/Shaders/Monitor.ext b/Assets/Engine/Shaders/Monitor.ext
similarity index 100%
rename from Engine/Shaders/Monitor.ext
rename to Assets/Engine/Shaders/Monitor.ext
diff --git a/Engine/Shaders/ParticleImposter.ext b/Assets/Engine/Shaders/ParticleImposter.ext
similarity index 100%
rename from Engine/Shaders/ParticleImposter.ext
rename to Assets/Engine/Shaders/ParticleImposter.ext
diff --git a/Engine/Shaders/Particles.ext b/Assets/Engine/Shaders/Particles.ext
similarity index 100%
rename from Engine/Shaders/Particles.ext
rename to Assets/Engine/Shaders/Particles.ext
diff --git a/Engine/Shaders/RunTime.ext b/Assets/Engine/Shaders/RunTime.ext
similarity index 100%
rename from Engine/Shaders/RunTime.ext
rename to Assets/Engine/Shaders/RunTime.ext
diff --git a/Engine/Shaders/Scopes.ext b/Assets/Engine/Shaders/Scopes.ext
similarity index 100%
rename from Engine/Shaders/Scopes.ext
rename to Assets/Engine/Shaders/Scopes.ext
diff --git a/Engine/Shaders/ShaderProfiles.txt b/Assets/Engine/Shaders/ShaderProfiles.txt
similarity index 100%
rename from Engine/Shaders/ShaderProfiles.txt
rename to Assets/Engine/Shaders/ShaderProfiles.txt
diff --git a/Engine/Shaders/ShadowMaskGen.ext b/Assets/Engine/Shaders/ShadowMaskGen.ext
similarity index 100%
rename from Engine/Shaders/ShadowMaskGen.ext
rename to Assets/Engine/Shaders/ShadowMaskGen.ext
diff --git a/Engine/Shaders/SketchTerrain.ext b/Assets/Engine/Shaders/SketchTerrain.ext
similarity index 100%
rename from Engine/Shaders/SketchTerrain.ext
rename to Assets/Engine/Shaders/SketchTerrain.ext
diff --git a/Engine/Shaders/SkyHDR.ext b/Assets/Engine/Shaders/SkyHDR.ext
similarity index 100%
rename from Engine/Shaders/SkyHDR.ext
rename to Assets/Engine/Shaders/SkyHDR.ext
diff --git a/Engine/Shaders/StarterGame_GeometryBeamScaling.ext b/Assets/Engine/Shaders/StarterGame_GeometryBeamScaling.ext
similarity index 100%
rename from Engine/Shaders/StarterGame_GeometryBeamScaling.ext
rename to Assets/Engine/Shaders/StarterGame_GeometryBeamScaling.ext
diff --git a/Engine/Shaders/Statics.ext b/Assets/Engine/Shaders/Statics.ext
similarity index 100%
rename from Engine/Shaders/Statics.ext
rename to Assets/Engine/Shaders/Statics.ext
diff --git a/Engine/Shaders/TemplBeamProc.ext b/Assets/Engine/Shaders/TemplBeamProc.ext
similarity index 100%
rename from Engine/Shaders/TemplBeamProc.ext
rename to Assets/Engine/Shaders/TemplBeamProc.ext
diff --git a/Engine/Shaders/Terrain.ext b/Assets/Engine/Shaders/Terrain.ext
similarity index 100%
rename from Engine/Shaders/Terrain.ext
rename to Assets/Engine/Shaders/Terrain.ext
diff --git a/Engine/Shaders/Vegetation.ext b/Assets/Engine/Shaders/Vegetation.ext
similarity index 100%
rename from Engine/Shaders/Vegetation.ext
rename to Assets/Engine/Shaders/Vegetation.ext
diff --git a/Engine/Shaders/VolumeObject.ext b/Assets/Engine/Shaders/VolumeObject.ext
similarity index 100%
rename from Engine/Shaders/VolumeObject.ext
rename to Assets/Engine/Shaders/VolumeObject.ext
diff --git a/Engine/Shaders/Water.ext b/Assets/Engine/Shaders/Water.ext
similarity index 100%
rename from Engine/Shaders/Water.ext
rename to Assets/Engine/Shaders/Water.ext
diff --git a/Engine/Shaders/WaterVolume.ext b/Assets/Engine/Shaders/WaterVolume.ext
similarity index 100%
rename from Engine/Shaders/WaterVolume.ext
rename to Assets/Engine/Shaders/WaterVolume.ext
diff --git a/Engine/Shaders/Waterfall.ext b/Assets/Engine/Shaders/Waterfall.ext
similarity index 100%
rename from Engine/Shaders/Waterfall.ext
rename to Assets/Engine/Shaders/Waterfall.ext
diff --git a/Engine/exclude.filetag b/Assets/Engine/exclude.filetag
similarity index 100%
rename from Engine/exclude.filetag
rename to Assets/Engine/exclude.filetag
diff --git a/Engine/include.filetag b/Assets/Engine/include.filetag
similarity index 100%
rename from Engine/include.filetag
rename to Assets/Engine/include.filetag
diff --git a/Engine/materials/material_layers_default.mtl b/Assets/Engine/materials/material_layers_default.mtl
similarity index 100%
rename from Engine/materials/material_layers_default.mtl
rename to Assets/Engine/materials/material_layers_default.mtl
diff --git a/Engine/materials/material_terrain_default.mtl b/Assets/Engine/materials/material_terrain_default.mtl
similarity index 100%
rename from Engine/materials/material_terrain_default.mtl
rename to Assets/Engine/materials/material_terrain_default.mtl
diff --git a/Engine/textures/default_icon.png b/Assets/Engine/textures/default_icon.png
similarity index 100%
rename from Engine/textures/default_icon.png
rename to Assets/Engine/textures/default_icon.png
diff --git a/Engine/textures/default_icon.png.exportsettings b/Assets/Engine/textures/default_icon.png.exportsettings
similarity index 100%
rename from Engine/textures/default_icon.png.exportsettings
rename to Assets/Engine/textures/default_icon.png.exportsettings
diff --git a/Engine/textures/defaults/defaultnouvs.tif b/Assets/Engine/textures/defaults/defaultnouvs.tif
similarity index 100%
rename from Engine/textures/defaults/defaultnouvs.tif
rename to Assets/Engine/textures/defaults/defaultnouvs.tif
diff --git a/Engine/textures/defaults/grey.tif b/Assets/Engine/textures/defaults/grey.tif
similarity index 100%
rename from Engine/textures/defaults/grey.tif
rename to Assets/Engine/textures/defaults/grey.tif
diff --git a/Engine/textures/skys/night/half_moon.tif b/Assets/Engine/textures/skys/night/half_moon.tif
similarity index 100%
rename from Engine/textures/skys/night/half_moon.tif
rename to Assets/Engine/textures/skys/night/half_moon.tif
diff --git a/AutomatedTesting/EngineFinder.cmake b/AutomatedTesting/EngineFinder.cmake
new file mode 100644
index 0000000000..1fdcef2b56
--- /dev/null
+++ b/AutomatedTesting/EngineFinder.cmake
@@ -0,0 +1,50 @@
+#
+# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+# its licensors.
+#
+# For complete copyright and license terms please see the LICENSE at the root of this
+# distribution (the "License"). All use of this software is governed by the License,
+# or, if provided, by the license below or the license accompanying this file. Do not
+# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#
+# This file is copied during engine registration. Edits to this file will be lost next
+# time a registration happens.
+
+include_guard()
+
+# Read the engine name from the project_json file
+file(READ ${CMAKE_CURRENT_LIST_DIR}/project.json project_json)
+string(JSON LY_ENGINE_NAME_TO_USE ERROR_VARIABLE json_error GET ${project_json} engine)
+if(json_error)
+ message(FATAL_ERROR "Unable to read key 'engine' from 'project.json', error: ${json_error}")
+endif()
+
+# Read the list of paths from ~.o3de/o3de_manifest.json
+file(TO_CMAKE_PATH "$ENV{USERPROFILE}" home_directory) # Windows
+if((NOT home_directory) OR (NOT EXISTS ${home_directory}))
+ file(TO_CMAKE_PATH "$ENV{HOME}" home_directory)# Unix
+endif()
+
+if (NOT home_directory)
+ message(FATAL_ERROR "Cannot find user home directory, the o3de manifest cannot be found")
+endif()
+# Set manifest path to path in the user home directory
+set(manifest_path ${home_directory}/.o3de/o3de_manifest.json)
+
+if(EXISTS ${manifest_path})
+ file(READ ${manifest_path} manifest_json)
+ string(JSON engines_count ERROR_VARIABLE json_error LENGTH ${manifest_json} engines)
+ if(json_error)
+ message(FATAL_ERROR "Unable to read key 'engines' from '${manifest_path}', error: ${json_error}")
+ endif()
+
+ math(EXPR engines_count "${engines_count}-1")
+ foreach(engine_path_index RANGE ${engines_count})
+ string(JSON engine_path ERROR_VARIABLE json_error GET ${manifest_json} engines ${engine_path_index})
+ if(${json_error})
+ message(FATAL_ERROR "Unable to read engines[${engine_path_index}] '${manifest_path}', error: ${json_error}")
+ endif()
+ list(APPEND CMAKE_MODULE_PATH "${engine_path}/cmake")
+ endforeach()
+endif()
diff --git a/AutomatedTesting/Gem/Code/Platform/Mac/runtime_dependencies.cmake b/AutomatedTesting/Gem/Code/Platform/Mac/runtime_dependencies.cmake
index 4d5680a30d..f9d1e60dda 100644
--- a/AutomatedTesting/Gem/Code/Platform/Mac/runtime_dependencies.cmake
+++ b/AutomatedTesting/Gem/Code/Platform/Mac/runtime_dependencies.cmake
@@ -8,3 +8,8 @@
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
+
+set(GEM_DEPENDENCIES
+ Gem::Atom_RHI_Metal.Private
+ Gem::Atom_RHI_Null.Private
+)
\ No newline at end of file
diff --git a/AutomatedTesting/Gem/Code/Platform/Mac/tool_dependencies.cmake b/AutomatedTesting/Gem/Code/Platform/Mac/tool_dependencies.cmake
index 4d5680a30d..ee7be9ac6d 100644
--- a/AutomatedTesting/Gem/Code/Platform/Mac/tool_dependencies.cmake
+++ b/AutomatedTesting/Gem/Code/Platform/Mac/tool_dependencies.cmake
@@ -8,3 +8,10 @@
# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
+
+set(GEM_DEPENDENCIES
+ Gem::Atom_RHI_Null.Private
+ Gem::Atom_RHI_Null.Builders
+ Gem::Atom_RHI_Metal.Private
+ Gem::Atom_RHI_Metal.Builders
+)
\ No newline at end of file
diff --git a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
index d31ea6334c..6d3727195e 100644
--- a/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/CMakeLists.txt
@@ -25,10 +25,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE main
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/physics/TestSuite_Main.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -39,10 +38,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE periodic
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/physics/TestSuite_Periodic.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -56,7 +54,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TIMEOUT 3600
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -71,10 +68,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE periodic
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/scripting/TestSuite_Active.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -85,10 +81,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE sandbox
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/scripting/TestSuite_Sandbox.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
)
@@ -101,10 +96,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE main
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/WhiteBox/TestSuite_Active.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -120,10 +114,9 @@ endif()
# TEST_SUITE main
# TEST_SERIAL
# PATH ${CMAKE_CURRENT_LIST_DIR}/NvCloth/TestSuite_Active.py
-# TIMEOUT 3600
+# TIMEOUT 1500
# RUNTIME_DEPENDENCIES
# Legacy::Editor
-# Legacy::CryRenderNULL
# AZ::AssetProcessor
# AutomatedTesting.Assets
# )
@@ -136,10 +129,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE sandbox
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/EditorPythonBindings
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
Gem::EditorPythonBindings.Editor
@@ -154,10 +146,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE periodic
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/PythonAssetBuilder
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
Gem::EditorPythonBindings.Editor
@@ -173,7 +164,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
TEST_SUITE main
TEST_SERIAL TRUE
PATH ${CMAKE_CURRENT_LIST_DIR}/Blast/TestSuite_Active.py
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
AZ::AssetProcessor
@@ -196,7 +187,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE main
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
- TIMEOUT 36000
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -212,7 +203,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE sandbox
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "SUITE_sandbox"
- TIMEOUT 36000
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -228,7 +219,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/dyn_veg
PYTEST_MARKS "SUITE_periodic"
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -244,7 +235,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE main
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas
PYTEST_MARKS "not SUITE_sandbox and not SUITE_periodic and not SUITE_benchmark"
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -259,7 +250,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/landscape_canvas
PYTEST_MARKS "SUITE_periodic"
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -274,7 +265,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SERIAL
TEST_SUITE periodic
PATH ${CMAKE_CURRENT_LIST_DIR}/largeworlds/gradient_signal
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
Legacy::Editor
@@ -292,10 +283,9 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_
TEST_SUITE periodic
TEST_SERIAL
PATH ${CMAKE_CURRENT_LIST_DIR}/editor
- TIMEOUT 3600
+ TIMEOUT 1500
RUNTIME_DEPENDENCIES
Legacy::Editor
- Legacy::CryRenderNULL
AZ::AssetProcessor
AutomatedTesting.Assets
COMPONENT
@@ -314,7 +304,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
# AZ::AssetProcessor
# AZ::AssetProcessorBatch
# AutomatedTesting.GameLauncher
- # Legacy::CryRenderNULL
#)
endif()
diff --git a/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test.py b/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test.py
deleted file mode 100755
index 41ae0608a4..0000000000
--- a/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""
-All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-its licensors.
-
-For complete copyright and license terms please see the LICENSE at the root of this
-distribution (the "License"). All use of this software is governed by the License,
-or, if provided, by the license below or the license accompanying this file. Do not
-remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-"""
-
-#
-# This is a pytest module to test the in-Editor Python API from ViewPane.h
-#
-import pytest
-pytest.importorskip('ly_test_tools')
-
-import sys
-import os
-sys.path.append(os.path.dirname(__file__))
-from hydra_utils import launch_test_case
-
-
-@pytest.mark.SUITE_sandbox
-@pytest.mark.parametrize('launcher_platform', ['windows_editor'])
-@pytest.mark.parametrize('project', ['AutomatedTesting'])
-@pytest.mark.parametrize('level', ['auto_test'])
-class TestLegacyCryMaterialsCommandsAutomation(object):
-
- def test_Legacy_CryMaterials(self, request, editor, level, launcher_platform):
-
- unexpected_lines=[]
- expected_lines = [
- # "Material Settings/Shader updated correctly", # Disabled, SPEC-3590
- # "Material Settings/Surface Type updated correctly", # Disabled, SPEC-3590
- "Texture Maps/Diffuse/Tiling/IsTileU updated correctly",
- "Texture Maps/Diffuse/Tiling/TileU updated correctly",
- "Texture Maps/Diffuse/Rotator/Type updated correctly",
- "Texture Maps/Diffuse/Rotator/Amplitude updated correctly",
- "Texture Maps/Diffuse/Oscillator/AmplitudeU updated correctly",
- "Opacity Settings/Opacity updated correctly",
- "Opacity Settings/AlphaTest updated correctly",
- "Opacity Settings/Additive updated correctly",
- "Lighting Settings/Diffuse Color updated correctly",
- "Lighting Settings/Specular Color updated correctly",
- "Lighting Settings/Emissive Intensity updated correctly",
- "Lighting Settings/Emissive Color updated correctly",
- "Advanced/Allow layer activation updated correctly",
- "Advanced/2 Sided updated correctly",
- "Advanced/No Shadow updated correctly",
- "Advanced/Use Scattering updated correctly",
- "Advanced/Hide After Breaking updated correctly",
- "Advanced/Fog Volume Shading Quality High updated correctly",
- "Advanced/Blend Terrain Color updated correctly",
- "Advanced/Voxel Coverage updated correctly",
- "Advanced/Propagate Opacity Settings updated correctly",
- "Advanced/Propagate Lighting Settings updated correctly",
- "Advanced/Propagate Advanced Settings updated correctly",
- "Advanced/Propagate Texture Maps updated correctly",
- "Advanced/Propagate Shader Params updated correctly",
- "Advanced/Propagate Shader Generation updated correctly",
- "Advanced/Propagate Vertex Deformation updated correctly",
- # "Shader Params/Blend Factor updated correctly", # Disabled, SPEC-3590
- # "Shader Params/Indirect bounce color updated correctly", # Disabled, SPEC-3590
- "Vertex Deformation/Type updated correctly",
- "Vertex Deformation/Wave Length X updated correctly",
- "Vertex Deformation/Wave X/Level updated correctly",
- "Vertex Deformation/Wave X/Amplitude updated correctly",
- "Vertex Deformation/Wave X/Phase updated correctly",
- "Vertex Deformation/Wave X/Frequency updated correctly"
- ]
-
- test_case_file = os.path.join(os.path.dirname(__file__), 'CryMaterialsCommands_test_case.py')
- launch_test_case(editor, test_case_file, expected_lines, unexpected_lines)
-
diff --git a/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test_case.py b/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test_case.py
deleted file mode 100755
index 913b1ace24..0000000000
--- a/AutomatedTesting/Gem/PythonTests/EditorPythonBindings/CryMaterialsCommands_test_case.py
+++ /dev/null
@@ -1,116 +0,0 @@
-"""
-All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-its licensors.
-
-For complete copyright and license terms please see the LICENSE at the root of this
-distribution (the "License"). All use of this software is governed by the License,
-or, if provided, by the license below or the license accompanying this file. Do not
-remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-"""
-
-# Tests the legacy Python API for CryMaterials while the Editor is running
-
-import azlmbr.bus as bus
-import azlmbr.editor as editor
-import azlmbr.legacy.material as material
-import azlmbr.math as math
-
-materialName = 'materials/ter_layer_green'
-print(f'Starting CryMaterial test case using material {materialName}')
-
-
-def MaterialPropertyTest(property, value, doReset=True):
- try:
- # get old value and attempt to set new value
- oldValue = material.get_property(materialName, property)
- if oldValue == value:
- print(f'>>> `{property}` already set to {oldValue}')
- return
- material.set_property(materialName, property, value)
-
- # test that the set new value worked
- newValue = material.get_property(materialName, property)
- if oldValue != newValue:
- print(f"{property} updated correctly")
-
- # reset back to old value
- if doReset:
- material.set_property(materialName, property, oldValue)
- except:
- print(f'!!! hit an exception when setting `{property}` to {value}')
-
-
-color = math.Color()
-color.r = 255.0
-color.g = 128.0
-color.b = 64.0
-color.a = 0.0
-
-# Material Settings
-# MaterialPropertyTest("Material Settings/Shader", "Geometrybeam") # Disabled, SPEC-3590
-# MaterialPropertyTest("Material Settings/Surface Type", "grass") # Disabled, SPEC-3590
-
-# Texture Maps
-MaterialPropertyTest("Texture Maps/Diffuse/Tiling/IsTileU", False)
-MaterialPropertyTest("Texture Maps/Diffuse/Tiling/IsTileV", False)
-MaterialPropertyTest("Texture Maps/Diffuse/Tiling/TileU", 0.42)
-MaterialPropertyTest("Texture Maps/Diffuse/Rotator/Type", 'Oscillated Rotation')
-MaterialPropertyTest("Texture Maps/Diffuse/Rotator/Amplitude", 42.0)
-MaterialPropertyTest("Texture Maps/Diffuse/Oscillator/TypeU", 'Fixed Moving')
-MaterialPropertyTest("Texture Maps/Diffuse/Oscillator/AmplitudeU", 42.0)
-
-# Vertex Deformation
-MaterialPropertyTest("Vertex Deformation/Type", 'Sin Wave')
-MaterialPropertyTest("Vertex Deformation/Wave Length X", 42.0)
-MaterialPropertyTest("Vertex Deformation/Type", 'Perlin 3D')
-MaterialPropertyTest("Vertex Deformation/Noise Scale", math.Vector3(1.1, 2.2, 3.3))
-
-# Opacity Settings
-MaterialPropertyTest("Opacity Settings/Opacity", 42)
-MaterialPropertyTest("Opacity Settings/AlphaTest", 2)
-MaterialPropertyTest("Opacity Settings/Additive", True)
-
-# Lighting Settings
-MaterialPropertyTest("Lighting Settings/Diffuse Color", color)
-MaterialPropertyTest("Lighting Settings/Specular Color", color)
-MaterialPropertyTest("Lighting Settings/Emissive Intensity", 42.0)
-MaterialPropertyTest("Lighting Settings/Emissive Color", color)
-MaterialPropertyTest("Lighting Settings/Specular Level", 2.0)
-
-# Advanced
-MaterialPropertyTest("Advanced/Allow layer activation", False)
-MaterialPropertyTest("Advanced/2 Sided", True)
-MaterialPropertyTest("Advanced/No Shadow", True)
-MaterialPropertyTest("Advanced/Use Scattering", True)
-MaterialPropertyTest("Advanced/Hide After Breaking", True)
-MaterialPropertyTest("Advanced/Fog Volume Shading Quality High", True)
-MaterialPropertyTest("Advanced/Blend Terrain Color", True)
-MaterialPropertyTest("Advanced/Voxel Coverage", 0.42)
-# --- MaterialPropertyTest("Advanced/Link to Material", "materials/ter_layer_blue") # Works, but clears on UI refresh
-MaterialPropertyTest("Advanced/Propagate Opacity Settings", True)
-MaterialPropertyTest("Advanced/Propagate Lighting Settings", True)
-MaterialPropertyTest("Advanced/Propagate Advanced Settings", True)
-MaterialPropertyTest("Advanced/Propagate Texture Maps", True)
-MaterialPropertyTest("Advanced/Propagate Shader Params", True)
-MaterialPropertyTest("Advanced/Propagate Shader Generation", True)
-MaterialPropertyTest("Advanced/Propagate Vertex Deformation", True)
-
-# Shader parameters vary with each Shader, just testing a couple of them...
-# MaterialPropertyTest("Shader Params/Blend Factor", 7.0, False) # Disabled, SPEC-3590
-# MaterialPropertyTest("Shader Params/Indirect bounce color", color, False) # Disabled, SPEC-3590
-
-### These values are reset to False when set. Left them here commented for reference.
-# MaterialPropertyTest("Shader Generation Params/Dust & Turbulence", True)
-# MaterialPropertyTest("Shader Generation Params/Receive Shadows", True)
-# MaterialPropertyTest("Shader Generation Params/UV Vignetting", True)
-
-# Vertex Deformation
-MaterialPropertyTest("Vertex Deformation/Type", "Sin Wave")
-MaterialPropertyTest("Vertex Deformation/Wave Length X", 42.0)
-MaterialPropertyTest("Vertex Deformation/Wave X/Level", 42.0)
-MaterialPropertyTest("Vertex Deformation/Wave X/Amplitude", 42.0)
-MaterialPropertyTest("Vertex Deformation/Wave X/Phase", 42.0)
-MaterialPropertyTest("Vertex Deformation/Wave X/Frequency", 42.0)
-
-editor.EditorToolsApplicationRequestBus(bus.Broadcast, 'ExitNoPrompt')
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
index de3e04e67e..6a865ee690 100644
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/CMakeLists.txt
@@ -100,7 +100,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
PATH ${CMAKE_CURRENT_LIST_DIR}/asset_bundler_batch_tests.py
EXCLUDE_TEST_RUN_TARGET_FROM_IDE
TEST_SERIAL
- TIMEOUT 3600
+ TIMEOUT 1500
TEST_SUITE periodic
RUNTIME_DEPENDENCIES
AZ::AssetProcessor
@@ -123,7 +123,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
PATH ${CMAKE_CURRENT_LIST_DIR}/missing_dependency_tests.py
EXCLUDE_TEST_RUN_TARGET_FROM_IDE
TEST_SERIAL
- TIMEOUT 3600
+ TIMEOUT 1500
TEST_SUITE periodic
RUNTIME_DEPENDENCIES
AZ::AssetProcessorBatch
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_dependency_tests.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_dependency_tests.py
index cfd088adc0..e329846554 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_dependency_tests.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_batch_dependency_tests.py
@@ -71,9 +71,9 @@ class TestsAssetProcessorBatch_DependenycyTests(object):
env = ap_setup_fixture
BATCH_LOG_PATH = env["ap_batch_log_file"]
asset_processor.create_temp_asset_root()
- asset_processor.add_relative_source_asset(os.path.join("Engine", "engine_dependencies.xml"))
- asset_processor.add_scan_folder("Engine")
- asset_processor.add_relative_source_asset(os.path.join("Engine", "Libs", "MaterialEffects", "surfacetypes.xml"))
+ asset_processor.add_relative_source_asset(os.path.join("Assets", "Engine", "engine_dependencies.xml"))
+ asset_processor.add_scan_folder(os.path.join("Assets", "Engine"))
+ asset_processor.add_relative_source_asset(os.path.join("Assets", "Engine", "Libs", "MaterialEffects", "surfacetypes.xml"))
# Precondition: Assets are all processed
asset_processor.batch_process()
@@ -103,7 +103,7 @@ class TestsAssetProcessorBatch_DependenycyTests(object):
assert surfacetypes_missing_logline, "Surfacetypes.xml not seen in the batch log as missing."
# Add the schema file which allows our xml parser to understand dependencies for our engine_dependencies file
- asset_processor.add_relative_source_asset(os.path.join("Engine", "Schema", "enginedependency.xmlschema"))
+ asset_processor.add_relative_source_asset(os.path.join("Assets", "Engine", "Schema", "enginedependency.xmlschema"))
asset_processor.batch_process()
_, output = asset_processor.batch_process(capture_output=True,
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_gui_tests_2.py b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_gui_tests_2.py
index 7c7b6b2452..b25ee081a1 100755
--- a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_gui_tests_2.py
+++ b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/asset_processor_gui_tests_2.py
@@ -205,10 +205,13 @@ class TestsAssetProcessorGUI_AllPlatforms(object):
env = ap_setup_fixture
# Copy test assets to new folder in dev folder
# This new folder will be created outside the default project folder and will not be added as a scan folder
- # by default, instead we'll modify the temporary AssetProcessorPlatformConfig.ini to add it
test_assets_folder, cache_folder = asset_processor.prepare_test_environment(env["tests_dir"], "C4874115",
relative_asset_root='',
add_scan_folder=False)
+ # The AssetProcessor internal _cache_folder path is updated to point at the cache root in order
+ # to allow the comparison between the source asset path of "/C4874115" to match the cache assets
+ # in
+ asset_processor._cache_folder = os.path.dirname(cache_folder)
assert os.path.exists(test_assets_folder), f"Test assets folder was not found {test_assets_folder}"
# Run AP Batch
@@ -226,7 +229,6 @@ class TestsAssetProcessorGUI_AllPlatforms(object):
test_scan_folder_root_key = f"{ASSET_PROCESSOR_SETTINGS_ROOT_KEY}/ScanFolder C4874115"
test_scan_folder_params.append(f'--regset="{test_scan_folder_root_key}/watch=@ROOT@/C4874115"')
- test_scan_folder_params.append(f'--regset="{test_scan_folder_root_key}/output=C4874115"')
test_scan_folder_params.append(f'--regset="{test_scan_folder_root_key}/recursive=1"')
test_scan_folder_params.append(f'--regset="{test_scan_folder_root_key}/order=5000"')
diff --git a/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/assets/C4874115/C4874115_test_asset.txt b/AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/assets/C4874115/C4874115/C4874115_test_asset.txt
similarity index 100%
rename from AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/assets/C4874115/C4874115_test_asset.txt
rename to AutomatedTesting/Gem/PythonTests/assetpipeline/asset_processor_tests/assets/C4874115/C4874115/C4874115_test_asset.txt
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AtomEditorComponents_AddedToEntity.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AtomEditorComponents_AddedToEntity.py
index 82a7e92c16..e701ff8d16 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AtomEditorComponents_AddedToEntity.py
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AtomEditorComponents_AddedToEntity.py
@@ -161,20 +161,6 @@ def run():
# Deletion/Undo/Redo test
verify_deletion_undo_redo(self.component_name, entity_obj)
- # Area Light Component
- area_light = "Area Light"
- ComponentTests(
- area_light, lambda entity_obj: verify_required_component_addition(
- entity_obj, ["Capsule Shape"], area_light))
-
- # Decal Component
- material_asset_path = os.path.join("Materials", "basic_grey.material")
- material_asset = asset.AssetCatalogRequestBus(
- bus.Broadcast, "GetAssetIdByPath", material_asset_path, math.Uuid(), False)
- ComponentTests(
- "Decal", lambda entity_obj: verify_set_property(
- entity_obj, "Settings|Decal Settings|Material", material_asset))
-
# DepthOfField Component
camera_entity = hydra.Entity("camera_entity")
camera_entity.create_entity(math.Vector3(512.0, 512.0, 34.0), ["Camera"])
@@ -185,6 +171,14 @@ def run():
lambda entity_obj: verify_set_property(
entity_obj, "Controller|Configuration|Camera Entity", camera_entity.id))
+ # Decal Component
+ material_asset_path = os.path.join("AutomatedTesting", "Materials", "basic_grey.material")
+ material_asset = asset.AssetCatalogRequestBus(
+ bus.Broadcast, "GetAssetIdByPath", material_asset_path, math.Uuid(), False)
+ ComponentTests(
+ "Decal (Atom)", lambda entity_obj: verify_set_property(
+ entity_obj, "Controller|Configuration|Material", material_asset))
+
# Directional Light Component
ComponentTests(
"Directional Light",
@@ -213,9 +207,6 @@ def run():
# Physical Sky Component
ComponentTests("Physical Sky")
- # Point Light Component
- ComponentTests("Point Light")
-
# PostFX Layer Component
ComponentTests("PostFX Layer")
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
index 8621fcb248..aafa2ff9b7 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
@@ -7,10 +7,12 @@ distribution (the "License"). All use of this software is governed by the Licens
or, if provided, by the license below or the license accompanying this file. Do not
remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-"""
+Main suite tests for the Atom renderer.
+"""
import logging
import os
+
import pytest
import editor_python_test_tools.hydra_test_utils as hydra
@@ -23,197 +25,8 @@ TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "atom_hydra_scripts")
@pytest.mark.parametrize("project", ["AutomatedTesting"])
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
@pytest.mark.parametrize("level", ["auto_test"])
-class TestAtomEditorComponents(object):
-
-
- @pytest.mark.test_case_id(
- "C32078117", # Area Light
- "C32078130", # Display Mapper
- "C32078129", # Light
- "C32078131", # Radius Weight Modifier
- "C32078127", # PostFX Layer
- "C32078126", # Point Light
- "C32078125", # Physical Sky
- "C32078115", # Global Skylight (IBL)
- "C32078121", # Exposure Control
- "C32078120", # Directional Light
- "C32078119", # DepthOfField
- "C32078118") # Decal
- def test_AtomEditorComponents_AddedToEntity(self, request, editor, level, workspace, project, launcher_platform):
- cfg_args = [level]
-
- expected_lines = [
- # Area Light Component
- "Area Light Entity successfully created",
- "Area Light_test: Component added to the entity: True",
- "Area Light_test: Component removed after UNDO: True",
- "Area Light_test: Component added after REDO: True",
- "Area Light_test: Entered game mode: True",
- "Area Light_test: Entity enabled after adding required components: True",
- "Area Light_test: Entity is hidden: True",
- "Area Light_test: Entity is shown: True",
- "Area Light_test: Entity deleted: True",
- "Area Light_test: UNDO entity deletion works: True",
- "Area Light_test: REDO entity deletion works: True",
- # Decal Component
- "Decal Entity successfully created",
- "Decal_test: Component added to the entity: True",
- "Decal_test: Component removed after UNDO: True",
- "Decal_test: Component added after REDO: True",
- "Decal_test: Entered game mode: True",
- "Decal_test: Exit game mode: True",
- "Decal Settings|Decal Settings|Material: SUCCESS",
- "Decal_test: Entity is hidden: True",
- "Decal_test: Entity is shown: True",
- "Decal_test: Entity deleted: True",
- "Decal_test: UNDO entity deletion works: True",
- "Decal_test: REDO entity deletion works: True",
- # DepthOfField Component
- "DepthOfField Entity successfully created",
- "DepthOfField_test: Component added to the entity: True",
- "DepthOfField_test: Component removed after UNDO: True",
- "DepthOfField_test: Component added after REDO: True",
- "DepthOfField_test: Entered game mode: True",
- "DepthOfField_test: Exit game mode: True",
- "DepthOfField_test: Entity disabled initially: True",
- "DepthOfField_test: Entity enabled after adding required components: True",
- "DepthOfField Controller|Configuration|Camera Entity: SUCCESS",
- "DepthOfField_test: Entity is hidden: True",
- "DepthOfField_test: Entity is shown: True",
- "DepthOfField_test: Entity deleted: True",
- "DepthOfField_test: UNDO entity deletion works: True",
- "DepthOfField_test: REDO entity deletion works: True",
- # Directional Light Component
- "Directional Light Entity successfully created",
- "Directional Light_test: Component added to the entity: True",
- "Directional Light_test: Component removed after UNDO: True",
- "Directional Light_test: Component added after REDO: True",
- "Directional Light_test: Entered game mode: True",
- "Directional Light_test: Exit game mode: True",
- "Directional Light Controller|Configuration|Shadow|Camera: SUCCESS",
- "Directional Light_test: Entity is hidden: True",
- "Directional Light_test: Entity is shown: True",
- "Directional Light_test: Entity deleted: True",
- "Directional Light_test: UNDO entity deletion works: True",
- "Directional Light_test: REDO entity deletion works: True",
- # Exposure Control Component
- "Exposure Control Entity successfully created",
- "Exposure Control_test: Component added to the entity: True",
- "Exposure Control_test: Component removed after UNDO: True",
- "Exposure Control_test: Component added after REDO: True",
- "Exposure Control_test: Entered game mode: True",
- "Exposure Control_test: Exit game mode: True",
- "Exposure Control_test: Entity disabled initially: True",
- "Exposure Control_test: Entity enabled after adding required components: True",
- "Exposure Control_test: Entity is hidden: True",
- "Exposure Control_test: Entity is shown: True",
- "Exposure Control_test: Entity deleted: True",
- "Exposure Control_test: UNDO entity deletion works: True",
- "Exposure Control_test: REDO entity deletion works: True",
- # Global Skylight (IBL) Component
- "Global Skylight (IBL) Entity successfully created",
- "Global Skylight (IBL)_test: Component added to the entity: True",
- "Global Skylight (IBL)_test: Component removed after UNDO: True",
- "Global Skylight (IBL)_test: Component added after REDO: True",
- "Global Skylight (IBL)_test: Entered game mode: True",
- "Global Skylight (IBL)_test: Exit game mode: True",
- "Global Skylight (IBL) Controller|Configuration|Diffuse Image: SUCCESS",
- "Global Skylight (IBL) Controller|Configuration|Specular Image: SUCCESS",
- "Global Skylight (IBL)_test: Entity is hidden: True",
- "Global Skylight (IBL)_test: Entity is shown: True",
- "Global Skylight (IBL)_test: Entity deleted: True",
- "Global Skylight (IBL)_test: UNDO entity deletion works: True",
- "Global Skylight (IBL)_test: REDO entity deletion works: True",
- # Physical Sky Component
- "Physical Sky Entity successfully created",
- "Physical Sky component was added to entity",
- "Entity has a Physical Sky component",
- "Physical Sky_test: Component added to the entity: True",
- "Physical Sky_test: Component removed after UNDO: True",
- "Physical Sky_test: Component added after REDO: True",
- "Physical Sky_test: Entered game mode: True",
- "Physical Sky_test: Exit game mode: True",
- "Physical Sky_test: Entity is hidden: True",
- "Physical Sky_test: Entity is shown: True",
- "Physical Sky_test: Entity deleted: True",
- "Physical Sky_test: UNDO entity deletion works: True",
- "Physical Sky_test: REDO entity deletion works: True",
- # Point Light Component
- "Point Light Entity successfully created",
- "Point Light_test: Component added to the entity: True",
- "Point Light_test: Component removed after UNDO: True",
- "Point Light_test: Component added after REDO: True",
- "Point Light_test: Entered game mode: True",
- "Point Light_test: Exit game mode: True",
- "Point Light_test: Entity is hidden: True",
- "Point Light_test: Entity is shown: True",
- "Point Light_test: Entity deleted: True",
- "Point Light_test: UNDO entity deletion works: True",
- "Point Light_test: REDO entity deletion works: True",
- # PostFX Layer Component
- "PostFX Layer Entity successfully created",
- "PostFX Layer_test: Component added to the entity: True",
- "PostFX Layer_test: Component removed after UNDO: True",
- "PostFX Layer_test: Component added after REDO: True",
- "PostFX Layer_test: Entered game mode: True",
- "PostFX Layer_test: Exit game mode: True",
- "PostFX Layer_test: Entity is hidden: True",
- "PostFX Layer_test: Entity is shown: True",
- "PostFX Layer_test: Entity deleted: True",
- "PostFX Layer_test: UNDO entity deletion works: True",
- "PostFX Layer_test: REDO entity deletion works: True",
- # Radius Weight Modifier Component
- "Radius Weight Modifier Entity successfully created",
- "Radius Weight Modifier_test: Component added to the entity: True",
- "Radius Weight Modifier_test: Component removed after UNDO: True",
- "Radius Weight Modifier_test: Component added after REDO: True",
- "Radius Weight Modifier_test: Entered game mode: True",
- "Radius Weight Modifier_test: Exit game mode: True",
- "Radius Weight Modifier_test: Entity is hidden: True",
- "Radius Weight Modifier_test: Entity is shown: True",
- "Radius Weight Modifier_test: Entity deleted: True",
- "Radius Weight Modifier_test: UNDO entity deletion works: True",
- "Radius Weight Modifier_test: REDO entity deletion works: True",
- # Light Component
- "Light Entity successfully created",
- "Light_test: Component added to the entity: True",
- "Light_test: Component removed after UNDO: True",
- "Light_test: Component added after REDO: True",
- "Light_test: Entered game mode: True",
- "Light_test: Exit game mode: True",
- "Light_test: Entity is hidden: True",
- "Light_test: Entity is shown: True",
- "Light_test: Entity deleted: True",
- "Light_test: UNDO entity deletion works: True",
- "Light_test: REDO entity deletion works: True",
- # Display Mapper Component
- "Display Mapper Entity successfully created",
- "Display Mapper_test: Component added to the entity: True",
- "Display Mapper_test: Component removed after UNDO: True",
- "Display Mapper_test: Component added after REDO: True",
- "Display Mapper_test: Entered game mode: True",
- "Display Mapper_test: Exit game mode: True",
- "Display Mapper_test: Entity is hidden: True",
- "Display Mapper_test: Entity is shown: True",
- "Display Mapper_test: Entity deleted: True",
- "Display Mapper_test: UNDO entity deletion works: True",
- "Display Mapper_test: REDO entity deletion works: True",
- ]
-
- unexpected_lines = [
- "failed to open",
- "Traceback (most recent call last):",
- ]
+class TestAtomEditorComponentsMain(object):
- hydra.launch_and_validate_results(
- request,
- TEST_DIRECTORY,
- editor,
- "hydra_AtomEditorComponents_AddedToEntity.py",
- timeout=EDITOR_TIMEOUT,
- expected_lines=expected_lines,
- unexpected_lines=unexpected_lines,
- halt_on_unexpected=True,
- null_renderer=True,
- cfg_args=cfg_args,
- )
+ # It requires at least one test
+ def test_Dummy(self, request, editor, level, workspace, project, launcher_platform):
+ pass
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_SandboxSuite.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_SandboxSuite.py
index 01474e6018..8ca5b5aa31 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_SandboxSuite.py
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_SandboxSuite.py
@@ -7,6 +7,8 @@ distribution (the "License"). All use of this software is governed by the Licens
or, if provided, by the license below or the license accompanying this file. Do not
remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
+Sandbox suite tests for the Atom renderer.
"""
import pytest
@@ -15,8 +17,172 @@ import pytest
@pytest.mark.parametrize("project", ["AutomatedTesting"])
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
@pytest.mark.parametrize("level", ["auto_test"])
-class TestAtomEditorComponents(object):
+class TestAtomEditorComponentsSandbox(object):
+
+ @pytest.mark.test_case_id(
+ "C32078117", # Area Light
+ "C32078130", # Display Mapper
+ "C32078129", # Light
+ "C32078131", # Radius Weight Modifier
+ "C32078127", # PostFX Layer
+ "C32078126", # Point Light
+ "C32078125", # Physical Sky
+ "C32078115", # Global Skylight (IBL)
+ "C32078121", # Exposure Control
+ "C32078120", # Directional Light
+ "C32078119", # DepthOfField
+ "C32078118") # Decal
+ def test_AtomEditorComponents_AddedToEntity(self, request, editor, level, workspace, project, launcher_platform):
+ cfg_args = [level]
+
+ expected_lines = [
+ # Decal Component
+ "Decal (Atom) Entity successfully created",
+ "Decal (Atom)_test: Component added to the entity: True",
+ "Decal (Atom)_test: Component removed after UNDO: True",
+ "Decal (Atom)_test: Component added after REDO: True",
+ "Decal (Atom)_test: Entered game mode: True",
+ "Decal (Atom)_test: Exit game mode: True",
+ "Decal (Atom) Controller|Configuration|Material: SUCCESS",
+ "Decal (Atom)_test: Entity is hidden: True",
+ "Decal (Atom)_test: Entity is shown: True",
+ "Decal (Atom)_test: Entity deleted: True",
+ "Decal (Atom)_test: UNDO entity deletion works: True",
+ "Decal (Atom)_test: REDO entity deletion works: True",
+ # DepthOfField Component
+ "DepthOfField Entity successfully created",
+ "DepthOfField_test: Component added to the entity: True",
+ "DepthOfField_test: Component removed after UNDO: True",
+ "DepthOfField_test: Component added after REDO: True",
+ "DepthOfField_test: Entered game mode: True",
+ "DepthOfField_test: Exit game mode: True",
+ "DepthOfField_test: Entity disabled initially: True",
+ "DepthOfField_test: Entity enabled after adding required components: True",
+ "DepthOfField Controller|Configuration|Camera Entity: SUCCESS",
+ "DepthOfField_test: Entity is hidden: True",
+ "DepthOfField_test: Entity is shown: True",
+ "DepthOfField_test: Entity deleted: True",
+ "DepthOfField_test: UNDO entity deletion works: True",
+ "DepthOfField_test: REDO entity deletion works: True",
+ # Directional Light Component
+ "Directional Light Entity successfully created",
+ "Directional Light_test: Component added to the entity: True",
+ "Directional Light_test: Component removed after UNDO: True",
+ "Directional Light_test: Component added after REDO: True",
+ "Directional Light_test: Entered game mode: True",
+ "Directional Light_test: Exit game mode: True",
+ "Directional Light Controller|Configuration|Shadow|Camera: SUCCESS",
+ "Directional Light_test: Entity is hidden: True",
+ "Directional Light_test: Entity is shown: True",
+ "Directional Light_test: Entity deleted: True",
+ "Directional Light_test: UNDO entity deletion works: True",
+ "Directional Light_test: REDO entity deletion works: True",
+ # Exposure Control Component
+ "Exposure Control Entity successfully created",
+ "Exposure Control_test: Component added to the entity: True",
+ "Exposure Control_test: Component removed after UNDO: True",
+ "Exposure Control_test: Component added after REDO: True",
+ "Exposure Control_test: Entered game mode: True",
+ "Exposure Control_test: Exit game mode: True",
+ "Exposure Control_test: Entity disabled initially: True",
+ "Exposure Control_test: Entity enabled after adding required components: True",
+ "Exposure Control_test: Entity is hidden: True",
+ "Exposure Control_test: Entity is shown: True",
+ "Exposure Control_test: Entity deleted: True",
+ "Exposure Control_test: UNDO entity deletion works: True",
+ "Exposure Control_test: REDO entity deletion works: True",
+ # Global Skylight (IBL) Component
+ "Global Skylight (IBL) Entity successfully created",
+ "Global Skylight (IBL)_test: Component added to the entity: True",
+ "Global Skylight (IBL)_test: Component removed after UNDO: True",
+ "Global Skylight (IBL)_test: Component added after REDO: True",
+ "Global Skylight (IBL)_test: Entered game mode: True",
+ "Global Skylight (IBL)_test: Exit game mode: True",
+ "Global Skylight (IBL) Controller|Configuration|Diffuse Image: SUCCESS",
+ "Global Skylight (IBL) Controller|Configuration|Specular Image: SUCCESS",
+ "Global Skylight (IBL)_test: Entity is hidden: True",
+ "Global Skylight (IBL)_test: Entity is shown: True",
+ "Global Skylight (IBL)_test: Entity deleted: True",
+ "Global Skylight (IBL)_test: UNDO entity deletion works: True",
+ "Global Skylight (IBL)_test: REDO entity deletion works: True",
+ # Physical Sky Component
+ "Physical Sky Entity successfully created",
+ "Physical Sky component was added to entity",
+ "Entity has a Physical Sky component",
+ "Physical Sky_test: Component added to the entity: True",
+ "Physical Sky_test: Component removed after UNDO: True",
+ "Physical Sky_test: Component added after REDO: True",
+ "Physical Sky_test: Entered game mode: True",
+ "Physical Sky_test: Exit game mode: True",
+ "Physical Sky_test: Entity is hidden: True",
+ "Physical Sky_test: Entity is shown: True",
+ "Physical Sky_test: Entity deleted: True",
+ "Physical Sky_test: UNDO entity deletion works: True",
+ "Physical Sky_test: REDO entity deletion works: True",
+ # PostFX Layer Component
+ "PostFX Layer Entity successfully created",
+ "PostFX Layer_test: Component added to the entity: True",
+ "PostFX Layer_test: Component removed after UNDO: True",
+ "PostFX Layer_test: Component added after REDO: True",
+ "PostFX Layer_test: Entered game mode: True",
+ "PostFX Layer_test: Exit game mode: True",
+ "PostFX Layer_test: Entity is hidden: True",
+ "PostFX Layer_test: Entity is shown: True",
+ "PostFX Layer_test: Entity deleted: True",
+ "PostFX Layer_test: UNDO entity deletion works: True",
+ "PostFX Layer_test: REDO entity deletion works: True",
+ # Radius Weight Modifier Component
+ "Radius Weight Modifier Entity successfully created",
+ "Radius Weight Modifier_test: Component added to the entity: True",
+ "Radius Weight Modifier_test: Component removed after UNDO: True",
+ "Radius Weight Modifier_test: Component added after REDO: True",
+ "Radius Weight Modifier_test: Entered game mode: True",
+ "Radius Weight Modifier_test: Exit game mode: True",
+ "Radius Weight Modifier_test: Entity is hidden: True",
+ "Radius Weight Modifier_test: Entity is shown: True",
+ "Radius Weight Modifier_test: Entity deleted: True",
+ "Radius Weight Modifier_test: UNDO entity deletion works: True",
+ "Radius Weight Modifier_test: REDO entity deletion works: True",
+ # Light Component
+ "Light Entity successfully created",
+ "Light_test: Component added to the entity: True",
+ "Light_test: Component removed after UNDO: True",
+ "Light_test: Component added after REDO: True",
+ "Light_test: Entered game mode: True",
+ "Light_test: Exit game mode: True",
+ "Light_test: Entity is hidden: True",
+ "Light_test: Entity is shown: True",
+ "Light_test: Entity deleted: True",
+ "Light_test: UNDO entity deletion works: True",
+ "Light_test: REDO entity deletion works: True",
+ # Display Mapper Component
+ "Display Mapper Entity successfully created",
+ "Display Mapper_test: Component added to the entity: True",
+ "Display Mapper_test: Component removed after UNDO: True",
+ "Display Mapper_test: Component added after REDO: True",
+ "Display Mapper_test: Entered game mode: True",
+ "Display Mapper_test: Exit game mode: True",
+ "Display Mapper_test: Entity is hidden: True",
+ "Display Mapper_test: Entity is shown: True",
+ "Display Mapper_test: Entity deleted: True",
+ "Display Mapper_test: UNDO entity deletion works: True",
+ "Display Mapper_test: REDO entity deletion works: True",
+ ]
+
+ unexpected_lines = [
+ "failed to open",
+ "Traceback (most recent call last):",
+ ]
- # It requires at least one test
- def test_Dummy(self, request, editor, level, workspace, project, launcher_platform):
- pass
+ hydra.launch_and_validate_results(
+ request,
+ TEST_DIRECTORY,
+ editor,
+ "hydra_AtomEditorComponents_AddedToEntity.py",
+ timeout=EDITOR_TIMEOUT,
+ expected_lines=expected_lines,
+ unexpected_lines=unexpected_lines,
+ halt_on_unexpected=True,
+ null_renderer=True,
+ cfg_args=cfg_args,
+ )
diff --git a/AutomatedTesting/Registry/assets_scan_folders.setreg b/AutomatedTesting/Registry/assets_scan_folders.setreg
index 5394d381a3..91061f3337 100644
--- a/AutomatedTesting/Registry/assets_scan_folders.setreg
+++ b/AutomatedTesting/Registry/assets_scan_folders.setreg
@@ -38,6 +38,13 @@
"Gems/PrimitiveAssets"
]
},
+ "MaterialEditor":
+ {
+ "SourcePaths":
+ [
+ "Gems/Atom/Tools/MaterialEditor"
+ ]
+ },
"UiBasics":
{
"SourcePaths":
diff --git a/AutomatedTesting/sounds/wwise_project/Helios.wproj b/AutomatedTesting/sounds/wwise_project/Helios.wproj
deleted file mode 100644
index 3db6efcfdf..0000000000
--- a/AutomatedTesting/sounds/wwise_project/Helios.wproj
+++ /dev/null
@@ -1,13159 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GeneratedSoundBanks\Windows
-
-
-
-
- 256
-
-
-
-
-
- ..\wwise\
-
-
-
-
- Copy Streamed Files and Generate Dependency Info
-
-
-
-
- "$(WwiseExePath)\CopyStreamedFiles.exe" -info "$(InfoFilePath)" -outputpath "$(SoundBankPath)" -banks "$(SoundBankListAsTextFile)" -languages "$(LanguageList)"
-"$(WwiseProjectPath)\..\..\..\Tools\Python\python3.cmd" "$(WwiseProjectPath)\..\..\..\Gems\AudioEngineWwise\Tools\WwiseAuthoringScripts\bank_info_parser.py" "$(InfoFilePath)" "$(SoundBankPath)"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -80
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 8
-
-
-
-
- 0
-
-
-
-
- -1
-
-
-
-
- -1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- -1
-
-
-
-
- -1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 2
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- 65535
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 60
-
-
-
-
- 0
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 10000
-
-
-
-
- 1
-
-
-
-
- 400
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- -96
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 16
-
-
-
-
- -96
-
-
-
-
- 0
-
-
-
-
- 48000
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 16
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 75
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 512
-
-
-
-
- -50
-
-
-
-
- -30
-
-
-
-
- -40
-
-
-
-
- 0
-
-
-
-
- 24024
-
-
-
-
- 0
-
-
-
-
- 8
-
-
-
-
- English(US)
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 256
-
-
-
-
-
-
-
-
-
- 50
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- -80
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 64
-
-
-
-
- 1.5
-
-
-
-
- 2
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 64
-
-
-
-
- 64
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 0.1
-
-
-
-
- 4
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 20
-
-
-
-
- 10000
-
-
-
-
- 0.2
-
-
-
-
- True
-
-
-
-
- 80
-
-
-
-
- 0.2
-
-
-
-
- False
-
-
-
-
- 200
-
-
-
-
- 0.25
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 4
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 1
-
-
-
-
- 200
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 1
-
-
-
-
- 200
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 40
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 160
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 0.2
-
-
-
-
- 0.2
-
-
-
-
- 3000
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 6
-
-
-
-
- 15000
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 20000
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- 0.2
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 3
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- 65535
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 60
-
-
-
-
- 0
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- 65535
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 60
-
-
-
-
- 0
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 2
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- True
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 5000
-
-
-
-
- 10000
-
-
-
-
- False
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 9
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- 65535
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 60
-
-
-
-
- 0
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- 1000
-
-
-
-
- 5000
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 96
-
-
-
-
- -100
-
-
-
-
- -100
-
-
-
-
- -100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 35
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 9
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 3
-
-
-
-
- 64
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 3
-
-
-
-
- 64
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -96
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 50
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 4000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 120
-
-
-
-
- 4
-
-
-
-
- 4
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- 65535
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 60
-
-
-
-
- 0
-
-
-
-
- 127
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- -1
-
-
-
-
- 0
-
-
-
-
- -1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 120
-
-
-
-
- 4
-
-
-
-
- 4
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 12
-
-
-
-
- False
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- False
-
-
-
-
- -10
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 120
-
-
-
-
- 4
-
-
-
-
- 4
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 7
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- -6
-
-
-
-
- 0
-
-
-
-
- 90
-
-
-
-
- 0
-
-
-
-
- 245
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 8
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 0.2
-
-
-
-
- False
-
-
-
-
- 0.2
-
-
-
-
- 0.5
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
- 4
-
-
-
-
- 1
-
-
-
-
- 440
-
-
-
-
- -12
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -12
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- -12
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 4
-
-
-
-
- 6
-
-
-
-
- 5
-
-
-
-
- 100
-
-
-
-
- 1000
-
-
-
-
- 12000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- 15
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 25
-
-
-
-
-
-
-
-
- 0.1
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 1.5
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0.1
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 3
-
-
-
-
- 0.01
-
-
-
-
- -40
-
-
-
-
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0.01
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 10
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 1
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 40
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 18000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- -40
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 40
-
-
-
-
- 18000
-
-
-
-
- -96
-
-
-
-
- -20
-
-
-
-
- 20
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 13.62
-
-
-
-
- 26.09
-
-
-
-
- 26.55
-
-
-
-
- 26.91
-
-
-
-
- 28.04
-
-
-
-
- 29.09
-
-
-
-
- 29.9
-
-
-
-
- 30.86
-
-
-
-
- 15.66
-
-
-
-
- 17.52
-
-
-
-
- 19.02
-
-
-
-
- 20.83
-
-
-
-
- 22.6
-
-
-
-
- 24.05
-
-
-
-
- 24.78
-
-
-
-
- 25.6
-
-
-
-
- -96.3
-
-
-
-
- 2
-
-
-
-
- True
-
-
-
-
- 8
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 4
-
-
-
-
- -35
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- -96.3
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 40
-
-
-
-
- 1.2
-
-
-
-
- 80
-
-
-
-
- 50
-
-
-
-
- 8
-
-
-
-
- 2
-
-
-
-
- 100
-
-
-
-
- 15
-
-
-
-
- 5
-
-
-
-
- 66
-
-
-
-
- -96.3
-
-
-
-
- 0
-
-
-
-
- -20
-
-
-
-
- 23
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 1
-
-
-
-
- 2
-
-
-
-
- 10000
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 2.25
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- -96.3
-
-
-
-
- -96.3
-
-
-
-
- False
-
-
-
-
- 25
-
-
-
-
- 8
-
-
-
-
- 0
-
-
-
-
- -20
-
-
-
-
- 100
-
-
-
-
- 50
-
-
-
-
- 100
-
-
-
-
- 0.8
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
- 180
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 5
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0.25
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0.5
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 10
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 440
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 440
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 50
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -96.3
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -75
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 6
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- -96.3
-
-
-
-
- 0
-
-
-
-
- -60
-
-
-
-
- -96.3
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1024
-
-
-
-
- 48000
-
-
-
-
- 48000
-
-
-
-
- 48000
-
-
-
-
- 180
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -48
-
-
-
-
- False
-
-
-
-
- 0.1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 2048
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 100
-
-
-
-
- 1
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- Recorder.wav
-
-
-
-
- -3
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
- -96.3
-
-
-
-
- False
-
-
-
-
- -3
-
-
-
-
- -3
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- -100
-
-
-
-
- True
-
-
-
-
- -12
-
-
-
-
- 0.1
-
-
-
-
- -12
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- -12
-
-
-
-
- 0.1
-
-
-
-
- -12
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 50
-
-
-
-
- -96
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1024
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -96
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- -6
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- -6
-
-
-
-
- 50
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 250
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- -96
-
-
-
-
- 3
-
-
-
-
- True
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0.5
-
-
-
-
- 0
-
-
-
-
- 2400
-
-
-
-
- 345
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 20000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0.707
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 256
-
-
-
-
- False
-
-
-
-
- 100
-
-
-
-
- 100
-
-
-
-
- 100
-
-
-
-
- 100
-
-
-
-
- 1000
-
-
-
-
- 1000
-
-
-
-
- 1000
-
-
-
-
- 1000
-
-
-
-
- 20000
-
-
-
-
- 20000
-
-
-
-
- 20000
-
-
-
-
- 20000
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 5
-
-
-
-
- 5
-
-
-
-
- 9
-
-
-
-
- 9
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 16641
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 10
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 60
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
- 0.01
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
- 0.01
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
- 0.01
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
- 0.01
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0.1
-
-
-
-
- 0
-
-
-
-
- 150
-
-
-
-
- 1000
-
-
-
-
- 6000
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 4
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- True
-
-
-
-
- 5
-
-
-
-
- 100
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 3
-
-
-
-
- 200
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 3
-
-
-
-
- 500
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 4
-
-
-
-
- 1000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 3
-
-
-
-
- 3000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- False
-
-
-
-
- 3
-
-
-
-
- 6000
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 4
-
-
-
-
-
-
-
-
- -12
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- -12
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 6
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- 0.6
-
-
-
-
- 0.6
-
-
-
-
- 0.5
-
-
-
-
- 0.3
-
-
-
-
- 0.05
-
-
-
-
- 0.25
-
-
-
-
- 0.02
-
-
-
-
- 1.5
-
-
-
-
- 0.2
-
-
-
-
- 0.3
-
-
-
-
- True
-
-
-
-
- 0.2
-
-
-
-
- 8
-
-
-
-
- 0.2
-
-
-
-
- 12
-
-
-
-
-
-
-
-
- 20
-
-
-
-
- 0.7
-
-
-
-
- 100
-
-
-
-
- 0.1
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- True
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 3
-
-
-
-
- 1
-
-
-
-
-
-
-
-
- 2
-
-
-
-
- 0.7
-
-
-
-
- 1
-
-
-
-
- 0
-
-
-
-
- 1
-
-
-
-
- 0.9
-
-
-
-
- 0.1
-
-
-
-
- 3
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- True
-
-
-
-
- False
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- 2
-
-
-
-
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
-
-
-
-
-
-
- False
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- 1.4
-
-
-
-
- -6
-
-
-
-
- True
-
-
-
-
- 0
-
-
-
-
- 0
-
-
-
-
- False
-
-
-
-
- True
-
-
-
-
- 0.5
-
-
-
-
- 10000
-
-
-
-
- -6
-
-
-
-
- 7
-
-
-
-
- 1
-
-
-
-
- 1
-
-
-
-
- 7.25
-
-
-
-
- 2.75
-
-
-
-
- 3.25
-
-
-
-
- 4.25
-
-
-
-
- 4.75
-
-
-
-
- 3.75
-
-
-
-
-
-
-
-
- 100
-
-
-
-
- 50
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- -200
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- 100
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- 100
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- -200
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- 100
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 5
-
-
- 100
- 100
- 37
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ad5cd9f431..ae8a7a05f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,7 +9,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
-# Cmake version 3.17 is the minimum version needed for all of Open 3D Engine's supported platforms
+# Cmake version 3.19 is the minimum version needed for all of Open 3D Engine's supported platforms
cmake_minimum_required(VERSION 3.19)
# CMP0111 introduced in 3.19 has a bug that produces the policy to warn every time there is an
@@ -75,7 +75,9 @@ foreach(restricted_platform ${PAL_RESTRICTED_PLATFORMS})
endif()
endforeach()
-add_subdirectory(scripts)
+if(NOT INSTALLED_ENGINE)
+ add_subdirectory(scripts)
+endif()
# SPEC-1417 will investigate and fix this
if(NOT PAL_PLATFORM_NAME STREQUAL "Mac")
@@ -125,5 +127,5 @@ if(NOT INSTALLED_ENGINE)
ly_setup_o3de_install()
# IMPORTANT: must be included last
- include(cmake/CPack.cmake)
+ include(cmake/Packaging.cmake)
endif()
diff --git a/Code/CryEngine/CMakeLists.txt b/Code/CryEngine/CMakeLists.txt
index 1735224146..96f6427268 100644
--- a/Code/CryEngine/CMakeLists.txt
+++ b/Code/CryEngine/CMakeLists.txt
@@ -9,8 +9,5 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
-add_subdirectory(Cry3DEngine)
add_subdirectory(CryCommon)
-add_subdirectory(CryFont)
add_subdirectory(CrySystem)
-add_subdirectory(RenderDll)
diff --git a/Code/CryEngine/Cry3DEngine/3DEngineLight.cpp b/Code/CryEngine/Cry3DEngine/3DEngineLight.cpp
deleted file mode 100644
index 054620003c..0000000000
--- a/Code/CryEngine/Cry3DEngine/3DEngineLight.cpp
+++ /dev/null
@@ -1,733 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Light sources manager
-
-
-#include "Cry3DEngine_precompiled.h"
-
-#include "3dEngine.h"
-#include "ObjMan.h"
-#include "VisAreas.h"
-#include "AABBSV.h"
-#include "LightEntity.h"
-#include "ObjectsTree.h"
-#include "ClipVolumeManager.h"
-
-ILightSource* C3DEngine::CreateLightSource()
-{
- // construct new object
- CLightEntity* pLightEntity = new CLightEntity();
-
- m_lstStaticLights.Add(pLightEntity);
-
- return pLightEntity;
-}
-
-void C3DEngine::DeleteLightSource(ILightSource* pLightSource)
-{
- if (m_lstStaticLights.Delete((CLightEntity*)pLightSource) || pLightSource == m_pSun)
- {
- if (pLightSource == m_pSun)
- {
- m_pSun = NULL;
- }
-
- delete pLightSource;
- }
- else
- {
- assert(!"Light object not found");
- }
-}
-
-void CLightEntity::Release(bool)
-{
- Get3DEngine()->UnRegisterEntityDirect(this);
- Get3DEngine()->DeleteLightSource(this);
-}
-
-void CLightEntity::SetLightProperties(const CDLight& light)
-{
- C3DEngine* engine = Get3DEngine();
-
- m_light = light;
-
- m_bShadowCaster = (m_light.m_Flags & DLF_CASTSHADOW_MAPS) != 0;
-
- m_light.m_fBaseRadius = m_light.m_fRadius;
- m_light.m_fLightFrustumAngle = CLAMP(m_light.m_fLightFrustumAngle, 0.f, (LIGHT_PROJECTOR_MAX_FOV / 2.f));
-
- if (!(m_light.m_Flags & (DLF_PROJECT | DLF_AREA_LIGHT)))
- {
- m_light.m_fLightFrustumAngle = 90.f / 2.f;
- }
-
- m_light.m_pOwner = this;
-
- if (m_light.m_Flags & DLF_ATTACH_TO_SUN)
- {
- m_dwRndFlags |= ERF_RENDER_ALWAYS | ERF_HUD;
- }
-
- engine->GetLightEntities()->Delete((ILightSource*)this);
-
- PodArray& lightEntities = *engine->GetLightEntities();
-
- //on consoles we force all lights (except sun) to be deferred
- if (GetCVars()->e_DynamicLightsForceDeferred && !(m_light.m_Flags & (DLF_SUN | DLF_POST_3D_RENDERER)))
- {
- m_light.m_Flags |= DLF_DEFERRED_LIGHT;
- }
-
- if (light.m_Flags & DLF_DEFERRED_LIGHT)
- {
- lightEntities.Add((ILightSource*)this);
- }
- else
- {
- lightEntities.InsertBefore((ILightSource*)this, 0);
- }
-}
-
-void C3DEngine::ResetCasterCombinationsCache()
-{
- for (int nSunInUse = 0; nSunInUse < 2; nSunInUse++)
- {
- // clear user counters
- for (ShadowFrustumListsCacheUsers::iterator it = m_FrustumsCacheUsers[nSunInUse].begin(); it != m_FrustumsCacheUsers[nSunInUse].end(); ++it)
- {
- it->second = 0;
- }
- }
-}
-
-void C3DEngine::DeleteAllStaticLightSources()
-{
- for (int i = 0; i < m_lstStaticLights.Count(); i++)
- {
- delete m_lstStaticLights[i];
- }
- m_lstStaticLights.Reset();
-
- m_pSun = NULL;
-}
-
-void C3DEngine::InitShadowFrustums(const SRenderingPassInfo& passInfo)
-{
- assert(passInfo.IsGeneralPass());
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
-
- if (m_pSun)
- {
- CDLight* pLight = &m_pSun->GetLightProperties();
- CLightEntity* pLightEntity = (CLightEntity*)pLight->m_pOwner;
-
- if (passInfo.RenderShadows() && (pLight->m_Flags & DLF_CASTSHADOW_MAPS) && pLight->m_Id >= 0)
- {
- pLightEntity->UpdateGSMLightSourceShadowFrustum(passInfo);
-
- if (pLightEntity->m_pShadowMapInfo)
- {
- pLight->m_pShadowMapFrustums = pLightEntity->m_pShadowMapInfo->pGSM;
- }
- }
-
- _smart_ptr pMat = pLightEntity->GetMaterial();
- if (pMat)
- {
- pLight->m_Shader = pMat->GetShaderItem();
- }
-
- // update copy of light ion the renderer
- if (pLight->m_Id >= 0)
- {
- CDLight* pRndLight = NULL;
- GetRenderer()->EF_Query(EFQ_LightSource, pLight->m_Id, pRndLight);
- assert(pLight->m_Id == pRndLight->m_Id);
- pRndLight->m_pShadowMapFrustums = pLight->m_pShadowMapFrustums;
- pRndLight->m_Shader = pLight->m_Shader;
- pRndLight->m_Flags = pLight->m_Flags;
- }
-
- // add per object shadow frustums
- m_nCustomShadowFrustumCount = 0;
- if (passInfo.RenderShadows() && GetCVars()->e_ShadowsPerObject > 0)
- {
- const uint nFrustumCount = m_lstPerObjectShadows.size();
- if (nFrustumCount > m_lstCustomShadowFrustums.size())
- {
- m_lstCustomShadowFrustums.resize(nFrustumCount);
- }
-
- for (uint i = 0; i < nFrustumCount; ++i)
- {
- if (m_lstPerObjectShadows[i].pCaster)
- {
- ShadowMapFrustum* pFr = &m_lstCustomShadowFrustums[i];
- pFr->m_eFrustumType = ShadowMapFrustum::e_PerObject;
-
- CLightEntity::ProcessPerObjectFrustum(pFr, &m_lstPerObjectShadows[i], m_pSun, passInfo);
- ++m_nCustomShadowFrustumCount;
- }
- }
- }
- }
-
- if (passInfo.RenderShadows())
- {
- ResetCasterCombinationsCache();
- }
-}
-
-void C3DEngine::AddPerObjectShadow(IShadowCaster* pCaster, float fConstBias, float fSlopeBias, float fJitter, const Vec3& vBBoxScale, uint nTexSize)
-{
- SPerObjectShadow* pOS = GetPerObjectShadow(pCaster);
- if (!pOS)
- {
- pOS = &m_lstPerObjectShadows.AddNew();
- }
-
- pOS->pCaster = pCaster;
- pOS->fConstBias = fConstBias;
- pOS->fSlopeBias = fSlopeBias;
- pOS->fJitter = fJitter;
- pOS->vBBoxScale = vBBoxScale;
- pOS->nTexSize = nTexSize;
-}
-
-void C3DEngine::RemovePerObjectShadow(IShadowCaster* pCaster)
-{
- SPerObjectShadow* pOS = GetPerObjectShadow(pCaster);
- if (pOS)
- {
- FRAME_PROFILER("C3DEngine::RemovePerObjectShadow", GetSystem(), PROFILE_3DENGINE);
-
- size_t nIndex = (size_t)(pOS - m_lstPerObjectShadows.begin());
- m_lstPerObjectShadows.Delete(nIndex);
- }
-}
-
-struct SPerObjectShadow* C3DEngine::GetPerObjectShadow(IShadowCaster* pCaster)
-{
- for (int i = 0; i < m_lstPerObjectShadows.Count(); ++i)
- {
- if (m_lstPerObjectShadows[i].pCaster == pCaster)
- {
- return &m_lstPerObjectShadows[i];
- }
- }
-
- return NULL;
-}
-
-void C3DEngine::GetCustomShadowMapFrustums(ShadowMapFrustum*& arrFrustums, int& nFrustumCount)
-{
- arrFrustums = m_lstCustomShadowFrustums.begin();
- nFrustumCount = m_nCustomShadowFrustumCount;
-}
-
-// delete pLight->m_pProjCamera;
-//pLight->m_pProjCamera=0;
-//if(pLight->m_pShader)
-// SAFE_RELEASE(pLight->m_pShader);
-namespace
-{
- static inline bool CmpCastShadowFlag(const CDLight* p1, const CDLight* p2)
- {
- // move sun first
- if ((p1->m_Flags & DLF_SUN) > (p2->m_Flags & DLF_SUN))
- {
- return true;
- }
- else if ((p1->m_Flags & DLF_SUN) < (p2->m_Flags & DLF_SUN))
- {
- return false;
- }
-
- // move shadow casters first
- if ((p1->m_Flags & DLF_CASTSHADOW_MAPS) > (p2->m_Flags & DLF_CASTSHADOW_MAPS))
- {
- return true;
- }
- else if ((p1->m_Flags & DLF_CASTSHADOW_MAPS) < (p2->m_Flags & DLF_CASTSHADOW_MAPS))
- {
- return false;
- }
-
- // get some sorting consistency for shadow casters
- if (p1->m_pOwner > p2->m_pOwner)
- {
- return true;
- }
- else if (p1->m_pOwner < p2->m_pOwner)
- {
- return false;
- }
-
- return false;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void C3DEngine::SubmitSun(const SRenderingPassInfo& passInfo)
-{
- assert(passInfo.IsGeneralPass());
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
-
- if (m_pSun)
- {
- CDLight* light = &m_pSun->GetLightProperties();
-
- GetRenderer()->EF_ADDDlight(light, passInfo);
- }
-}
-
-void C3DEngine::RemoveEntityLightSources(IRenderNode* pEntity)
-{
- for (int i = 0; i < m_lstStaticLights.Count(); i++)
- {
- if (m_lstStaticLights[i] == pEntity)
- {
- m_lstStaticLights.Delete(i);
- if (pEntity == m_pSun)
- {
- m_pSun = NULL;
- }
- i--;
- }
- }
-}
-
-ILightSource* C3DEngine::GetSunEntity()
-{
- return m_pSun;
-}
-
-void C3DEngine::OnCasterDeleted(IShadowCaster* pCaster)
-{
- FUNCTION_PROFILER(gEnv->pSystem, PROFILE_3DENGINE);
- { // make sure pointer to object will not be used somewhere in the renderer
- if (m_pSun)
- {
- m_pSun->OnCasterDeleted(pCaster);
- }
-
- if (GetRenderer()->GetActiveGPUCount() > 1)
- {
- if (ShadowFrustumMGPUCache* pFrustumCache = GetRenderer()->GetShadowFrustumMGPUCache())
- {
- pFrustumCache->DeleteFromCache(pCaster);
- }
- }
-
- // remove from per object shadows list
- RemovePerObjectShadow(pCaster);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::Init()
-{
- m_bUpdateLightVolumes = false;
- for (int i = 0; i < RT_COMMAND_BUF_COUNT; ++i)
- {
- m_pLightVolumes[i].reserve(LV_MAX_COUNT);
- m_pLightVolsInfo[i].reserve(LV_MAX_COUNT);
- }
- memset(m_nWorldCells, 0, sizeof(m_nWorldCells));
- memset(m_pWorldLightCells, 0, sizeof(m_pWorldLightCells));
-}
-
-void CLightVolumesMgr::Reset()
-{
- for (int i = 0; i < RT_COMMAND_BUF_COUNT; ++i)
- {
- stl::free_container(m_pLightVolumes[i]);
- }
-
- m_bUpdateLightVolumes = false;
- memset(m_nWorldCells, 0, sizeof(m_nWorldCells));
- memset(m_pWorldLightCells, 0, sizeof(m_pWorldLightCells));
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-uint16 CLightVolumesMgr::RegisterVolume(const Vec3& vPos, f32 fRadius, uint8 nClipVolumeRef, const SRenderingPassInfo& passInfo)
-{
- DynArray& lightVolsInfo = m_pLightVolsInfo[passInfo.ThreadID()];
-
- IF ((m_bUpdateLightVolumes && (lightVolsInfo.size() < LV_MAX_COUNT)) && fRadius < 256.0f, 1)
- {
- FUNCTION_PROFILER_3DENGINE;
-
- int32 nPosx = (int32)(floorf(vPos.x * LV_CELL_RSIZEX));
- int32 nPosy = (int32)(floorf(vPos.y * LV_CELL_RSIZEY));
- int32 nPosz = (int32)(floorf(vPos.z * LV_CELL_RSIZEZ));
-
- // Check if world cell has any light volume, else add new one
- uint16 nHashIndex = GetWorldHashBucketKey(nPosx, nPosy, nPosz);
- uint16* pCurrentVolumeID = &m_nWorldCells[nHashIndex];
-
- while (*pCurrentVolumeID != 0)
- {
- SLightVolInfo& sVolInfo = *lightVolsInfo[*pCurrentVolumeID - 1];
-
- int32 nVolumePosx = (int32)(floorf(sVolInfo.vVolume.x * LV_CELL_RSIZEX));
- int32 nVolumePosy = (int32)(floorf(sVolInfo.vVolume.y * LV_CELL_RSIZEY));
- int32 nVolumePosz = (int32)(floorf(sVolInfo.vVolume.z * LV_CELL_RSIZEZ));
-
- if (nPosx == nVolumePosx &&
- nPosy == nVolumePosy &&
- nPosz == nVolumePosz &&
- nClipVolumeRef == sVolInfo.nClipVolumeID)
- {
- return (uint16) * pCurrentVolumeID;
- }
-
- pCurrentVolumeID = &sVolInfo.nNextVolume;
- }
-
- // create new volume
- SLightVolInfo* pLightVolInfo = new SLightVolInfo(vPos, fRadius, nClipVolumeRef);
- lightVolsInfo.push_back(pLightVolInfo);
- *pCurrentVolumeID = lightVolsInfo.size();
-
- return *pCurrentVolumeID;
- }
-
- return 0;
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::RegisterLight(const CDLight& pDL, uint32 nLightID, [[maybe_unused]] const SRenderingPassInfo& passInfo)
-{
- IF ((m_bUpdateLightVolumes && !(pDL.m_Flags & LV_DLF_LIGHTVOLUMES_MASK)), 1)
- {
- FUNCTION_PROFILER_3DENGINE;
-
- const f32 fColCheck = (f32) fsel(pDL.m_Color.r + pDL.m_Color.g + pDL.m_Color.b - 0.333f, 1.0f, 0.0f); //light color > threshold
- const f32 fRadCheck = (f32) fsel(pDL.m_fRadius - 0.5f, 1.0f, 0.0f); //light radius > threshold
- if (fColCheck * fRadCheck)
- {
- //if the radius is large than certain value, all the the world light cells will be lighted anyway. So we just add the light to all the cells
- //the input radius restriction will be added too
- if(floorf(pDL.m_fRadius*LV_LIGHT_CELL_R_SIZE) > LV_LIGHTS_WORLD_BUCKET_SIZE)
- {
- for (int32 idx = 0; idx < LV_LIGHTS_WORLD_BUCKET_SIZE; idx++)
- {
- SLightCell& lightCell = m_pWorldLightCells[idx];
- CryPrefetch(&lightCell);
- if (lightCell.nLightCount < LV_LIGHTS_MAX_COUNT)
- {
- lightCell.nLightID[lightCell.nLightCount] = nLightID;
- lightCell.nLightCount += 1;
- }
- }
- }
- else
- {
- int32 nMiny = (int32)(floorf((pDL.m_Origin.y - pDL.m_fRadius) * LV_LIGHT_CELL_R_SIZE));
- int32 nMaxy = (int32)(floorf((pDL.m_Origin.y + pDL.m_fRadius) * LV_LIGHT_CELL_R_SIZE));
- int32 nMinx = (int32)(floorf((pDL.m_Origin.x - pDL.m_fRadius) * LV_LIGHT_CELL_R_SIZE));
- int32 nMaxx = (int32)(floorf((pDL.m_Origin.x + pDL.m_fRadius) * LV_LIGHT_CELL_R_SIZE));
-
- // Register light into all cells touched by light radius
- for (int32 y = nMiny, ymax = nMaxy; y <= ymax; ++y)
- {
- for (int32 x = nMinx, xmax = nMaxx; x <= xmax; ++x)
- {
- SLightCell& lightCell = m_pWorldLightCells[GetWorldHashBucketKey(x, y, 1, LV_LIGHTS_WORLD_BUCKET_SIZE)];
- CryPrefetch(&lightCell);
- if (lightCell.nLightCount < LV_LIGHTS_MAX_COUNT)
- {
- //only if the las light added to the cell wasn't the same light
- if (!(lightCell.nLightCount > 0 && lightCell.nLightID[lightCell.nLightCount - 1] == nLightID))
- {
- lightCell.nLightID[lightCell.nLightCount] = nLightID;
- lightCell.nLightCount += 1;
- }
- }
- }
- }
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::AddLight(const SRenderLight& pLight, const SLightVolInfo* __restrict pVolInfo, SLightVolume& pVolume)
-{
- // Check for clip volume
- if (pLight.m_nStencilRef[0] == pVolInfo->nClipVolumeID || pLight.m_nStencilRef[1] == pVolInfo->nClipVolumeID ||
- pLight.m_nStencilRef[0] == CClipVolumeManager::AffectsEverythingStencilRef)
- {
- const Vec4* __restrict vLight = (Vec4*) &pLight.m_Origin.x;
- const Vec4& vVolume = pVolInfo->vVolume;
- const f32 fDimCheck = (f32) fsel(vLight->w - vVolume.w * 0.1f, 1.0f, 0.0f); //light radius not more than 10x smaller than volume radius
- const f32 fOverlapCheck = (f32) fsel(sqr(vVolume.x - vLight->x) + sqr(vVolume.y - vLight->y) + sqr(vVolume.z - vLight->z) - sqr(vVolume.w + vLight->w), 0.0f, 1.0f);// touches volumes
- if (fDimCheck * fOverlapCheck)
- {
- float fAttenuationBulbSize = pLight.m_fAttenuationBulbSize;
- Vec3 lightColor = *((Vec3*)&pLight.m_Color);
-
- // Adjust light intensity so that the intended brightness is reached 1 meter from the light's surface
- IF (!(pLight.m_Flags & (DLF_AREA_LIGHT | DLF_AMBIENT)), 1)
- {
- fAttenuationBulbSize = max(fAttenuationBulbSize, 0.001f);
-
- // Solve I * 1 / (1 + d/lightsize)^2 = 1
- float intensityMul = 1.0f + 1.0f / fAttenuationBulbSize;
- intensityMul *= intensityMul;
- lightColor *= intensityMul;
- }
-
- pVolume.pData.push_back();
- SLightVolume::SLightData& lightData = pVolume.pData[pVolume.pData.size() - 1];
- lightData.vPos = *vLight;
- lightData.vColor = Vec4(lightColor, fAttenuationBulbSize);
- lightData.vParams = Vec4(0.f, 0.f, 0.f, 0.f);
-
- IF (pLight.m_Flags & DLF_PROJECT, 1)
- {
- lightData.vParams = Vec4(pLight.m_ObjMatrix.GetColumn0(), cos_tpl(DEG2RAD(pLight.m_fLightFrustumAngle)));
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::Update(const SRenderingPassInfo& passInfo)
-{
- uint32 nThreadID = passInfo.ThreadID();
- DynArray& lightVolsInfo = m_pLightVolsInfo[nThreadID];
-
- if (!m_bUpdateLightVolumes || lightVolsInfo.empty())
- {
- return;
- }
-
- FUNCTION_PROFILER_3DENGINE;
- TArray* pLights = GetRenderer()->EF_GetDeferredLights(passInfo);
- const uint32 nLightCount = pLights->size();
-
- uint32 nLightVols = lightVolsInfo.size();
- LightVolumeVector& lightVols = m_pLightVolumes[nThreadID];
- uint32 existingLightVolsCount = 0; //This is 0, that just means we will be overwriting all existing light volumes
-
- //If this is a recursive pass (not the first time that this is called this frame), we're just going to be adding on new light volumes to the existing collection
- if (passInfo.IsRecursivePass())
- {
- existingLightVolsCount = lightVols.size();
-
- //If no new light volumes have been added, don't bother updating
- if (nLightVols == existingLightVolsCount)
- {
- return;
- }
- }
-
- lightVols.resize(nLightVols);
-
- if (!nLightCount)
- {
- //Start out existingLightVolsCount to avoid clearing out existing light volumes when we don't need to
- for (uint32 v = existingLightVolsCount; v < nLightVols; ++v)
- {
- lightVols[v].pData.resize(0);
- }
-
- return;
- }
-
- const int MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE = 1024;
-
- if (nLightCount > MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE)
- {
- CryWarning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_WARNING, "More lights in the scene (%d) than supported by the Light Volume Update function (%d). Extra lights will be ignored.",
- nLightCount, MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE);
- }
-
- //This can be a uint8 array because nLightVols should never be greater than 256(LV_MAX_COUNT)
- assert(LV_MAX_COUNT <= 256);
- uint8 lightProcessedStateArray[MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE];
-
- //Start at the number of light volumes that already exist so that we don't end up re-updating light volumes unnecessarily.
- for (uint32 v = existingLightVolsCount; v < nLightVols; ++v)
- {
- const Vec4* __restrict vBVol = &lightVolsInfo[v]->vVolume;
- int32 nMiny = (int32)(floorf((vBVol->y - vBVol->w) * LV_LIGHT_CELL_R_SIZE));
- int32 nMaxy = (int32)(floorf((vBVol->y + vBVol->w) * LV_LIGHT_CELL_R_SIZE));
- int32 nMinx = (int32)(floorf((vBVol->x - vBVol->w) * LV_LIGHT_CELL_R_SIZE));
- int32 nMaxx = (int32)(floorf((vBVol->x + vBVol->w) * LV_LIGHT_CELL_R_SIZE));
-
- lightVols[v].pData.resize(0);
-
- // Loop through active light cells touching bounding volume (~avg 2 cells)
- for (int32 y = nMiny, ymax = nMaxy; y <= ymax; ++y)
- {
- for (int32 x = nMinx, xmax = nMaxx; x <= xmax; ++x)
- {
- const SLightCell& lightCell = m_pWorldLightCells[GetWorldHashBucketKey(x, y, 1, LV_LIGHTS_WORLD_BUCKET_SIZE)];
- CryPrefetch(&lightCell);
-
- const SRenderLight& pFirstDL = (*pLights)[lightCell.nLightID[0]];
- CryPrefetch(&pFirstDL);
- CryPrefetch(&pFirstDL.m_ObjMatrix);
- for (uint32 l = 0; (l < lightCell.nLightCount) & (lightVols[v].pData.size() < LIGHTVOLUME_MAXLIGHTS); ++l)
- {
- const int32 nLightId = lightCell.nLightID[l];
-
- //Only allow IDs < MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE to continue or else we'll overflow access to
- //lightProcessedStateArray[MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE]. Skipping the extra lights shouldn't really matter
- //since A) folks won't be using that many lights, and B) for the case of light emitting particles, they tend to be grouped
- //so that the individual contributions tend to bleed together anyway.
- if (nLightId >= MAX_NUM_LIGHTS_FOR_LIGHT_VOLUME_UPDATE)
- {
- continue;
- }
-
- if (static_cast(nLightId) < nLightCount)
- {
- const SRenderLight& pDL = (*pLights)[nLightId];
- const int32 nNextLightId = lightCell.nLightID[(l + 1) & (LIGHTVOLUME_MAXLIGHTS - 1)];
- const SRenderLight& pNextDL = (*pLights)[nNextLightId];
- CryPrefetch(&pNextDL);
- CryPrefetch(&pNextDL.m_ObjMatrix);
-
- IF(lightProcessedStateArray[nLightId] != v + 1, 1)
- {
- lightProcessedStateArray[nLightId] = v + 1;
- AddLight(pDL, &*lightVolsInfo[v], lightVols[v]);
- }
- }
- }
- }
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::Clear(const SRenderingPassInfo& passInfo)
-{
- DynArray& lightVolsInfo = m_pLightVolsInfo[passInfo.ThreadID()];
-
- m_bUpdateLightVolumes = false;
- if (GetCVars()->e_LightVolumes && passInfo.IsGeneralPass() && GetCVars()->e_DynamicLights)
- {
- memset(m_nWorldCells, 0, sizeof(m_nWorldCells));
- memset(m_pWorldLightCells, 0, sizeof(m_pWorldLightCells));
-
- //Clean up volume info data
- for (size_t i = 0; i < lightVolsInfo.size(); ++i)
- {
- delete lightVolsInfo[i];
- }
-
- m_pLightVolsInfo[passInfo.ThreadID()].clear();
- m_bUpdateLightVolumes = (GetCVars()->e_LightVolumes == 1) ? true : false;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void CLightVolumesMgr::GetLightVolumes(threadID nThreadID, SLightVolume*& pLightVols, uint32& nNumVols)
-{
- pLightVols = 0;
- nNumVols = 0;
- if (GetCVars()->e_LightVolumes == 1 && GetCVars()->e_DynamicLights && !m_pLightVolumes[nThreadID].empty())
- {
- pLightVols = &m_pLightVolumes[nThreadID][0];
- nNumVols = m_pLightVolumes[nThreadID].size();
- }
-}
-
-
-void C3DEngine::GetLightVolumes(threadID nThreadID, SLightVolume*& pLightVols, uint32& nNumVols)
-{
- m_LightVolumesMgr.GetLightVolumes(nThreadID, pLightVols, nNumVols);
-}
-
-uint16 C3DEngine::RegisterVolumeForLighting(const Vec3& vPos, f32 fRadius, uint8 nClipVolumeRef, const SRenderingPassInfo& passInfo)
-{
- return m_LightVolumesMgr.RegisterVolume(vPos, fRadius, nClipVolumeRef, passInfo);
-}
-
-//////////////////////////////////////////////////////////////////////////
-#ifndef _RELEASE
-void CLightVolumesMgr::DrawDebug(const SRenderingPassInfo& passInfo)
-{
- DynArray& lightVolsInfo = m_pLightVolsInfo[passInfo.ThreadID()];
-
- IRenderer* pRenderer = GetRenderer();
- IRenderAuxGeom* pAuxGeom = GetRenderer()->GetIRenderAuxGeom();
- if (!pAuxGeom || !passInfo.IsGeneralPass())
- {
- return;
- }
-
- ColorF cWhite = ColorF(1, 1, 1, 1);
- ColorF cBad = ColorF(1.0f, 0.0, 0.0f, 1.0f);
- ColorF cWarning = ColorF(1.0f, 1.0, 0.0f, 1.0f);
- ColorF cGood = ColorF(0.0f, 0.5, 1.0f, 1.0f);
- ColorF cSingleCell = ColorF(0.0f, 1.0, 0.0f, 1.0f);
-
- const uint32 nLightVols = lightVolsInfo.size();
- LightVolumeVector& lightVols = m_pLightVolumes[passInfo.ThreadID()];
- const Vec3 vCamPos = passInfo.GetCamera().GetPosition();
-
- float fYLine = 8.0f, fYStep = 20.0f;
- GetRenderer()->Draw2dLabel(8.0f, fYLine += fYStep, 2.0f, (float*)&cWhite.r, false, "Light Volumes Info (count %d)", nLightVols);
-
- for (uint32 v = 0; v < nLightVols; ++v) // draw each light volume
- {
- SLightVolume& lv = lightVols[v];
- SLightVolInfo& lvInfo = *lightVolsInfo[v];
-
- ColorF& cCol = (lv.pData.size() >= 10) ? cBad : ((lv.pData.size() >= 5) ? cWarning : cGood);
- const Vec3 vPos = Vec3(lvInfo.vVolume.x, lvInfo.vVolume.y, lvInfo.vVolume.z);
- const float fCamDistSq = (vPos - vCamPos).len2();
- cCol.a = max(0.25f, min(1.0f, 1024.0f / (fCamDistSq + 1e-6f)));
-
- pRenderer->DrawLabelEx(vPos, 1.3f, (float*)&cCol.r, true, true, "Id: %d\nPos: %.2f %.2f %.2f\nRadius: %.2f\nLights: %d\nOutLights: %d",
- v, vPos.x, vPos.y, vPos.z, lvInfo.vVolume.w, lv.pData.size(), (*(int32*)&lvInfo.vVolume.w) & (1 << 31) ? 1 : 0);
-
- if (GetCVars()->e_LightVolumesDebug == 2)
- {
- const float fSideSize = 0.707f * sqrtf(lvInfo.vVolume.w * lvInfo.vVolume.w * 2);
- pAuxGeom->DrawAABB(AABB(vPos - Vec3(fSideSize), vPos + Vec3(fSideSize)), false, cCol, eBBD_Faceted);
- }
-
- if (GetCVars()->e_LightVolumesDebug == 3)
- {
- cBad.a = 1.0f;
- const Vec3 vCellPos = Vec3(floorf((lvInfo.vVolume.x) * LV_CELL_RSIZEX) * LV_CELL_SIZEX,
- floorf((lvInfo.vVolume.y) * LV_CELL_RSIZEY) * LV_CELL_SIZEY,
- floorf((lvInfo.vVolume.z) * LV_CELL_RSIZEZ) * LV_CELL_SIZEZ);
-
- const Vec3 vMin = vCellPos;
- const Vec3 vMax = vMin + Vec3(LV_CELL_SIZEX, LV_CELL_SIZEY, LV_CELL_SIZEZ);
- pAuxGeom->DrawAABB(AABB(vMin, vMax), false, cBad, eBBD_Faceted);
- }
- }
-}
-#endif
diff --git a/Code/CryEngine/Cry3DEngine/3DEngineMemory.cpp b/Code/CryEngine/Cry3DEngine/3DEngineMemory.cpp
deleted file mode 100644
index 65cb53d0b1..0000000000
--- a/Code/CryEngine/Cry3DEngine/3DEngineMemory.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-#include "Cry3DEngine_precompiled.h"
-#include "3DEngineMemory.h"
-
-// Static CTemporaryPool instance
-CTemporaryPool* CTemporaryPool::s_Instance = NULL;
-
-namespace util
-{
- void* pool_allocate(size_t nSize)
- {
- return CTemporaryPool::Get()->Allocate(nSize, 8);
- }
- void pool_free(void* ptr)
- {
- return CTemporaryPool::Get()->Free(ptr);
- }
-}
diff --git a/Code/CryEngine/Cry3DEngine/3DEngineMemory.h b/Code/CryEngine/Cry3DEngine/3DEngineMemory.h
deleted file mode 100644
index 143aeccab2..0000000000
--- a/Code/CryEngine/Cry3DEngine/3DEngineMemory.h
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-#ifndef CRYINCLUDE_CRY3DENGINE_3DENGINEMEMORY_H
-#define CRYINCLUDE_CRY3DENGINE_3DENGINEMEMORY_H
-#pragma once
-
-// The type of pool responsible for temporary allocations within the 3dengine
-//
-// Note: The header is included here for reasons of devirtualization. If
-// included directly from the precompiled header in 3dEngine, the gamedll will
-// fail to compile!
-#include
-#include
-
-using NCryPoolAlloc::CFirstFit; // speed of allocations are crucial, so simply use the first fitting free allocation
-using NCryPoolAlloc::CInPlace; //
-using NCryPoolAlloc::CMemoryDynamic; // the pool itself will be dynamically allocated
-using NCryPoolAlloc::CListItemInPlace; // use inplace items
-
-// Tempororary Pool Holder
-class CTemporaryPool
-{
-private:
- // Access granted for 3dEngine to create, destroy and maintain the temporary
- // pool for the 3d engine
- friend class C3DEngine;
-
- // The static pool instance - one pool to rule them all (temp allocations at least)
- static CTemporaryPool* s_Instance;
-
- // The type of the backing temporary pool
- typedef CFirstFit, CListItemInPlace> TTemporaryPool;
- TTemporaryPool Pool;
-
- // A non-recursive critical section guards the pool against concurrent access
- typedef CryCriticalSectionNonRecursive TTemporaryPoolLock;
- TTemporaryPoolLock Lock;
-
- // Initialize the pool manager.
- //
- // Allocates the backing storage and initializes the temporary pool
- // itself. The backing storage is aligned to 16 bytes to reduce the amount of
- // cachelines crossed by the temporary pool
- static bool Initialize(size_t poolSize)
- {
- // Create the object instance
- s_Instance = new CTemporaryPool();
- if (!s_Instance)
- {
- CryFatalError("CTemporaryPool::Init(): could not create an instance of CTemporaryPool");
- return false;
- }
-
- // Allocate the backing storage
- uint8* tempPool = reinterpret_cast(CryModuleMemalign(poolSize, 16));
- if (!tempPool)
- {
- CryFatalError("CTemporaryPool::Init(): could not allocate %" PRISIZE_T " bytes for temportary pool", poolSize);
- return false;
- }
-
- // Initialize the actual pool
- s_Instance->Pool.InitMem(poolSize, tempPool);
- return true;
- }
-
- // Shutdown the temporary pool manager.
- //
- // Frees the temporary pool
- static bool Shutdown()
- {
- if (s_Instance == NULL)
- {
- CryFatalError("CTemporaryPool::Shutdown(): no temporary pool instance present");
- return false;
- }
-
- bool error = false;
- CTemporaryPool& instance = *s_Instance;
- if (instance.Pool.Data())
- {
- CryModuleMemalignFree(instance.Pool.Data());
- }
- else
- {
- error = true;
- }
-
- delete s_Instance;
- s_Instance = NULL;
- return !error;
- }
-
- // Templated construct helper member function using an inplace factory
- //
- // Called from the templated New function below. Returns a typed
- // pointer to the inplace constructed object.
- template
- T* Construct(const InPlaceFactory& factory, void* storage)
- {
- return reinterpret_cast(factory.template apply(storage));
- }
-
- // Templated destruct helper member function.
- //
- // Calls the object's destructor and returns a void pointer to the storage
- template
- void* Destruct(T* obj)
- {
- obj->~T();
- return reinterpret_cast(obj);
- }
-
- // Empty private constructor/destructors to prevent clients from creating and
- // destroying instances of CTemporaryPool (there should only be one instance
- // in the 3DEngine).
- CTemporaryPool() {};
- ~CTemporaryPool() {};
-
-public:
-
- // Allocate a block of memory with the given size and alignment
- void* Allocate(size_t size, size_t align)
- {
- AUTO_LOCK_T(CryCriticalSectionNonRecursive, Lock);
- void* pData = Pool.Allocate(size, align);
- if (pData == NULL)
- {
- CryFatalError("**** could not allocate %" PRISIZE_T " bytes from temporary pool", size);
- }
- return Pool.Resolve(pData);
- };
-
- // Allocates memory and constructs object of type 'T'
- //
- // Note: This method is respects the alignment of 'T' via C99 alignof()
- template
- T* New(const Expr& expr)
- {
- AUTO_LOCK_T(CryCriticalSectionNonRecursive, Lock);
- void* pObjStorage = Pool.Allocate(sizeof(T), alignof(T));
- if (pObjStorage == NULL)
- {
- CryFatalError("**** could not allocate %d bytes from temporary pool",
- (int)sizeof (T));
- }
- return Construct(expr, pObjStorage);
- };
-
- // Allocates memory and constructs object of type 'T'
- //
- // Note: This method is respects the alignment of 'T' via C99 alignof()
- template
- T* New()
- {
- AUTO_LOCK_T(CryCriticalSectionNonRecursive, Lock);
- void* pObjStorage = Pool.Allocate(sizeof(T), alignof(T));
- if (pObjStorage == NULL)
- {
- CryFatalError("**** could not allocate %d bytes from temporary pool",
- (int)sizeof (T));
- }
- return Construct(InplaceFactory(), pObjStorage);
- };
-
- // Frees a block of memory from the temporary pool
- //
- void Free(void* ptr)
- {
- AUTO_LOCK_T(CryCriticalSectionNonRecursive, Lock);
- Pool.Free(ptr);
- }
-
-
- // Destroys an object of type 'T' and frees the underlying block of memory
- template
- void Delete(T* ptr)
- {
- AUTO_LOCK_T(CryCriticalSectionNonRecursive, Lock);
- Pool.Free(Destruct(ptr));
- }
-
- // Static function to retrieve the static instance of CTemporaryPool
- static CTemporaryPool* Get() { return s_Instance; };
-
- void GetMemoryUsage(ICrySizer* pSizer) const
- {
- pSizer->AddObject(Pool.Data(), Pool.MemSize());
- }
-};
-
-// A stl compliant scratch allocator that uses the given temporary pool.
-template
-class scratch_allocator
-{
-public:
- typedef Type value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- template
- struct rebind
- {
- typedef scratch_allocator other;
- };
-
- scratch_allocator() {}
- template
- scratch_allocator(const scratch_allocator&) {}
- scratch_allocator(const scratch_allocator&) {}
- ~scratch_allocator() {}
-
- pointer address(reference x) const {return &x; }
- const_pointer address(const_reference x) const { return &x; }
-
- // Note: size can be zero - return value will be null in that case
- value_type* allocate(size_type n, const void* = 0)
- {
- if (n != 0)
- {
- size_type buf_size = n * sizeof(value_type);
-
- void* ret = CTemporaryPool::Get()->Allocate(
- buf_size,
- alignof(value_type));
-
- return reinterpret_cast(ret);
- }
- return 0;
- }
-
- // Note: size can be zero.
- void deallocate(pointer p, [[maybe_unused]] size_type n)
- {
- if (p != NULL)
- {
- CTemporaryPool::Get()->Free(p);
- }
- }
-
- size_type max_size() const { return size_t(-1) / sizeof(value_type); }
-
- void construct(pointer p, const_reference val)
- { new (reinterpret_cast(p))value_type(val); }
-
- void destroy(pointer p) { p->~value_type(); }
-
- void cleanup() {}
-
- size_t get_heap_size() { return 0; }
-
- size_t get_wasted_in_allocation() { return 0; }
-
- size_t get_wasted_in_blocks() { return 0; }
-};
-
-
-// A scratch vector type to use the stl vector
-template
-class scratch_vector
- : public std::vector >
-{
-};
-
-namespace util
-{
- extern void* pool_allocate(size_t nSize);
- extern void pool_free(void* ptr);
-}
-
-#endif // CRYINCLUDE_CRY3DENGINE_3DENGINEMEMORY_H
diff --git a/Code/CryEngine/Cry3DEngine/3DEngineRender.cpp b/Code/CryEngine/Cry3DEngine/3DEngineRender.cpp
deleted file mode 100644
index 26c731aca4..0000000000
--- a/Code/CryEngine/Cry3DEngine/3DEngineRender.cpp
+++ /dev/null
@@ -1,3932 +0,0 @@
-
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : rendering
-
-
-#include "Cry3DEngine_precompiled.h"
-
-#include "3dEngine.h"
-#include "ObjMan.h"
-#include "VisAreas.h"
-#include "Ocean.h"
-#include
-#include
-#include "DecalManager.h"
-#include "SkyLightManager.h"
-
-#include "CullBuffer.h"
-#include "LightEntity.h"
-#include "FogVolumeRenderNode.h"
-#include "ObjectsTree.h"
-#include "CloudsManager.h"
-#include "MatMan.h"
-#include "VolumeObjectRenderNode.h"
-#include "CryPath.h"
-#include "ILocalMemoryUsage.h"
-#include "BitFiddling.h"
-#include "ObjMan.h"
-#include "GeomCacheManager.h"
-#include "ClipVolumeManager.h"
-#include "ITimeOfDay.h"
-#include "Environment/OceanEnvironmentBus.h"
-
-#include
-
-
-
-#ifdef GetCharWidth
-#undef GetCharWidth
-#endif //GetCharWidth
-
-
-#ifdef WIN32
-#include
-#endif
-
-#include
-#include
-#include
-#include // for AZ_MAX_PATH_LEN
-#include
-#include "../RenderDll/Common/Memory/VRAMDrillerBus.h"
-
-////////////////////////////////////////////////////////////////////////////////////////
-// RenderScene
-////////////////////////////////////////////////////////////////////////////////////////
-#define FREE_MEMORY_YELLOW_LIMIT (30)
-#define FREE_MEMORY_RED_LIMIT (10)
-#define DISPLAY_INFO_SCALE (1.25f)
-#define DISPLAY_INFO_SCALE_SMALL (1.1f)
-#define STEP_SMALL_DIFF (2.f)
-
-#if defined(WIN32) || defined(WIN64) || defined(MAC)
-// for panorama screenshots
-class CStitchedImage
- : public Cry3DEngineBase
-{
-public:
- CStitchedImage(C3DEngine& rEngine,
- const uint32 dwWidth,
- const uint32 dwHeight,
- const uint32 dwVirtualWidth,
- const uint32 dwVirtualHeight,
- const uint32 dwSliceCount,
- const f32 fTransitionSize,
- const bool bMetaData = false)
- : m_rEngine(rEngine)
- , m_dwWidth(dwWidth)
- , m_dwHeight(dwHeight)
- , m_fInvWidth(1.f / static_cast(dwWidth))
- , m_fInvHeight(1.f / static_cast(dwHeight))
- , m_dwVirtualWidth(dwVirtualWidth)
- , m_dwVirtualHeight(dwVirtualHeight)
- , m_fInvVirtualWidth(1.f / static_cast(dwVirtualWidth))
- , m_fInvVirtualHeight(1.f / static_cast(dwVirtualHeight))
- , m_nFileId(0)
- , m_dwSliceCount(dwSliceCount)
- , m_fHorizFOV(2 * gf_PI / dwSliceCount)
- , m_bFlipY(false)
- , m_fTransitionSize(fTransitionSize)
- , m_bMetaData(bMetaData)
- {
- assert(dwWidth);
- assert(dwHeight);
-
- m_RGB.resize(m_dwWidth * 3 * m_dwHeight);
-
- // ratio between width and height defines angle 1 (angle from mid to cylinder edges)
- float fVert1Frac = (2 * gf_PI * m_dwHeight) / m_dwWidth;
-
- // slice count defines angle 2
- float fHorizFrac = tanf(GetHorizFOVWithBorder() * 0.5f);
- float fVert2Frac = 2.0f * fHorizFrac / rEngine.GetRenderer()->GetWidth() * rEngine.GetRenderer()->GetHeight();
- // float fVert2Frac = 2.0f * fHorizFrac / rEngine.GetRenderer()->GetWidth() * rEngine.GetRenderer()->GetHeight();
-
- // the bigger one defines the needed angle
- float fVertFrac = max(fVert1Frac, fVert2Frac);
-
- // planar image becomes a barrel after projection and we need to zoom in to only utilize the usable part (inner rect)
- // this is not always needed - for quality with low slice count we could be save some quality here
- fVertFrac /= cosf(GetHorizFOVWithBorder() * 0.5f);
-
- // compute FOV from Frac
- float fVertFOV = 2 * atanf(0.5f * fVertFrac);
-
- m_fPanoramaShotVertFOV = fabsf(fVertFOV);
-
- CryLog("RenderFov = %f degrees (%f = max(%f,%f)*fix)", RAD2DEG(m_fPanoramaShotVertFOV), fVertFrac, fVert1Frac, fVert2Frac);
- Clear();
- }
-
- void Clear()
- {
- memset(&m_RGB[0], 0, m_dwWidth * m_dwHeight * 3);
- }
-
- // szDirectory + "/" + file_id + "." + extension
- // logs errors in the case there are problems
- bool SaveImage(const char* szDirectory)
- {
- assert(szDirectory);
-
- const char* szExtension = m_rEngine.GetCVars()->e_ScreenShotFileFormat->GetString();
-
- if (azstricmp(szExtension, "dds") != 0 &&
- azstricmp(szExtension, "tga") != 0 &&
- azstricmp(szExtension, "jpg") != 0)
- {
- gEnv->pLog->LogError("Format e_ScreenShotFileFormat='%s' not supported", szExtension);
- return false;
- }
-
- const char* sRequestedName = m_rEngine.GetCVars()->e_ScreenShotFileName->GetString();
-
- char sFileName[AZ_MAX_PATH_LEN];
-
- if (azstricmp(sRequestedName, "") != 0)
- {
- AZStd::string folderPath;
- AZStd::string fileName;
- AzFramework::StringFunc::Path::Split(sRequestedName, nullptr, &folderPath, &fileName);
- gEnv->pFileIO->CreatePath((AZStd::string("@user@/ScreenShots/") + folderPath).c_str());
- azsnprintf(sFileName, sizeof(sFileName), "@user@/ScreenShots/%s.%s", sRequestedName, szExtension);
- }
- else
- {
- azsnprintf(sFileName, sizeof(sFileName), "@user@/ScreenShots/%s", szDirectory);
- gEnv->pFileIO->CreatePath(sFileName);
-
- // find free file id
- for (;; )
- {
- azsnprintf(sFileName, sizeof(sFileName), "@user@/ScreenShots/%s/%.5d.%s", szDirectory, m_nFileId, szExtension);
-
- AZ::IO::HandleType fileHandle = gEnv->pCryPak->FOpen(sFileName, "rb");
-
- if (fileHandle == AZ::IO::InvalidHandle)
- {
- break; // file doesn't exist
- }
-
- gEnv->pCryPak->FClose(fileHandle);
- m_nFileId++;
- }
- }
-
- bool bOk;
-
- if (azstricmp(szExtension, "dds") == 0)
- {
- bOk = gEnv->pRenderer->WriteDDS((byte*)&m_RGB[0], m_dwWidth, m_dwHeight, 3, sFileName, eTF_BC3, 1);
- }
- else
- if (azstricmp(szExtension, "tga") == 0)
- {
- bOk = gEnv->pRenderer->WriteTGA((byte*)&m_RGB[0], m_dwWidth, m_dwHeight, sFileName, 24, 24);
- }
- else
- {
- bOk = gEnv->pRenderer->WriteJPG((byte*)&m_RGB[0], m_dwWidth, m_dwHeight, sFileName, 24);
- }
-
- if (!bOk)
- {
- gEnv->pLog->LogError("Failed to write '%s' (not supported on this platform?)", sFileName);
- }
- else //write meta data
- {
- if (m_bMetaData)
- {
- const f32 fSizeX = GetCVars()->e_ScreenShotMapSizeX;
- const f32 fSizeY = GetCVars()->e_ScreenShotMapSizeY;
- const f32 fTLX = GetCVars()->e_ScreenShotMapCenterX - fSizeX;
- const f32 fTLY = GetCVars()->e_ScreenShotMapCenterY - fSizeY;
- const f32 fBRX = GetCVars()->e_ScreenShotMapCenterX + fSizeX;
- const f32 fBRY = GetCVars()->e_ScreenShotMapCenterY + fSizeY;
-
- snprintf(sFileName, sizeof(sFileName), "@user@/ScreenShots/%s/%.5d.%s", szDirectory, m_nFileId, "xml");
-
- AZ::IO::HandleType metaFileHandle = gEnv->pCryPak->FOpen(sFileName, "wt");
- if (metaFileHandle != AZ::IO::InvalidHandle)
- {
- char sFileData[1024];
- snprintf(sFileData, sizeof(sFileData), "",
- m_nFileId, szExtension, fTLX, fTLY, fBRX, fBRY);
- string data(sFileData);
- gEnv->pCryPak->FWrite(data.c_str(), data.size(), metaFileHandle);
- gEnv->pCryPak->FClose(metaFileHandle);
- }
- }
- }
-
- // reset filename when done so user doesn't overwrite other screen shots (unless they want to)
- // this is done here as there is no callback for standard screenshots to allow the user to clear
- // this when done with the screen shot, so I decided to just always clear it when done
- m_rEngine.GetCVars()->e_ScreenShotFileName->Set("");
-
- return bOk;
- }
-
- // rasterize rectangle
- // Arguments:
- // x0 - x0, excluding
- // y1 - >y0, excluding
- void RasterizeRect(const uint32* pRGBAImage,
- const uint32 dwWidth,
- const uint32 dwHeight,
- const uint32 dwSliceX,
- const uint32 dwSliceY,
- const f32 fTransitionSize,
- const bool bFadeBordersX,
- const bool bFadeBordersY)
- {
- {
- //calculate rect inside the whole image
- const int32 OrgX0 = static_cast(static_cast((dwSliceX * dwWidth) * m_dwWidth) * m_fInvVirtualWidth);
- const int32 OrgY0 = static_cast(static_cast((dwSliceY * dwHeight) * m_dwHeight) * m_fInvVirtualHeight);
- const int32 OrgX1 = min(static_cast(static_cast(((dwSliceX + 1) * dwWidth) * m_dwWidth) * m_fInvVirtualWidth), static_cast(m_dwWidth)) - (m_rEngine.GetCVars()->e_ScreenShotDebug == 1 ? 1 : 0);
- const int32 OrgY1 = min(static_cast(static_cast(((dwSliceY + 1) * dwHeight) * m_dwHeight) * m_fInvVirtualHeight), static_cast(m_dwHeight)) - (m_rEngine.GetCVars()->e_ScreenShotDebug == 1 ? 1 : 0);
- //expand bounds for borderblending
- const int32 CenterX = (OrgX0 + OrgX1) / 2;
- const int32 CenterY = (OrgY0 + OrgY1) / 2;
- const int32 X0 = static_cast(static_cast(OrgX0 - CenterX) * (1.f + fTransitionSize)) + CenterX;
- const int32 Y0 = static_cast(static_cast(OrgY0 - CenterY) * (1.f + fTransitionSize)) + CenterY;
- const int32 X1 = static_cast(static_cast(OrgX1 - CenterX) * (1.f + fTransitionSize)) + CenterX;
- const int32 Y1 = static_cast(static_cast(OrgY1 - CenterY) * (1.f + fTransitionSize)) + CenterY;
- const f32 InvBlendX = 1.f / max(static_cast(X1 - OrgX1), 0.01f);//0.5 is here because the border is two times wider then the border of the single segment in total
- const f32 InvBlendY = 1.f / max(static_cast(Y1 - OrgY1), 0.01f);
- const int32 DebugScale = (m_rEngine.GetCVars()->e_ScreenShotDebug == 2) ? 65536 : 0;
- for (int32 y = max(Y0, 0); y < Y1 && y < (int)m_dwHeight; y++)
- {
- const f32 WeightY = bFadeBordersY ? min(1.f, static_cast(min(y - Y0, Y1 - y)) * InvBlendY) : 1.f;
- for (int32 x = max(X0, 0); x < X1 && x < (int)m_dwWidth; x++)
- {
- uint8* pDst = &m_RGB[m_bFlipY ? 3 * (x + (m_dwHeight - y - 1) * m_dwWidth) : 3 * (x + y * m_dwWidth)];
- const f32 WeightX = bFadeBordersX ? min(1.f, static_cast(min(x - X0, X1 - x)) * InvBlendX) : 1.f;
- GetBilinearFilteredBlend(static_cast(static_cast(x - X0) / static_cast(X1 - X0) * static_cast(dwWidth) * 16.f),
- static_cast(static_cast(y - Y0) / static_cast(Y1 - Y0) * static_cast(dwHeight) * 16.f),
- pRGBAImage, dwWidth, dwHeight,
- max(static_cast(WeightX * WeightY * 65536.f), DebugScale), pDst);
- }
- }
- }
- }
-
- void RasterizeCylinder(const uint32* pRGBAImage,
- const uint32 dwWidth,
- const uint32 dwHeight,
- const uint32 dwSlice,
- const bool bFadeBorders)
- {
- float fSrcAngleMin = GetSliceAngle(dwSlice - 1);
- float fFractionVert = tanf(m_fPanoramaShotVertFOV * 0.5f);
- float fFractionHoriz = fFractionVert * gEnv->pRenderer->GetCamera().GetProjRatio();
- float fInvFractionHoriz = 1.0f / fFractionHoriz;
-
- // for soft transition
- float fFadeOutFov = GetHorizFOVWithBorder();
- float fFadeInFov = GetHorizFOV();
-
- int x0 = 0, y0 = 0, x1 = m_dwWidth, y1 = m_dwHeight;
-
- float fScaleX = 1.0f / m_dwWidth;
- float fScaleY = 0.5f * fInvFractionHoriz / (m_dwWidth / (2 * gf_PI)) / dwHeight * dwWidth; // this value is not correctly computed yet - but using many slices reduced the problem
-
- if (m_bFlipY)
- {
- fScaleY = -fScaleY;
- }
-
-
- // it's more efficient to process colums than lines
- for (int x = x0; x < x1; ++x)
- {
- uint8* pDst = &m_RGB[3 * (x + y0 * m_dwWidth)];
- float fSrcX = x * fScaleX - 0.5f; // -0.5 .. 0.5
- float fSrcAngleX = fSrcAngleMin + 2 * gf_PI * fSrcX;
-
- if (fSrcAngleX > gf_PI)
- {
- fSrcAngleX -= 2 * gf_PI;
- }
- if (fSrcAngleX < -gf_PI)
- {
- fSrcAngleX += 2 * gf_PI;
- }
-
- if (fabs(fSrcAngleX) > fFadeOutFov * 0.5f)
- {
- continue; // clip away curved parts of the barrel
- }
- float fScrPosX = (tanf(fSrcAngleX) * 0.5f * fInvFractionHoriz + 0.5f) * dwWidth;
- // float fInvCosSrcX = 1.0f / cos(fSrcAngleX);
- float fInvCosSrcX = 1.0f / cosf(fSrcAngleX);
-
- if (fScrPosX >= 0 && fScrPosX <= (float)dwWidth) // this is an optimization - but it could be done even more efficient
- {
- if (fInvCosSrcX > 0) // don't render the viewer opposing direction
- {
- int iSrcPosX16 = (int)(fScrPosX * 16.0f);
-
- float fYOffset = 16 * 0.5f * dwHeight - 16 * 0.5f * m_dwHeight * fScaleY * fInvCosSrcX * dwHeight;
- float fYMul = 16 * fScaleY * fInvCosSrcX * dwHeight;
-
- float fSrcY = y0 * fYMul + fYOffset;
-
- uint32 dwLerp64k = 256 * 256 - 1;
-
- if (!bFadeBorders)
- {
- // first pass - every second image without soft borders
- for (int y = y0; y < y1; ++y, fSrcY += fYMul, pDst += m_dwWidth * 3)
- {
- GetBilinearFiltered(iSrcPosX16, (int)fSrcY, pRGBAImage, dwWidth, dwHeight, pDst);
- }
- }
- else
- {
- // second pass - do all the inbetween with soft borders
- float fOffSlice = fabs(fSrcAngleX / fFadeInFov) - 0.5f;
-
- if (fOffSlice < 0)
- {
- fOffSlice = 0; // no transition in this area
- }
- float fBorder = (fFadeOutFov - fFadeInFov) * 0.5f;
-
- if (fBorder < 0.001f)
- {
- fBorder = 0.001f; // we do not have border
- }
- float fFade = 1.0f - fOffSlice * fFadeInFov / fBorder;
-
- if (fFade < 0.0f)
- {
- fFade = 0.0f; // don't use this slice here
- }
- dwLerp64k = (uint32)(fFade * (256.0f * 256.0f - 1.0f)); // 0..64k
-
- if (dwLerp64k) // optimization
- {
- for (int y = y0; y < y1; ++y, fSrcY += fYMul, pDst += m_dwWidth * 3)
- {
- GetBilinearFilteredBlend(iSrcPosX16, (int)fSrcY, pRGBAImage, dwWidth, dwHeight, dwLerp64k, pDst);
- }
- }
- }
- }
- }
- }
- }
-
- // fast, rgb only
- static inline ColorB lerp(const ColorB x, const ColorB y, const uint32 a, const uint32 dwBase)
- {
- const int32 b = dwBase - a;
- const int32 RC = dwBase / 2;//rounding correction
-
-
- return ColorB(((int)x.r * b + (int)y.r * a + RC) / dwBase,
- ((int)x.g * b + (int)y.g * a + RC) / dwBase,
- ((int)x.b * b + (int)y.b * a + RC) / dwBase);
- }
-
- static inline ColorB Mul(const ColorB x, const int32 a, const int32 dwBase)
- {
- return ColorB(((int)x.r * (int)a) / dwBase,
- ((int)x.g * (int)a) / dwBase,
- ((int)x.b * (int)a) / dwBase);
- }
- static inline ColorB MadSaturate(const ColorB x, const int32 a, const int32 dwBase, const ColorB y)
- {
- const int32 MAX_COLOR = 0xff;
- const ColorB PreMuled = Mul(x, a, dwBase);
- return ColorB(min((int)PreMuled.r + (int)y.r, MAX_COLOR),
- min((int)PreMuled.g + (int)y.g, MAX_COLOR),
- min((int)PreMuled.b + (int)y.b, MAX_COLOR));
- }
-
- // bilinear filtering in fixpoint,
- // 4bit fractional part -> multiplier 16
- // --lookup outside of the image is not defined
- // lookups outside the image are now clamped, needed due to some float inaccuracy while rasterizing a rect-screenshot
- // Arguments:
- // iX16 - fX mul 16
- // iY16 - fY mul 16
- // result - [0]=red, [1]=green, [2]=blue
- static inline bool GetBilinearFilteredRaw(const int iX16, const int iY16,
- const uint32* pRGBAImage,
- const uint32 dwWidth, const uint32 dwHeight,
- ColorB& result)
- {
- int iLocalX = min(max(iX16 / 16, 0), static_cast(dwWidth - 1));
- int iLocalY = min(max(iY16 / 16, 0), static_cast(dwHeight - 1));
-
- int iLerpX = iX16 & 0xf; // 0..15
- int iLerpY = iY16 & 0xf; // 0..15
-
- ColorB colS[4];
-
- const uint32* pRGBA = &pRGBAImage[iLocalX + iLocalY * dwWidth];
-
- colS[0] = pRGBA[0];
- colS[1] = pRGBA[1];
- colS[2] = pRGBA[iLocalY + 1uL < dwHeight ? dwWidth : 0];
- colS[3] = pRGBA[(iLocalX + 1uL < dwWidth ? 1 : 0) + (iLocalY + 1uL < dwHeight ? dwWidth : 0)];
-
- ColorB colTop, colBottom;
-
- colTop = lerp(colS[0], colS[1], iLerpX, 16);
- colBottom = lerp(colS[2], colS[3], iLerpX, 16);
-
- result = lerp(colTop, colBottom, iLerpY, 16);
- return true;
- }
-
-
- // blend with background
- static inline bool GetBilinearFiltered(const int iX16, const int iY16,
- const uint32* pRGBAImage,
- const uint32 dwWidth, const uint32 dwHeight,
- uint8 result[3])
- {
- ColorB colFiltered;
- if (GetBilinearFilteredRaw(iX16, iY16, pRGBAImage, dwWidth, dwHeight, colFiltered))
- {
- result[0] = colFiltered.r;
- result[1] = colFiltered.g;
- result[2] = colFiltered.b;
- return true;
- }
- return false;
- }
-
- static inline bool GetBilinearFilteredBlend(const int iX16, const int iY16,
- const uint32* pRGBAImage,
- const uint32 dwWidth, const uint32 dwHeight,
- const uint32 dwLerp64k,
- uint8 result[3])
- {
- ColorB colFiltered;
- if (GetBilinearFilteredRaw(iX16, iY16, pRGBAImage, dwWidth, dwHeight, colFiltered))
- {
- ColorB colRet = lerp(ColorB(result[0], result[1], result[2]), colFiltered, dwLerp64k, 256 * 256);
-
- result[0] = colRet.r;
- result[1] = colRet.g;
- result[2] = colRet.b;
- return true;
- }
- return false;
- }
-
- static inline bool GetBilinearFilteredAdd(const int iX16, const int iY16,
- const uint32* pRGBAImage,
- const uint32 dwWidth, const uint32 dwHeight,
- const uint32 dwLerp64k,
- uint8 result[3])
- {
- ColorB colFiltered;
- if (GetBilinearFilteredRaw(iX16, iY16, pRGBAImage, dwWidth, dwHeight, colFiltered))
- {
- ColorB colRet = MadSaturate(colFiltered, dwLerp64k, 256 * 256, ColorB(result[0], result[1], result[2]));
-
- result[0] = colRet.r;
- result[1] = colRet.g;
- result[2] = colRet.b;
- return true;
- }
- return false;
- }
-
-
- float GetSliceAngle(const uint32 dwSlice) const
- {
- uint32 dwAlternatingSlice = (dwSlice * 2) % m_dwSliceCount;
-
- float fAngleStep = m_fHorizFOV;
-
- float fRet = fAngleStep * dwAlternatingSlice;
-
- if (dwSlice * 2 >= m_dwSliceCount)
- {
- fRet += fAngleStep;
- }
-
- return fRet;
- }
-
- float GetHorizFOV() const
- {
- return m_fHorizFOV;
- }
-
- float GetHorizFOVWithBorder() const
- {
- return m_fHorizFOV * (1.0f + m_fTransitionSize);
- }
-
- void* GetBuffer(){ return &m_RGB[0]; }
- uint32 GetWidth() { return m_dwWidth; }
- uint32 GetHeight() { return m_dwHeight; }
-
-
- //private: // -------------------------------------------------------------------
-
- uint32 m_dwWidth; // >0
- uint32 m_dwHeight; // >0
- f32 m_fInvWidth; // >0
- f32 m_fInvHeight; // >0
- uint32 m_dwVirtualWidth; // >0
- uint32 m_dwVirtualHeight; // >0
- f32 m_fInvVirtualWidth; // >0
- f32 m_fInvVirtualHeight; // >0
- std::vector m_RGB; // [channel + x*3 + m_dwWidth*3*y], channel=0..2, xe_ScreenShotWidth);
- const uint32 dwPanHeight = max(1, GetCVars()->e_ScreenShotHeight);
- const f32 fTransitionSize = min(1.f, abs(GetCVars()->e_ScreenShotQuality) * 0.01f);
-
- const uint32 widthSlices = (dwPanWidth + GetRenderer()->GetWidth() - 1) / GetRenderer()->GetWidth();
- const uint32 heightSlices = (dwPanHeight + GetRenderer()->GetHeight() - 1) / GetRenderer()->GetHeight();
- uint32 MinSlices = max(widthSlices, heightSlices);
- MinSlices = max(MinSlices, (uint32)GetCVars()->e_ScreenShotMinSlices);
-
- const uint32 dwVirtualWidth = GetRenderer()->GetWidth() * MinSlices;
- const uint32 dwVirtualHeight = GetRenderer()->GetHeight() * MinSlices;
-
- GetRenderer()->StartScreenShot(GetCVars()->e_ScreenShot);
-
- switch (abs(GetCVars()->e_ScreenShot))
- {
- case ESST_HIGHRES:
- GetConsole()->ShowConsole(false);
-
- MinSlices = max(MinSlices, 1u);
- pStitchedImage = new CStitchedImage(*this, dwPanWidth, dwPanHeight, dwVirtualWidth, dwVirtualHeight, MinSlices, fTransitionSize);
-
- ScreenShotHighRes(pStitchedImage, nRenderFlags, passInfo, MinSlices, fTransitionSize);
- pStitchedImage->SaveImage("HiRes");
- pStitchedImage->Clear(); // good for debugging
- delete pStitchedImage;
- if (GetCVars()->e_ScreenShot > 0) // <0 is used for multiple frames (videos)
- {
- GetCVars()->e_ScreenShot = 0;
- }
- break;
- case ESST_PANORAMA:
- GetConsole()->ShowConsole(false);
-
- // Panorama screenshots will exhibit artifacts if insufficient slices are used to render them
- // 20 slices yields great quality.
- MinSlices = max(MinSlices, 20u);
- pStitchedImage = new CStitchedImage(*this, dwPanWidth, dwPanHeight, dwVirtualWidth, dwVirtualHeight, MinSlices, fTransitionSize);
-
- ScreenShotPanorama(pStitchedImage, nRenderFlags, passInfo, MinSlices, fTransitionSize);
- pStitchedImage->SaveImage("Panorama");
- pStitchedImage->Clear(); // good for debugging
- delete pStitchedImage;
- if (GetCVars()->e_ScreenShot > 0) // <0 is used for multiple frames (videos)
- {
- GetCVars()->e_ScreenShot = 0;
- }
- break;
- case ESST_MAP_DELAYED:
- {
- GetCVars()->e_ScreenShot = sgn(GetCVars()->e_ScreenShot) * ESST_MAP; // sgn() to keep sign bit , <0 is used for multiple frames (videos)
- }
- break;
- case ESST_SWMAP_DELAYED:
- {
- GetCVars()->e_ScreenShot = sgn(GetCVars()->e_ScreenShot) * ESST_SWMAP; // sgn() to keep sign bit , <0 is used for multiple frames (videos)
- }
- break;
- case ESST_SWMAP:
- case ESST_MAP:
- {
- static const unsigned int nMipMapSnapshotSize = 2048;
- GetRenderer()->ChangeViewport(0, 0, nMipMapSnapshotSize, nMipMapSnapshotSize);
- uint32 TmpHeight, TmpWidth, TmpVirtualHeight, TmpVirtualWidth;
- TmpHeight = TmpWidth = TmpVirtualHeight = TmpVirtualWidth = 1;
-
- while ((TmpHeight << 1) <= dwPanHeight)
- {
- TmpHeight <<= 1;
- }
- while ((TmpWidth << 1) <= dwPanWidth)
- {
- TmpWidth <<= 1;
- }
- const uint32 TmpMinSlices = max(max(1, GetCVars()->e_ScreenShotMinSlices),
- max(static_cast((TmpWidth + nMipMapSnapshotSize - 1) / nMipMapSnapshotSize),
- static_cast((TmpHeight + nMipMapSnapshotSize - 1) / nMipMapSnapshotSize)));
- while ((TmpVirtualHeight << 1) <= TmpMinSlices * nMipMapSnapshotSize)
- {
- TmpVirtualHeight <<= 1;
- }
- while ((TmpVirtualWidth << 1) <= TmpMinSlices * nMipMapSnapshotSize)
- {
- TmpVirtualWidth <<= 1;
- }
-
- GetConsole()->ShowConsole(false);
- pStitchedImage = new CStitchedImage(*this, TmpWidth, TmpHeight, TmpVirtualWidth, TmpVirtualHeight, TmpMinSlices, fTransitionSize, true);
- ScreenShotMap(pStitchedImage, nRenderFlags, passInfo, TmpMinSlices, fTransitionSize);
- if (abs(GetCVars()->e_ScreenShot) == ESST_MAP)
- {
- pStitchedImage->SaveImage("Map");
- }
-
- if (m_pScreenshotCallback)
- {
- const f32 fSizeX = GetCVars()->e_ScreenShotMapSizeX;
- const f32 fSizeY = GetCVars()->e_ScreenShotMapSizeY;
- const f32 fTLX = GetCVars()->e_ScreenShotMapCenterX - fSizeX;
- const f32 fTLY = GetCVars()->e_ScreenShotMapCenterY - fSizeY;
- const f32 fBRX = GetCVars()->e_ScreenShotMapCenterX + fSizeX;
- const f32 fBRY = GetCVars()->e_ScreenShotMapCenterY + fSizeY;
-
- m_pScreenshotCallback->SendParameters(pStitchedImage->GetBuffer(), pStitchedImage->GetWidth(), pStitchedImage->GetHeight(), fTLX, fTLY, fBRX, fBRY);
- }
-
- pStitchedImage->Clear(); // good for debugging
- delete pStitchedImage;
- }
- if (GetCVars()->e_ScreenShot > 0) // <0 is used for multiple frames (videos)
- {
- GetCVars()->e_ScreenShot = 0;
- }
-
- break;
- default:
- GetCVars()->e_ScreenShot = 0;
- }
-
- GetRenderer()->EndScreenShot(GetCVars()->e_ScreenShot);
-
-#endif //#if defined(WIN32) || defined(WIN64)
-}
-
-
-
-struct SDebugFrustrum
-{
- Vec3 m_vPos[8];
- const char* m_szName;
- CTimeValue m_TimeStamp;
- ColorB m_Color;
- float m_fQuadDist; // < 0 if not used
-};
-
-static StaticInstance> g_DebugFrustrums;
-
-void C3DEngine::DebugDraw_Draw()
-{
-#ifndef _RELEASE
- if (m_DebugDrawListMgr.IsEnabled())
- {
- m_DebugDrawListMgr.Update();
- }
-
- CTimeValue CurrentTime = gEnv->pTimer->GetFrameStartTime();
-
- IRenderAuxGeom* pAux = GetRenderer()->GetIRenderAuxGeom();
-
- SAuxGeomRenderFlags oldFlags = pAux->GetRenderFlags();
- SAuxGeomRenderFlags newFlags;
- newFlags.SetAlphaBlendMode(e_AlphaBlended);
- newFlags.SetCullMode(e_CullModeNone);
- newFlags.SetDepthWriteFlag(e_DepthWriteOff);
- pAux->SetRenderFlags(newFlags);
- std::vector::iterator it;
-
- for (it = g_DebugFrustrums.begin(); it != g_DebugFrustrums.end(); )
- {
- SDebugFrustrum& ref = *it;
-
- float fRatio = (CurrentTime - ref.m_TimeStamp).GetSeconds() * 2.0f;
-
- if (fRatio > 1.0f)
- {
- it = g_DebugFrustrums.erase(it);
- continue;
- }
-
- vtx_idx pnInd[8] = { 0, 4, 1, 5, 2, 6, 3, 7 };
-
- float fRadius = ((ref.m_vPos[0] + ref.m_vPos[1] + ref.m_vPos[2] + ref.m_vPos[3]) - (ref.m_vPos[4] + ref.m_vPos[5] + ref.m_vPos[6] + ref.m_vPos[7])).GetLength() * 0.25f;
- float fDistance = min(fRadius, 33.0f); // in meters
-
- float fRenderRatio = fRatio * fDistance / fRadius;
-
- if (ref.m_fQuadDist > 0)
- {
- fRenderRatio = ref.m_fQuadDist / fRadius;
- }
-
- Vec3 vPos[4];
-
- for (uint32 i = 0; i < 4; ++i)
- {
- vPos[i] = ref.m_vPos[i] * fRenderRatio + ref.m_vPos[i + 4] * (1.0f - fRenderRatio);
- }
-
- Vec3 vMid = (vPos[0] + vPos[1] + vPos[2] + vPos[3]) * 0.25f;
-
- ColorB col = ref.m_Color;
-
- if (ref.m_fQuadDist <= 0)
- {
- for (uint32 i = 0; i < 4; ++i)
- {
- vPos[i] = vPos[i] * 0.95f + vMid * 0.05f;
- }
-
- // quad
- if (ref.m_fQuadDist != -999.f)
- {
- pAux->DrawTriangle(vPos[0], col, vPos[2], col, vPos[1], col);
- pAux->DrawTriangle(vPos[2], col, vPos[0], col, vPos[3], col);
- }
- // projection lines
- pAux->DrawLines(ref.m_vPos, 8, pnInd, 2, RGBA8(0xff, 0xff, 0x1f, 0xff));
- pAux->DrawLines(ref.m_vPos, 8, pnInd + 2, 2, RGBA8(0xff, 0xff, 0x1f, 0xff));
- pAux->DrawLines(ref.m_vPos, 8, pnInd + 4, 2, RGBA8(0xff, 0xff, 0x1f, 0xff));
- pAux->DrawLines(ref.m_vPos, 8, pnInd + 6, 2, RGBA8(0xff, 0xff, 0x1f, 0xff));
- }
- else
- {
- // rectangle
- pAux->DrawPolyline(vPos, 4, true, RGBA8(0xff, 0xff, 0x1f, 0xff));
- }
-
- ++it;
- }
-
- pAux->SetRenderFlags(oldFlags);
-
-
- if (GetCVars()->e_DebugDraw == 16)
- {
- DebugDraw_UpdateDebugNode();
- }
- else
- {
- GetRenderer()->SetDebugRenderNode(NULL);
- }
-
-#endif //_RELEASE
-}
-
-void C3DEngine::DebugDraw_UpdateDebugNode()
-{
-#ifndef _RELEASE
-
-
-#endif //_RELEASE
-}
-
-void C3DEngine::RenderWorld(const int nRenderFlags, const SRenderingPassInfo& passInfo, const char* szDebugName)
-{
- AZ_TRACE_METHOD();
-
- if (nRenderFlags & SHDF_ALLOW_AO)
- {
- SVOGILegacyRequestBus::Broadcast(&SVOGILegacyRequests::OnFrameStart, passInfo);
- }
-
- if (m_szLevelFolder[0] != 0)
- {
- m_nFramesSinceLevelStart++;
- }
-
- assert(szDebugName);
-
- if (!GetCVars()->e_Render)
- {
- return;
- }
-
- IF (!m_bEditor && (m_bInShutDown || m_bInUnload) && !GetRenderer()->IsPost3DRendererEnabled(), 0)
- {
- // Do not render during shutdown/unloading (should never reach here, unless something wrong with game/editor code)
- return;
- }
-
- FUNCTION_PROFILER_3DENGINE;
-
- if (GetCVars()->e_ScreenShot)
- {
- ScreenshotDispatcher(nRenderFlags, passInfo);
- // screenshots can mess up the frame ids, be safe and recreate the rendering passinfo object after a screenshot
- const_cast(passInfo) = SRenderingPassInfo::CreateGeneralPassRenderingInfo(passInfo.GetCamera());
- }
-
- if (GetCVars()->e_DefaultMaterial)
- {
- _smart_ptr pMat = GetMaterialManager()->LoadMaterial("Materials/material_default");
- _smart_ptr pTerrainMat = GetMaterialManager()->LoadMaterial("Materials/material_terrain_default");
- GetRenderer()->SetDefaultMaterials(pMat, pTerrainMat);
- }
- else
- {
- GetRenderer()->SetDefaultMaterials(NULL, NULL);
- }
-
- // skip rendering if camera is invalid
- if (IsCameraAnd3DEngineInvalid(passInfo, szDebugName))
- {
- return;
- }
-
- // this will also set the camera in passInfo for the General Pass (done here to support e_camerafreeze)
- UpdateRenderingCamera(szDebugName, passInfo);
-
- RenderInternal(nRenderFlags, passInfo, szDebugName);
-
-#if !defined(_RELEASE)
- PrintDebugInfo(passInfo);
-#endif
-}
-
-void C3DEngine::RenderInternal(const int nRenderFlags, const SRenderingPassInfo& passInfo, [[maybe_unused]] const char* szDebugName)
-{
- assert(m_pObjManager);
-
-
- if (AZ::Interface::Get())
- {
- GetRenderer()->EF_EndEf3D(
- IsShadersSyncLoad() ? (nRenderFlags | SHDF_NOASYNC | SHDF_STREAM_SYNC) : nRenderFlags,
- GetObjManager()->GetUpdateStreamingPrioriryRoundId(),
- GetObjManager()->GetUpdateStreamingPrioriryRoundIdFast(),
- passInfo);
- }
- else
- {
- UpdatePreRender(passInfo);
- RenderScene(nRenderFlags, passInfo);
- UpdatePostRender(passInfo);
- }
-}
-
-
-void C3DEngine::PreWorldStreamUpdate(const CCamera& cam)
-{
- if (m_szLevelFolder[0] != 0)
- {
- m_nStreamingFramesSinceLevelStart++;
- }
-
- // force preload terrain data if camera was teleported more than 32 meters
- if (!IsAreaActivationInUse() || m_bLayersActivated)
- {
- float fDistance = m_vPrevMainFrameCamPos.GetDistance(cam.GetPosition());
-
- if (m_vPrevMainFrameCamPos != Vec3(-1000000.f, -1000000.f, -1000000.f))
- {
- m_vAverageCameraMoveDir = m_vAverageCameraMoveDir * .75f + (cam.GetPosition() - m_vPrevMainFrameCamPos) / max(0.01f, GetTimer()->GetFrameTime()) * .25f;
- if (m_vAverageCameraMoveDir.GetLength() > 10.f)
- {
- m_vAverageCameraMoveDir.SetLength(10.f);
- }
-
- float fNewSpeed = fDistance / max(0.001f, gEnv->pTimer->GetFrameTime());
- if (fNewSpeed > m_fAverageCameraSpeed)
- {
- m_fAverageCameraSpeed = fNewSpeed * .20f + m_fAverageCameraSpeed * .80f;
- }
- else
- {
- m_fAverageCameraSpeed = fNewSpeed * .02f + m_fAverageCameraSpeed * .98f;
- }
- m_fAverageCameraSpeed = CLAMP(m_fAverageCameraSpeed, 0, 10.f);
- }
-
- // Adjust streaming mip bias based on camera speed and depending on installed on HDD or not
- bool bStreamingFromHDD = gEnv->pSystem->GetStreamEngine()->IsStreamDataOnHDD();
- if (GetCVars()->e_StreamAutoMipFactorSpeedThreshold)
- {
- if (m_fAverageCameraSpeed > GetCVars()->e_StreamAutoMipFactorSpeedThreshold)
- {
- GetRenderer()->SetTexturesStreamingGlobalMipFactor(bStreamingFromHDD ? GetCVars()->e_StreamAutoMipFactorMax * .5f : GetCVars()->e_StreamAutoMipFactorMax);
- }
- else
- {
- GetRenderer()->SetTexturesStreamingGlobalMipFactor(bStreamingFromHDD ? GetCVars()->e_StreamAutoMipFactorMin * .5f : GetCVars()->e_StreamAutoMipFactorMin);
- }
- }
- else
- {
- if (bStreamingFromHDD)
- {
- GetRenderer()->SetTexturesStreamingGlobalMipFactor(0);
- }
- else
- {
- GetRenderer()->SetTexturesStreamingGlobalMipFactor(GetCVars()->e_StreamAutoMipFactorMaxDVD);
- }
- }
-
- if (GetCVars()->e_AutoPrecacheCameraJumpDist && fDistance > GetCVars()->e_AutoPrecacheCameraJumpDist)
- {
- m_bContentPrecacheRequested = true;
-
- // Invalidate existing precache info
- m_pObjManager->IncrementUpdateStreamingPrioriryRoundIdFast(8);
- m_pObjManager->IncrementUpdateStreamingPrioriryRoundId(8);
- }
-
- m_vPrevMainFrameCamPos = cam.GetPosition();
- }
-}
-
-void C3DEngine::WorldStreamUpdate()
-{
-#if defined(STREAMENGINE_ENABLE_STATS)
- static uint32 nCurrentRequestCount = 0;
- static uint64 nCurrentBytesRead = 0;
- if (m_nStreamingFramesSinceLevelStart == 1)
- {
- // store current streaming stats
- SStreamEngineStatistics& fullStats = gEnv->pSystem->GetStreamEngine()->GetStreamingStatistics();
- nCurrentBytesRead = fullStats.nTotalBytesRead;
- nCurrentRequestCount = fullStats.nTotalRequestCount;
- }
-#endif
-
- static float fTestStartTime = 0;
- if (m_nStreamingFramesSinceLevelStart == 1)
- {
- fTestStartTime = GetCurAsyncTimeSec();
- gEnv->pSystem->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_PRECACHE_FIRST_FRAME, 0, 0);
- }
-
- // Simple streaming performance test: Wait until all startup texture streaming jobs finish and print a message
- if (!m_bEditor)
- {
- if (!m_bPreCacheEndEventSent)
- {
- IStreamEngine* pSE = gEnv->pSystem->GetStreamEngine();
- SStreamEngineOpenStats openStats;
- pSE->GetStreamingOpenStatistics(openStats);
- bool bStarted =
- (openStats.nOpenRequestCountByType[eStreamTaskTypeTexture] > 0) ||
- (openStats.nOpenRequestCountByType[eStreamTaskTypeGeometry] > 0);
-
- float fTime = GetCurAsyncTimeSec() - fTestStartTime;
-
- switch (m_nStreamingFramesSinceLevelStart)
- {
- case 1:
- pSE->PauseStreaming(true, (1 << eStreamTaskTypeTexture) | (1 << eStreamTaskTypeGeometry));
- break;
- case 4:
- pSE->PauseStreaming(false, (1 << eStreamTaskTypeGeometry));
- break;
- case 8:
- pSE->PauseStreaming(false, (1 << eStreamTaskTypeTexture));
- break;
- }
-
- int nGlobalSystemState = gEnv->pSystem->GetSystemGlobalState();
-
- if ((nGlobalSystemState != ESYSTEM_GLOBAL_STATE_LEVEL_LOAD_COMPLETE && (!bStarted || fTime >= 10.0f)) && m_nStreamingFramesSinceLevelStart > 16)
- {
- gEnv->pSystem->SetSystemGlobalState(ESYSTEM_GLOBAL_STATE_LEVEL_LOAD_COMPLETE);
-
- if (!bStarted)
- {
- PrintMessage("Textures startup streaming finished in %.1f sec", fTime);
- }
- else
- {
- PrintMessage("Textures startup streaming timed out after %.1f sec", fTime);
- }
-
- m_fTimeStateStarted = fTime;
- }
-
- if (nGlobalSystemState == ESYSTEM_GLOBAL_STATE_LEVEL_LOAD_COMPLETE && (fTime - m_fTimeStateStarted) > 0.4f)
- {
- pSE->PauseStreaming(false, (1 << eStreamTaskTypeTexture) | (1 << eStreamTaskTypeGeometry));
-
- m_bPreCacheEndEventSent = true;
- gEnv->pSystem->SetSystemGlobalState(ESYSTEM_GLOBAL_STATE_RUNNING);
- gEnv->pSystem->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_PRECACHE_END, 0, 0);
-
- fTestStartTime = 0.f;
-
-#if defined(STREAMENGINE_ENABLE_STATS)
- SStreamEngineStatistics& fullStats = pSE->GetStreamingStatistics();
- uint64 nBytesRead = fullStats.nTotalBytesRead - nCurrentBytesRead;
- uint32 nRequestCount = fullStats.nTotalRequestCount - nCurrentRequestCount;
-
- uint32 nOverallFileReadKB = (uint32)(nBytesRead / 1024);
- uint32 nOverallFileReadNum = nRequestCount;
- uint32 nBlockSize = (uint32)(nBytesRead / max((uint32)1, nRequestCount));
- float fReadBandwidthMB = (float)fullStats.nTotalSessionReadBandwidth / (1024 * 1024);
-
- PrintMessage("Average block size: %d KB, Average throughput: %.1f MB/sec, Jobs processed: %d (%.1f MB), File IO Bandwidth: %.2fMB/s",
- (nBlockSize) / 1024, (float)(nOverallFileReadKB / max(fTime, 1.f)) / 1024.f,
- nOverallFileReadNum, (float)nOverallFileReadKB / 1024.f,
- fReadBandwidthMB);
-
- if (GetCVars()->e_StreamSaveStartupResultsIntoXML)
- {
- const char* testResultsFile = "@usercache@/TestResults/Streaming_Level_Start_Throughput.xml";
-
- AZ::IO::HandleType resultsFile = gEnv->pCryPak->FOpen(testResultsFile, "wb");
- if (resultsFile != AZ::IO::InvalidHandle)
- {
- AZ::IO::Print(resultsFile,
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n",
- fTime,
- (nOverallFileReadKB / nOverallFileReadNum),
- (float)nOverallFileReadKB / max(fTime, 1.f) / 1024.f,
- nOverallFileReadNum,
- (float)nOverallFileReadKB / 1024.f);
- gEnv->pCryPak->FClose(resultsFile);
- }
- }
-#endif
- // gEnv->pCryPak->GetFileReadSequencer()->EndSection(); // STREAMING
- }
- else if (m_szLevelFolder[0])
- {
- ProposeContentPrecache();
- }
- }
- }
- else
- {
- if (!m_bPreCacheEndEventSent && m_nStreamingFramesSinceLevelStart == 4)
- {
- m_bPreCacheEndEventSent = true;
- gEnv->pSystem->SetSystemGlobalState(ESYSTEM_GLOBAL_STATE_RUNNING);
- gEnv->pSystem->GetISystemEventDispatcher()->OnSystemEvent(ESYSTEM_EVENT_LEVEL_PRECACHE_END, 0, 0);
- }
- }
-}
-
-void C3DEngine::PrintDebugInfo(const SRenderingPassInfo& passInfo)
-{
- if (GetCVars()->e_DebugDraw)
- {
- f32 fColor[4] = {1, 1, 0, 1};
-
- float fYLine = 8.0f, fYStep = 20.0f;
-
- GetRenderer()->Draw2dLabel(8.0f, fYLine += fYStep, 2.0f, fColor, false, "e_DebugDraw = %d", GetCVars()->e_DebugDraw);
-
- const char* szMode = "";
-
- switch (static_cast(GetCVars()->e_DebugDraw))
- {
- case -1:
- szMode = "Showing bounding boxes";
- break;
- case 1:
- szMode = "bounding boxes, name of the used cgf, polycount, used LOD";
- break;
- case -2:
- case 2:
- szMode = "color coded polygon count(red,yellow,green,turqoise, blue)";
- break;
- case -3:
- szMode = "show color coded LODs count, flashing color indicates LOD.";
- break;
- case 3:
- szMode = "show color coded LODs count, flashing color indicates LOD.\nFormat: (Current LOD [Min LOD; Max LOD] (LOD Ratio / Distance to camera)";
- break;
- case -4:
- case 4:
- szMode = "object texture memory usage in KB";
- break;
- case -5:
- case 5:
- szMode = "number of render materials (color coded)";
- break;
- case 6:
- szMode = "ambient color (R,G,B,A)";
- break;
- case 7:
- szMode = "triangle count, number of render materials, texture memory in KB";
- break;
- case 8:
- szMode = "Free slot";
- break;
- case 9:
- szMode = "Free slot";
- break;
- case 10:
- szMode = "Deprecated option, use \"r_showlines 2\" instead";
- break;
- case 11:
- szMode = "Free slot";
- break;
- case 12:
- szMode = "Free slot";
- break;
- case 13:
- szMode = "occlusion amount (used during AO computations)";
- break;
- // case 14: szMode="";break;
- case 15:
- szMode = "display helpers";
- break;
- case 16:
- szMode = "Debug Gun";
- break;
- case 17:
- szMode = "streaming: buffer sizes (black: geometry, blue: texture)";
- if (gEnv->pLocalMemoryUsage)
- {
- gEnv->pLocalMemoryUsage->OnRender(GetRenderer(), &passInfo.GetCamera());
- }
- break;
- case 18:
- szMode = "Free slot";
- break;
- case 19:
- szMode = "physics proxy triangle count";
- break;
- case 20:
- szMode = "Character attachments texture memory usage";
- break;
- case 21:
- szMode = "Display animated objects distance to camera";
- break;
- case -22:
- case 22:
- szMode = "object's current LOD vertex count";
- break;
- case 23:
- szMode = "Display shadow casters in red";
- break;
- case 24:
- szMode = "Objects without LODs.\n name - (triangle count)\n draw calls - zpass/general/transparent/shadows/misc";
- break;
- case 25:
- szMode = "Objects without LODs (Red). Objects that need more LODs (Blue)\n name - (triangle count)\n draw calls - zpass/general/transparent/shadows/misc";
- break;
-
- default:
- assert(0);
- }
-
- GetRenderer()->Draw2dLabel(8.0f, fYLine += fYStep, 2.0f, fColor, false, " %s", szMode);
-
- if (GetCVars()->e_DebugDraw == 17)
- {
- GetRenderer()->Draw2dLabel(8.0f, fYLine += fYStep, 2.0f, fColor, false, " StatObj geometry used: %.2fMb / %dMb", CObjManager::s_nLastStreamingMemoryUsage / (1024.f * 1024.f), GetCVars()->e_StreamCgfPoolSize);
-
- ICVar* cVar = GetConsole()->GetCVar("r_TexturesStreaming");
- if (!cVar || !cVar->GetIVal())
- {
- GetRenderer()->Draw2dLabel(8.0f, fYLine += fYStep, 2.0f, fColor, false, " You have to set r_TexturesStreaming = 1 to see texture information!");
- }
- }
- }
-
- float fTextPosX = 10, fTextPosY = 10, fTextStepY = 12;
-
- // print list of streamed meshes
- if (m_pObjManager && GetCVars()->e_StreamCgf && GetCVars()->e_StreamCgfDebug >= 3)
- {
- // overall status
- {
- static char szCGFStreaming[256] = "";
- static SObjectsStreamingStatus objectsStreamingStatus = {0};
-
- {
- m_pObjManager->GetObjectsStreamingStatus(objectsStreamingStatus);
- sprintf_s(szCGFStreaming, 256, "CgfStrm: Loaded:%d InProg:%d All:%d Act:%d MemUsed:%2.2f MemReq:%2.2f Pool:%d",
- objectsStreamingStatus.nReady, objectsStreamingStatus.nInProgress, objectsStreamingStatus.nTotal, objectsStreamingStatus.nActive, float(objectsStreamingStatus.nAllocatedBytes) / 1024 / 1024, float(objectsStreamingStatus.nMemRequired) / 1024 / 1024, GetCVars()->e_StreamCgfPoolSize);
- }
-
- bool bOutOfMem((float(objectsStreamingStatus.nMemRequired) / 1024 / 1024) > GetCVars()->e_StreamCgfPoolSize);
- bool bCloseToOutOfMem((float(objectsStreamingStatus.nMemRequired) / 1024 / 1024) > GetCVars()->e_StreamCgfPoolSize * 90 / 100);
-
- ColorF color = Col_White;
- if (bOutOfMem)
- {
- color = Col_Red;
- }
- else if (bCloseToOutOfMem)
- {
- color = Col_Orange;
- }
-
- DrawTextLeftAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, color, szCGFStreaming);
- fTextPosY += fTextStepY;
- }
-
- DrawTextLeftAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_White, "------------------- List of meshes bigger than %d KB -------------------", GetCVars()->e_StreamCgfDebugMinObjSize);
-
- for (int nObjId = 0; nObjId < m_pObjManager->GetArrStreamableObjects().Count(); nObjId++)
- {
- CStatObj* pStatObj = (CStatObj*)m_pObjManager->GetArrStreamableObjects()[nObjId].GetStreamAbleObject();
-
- int nKB = pStatObj->GetStreamableContentMemoryUsage() >> 10;
- int nSel = (pStatObj->m_nSelectedFrameId >= passInfo.GetMainFrameID() - 2);
-
- string sName;
- pStatObj->GetStreamableName(sName);
-
- if ((nKB >= GetCVars()->e_StreamCgfDebugMinObjSize && strstr(sName.c_str(), GetCVars()->e_StreamCgfDebugFilter->GetString())) || nSel)
- {
- const char* pComment = 0;
-
- if (!pStatObj->m_bCanUnload)
- {
- pComment = "NO_STRM";
- }
- else if (pStatObj->m_pLod0)
- {
- pComment = " LOD_X";
- }
- else if (!pStatObj->m_bLodsAreLoadedFromSeparateFile && pStatObj->m_nLoadedLodsNum > 1)
- {
- pComment = " SINGLE";
- }
- else if (pStatObj->m_nLoadedLodsNum > 1)
- {
- pComment = " LOD_0";
- }
- else
- {
- pComment = "NO_LODS";
- }
-
- int nDiff = SATURATEB(int(float(nKB - GetCVars()->e_StreamCgfDebugMinObjSize) / max(1, (int)GetCVars()->e_StreamCgfDebugMinObjSize) * 255));
- ColorB col(nDiff, 255 - nDiff, 0, 255);
- if (nSel && (1 & (int)(GetCurTimeSec() * 5.f)))
- {
- col = Col_Yellow;
- }
- ColorF fColor(col[0] / 255.f, col[1] / 255.f, col[2] / 255.f, col[3] / 255.f);
-
- const char* pStatusText = "Unload";
- if (pStatObj->m_eStreamingStatus == ecss_Ready)
- {
- pStatusText = "Ready ";
- }
- else if (pStatObj->m_eStreamingStatus == ecss_InProgress)
- {
- pStatusText = "InProg";
- }
-
- DrawTextLeftAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, fColor, "%1.2f mb, %s, %s, %s",
- 1.f / 1024.f * nKB, pComment, pStatusText, sName.c_str());
-
- if (fTextPosY > (float)gEnv->pRenderer->GetHeight())
- {
- break;
- }
- }
- }
- }
-
- if (m_arrProcessStreamingLatencyTestResults.Count())
- {
- float fAverTime = 0;
- for (int i = 0; i < m_arrProcessStreamingLatencyTestResults.Count(); i++)
- {
- fAverTime += m_arrProcessStreamingLatencyTestResults[i];
- }
- fAverTime /= m_arrProcessStreamingLatencyTestResults.Count();
-
- int nAverTexNum = 0;
- for (int i = 0; i < m_arrProcessStreamingLatencyTexNum.Count(); i++)
- {
- nAverTexNum += m_arrProcessStreamingLatencyTexNum[i];
- }
- nAverTexNum /= m_arrProcessStreamingLatencyTexNum.Count();
-
- DrawTextLeftAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Yellow, "------ SQT Average Time = %.1f, TexNum = %d ------", fAverTime, nAverTexNum);
-
- for (int i = 0; i < m_arrProcessStreamingLatencyTestResults.Count(); i++)
- {
- DrawTextLeftAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Yellow, "Run %d: Time = %.1f, TexNum = %d",
- i, m_arrProcessStreamingLatencyTestResults[i], m_arrProcessStreamingLatencyTexNum[i]);
- }
- }
-
-#if defined(USE_GEOM_CACHES)
-#ifndef _RELEASE
- if (GetCVars()->e_GeomCacheDebug)
- {
- m_pGeomCacheManager->DrawDebugInfo();
- }
- else
- {
- m_pGeomCacheManager->ResetDebugInfo();
- }
-#endif
-#endif
-}
-
-void C3DEngine::UpdatePreRender(const SRenderingPassInfo& passInfo)
-{
- AZ_TRACE_METHOD();
- FUNCTION_PROFILER(GetISystem(), PROFILE_3DENGINE);
-
- assert(passInfo.IsGeneralPass());
-
- // Compute global shadow cascade parameters.
- {
- m_fGsmRange = GetCVars()->e_GsmRange;
- m_fGsmRangeStep = GetCVars()->e_GsmRangeStep;
-
- //!!!also formulas for computing biases per gsm needs to be changed
- m_fShadowsConstBias = GetCVars()->e_ShadowsConstBias;
- m_fShadowsSlopeBias = GetCVars()->e_ShadowsSlopeBias;
-
- if (m_eShadowMode == ESM_HIGHQUALITY)
- {
- m_fGsmRange = min(0.15f, GetCVars()->e_GsmRange);
- m_fGsmRangeStep = min(2.8f, GetCVars()->e_GsmRangeStep);
-
- m_fShadowsConstBias = min(GetCVars()->e_ShadowsConstBiasHQ, GetCVars()->e_ShadowsConstBias);
- m_fShadowsSlopeBias = min(GetCVars()->e_ShadowsSlopeBiasHQ, GetCVars()->e_ShadowsSlopeBias);
- }
-
- const int nCascadeCount = Get3DEngine()->GetShadowsCascadeCount(NULL);
- m_pObjManager->SetGSMMaxDistance(Get3DEngine()->m_fGsmRange * powf(Get3DEngine()->m_fGsmRangeStep, (float)nCascadeCount));
- }
-
- // (bethelz) This has to happen before particle updates.
- m_PhysicsAreaUpdates.Update();
-
- if (passInfo.RenderClouds())
- {
- if (m_pCloudsManager)
- {
- m_pCloudsManager->MoveClouds();
- }
-
- CVolumeObjectRenderNode::MoveVolumeObjects();
- }
-
- UpdateSun(passInfo);
-
- // Set traceable fog volume areas
- CFogVolumeRenderNode::SetTraceableArea(AABB(passInfo.GetCamera().GetPosition(), 1024.0f), passInfo);
-}
-
-void C3DEngine::UpdatePostRender(const SRenderingPassInfo& passInfo)
-{
- AZ_TRACE_METHOD();
- FUNCTION_PROFILER(GetISystem(), PROFILE_3DENGINE);
-
- assert (m_pObjManager);
-
- m_pObjManager->CheckTextureReadyFlag();
- if (GetCVars()->e_StreamCgf)
- {
- static Array2d memUsage;
-
- int nArrayDim = 256;
-#ifndef CONSOLE_CONST_CVAR_MODE
- if (GetCVars()->e_StreamCgfDebugHeatMap == 1)
- {
- memUsage.Allocate(nArrayDim);
- CCamera camOld = passInfo.GetCamera();
-
- PrintMessage("Computing mesh streaming heat map");
-
- //The assumption is that this is called on Main Thread, otherwise the loop
- //Should be wrapped inside a EnumerateHandlers lambda.
- auto terrain = AzFramework::Terrain::TerrainDataRequestBus::FindFirstHandler();
- const float defaultTerrainHeight = AzFramework::Terrain::TerrainDataRequests::GetDefaultTerrainHeight();
-
- const AZ::Aabb terrainAabb = terrain ? terrain->GetTerrainAabb() : AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
- const int nTerrainSizeX = static_cast(terrainAabb.GetXExtent());
- const int nTerrainSizeY = static_cast(terrainAabb.GetYExtent());
- const int nStepX = nTerrainSizeX / nArrayDim;
- const int nStepY = nTerrainSizeY / nArrayDim;
-
- for (int x = 0; x < nTerrainSizeX; x += nStepX)
- {
- for (int y = 0; y < nTerrainSizeY; y += nStepY)
- {
- CCamera camTmp = camOld;
- float terrainHeight = terrain ? terrain->GetHeightFromFloats((float)x, (float)y) : defaultTerrainHeight;
- camTmp.SetPosition(Vec3((float)x + (float)nStepX / 2.f, (float)y + (float)nStepY / 2.f, terrainHeight));
- //SetCamera(camTmp);
- m_pObjManager->ProcessObjectsStreaming(passInfo);
-
- SObjectsStreamingStatus objectsStreamingStatus;
- m_pObjManager->GetObjectsStreamingStatus(objectsStreamingStatus);
-
- memUsage[x / nStepX][y / nStepY] = objectsStreamingStatus.nMemRequired;
- }
-
- if (!((x / nStepX) & 31))
- {
- PrintMessage(" working ...");
- }
- }
-
- PrintMessage(" done");
-
- GetCVars()->e_StreamCgfDebugHeatMap = 2;
- //SetCamera(camOld);
- }
- else if (GetCVars()->e_StreamCgfDebugHeatMap == 2)
- {
- auto terrain = AzFramework::Terrain::TerrainDataRequestBus::FindFirstHandler();
- const float defaultTerrainHeight = AzFramework::Terrain::TerrainDataRequests::GetDefaultTerrainHeight();
-
- const AZ::Aabb terrainAabb = terrain ? terrain->GetTerrainAabb() : AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
- const float terrainSizeX = terrainAabb.GetXExtent();
- const float terrainSizeY = terrainAabb.GetYExtent();
- const float fStepX = terrainSizeX / nArrayDim;
- const float fStepY = terrainSizeY / nArrayDim;
-
- for (int x = 0; x < memUsage.GetSize(); x++)
- {
- for (int y = 0; y < memUsage.GetSize(); y++)
- {
- float terrainHeight = terrain ? terrain->GetHeightFromFloats((float)x * fStepX, (float)y * fStepY) : defaultTerrainHeight;
- Vec3 v0((float)x* fStepX, (float)y* fStepY, terrainHeight);
- Vec3 v1((float)x* fStepX + fStepX, (float)y* fStepY + fStepY, v0.z + fStepX);
- v0 += Vec3(.25f, .25f, .25f);
- v1 -= Vec3(.25f, .25f, .25f);
- AABB box(v0, v1);
- if (!passInfo.GetCamera().IsAABBVisible_F(box))
- {
- continue;
- }
-
- int nMemUsageMB = memUsage[(int)(x)][(int)(y)] / 1024 / 1024;
-
- int nOverLoad = nMemUsageMB - GetCVars()->e_StreamCgfPoolSize;
-
- ColorB col = Col_Red;
-
- if (nOverLoad < GetCVars()->e_StreamCgfPoolSize / 2)
- {
- col = Col_Yellow;
- }
-
- if (nOverLoad < 0)
- {
- col = Col_Green;
- }
-
- DrawBBox(box, col);
- }
- }
- }
-#endif //CONSOLE_CONST_CVAR_MODE
- m_pObjManager->ProcessObjectsStreaming(passInfo);
- }
- else
- {
- m_pObjManager->GetStreamPreCacheCameras()[0].vPosition = passInfo.GetCamera().GetPosition();
- if (Distance::Point_AABBSq(m_pObjManager->GetStreamPreCacheCameras()[0].vPosition, m_pObjManager->GetStreamPreCacheCameras()[0].bbox) > 0.0f)
- {
- m_pObjManager->GetStreamPreCacheCameras()[0].bbox = AABB(m_pObjManager->GetStreamPreCacheCameras()[0].vPosition, GetCVars()->e_StreamPredictionBoxRadius);
- }
- m_pObjManager->UpdateObjectsStreamingPriority(false, passInfo);
- }
-
- // (bethelz) Per-frame precache request handled by streaming systems.
- m_bContentPrecacheRequested = false;
-}
-
-int __cdecl C3DEngine__Cmp_SRNInfo(const void* v1, const void* v2)
-{
- SRNInfo* p1 = (SRNInfo*)v1;
- SRNInfo* p2 = (SRNInfo*)v2;
-
- float fViewDist1 = p1->fMaxViewDist - p1->objSphere.radius;
- float fViewDist2 = p2->fMaxViewDist - p2->objSphere.radius;
-
- // if same - give closest sectors higher priority
- if (fViewDist1 > fViewDist2)
- {
- return 1;
- }
- else if (fViewDist1 < fViewDist2)
- {
- return -1;
- }
-
- return 0;
-}
-
-void C3DEngine::SetSkyMaterialPath(const string& skyMatName)
-{
- m_skyMatName = skyMatName;
- m_pSkyMat = nullptr;
-}
-
-void C3DEngine::SetSkyLowSpecMaterialPath(const string& skyLowSpecMatName)
-{
- m_skyLowSpecMatName = skyLowSpecMatName;
- m_pSkyLowSpecMat = nullptr;
-}
-
-void C3DEngine::LoadSkyMaterial()
-{
- const int skyType = GetCVars()->e_SkyType;
- if (skyType == 0)
- {
- if (!m_pSkyLowSpecMat)
- {
- m_pSkyLowSpecMat = m_skyLowSpecMatName.empty() ? nullptr : m_pMatMan->LoadMaterial(m_skyLowSpecMatName.c_str(), false, false, MTL_FLAG_IS_SKY);
- AZ_Warning("3DEngine", m_pSkyLowSpecMat, "Missing low spec sky material: %s", m_skyLowSpecMatName.c_str());
- }
- }
- else
- {
- if (!m_pSkyMat)
- {
- m_pSkyMat = m_skyMatName.empty() ? nullptr : m_pMatMan->LoadMaterial(m_skyMatName.c_str(), false, false, MTL_FLAG_IS_SKY);
- AZ_Warning("3DEngine", m_pSkyMat, "Missing sky material: %s", m_skyMatName.c_str());
- }
- }
- m_previousSkyType = skyType;
-}
-
-_smart_ptr C3DEngine::GetSkyMaterial()
-{
- const int skyType = GetCVars()->e_SkyType;
-
- // If e_SkyType has changed, then we may need to load a different sky material.
- if (skyType != m_previousSkyType)
- {
- LoadSkyMaterial();
- }
-
- return (skyType == 0) ? m_pSkyLowSpecMat : m_pSkyMat;
-}
-
-void C3DEngine::SetSkyMaterial(_smart_ptr pSkyMat)
-{
- m_pSkyMat = pSkyMat;
-}
-
-bool C3DEngine::IsHDRSkyMaterial(_smart_ptr pMat) const
-{
- return pMat && !azstricmp(pMat->GetSafeSubMtl(0)->GetShaderItem().m_pShader->GetName(), "SkyHDR");
-}
-
-void C3DEngine::RenderScene(const int nRenderFlags, const SRenderingPassInfo& passInfo)
-{
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
- CRY_ASSERT(passInfo.IsGeneralPass());
- CRY_ASSERT(m_pVisAreaManager);
- CRY_ASSERT(m_pClipVolumeManager);
- CRY_ASSERT(m_pDecalManager);
-
- GetObjManager()->GetCullThread().SetActive(true);
-
- if (GetCVars()->e_CoverageBuffer)
- {
- m_pCoverageBuffer->BeginFrame(passInfo);
- }
-
- if (m_pVisAreaManager != nullptr)
- {
- m_pVisAreaManager->DrawOcclusionAreasIntoCBuffer(m_pCoverageBuffer, passInfo);
- m_pVisAreaManager->CheckVis(passInfo);
- }
-
- if (m_pClipVolumeManager)
- {
- m_pClipVolumeManager->PrepareVolumesForRendering(passInfo);
- }
-
- if (m_pObjManager)
- {
- m_pObjManager->RenderAllObjectDebugInfo();
- }
- SRendItemSorter rendItemSorter = SRendItemSorter::CreateRendItemSorter(passInfo);
-
- // make sure all jobs from the previous frame have finished
- threadID nPrevThreadID = 0;
- gEnv->pRenderer->EF_Query(EFQ_RenderThreadList, nPrevThreadID);
- gEnv->pRenderer->GetFinalizeRendItemJobExecutor(nPrevThreadID)->WaitForCompletion();
- gEnv->pRenderer->GetFinalizeShadowRendItemJobExecutor(nPrevThreadID)->WaitForCompletion();
-
- GetRenderer()->EF_ClearSkinningDataPool();
- GetRenderer()->BeginSpawningGeneratingRendItemJobs(passInfo.ThreadID());
-
- GetRenderer()->EF_StartEf(passInfo);
-
- m_bIsInRenderScene = true;
- COctreeNode::ReleaseEmptyNodes();
-
- m_LightVolumesMgr.Clear(passInfo);
-
- SubmitSun(passInfo);
-
- if (GetCVars()->e_StatObjBufferRenderTasks && m_pObjManager != nullptr)
- {
- m_pObjManager->BeginOcclusionCulling(passInfo);
- }
-
- if (m_pVisAreaManager != nullptr)
- {
- m_pVisAreaManager->DrawVisibleSectors(passInfo, rendItemSorter);
- }
- m_nOceanRenderFlags &= ~OCR_OCEANVOLUME_VISIBLE;
-
- if (IsOutdoorVisible() || GetRenderer()->IsPost3DRendererEnabled())
- {
- if (m_pVisAreaManager != nullptr && m_pVisAreaManager->m_lstOutdoorPortalCameras.Count() &&
- (m_pVisAreaManager->m_pCurArea || m_pVisAreaManager->m_pCurPortal))
- { // enable multi-camera culling
- const_cast(passInfo.GetCamera()).m_pMultiCamera = &m_pVisAreaManager->m_lstOutdoorPortalCameras;
- }
-
- if (IsOutdoorVisible())
- {
- RenderSkyBox(GetSkyMaterial(), passInfo);
- }
-
- rendItemSorter.IncreaseOctreeCounter();
- {
- FRAME_PROFILER_LEGACYONLY("COctreeNode::Render_____", GetSystem(), PROFILE_3DENGINE);
- AZ_TRACE_METHOD_NAME("COctreeNode::Render");
- if (m_pObjectsTree != nullptr)
- {
- m_pObjectsTree->Render_Object_Nodes(false, OCTREENODE_RENDER_FLAG_OBJECTS, passInfo, rendItemSorter);
- }
- }
- rendItemSorter.IncreaseGroupCounter();
- }
- else if (m_pVisAreaManager && m_pVisAreaManager->IsSkyVisible())
- {
- RenderSkyBox(GetSkyMaterial(), passInfo);
- }
-
- // Outdoor is not visible, that means there is no SkyBox to render.
- // So we want to clear the GBuffer RT/background in order to avoid artifacts.
- GetRenderer()->SetClearBackground(!IsOutdoorVisible());
-
- if (nRenderFlags & SHDF_ALLOW_AO)
- {
- SVOGILegacyRequestBus::Broadcast(&SVOGILegacyRequests::UpdateRenderData);
- }
-
- {
- FRAME_PROFILER_LEGACYONLY("COctreeNode::Render_Object_Nodes_NEAR", GetSystem(), PROFILE_3DENGINE);
- AZ_TRACE_METHOD_NAME("COctreeNode::Render_Object_Nodes_NEAR");
- rendItemSorter.IncreaseOctreeCounter();
- if (GetCVars()->e_PortalsBigEntitiesFix)
- {
- if (!IsOutdoorVisible() && GetVisAreaManager() != nullptr && GetVisAreaManager()->GetCurVisArea())
- {
- if (GetVisAreaManager()->GetCurVisArea()->IsConnectedToOutdoor())
- {
- CCamera cam = passInfo.GetCamera();
- cam.SetFrustum(cam.GetViewSurfaceX(), cam.GetViewSurfaceZ(), cam.GetFov(), min(cam.GetNearPlane(), 1.f), 2.f, cam.GetPixelAspectRatio());
- m_pObjectsTree->Render_Object_Nodes(false, OCTREENODE_RENDER_FLAG_OBJECTS | OCTREENODE_RENDER_FLAG_OBJECTS_ONLY_ENTITIES, SRenderingPassInfo::CreateTempRenderingInfo(cam, passInfo), rendItemSorter);
- }
- }
- }
- }
- rendItemSorter.IncreaseGroupCounter();
-
- // render special objects like laser beams intersecting entire level
- for (int i = 0; i < m_lstAlwaysVisible.Count(); i++)
- {
- IRenderNode* pObj = m_lstAlwaysVisible[i];
- const AABB& objBox = pObj->GetBBox();
- // don't frustum cull the HUD. When e.g. zooming the FOV for this camera is very different to the
- // fixed HUD FOV, and this can cull incorrectly.
- const unsigned int dwRndFlags = pObj->GetRndFlags();
- if (dwRndFlags & ERF_HUD || passInfo.GetCamera().IsAABBVisible_E(objBox))
- {
- FRAME_PROFILER_LEGACYONLY("C3DEngine::RenderScene_DrawAlwaysVisible", GetSystem(), PROFILE_3DENGINE);
- AZ_TRACE_METHOD_NAME("COctreeNode::RenderScene_DrawAlwaysVisible");
-
- Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- float fEntDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, objBox)) * passInfo.GetZoomFactor();
- assert(fEntDistance >= 0 && _finite(fEntDistance));
- if (fEntDistance < pObj->m_fWSMaxViewDist && GetObjManager() != nullptr)
- {
- GetObjManager()->RenderObject(pObj, objBox, fEntDistance, pObj->GetRenderNodeType(), passInfo, rendItemSorter);
- }
- }
- }
- rendItemSorter.IncreaseGroupCounter();
-
- if (m_pOcean)
- {
- ProcessOcean(passInfo);
- }
-
- if (passInfo.RenderDecals() && m_pDecalManager != nullptr)
- {
- m_pDecalManager->Render(passInfo);
- }
-
- // tell the occlusion culler that no new work will be submitted
- if (GetCVars()->e_StatObjBufferRenderTasks == 1 && GetObjManager() != nullptr)
- {
- GetObjManager()->PushIntoCullQueue(SCheckOcclusionJobData::CreateQuitJobData());
- }
-
- // fill shadow list here to allow more time between starting and waiting for the occlusion buffer
- InitShadowFrustums(passInfo);
-
- gEnv->pSystem->DoWorkDuringOcclusionChecks();
-
- if (GetCVars()->e_StatObjBufferRenderTasks && m_pObjManager != nullptr)
- {
- m_pObjManager->RenderBufferedRenderMeshes(passInfo);
- }
-
- // don't start shadow jobs if we aren't generating shadows
- if ((nRenderFlags & SHDF_NO_SHADOWGEN) == 0)
- {
- GetRenderer()->EF_InvokeShadowMapRenderJobs(IsShadersSyncLoad() ? (nRenderFlags | SHDF_NOASYNC | SHDF_STREAM_SYNC) : nRenderFlags);
- }
-
- m_LightVolumesMgr.Update(passInfo);
-
- SetupDistanceFog();
-
- SetupClearColor();
-
- {
- FRAME_PROFILER("Renderer::EF_EndEf3D", GetSystem(), PROFILE_RENDERER);
- // TODO: separate SHDF_NOASYNC and SHDF_STREAM_SYNC flags
- GetRenderer()->EF_EndEf3D(IsShadersSyncLoad() ? (nRenderFlags | SHDF_NOASYNC | SHDF_STREAM_SYNC) : nRenderFlags, GetObjManager()->GetUpdateStreamingPrioriryRoundId(), GetObjManager()->GetUpdateStreamingPrioriryRoundIdFast(), passInfo);
- }
-
- GetRenderer()->EnableFog(false);
-
- bool bIsMultiThreadedRenderer = false;
- gEnv->pRenderer->EF_Query(EFQ_RenderMultithreaded, bIsMultiThreadedRenderer);
- if (bIsMultiThreadedRenderer)
- {
- gEnv->pRenderer->EndSpawningGeneratingRendItemJobs();
- }
-
- m_bIsInRenderScene = false;
-
-#ifndef _RELEASE
- IF (GetCVars()->e_LightVolumesDebug, 0)
- {
- m_LightVolumesMgr.DrawDebug(passInfo);
- }
-#endif
-}
-
-void C3DEngine::WaitForCullingJobsCompletion()
-{
- const bool waitForOcclusionJobCompletion = true;
- m_pObjManager->EndOcclusionCulling(waitForOcclusionJobCompletion);
- COctreeNode::WaitForContentJobCompletion();
-}
-
-void C3DEngine::RenderSceneReflection(const int nRenderFlags, const SRenderingPassInfo& passInfo)
-{
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
- CRY_ASSERT(passInfo.IsRecursivePass());
- CRY_ASSERT(passInfo.GetRecursiveLevel() < MAX_RECURSION_LEVELS);
- CRY_ASSERT(m_pVisAreaManager);
- CRY_ASSERT(m_pClipVolumeManager);
- CRY_ASSERT(m_pDecalManager);
-
- if (!GetCVars()->e_Recursion)
- {
- return;
- }
-
- if (m_pVisAreaManager != nullptr)
- {
- m_pVisAreaManager->CheckVis(passInfo);
- }
-
- if (m_pClipVolumeManager != nullptr)
- {
- m_pClipVolumeManager->PrepareVolumesForRendering(passInfo);
- }
- ////////////////////////////////////////////////////////////////////////////////////////
- // From here we add render elements of main scene
- ////////////////////////////////////////////////////////////////////////////////////////
- SRendItemSorter rendItemSorter = SRendItemSorter::CreateRendItemSorter(passInfo);
-
- GetRenderer()->EF_StartEf(passInfo);
-
- if (m_pVisAreaManager != nullptr)
- {
- m_pVisAreaManager->DrawVisibleSectors(passInfo, rendItemSorter);
- }
-
- if (IsOutdoorVisible() || GetRenderer()->IsPost3DRendererEnabled())
- {
- if (m_pVisAreaManager != nullptr && m_pVisAreaManager->m_lstOutdoorPortalCameras.Count() &&
- (m_pVisAreaManager->m_pCurArea || m_pVisAreaManager->m_pCurPortal))
- { // enable multi-camera culling
- const_cast(passInfo.GetCamera()).m_pMultiCamera = &m_pVisAreaManager->m_lstOutdoorPortalCameras;
- }
-
- if (IsOutdoorVisible())
- {
- RenderSkyBox(GetSkyMaterial(), passInfo);
- }
-
- {
- rendItemSorter.IncreaseOctreeCounter();
- FRAME_PROFILER("COctreeNode::Render_____", GetSystem(), PROFILE_3DENGINE);
- if (m_pObjectsTree != nullptr)
- {
- m_pObjectsTree->Render_Object_Nodes(false, OCTREENODE_RENDER_FLAG_OBJECTS, passInfo, rendItemSorter);
- }
- }
- rendItemSorter.IncreaseGroupCounter();
- }
- else if (m_pVisAreaManager != nullptr && m_pVisAreaManager->IsSkyVisible())
- {
- RenderSkyBox(GetSkyMaterial(), passInfo);
- }
-
- {
- FRAME_PROFILER("COctreeNode::Render_Object_Nodes_NEAR", GetSystem(), PROFILE_3DENGINE);
- rendItemSorter.IncreaseOctreeCounter();
- if (GetCVars()->e_PortalsBigEntitiesFix)
- {
- if (!IsOutdoorVisible() && GetVisAreaManager() != nullptr && GetVisAreaManager()->GetCurVisArea())
- {
- if (GetVisAreaManager()->GetCurVisArea()->IsConnectedToOutdoor())
- {
- CCamera cam = passInfo.GetCamera();
- cam.SetFrustum(cam.GetViewSurfaceX(), cam.GetViewSurfaceZ(), cam.GetFov(), min(cam.GetNearPlane(), 1.f), 2.f, cam.GetPixelAspectRatio());
- if (m_pObjectsTree != nullptr)
- {
- m_pObjectsTree->Render_Object_Nodes(false, OCTREENODE_RENDER_FLAG_OBJECTS | OCTREENODE_RENDER_FLAG_OBJECTS_ONLY_ENTITIES, SRenderingPassInfo::CreateTempRenderingInfo(cam, passInfo), rendItemSorter);
- }
- }
- }
- }
- }
- rendItemSorter.IncreaseGroupCounter();
-
- // render special objects like laser beams intersecting entire level
- for (int i = 0; i < m_lstAlwaysVisible.Count(); i++)
- {
- IRenderNode* pObj = m_lstAlwaysVisible[i];
- const AABB& objBox = pObj->GetBBox();
- // don't frustum cull the HUD. When e.g. zooming the FOV for this camera is very different to the
- // fixed HUD FOV, and this can cull incorrectly.
- const unsigned int dwRndFlags = pObj->GetRndFlags();
- if (dwRndFlags & ERF_HUD || passInfo.GetCamera().IsAABBVisible_E(objBox))
- {
- FRAME_PROFILER("C3DEngine::RenderScene_DrawAlwaysVisible", GetSystem(), PROFILE_3DENGINE);
-
- Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- float fEntDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, objBox)) * passInfo.GetZoomFactor();
- assert(fEntDistance >= 0 && _finite(fEntDistance));
- if (fEntDistance < pObj->m_fWSMaxViewDist)
- {
- GetObjManager()->RenderObject(pObj, objBox, fEntDistance, pObj->GetRenderNodeType(), passInfo, rendItemSorter);
- }
- }
- }
- rendItemSorter.IncreaseGroupCounter();
-
- if (m_pOcean)
- {
- ProcessOcean(passInfo);
- }
-
- //Update light volumes again. Processing particles may have resulted in an increase in the number of light volumes.
- m_LightVolumesMgr.Update(passInfo);
-
- if (passInfo.RenderDecals() && m_pDecalManager != nullptr)
- {
- m_pDecalManager->Render(passInfo);
- }
-
- {
- FRAME_PROFILER("Renderer::EF_EndEf3D", GetSystem(), PROFILE_RENDERER);
- GetRenderer()->EF_EndEf3D(IsShadersSyncLoad() ? (nRenderFlags | SHDF_NOASYNC | SHDF_STREAM_SYNC) : nRenderFlags, GetObjManager()->GetUpdateStreamingPrioriryRoundId(), GetObjManager()->GetUpdateStreamingPrioriryRoundIdFast(), passInfo);
- }
-}
-
-void C3DEngine::ProcessOcean(const SRenderingPassInfo& passInfo)
-{
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
-
- AZ_Assert(m_pOcean != nullptr, "Ocean pointer must be validated before calling ProcessOcean");
-
- if (GetOceanRenderFlags() & OCR_NO_DRAW || !GetVisAreaManager() || GetCVars()->e_DefaultMaterial)
- {
- return;
- }
-
- bool bOceanIsForcedByVisAreaFlags = GetVisAreaManager()->IsOceanVisible();
-
- if (!IsOutdoorVisible() && !bOceanIsForcedByVisAreaFlags)
- {
- return;
- }
-
- bool bOceanVisible = false;
- if (OceanToggle::IsActive())
- {
- bOceanVisible = OceanRequest::OceanIsEnabled();
- }
- else
- {
- bOceanVisible = true;
- }
-
- if (bOceanVisible && passInfo.RenderWaterOcean() && m_bOcean)
- {
- Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- float fWaterPlaneSize = passInfo.GetCamera().GetFarPlane();
- const float fOceanLevel = OceanToggle::IsActive() ? OceanRequest::GetOceanLevel(): m_pOcean->GetWaterLevel();
-
- AABB boxOcean(Vec3(vCamPos.x - fWaterPlaneSize, vCamPos.y - fWaterPlaneSize, std::numeric_limits::lowest()),
- Vec3(vCamPos.x + fWaterPlaneSize, vCamPos.y + fWaterPlaneSize, fOceanLevel + 0.5f));
-
- if ((!bOceanIsForcedByVisAreaFlags && passInfo.GetCamera().IsAABBVisible_EM(boxOcean)) ||
- (bOceanIsForcedByVisAreaFlags && passInfo.GetCamera().IsAABBVisible_E (boxOcean)))
- {
- bool bOceanIsVisibleFromIndoor = true;
- if (class PodArray* pMultiCamera = passInfo.GetCamera().m_pMultiCamera)
- {
- for (int i = 0; i < pMultiCamera->Count(); i++)
- {
- CVisArea* pExitPortal = (CVisArea*)(pMultiCamera->Get(i))->m_pPortal;
- float fMinZ = pExitPortal->GetAABBox()->min.z;
- float fMaxZ = pExitPortal->GetAABBox()->max.z;
-
- if (!bOceanIsForcedByVisAreaFlags)
- {
- if (fMinZ > fOceanLevel && vCamPos.z < fMinZ)
- {
- bOceanIsVisibleFromIndoor = false;
- }
-
- if (fMaxZ < fOceanLevel && vCamPos.z > fMaxZ)
- {
- bOceanIsVisibleFromIndoor = false;
- }
- }
- }
- }
-
- if (bOceanIsVisibleFromIndoor)
- {
- m_pOcean->Update(passInfo);
-
- if ((GetOceanRenderFlags() & OCR_OCEANVOLUME_VISIBLE))
- {
- if (passInfo.RenderWaterOcean())
- {
- m_pOcean->Render(passInfo);
- m_pOcean->SetLastFov(passInfo.GetCamera().GetFov());
- }
- }
- }
- }
- }
-
- if (GetCVars()->e_WaterRipplesDebug > 0)
- {
- GetRenderer()->EF_DrawWaterSimHits();
- }
-}
-
-void C3DEngine::RenderSkyBox(_smart_ptr pMat, const SRenderingPassInfo& passInfo)
-{
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
-
- if (!Get3DEngine()->GetCoverageBuffer()->IsOutdooVisible())
- {
- return;
- }
-
- const float fForceDrawLastSortOffset = 100000.0f;
-
- // hdr sky dome
- // TODO: temporary workaround to force the right sky dome for the selected shader
- if (m_pREHDRSky && IsHDRSkyMaterial(pMat))
- {
- if (GetCVars()->e_SkyBox)
- {
-#ifndef CONSOLE_CONST_CVAR_MODE
- if (GetCVars()->e_SkyQuality < 1)
- {
- GetCVars()->e_SkyQuality = 1;
- }
- else if (GetCVars()->e_SkyQuality > 2)
- {
- GetCVars()->e_SkyQuality = 2;
- }
-#endif
- m_pSkyLightManager->SetQuality(GetCVars()->e_SkyQuality);
-
- // set sky light incremental update rate and perform update
- if (GetCVars()->e_SkyUpdateRate <= 0.0f)
- {
- GetCVars()->e_SkyUpdateRate = 0.01f;
- }
- m_pSkyLightManager->IncrementalUpdate(GetCVars()->e_SkyUpdateRate, passInfo);
-
- // prepare render object
- CRenderObject* pObj = GetRenderer()->EF_GetObject_Temp(passInfo.ThreadID());
- if (!pObj)
- {
- return;
- }
- pObj->m_II.m_Matrix.SetTranslationMat(passInfo.GetCamera().GetPosition());
- pObj->m_pRenderNode = 0;//m_pREHDRSky;
- pObj->m_fSort = fForceDrawLastSortOffset; // force sky to draw last
-
- /* if( 0 == m_nRenderStackLevel )
- {
- // set scissor rect
- pObj->m_nScissorX1 = GetCamera().m_ScissorInfo.x1;
- pObj->m_nScissorY1 = GetCamera().m_ScissorInfo.y1;
- pObj->m_nScissorX2 = GetCamera().m_ScissorInfo.x2;
- pObj->m_nScissorY2 = GetCamera().m_ScissorInfo.y2;
- }*/
-
- m_pREHDRSky->m_pRenderParams = m_pSkyLightManager->GetRenderParams();
- m_pREHDRSky->m_moonTexId = m_nNightMoonTexId;
-
- // add sky dome to render list
- SRendItemSorter rendItemSorter = SRendItemSorter::CreateRendItemSorter(passInfo);
- GetRenderer()->EF_AddEf(m_pREHDRSky, pMat->GetSafeSubMtl(0)->GetShaderItem(), pObj, passInfo, EFSLIST_GENERAL, 1, rendItemSorter);
- }
- }
- // skybox
- else
- {
- if (pMat && m_pRESky && GetCVars()->e_SkyBox)
- {
- CRenderObject* pObj = GetRenderer()->EF_GetObject_Temp(passInfo.ThreadID());
- if (!pObj)
- {
- return;
- }
- pObj->m_II.m_Matrix.SetTranslationMat(passInfo.GetCamera().GetPosition());
- pObj->m_II.m_Matrix = pObj->m_II.m_Matrix * Matrix33::CreateRotationZ(DEG2RAD(m_fSkyBoxAngle));
- pObj->m_fSort = fForceDrawLastSortOffset; // force sky to draw last
-
- if (OceanToggle::IsActive())
- {
- m_pRESky->m_fTerrainWaterLevel = OceanRequest::GetOceanLevelOrDefault(-100000.0f);
- }
- else
- {
- const float waterLevel = m_pOcean ? m_pOcean->GetWaterLevel() : 0.0f;
- m_pRESky->m_fTerrainWaterLevel = max(0.0f, waterLevel);
- }
- m_pRESky->m_fSkyBoxStretching = m_fSkyBoxStretching;
-
- SRendItemSorter rendItemSorter = SRendItemSorter::CreateRendItemSorter(passInfo);
- GetRenderer()->EF_AddEf(m_pRESky, pMat->GetSafeSubMtl(0)->GetShaderItem(), pObj, passInfo, EFSLIST_GENERAL, 1, rendItemSorter);
- }
- }
-}
-
-void C3DEngine::DrawTextRightAligned(const float x, const float y, const char* format, ...)
-{
- va_list args;
- va_start(args, format);
-
- SDrawTextInfo ti;
- ti.flags = eDrawText_FixedSize | eDrawText_Right | eDrawText_2D | eDrawText_Monospace;
- ti.xscale = ti.yscale = DISPLAY_INFO_SCALE;
- GetRenderer()->DrawTextQueued(Vec3(x, y, 1.0f), ti, format, args);
-
- va_end(args);
-}
-
-void C3DEngine::DrawTextAligned(int flags, const float x, const float y, const float scale, const ColorF& color, const char* format, ...)
-{
- va_list args;
- va_start(args, format);
-
- SDrawTextInfo ti;
- ti.flags = flags;
- ti.color[0] = color[0];
- ti.color[1] = color[1];
- ti.color[2] = color[2];
- ti.color[3] = color[3];
- ti.xscale = ti.yscale = scale;
- GetRenderer()->DrawTextQueued(Vec3(x, y, 1.0f), ti, format, args);
-
- va_end(args);
-}
-
-void C3DEngine::DrawTextLeftAligned(const float x, const float y, const float scale, const ColorF& color, const char* format, ...)
-{
- va_list args;
- va_start(args, format);
-
- SDrawTextInfo ti;
- ti.flags = eDrawText_FixedSize | eDrawText_2D | eDrawText_Monospace;
- ti.color[0] = color[0];
- ti.color[1] = color[1];
- ti.color[2] = color[2];
- ti.color[3] = color[3];
- ti.xscale = ti.yscale = scale;
- GetRenderer()->DrawTextQueued(Vec3(x, y, 1.0f), ti, format, args);
-
- va_end(args);
-}
-
-void C3DEngine::DrawTextRightAligned(const float x, const float y, const float scale, const ColorF& color, const char* format, ...)
-{
- va_list args;
- va_start(args, format);
-
- SDrawTextInfo ti;
- ti.flags = eDrawText_FixedSize | eDrawText_Right | eDrawText_2D | eDrawText_Monospace;
- ti.color[0] = color[0];
- ti.color[1] = color[1];
- ti.color[2] = color[2];
- ti.color[3] = color[3];
- ti.xscale = ti.yscale = scale;
- GetRenderer()->DrawTextQueued(Vec3(x, y, 1.0f), ti, format, args);
-
- va_end(args);
-}
-
-int __cdecl C3DEngine__Cmp_FPS(const void* v1, const void* v2)
-{
- float f1 = *(float*)v1;
- float f2 = *(float*)v2;
-
- if (f1 > f2)
- {
- return 1;
- }
- else if (f1 < f2)
- {
- return -1;
- }
-
- return 0;
-}
-
-inline void Blend(float& Stat, float StatCur, float fBlendCur)
-{
- Stat = Stat * (1.f - fBlendCur) + StatCur * fBlendCur;
-}
-
-inline void Blend(float& Stat, int& StatCur, float fBlendCur)
-{
- Blend(Stat, float(StatCur), fBlendCur);
- StatCur = int_round(Stat);
-}
-
-#ifdef ENABLE_LW_PROFILERS
-static void AppendString(char*& szEnd, const char* szToAppend)
-{
- assert(szToAppend);
-
- while (*szToAppend)
- {
- *szEnd++ = *szToAppend++;
- }
-
- *szEnd++ = ' ';
- *szEnd = 0;
-}
-#endif
-
-void C3DEngine::DisplayInfo([[maybe_unused]] float& fTextPosX, [[maybe_unused]] float& fTextPosY, [[maybe_unused]] float& fTextStepY, [[maybe_unused]] const bool bEnhanced)
-{
-#ifdef ENABLE_LW_PROFILERS
- // FUNCTION_PROFILER_3DENGINE; causes 0 fps in stats
- static ICVar* pDisplayInfo = GetConsole()->GetCVar("r_DisplayInfo");
- assert(pDisplayInfo);
- if (pDisplayInfo && pDisplayInfo->GetIVal() == 0)
- {
- return;
- }
-
- if (gEnv->IsDedicated())
- {
- return;
- }
-
-#if defined(INFO_FRAME_COUNTER)
- static int frameCounter = 0;
-#endif
- GetRenderer()->SetState(GS_NODEPTHTEST);
-
- fTextPosY = -10;
- fTextStepY = 13;
- fTextPosX = (float)GetRenderer()->GetOverlayWidth() - 5.0f;
-
- const char* description = GetRenderer()->GetRenderDescription();
- if (description && description[0] != 0)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.5f, ColorF(1.0f, 1.0f, 0.5f, 1.0f),
- "%s", description);
- }
-
- // If stat averaging is on, compute blend amount for current stats.
- float fFPS = GetTimer()->GetFrameRate();
-
- // Limit the FPS history for a single level to ~1 hour.
- // This vector is cleared on each level load, but during a soak test this continues to grow every frame
- const AZStd::size_t maxFPSEntries = 60 * 60 * 60; // 60ms * 60s * 60min
- if (arrFPSforSaveLevelStats.size() < maxFPSEntries)
- {
- arrFPSforSaveLevelStats.push_back(SATURATEB((int)fFPS));
- }
-
- float fBlendTime = GetTimer()->GetCurrTime();
- int iBlendMode = 0;
- float fBlendCur = GetTimer()->GetProfileFrameBlending(&fBlendTime, &iBlendMode);
-
- if (pDisplayInfo && pDisplayInfo->GetIVal() == 3)
- {
- static float fCurrentFPS, fCurrentFrameTime;
- Blend(fCurrentFPS, fFPS, fBlendCur);
- Blend(fCurrentFrameTime, GetTimer()->GetRealFrameTime() * 1000.0f, fBlendCur);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.5f, ColorF(1.0f, 1.0f, 0.5f, 1.0f),
- "FPS %.1f - %.1fms", fCurrentFPS, fCurrentFrameTime);
- return;
- }
-
- // make level name
- char szLevelName[128];
-
- *szLevelName = 0;
- {
- int ii;
- for (ii = strlen(m_szLevelFolder) - 2; ii > 0; ii--)
- {
- if (m_szLevelFolder[ii] == '\\' || m_szLevelFolder[ii] == '/')
- {
- break;
- }
- }
-
- if (ii >= 0)
- {
- cry_strcpy(szLevelName, &m_szLevelFolder[ii + 1]);
-
- for (int i = strlen(szLevelName) - 1; i > 0; i--)
- {
- if (szLevelName[i] == '\\' || szLevelName[i] == '/')
- {
- szLevelName[i] = 0;
- }
- }
- }
- }
-
- Matrix33 m = Matrix33(GetRenderingCamera().GetMatrix());
- //m.OrthonormalizeFast(); // why is that needed? is it?
- Ang3 aAng = RAD2DEG(Ang3::GetAnglesXYZ(m));
- Vec3 vPos = GetRenderingCamera().GetPosition();
-
- // Time of day info
- int hours = 0;
- int minutes = 0;
- ITimeOfDay* timeOfDay = GetTimeOfDay();
- if (timeOfDay)
- {
- float time = timeOfDay->GetTime();
- hours = (int)time;
- minutes = (int)((time - hours) * 60);
- }
-
- // display out of memory message if an allocation failed
- IF (gEnv->bIsOutOfMemory, 0)
- {
- ColorF fColor(1.0f, 0.0f, 0.0f, 1.0f);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 4.0f, fColor, "**** Out of Memory ****");
- fTextPosY += 40.0f;
- }
- // display out of memory message if an allocation failed
- IF (gEnv->bIsOutOfVideoMemory, 0)
- {
- ColorF fColor(1.0f, 0.0f, 0.0f, 1.0f);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 4.0f, fColor, "**** Out of Video Memory ****");
- fTextPosY += 40.0f;
- }
-
- float fogCullDist = 0.0f;
- Vec2 vViewportScale = Vec2(0.0f, 0.0f);
- m_pRenderer->EF_Query(EFQ_GetFogCullDistance, fogCullDist);
- m_pRenderer->EF_Query(EFQ_GetViewportDownscaleFactor, vViewportScale);
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "CamPos=%.2f %.2f %.2f Angl=%3d %2d %3d ZN=%.2f ZF=%d",
- vPos.x, vPos.y, vPos.z, (int)aAng.x, (int)aAng.y, (int)aAng.z,
- GetRenderingCamera().GetNearPlane(), (int)GetRenderingCamera().GetFarPlane());
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "Cam FC=%.2f VS=%.2f,%.2f Zoom=%.2f Speed=%1.2f TimeOfDay=%02d:%02d",
- fogCullDist, vViewportScale.x, vViewportScale.y,
- GetZoomFactor(), GetAverageCameraSpeed(), hours, minutes);
-
- // get version
- const SFileVersion& ver = GetSystem()->GetFileVersion();
- //char sVersion[128];
- //ver.ToString(sVersion);
-
- // Get memory usage.
- static IMemoryManager::SProcessMemInfo processMemInfo;
- {
- static int nGetMemInfoCount = 0;
- if ((nGetMemInfoCount & 0x1F) == 0 && GetISystem()->GetIMemoryManager())
- {
- // Only get mem stats every 32 frames.
- GetISystem()->GetIMemoryManager()->GetProcessMemInfo(processMemInfo);
- }
- nGetMemInfoCount++;
- }
-
- bool bMultiGPU;
- m_pRenderer->EF_Query(EFQ_MultiGPUEnabled, bMultiGPU);
-
- const char* pRenderType(0);
-
- if (AZ::Interface::Get())
- {
- pRenderType = "DX11";
- }
- else
- {
- switch (gEnv->pRenderer->GetRenderType())
- {
- case eRT_OpenGL:
- pRenderType = "GL";
- break;
- case eRT_DX11:
- pRenderType = "DX11";
- break;
- case eRT_DX12:
- pRenderType = "DX12";
- break;
- case eRT_Jasper:
- pRenderType = "Jasper";
- break;
- case eRT_Provo:
- pRenderType = "Provo";
- break;
- case eRT_Metal:
- pRenderType = "Metal";
- break;
- case eRT_Null:
- pRenderType = "Null";
- break;
- case eRT_Undefined:
- default:
- assert(0);
- pRenderType = "Undefined";
- break;
- }
- }
- assert(gEnv->pSystem);
- bool bTextureStreamingEnabled = false;
- m_pRenderer->EF_Query(EFQ_TextureStreamingEnabled, bTextureStreamingEnabled);
- const bool bCGFStreaming = GetCVars()->e_StreamCgf && m_pObjManager;
- const bool bTexStreaming = gEnv->pSystem->GetStreamEngine() && bTextureStreamingEnabled;
- char szFlags[128], * szFlagsEnd = szFlags;
-
-#ifndef _RELEASE
- ESystemConfigSpec spec = GetISystem()->GetConfigSpec();
- switch (spec)
- {
- case CONFIG_AUTO_SPEC:
- AppendString(szFlagsEnd, "Auto");
- break;
- case CONFIG_LOW_SPEC:
- AppendString(szFlagsEnd, "LowSpec");
- break;
- case CONFIG_MEDIUM_SPEC:
- AppendString(szFlagsEnd, "MedSpec");
- break;
- case CONFIG_HIGH_SPEC:
- AppendString(szFlagsEnd, "HighSpec");
- break;
- case CONFIG_VERYHIGH_SPEC:
- AppendString(szFlagsEnd, "VeryHighSpec");
- break;
- default:
- assert(0);
- }
-#endif
-#ifndef CONSOLE_CONST_CVAR_MODE
- static ICVar* pMultiThreaded = GetConsole()->GetCVar("r_MultiThreaded");
- if (pMultiThreaded && pMultiThreaded->GetIVal() > 0)
-#endif
- AppendString(szFlagsEnd, "MT");
-
- char* sAAMode = NULL;
- m_pRenderer->EF_Query(EFQ_AAMode, sAAMode);
- AppendString(szFlagsEnd, sAAMode);
-
- if (IsAreaActivationInUse())
- {
- AppendString(szFlagsEnd, "LA");
- }
-
- if (bMultiGPU)
- {
- AppendString(szFlagsEnd, "MGPU");
- }
-
- if (gEnv->pSystem->IsDevMode())
- {
- AppendString(szFlagsEnd, gEnv->IsEditor() ? "DevMode (Editor)" : "DevMode");
- }
-
- if (bCGFStreaming || bTexStreaming)
- {
- if (bCGFStreaming && !bTexStreaming)
- {
- AppendString(szFlagsEnd, "StG");
- }
- if (bTexStreaming && !bCGFStreaming)
- {
- AppendString(szFlagsEnd, "StT");
- }
- if (bTexStreaming && bCGFStreaming)
- {
- AppendString(szFlagsEnd, "StGT");
- }
- }
-
- // remove last space
- if (szFlags != szFlagsEnd)
- {
- *(szFlagsEnd - 1) = 0;
- }
-#ifdef _RELEASE
- const char* mode = "Release";
-#else
- const char* mode = "Profile";
-#endif
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "%s %s %dbit %s %s [%d.%d]",
- pRenderType, mode, (int)sizeof(char*) * 8, szFlags, szLevelName, ver.v[1], ver.v[0]);
-
- // Polys in scene
- int nPolygons, nShadowPolygons;
- GetRenderer()->GetPolyCount(nPolygons, nShadowPolygons);
- int nDrawCalls, nShadowGenDrawCalls;
- GetRenderer()->GetCurrentNumberOfDrawCalls(nDrawCalls, nShadowGenDrawCalls);
-
- int nGeomInstances = GetRenderer()->GetNumGeomInstances();
- int nGeomInstanceDrawCalls = GetRenderer()->GetNumGeomInstanceDrawCalls();
-
- if (fBlendCur != 1.f)
- {
- // Smooth over time.
- static float fPolygons, fShadowVolPolys, fDrawCalls, fShadowGenDrawCalls, fGeomInstances, fGeomInstanceDrawCalls;
- Blend(fPolygons, nPolygons, fBlendCur);
- Blend(fShadowVolPolys, nShadowPolygons, fBlendCur);
- Blend(fDrawCalls, nDrawCalls, fBlendCur);
- Blend(fShadowGenDrawCalls, nShadowGenDrawCalls, fBlendCur);
- Blend(fGeomInstances, nGeomInstances, fBlendCur);
- Blend(fGeomInstanceDrawCalls, nGeomInstanceDrawCalls, fBlendCur);
- }
-
- //
- static float m_lastAverageDPTime = -FLT_MAX;
- float curTime = gEnv->pTimer->GetAsyncCurTime();
- static int lastDrawCalls = 0;
- static int lastShadowGenDrawCalls = 0;
- static int avgPolys = 0;
- static int avgShadowPolys = 0;
- static int sumPolys = 0;
- static int sumShadowPolys = 0;
- static int nPolysFrames = 0;
- if (curTime < m_lastAverageDPTime)
- {
- m_lastAverageDPTime = curTime;
- }
- if (curTime - m_lastAverageDPTime > 1.0f)
- {
- lastDrawCalls = nDrawCalls;
- lastShadowGenDrawCalls = nShadowGenDrawCalls;
- m_lastAverageDPTime = curTime;
- avgPolys = nPolysFrames ? sumPolys / nPolysFrames : 0;
- avgShadowPolys = nPolysFrames ? sumShadowPolys / nPolysFrames : 0;
- sumPolys = nPolygons;
- sumShadowPolys = nShadowPolygons;
- nPolysFrames = 1;
- }
- else
- {
- nPolysFrames++;
- sumPolys += nPolygons;
- sumShadowPolys += nShadowPolygons;
- }
- //
-
- int nMaxDrawCalls = GetCVars()->e_MaxDrawCalls <= 0 ? 2000 : GetCVars()->e_MaxDrawCalls;
- bool bInRed = (nDrawCalls + nShadowGenDrawCalls) > nMaxDrawCalls;
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, bInRed ? Col_Red : Col_White, "DP: %04d (%04d) ShadowGen:%04d (%04d) - Total: %04d Instanced: %04d",
- nDrawCalls, lastDrawCalls, nShadowGenDrawCalls, lastShadowGenDrawCalls, nDrawCalls + nShadowGenDrawCalls, nDrawCalls + nShadowGenDrawCalls - nGeomInstances + nGeomInstanceDrawCalls);
-#if defined(MOBILE)
- bInRed = nPolygons > 500000;
-#else
- bInRed = nPolygons > 1500000;
-#endif
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, bInRed ? Col_Red : Col_White, "Polys: %03d,%03d (%03d,%03d) Shadow:%03d,%03d (%03d,%03d)",
- nPolygons / 1000, nPolygons % 1000, avgPolys / 1000, avgPolys % 1000,
- nShadowPolygons / 1000, nShadowPolygons % 1000, avgShadowPolys / 1000, avgShadowPolys % 1000);
-
- {
- SShaderCacheStatistics stats;
- m_pRenderer->EF_Query(EFQ_GetShaderCacheInfo, stats);
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_White, "ShaderCache: %d GCM | %d Async Reqs | Compile: %s",
- (int)stats.m_nGlobalShaderCacheMisses, (int)stats.m_nNumShaderAsyncCompiles, stats.m_bShaderCompileActive ? "On" : "Off");
- }
- }
-
- // print stats about CGF's streaming
- if (bCGFStreaming)
- {
- static char szCGFStreaming[256] = "";
- static SObjectsStreamingStatus objectsStreamingStatus = {0};
-
- if (!(GetRenderer()->GetFrameID(false) & 15) || !szCGFStreaming[0] || GetCVars()->e_StreamCgfDebug)
- {
- m_pObjManager->GetObjectsStreamingStatus(objectsStreamingStatus);
- sprintf_s(szCGFStreaming, 256, "CgfStrm: Loaded:%d InProg:%d All:%d Act:%d PcP:%d MemUsed:%2.2f MemReq:%2.2f Pool:%d",
- objectsStreamingStatus.nReady, objectsStreamingStatus.nInProgress, objectsStreamingStatus.nTotal, objectsStreamingStatus.nActive,
- (int)m_pObjManager->GetStreamPreCachePointDefs().size(),
- float(objectsStreamingStatus.nAllocatedBytes) / 1024 / 1024, float(objectsStreamingStatus.nMemRequired) / 1024 / 1024, GetCVars()->e_StreamCgfPoolSize);
- }
-
- bool bOutOfMem((float(objectsStreamingStatus.nMemRequired) / 1024 / 1024) > GetCVars()->e_StreamCgfPoolSize);
- bool bCloseToOutOfMem((float(objectsStreamingStatus.nMemRequired) / 1024 / 1024) > GetCVars()->e_StreamCgfPoolSize * 90 / 100);
-
- ColorF color = Col_White;
- if (bOutOfMem)
- {
- color = Col_Red;
- }
- else if (bCloseToOutOfMem)
- {
- color = Col_Orange;
- }
- // if(bTooManyRequests)
- // color = Col_Magenta;
-
- if ((pDisplayInfo->GetIVal() == 2 || GetCVars()->e_StreamCgfDebug) || bOutOfMem || bCloseToOutOfMem)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, color, szCGFStreaming);
- }
- }
-
- // print stats about textures' streaming
- if (bTexStreaming)
- {
- static char szTexStreaming[256] = "";
- static bool bCloseToOutOfMem = false;
- static bool bOutOfMem = false;
- static bool bTooManyRequests = false;
- static bool bOverloadedPool = false;
- static uint32 nTexCount = 0;
- static uint32 nTexSize = 0;
-
- float fTexBandwidthRequired = 0.f;
- m_pRenderer->GetBandwidthStats(&fTexBandwidthRequired);
-
- if (!(GetRenderer()->GetFrameID(false) % 30) || !szTexStreaming[0])
- {
- STextureStreamingStats stats(!(GetRenderer()->GetFrameID(false) % 120));
- m_pRenderer->EF_Query(EFQ_GetTexStreamingInfo, stats);
-
- if (!(GetRenderer()->GetFrameID(false) % 120))
- {
- bOverloadedPool = stats.bPoolOverflowTotally;
- nTexCount = stats.nRequiredStreamedTexturesCount;
- nTexSize = stats.nRequiredStreamedTexturesSize;
- }
-
- int nPlatformSize = nTexSize;
-
- const int iPercentage = int((float)stats.nCurrentPoolSize / stats.nMaxPoolSize * 100.f);
- const int iStaticPercentage = int((float)stats.nStaticTexturesSize / stats.nMaxPoolSize * 100.f);
- sprintf_s(szTexStreaming, "TexStrm: TexRend: %u NumTex: %u Req:%.1fMB Mem(strm/stat/tot):%.1f/%.1f/%.1fMB(%d%%/%d%%) PoolSize:%" PRISIZE_T "MB PoolFrag:%.1f%%",
- stats.nNumTexturesPerFrame, nTexCount, (float)nPlatformSize / 1024 / 1024,
- (float)stats.nStreamedTexturesSize / 1024 / 1024, (float)stats.nStaticTexturesSize / 1024 / 1024, (float)stats.nCurrentPoolSize / 1024 / 1024,
- iPercentage, iStaticPercentage, stats.nMaxPoolSize / 1024 / 1024,
- stats.fPoolFragmentation * 100.0f
- );
- bOverloadedPool |= stats.bPoolOverflowTotally;
-
- bCloseToOutOfMem = iPercentage >= 90;
- bOutOfMem = stats.bPoolOverflow;
- }
-
- if (pDisplayInfo->GetIVal() == 2 || bCloseToOutOfMem || bTooManyRequests || bOverloadedPool)
- {
- ColorF color = Col_White;
- if (bOutOfMem)
- {
- color = Col_Red;
- }
- else if (bCloseToOutOfMem)
- {
- color = Col_Orange;
- }
- if (bTooManyRequests)
- {
- color = Col_Magenta;
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, color, "%s", szTexStreaming);
- }
-
- if (pDisplayInfo->GetIVal() > 0 && bOverloadedPool)
- {
- DrawTextLeftAligned(0, 10, 2.3f, Col_Red, "Texture pool totally overloaded!");
- }
- }
-
-
-
- {
- static char szMeshPoolUse[256] = "";
- static unsigned nFlushFrameId = 0U;
- static unsigned nFallbackFrameId = 0U;
- static SMeshPoolStatistics lastStats;
- static SMeshPoolStatistics stats;
-
- const unsigned nMainFrameId = GetRenderer()->GetFrameID(false);
- m_pRenderer->EF_Query(EFQ_GetMeshPoolInfo, stats);
- const int iPercentage = int((float)stats.nPoolInUse / (stats.nPoolSize ? stats.nPoolSize : 1U) * 100.f);
- const int iVolatilePercentage = int((float)stats.nInstancePoolInUse / (stats.nInstancePoolSize ? stats.nInstancePoolSize : 1U) * 100.f);
- nFallbackFrameId = lastStats.nFallbacks < stats.nFallbacks ? nMainFrameId : nFallbackFrameId;
- nFlushFrameId = lastStats.nFlushes < stats.nFlushes ? nMainFrameId : nFlushFrameId;
- const bool bOverflow = nMainFrameId - nFlushFrameId < 50;
- const bool bFallback = nMainFrameId - nFallbackFrameId < 50;
-
- sprintf_s(szMeshPoolUse,
- "Mesh Pool: MemUsed:%.2fKB(%d%%%%) Peak %.fKB PoolSize:%" PRISIZE_T "KB Flushes %" PRISIZE_T " Fallbacks %.3fKB %s",
- (float)stats.nPoolInUse / 1024,
- iPercentage,
- (float)stats.nPoolInUsePeak / 1024,
- stats.nPoolSize / 1024,
- stats.nFlushes,
- (float)stats.nFallbacks / 1024.0f,
- (bFallback ? "FULL!" : bOverflow ? "OVERFLOW" : ""));
-
- if (stats.nPoolSize && (pDisplayInfo->GetIVal() == 2 || bOverflow || bFallback))
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE,
- bFallback ? Col_Red : bOverflow ? Col_Orange : Col_White,
- szMeshPoolUse);
- }
- if (stats.nPoolSize && pDisplayInfo->GetIVal() == 2)
- {
- char szVolatilePoolsUse[256];
- sprintf_s(szVolatilePoolsUse,
- "Mesh Instance Pool: MemUsed:%.2fKB(%d%%%%) Peak %.fKB PoolSize:%" PRISIZE_T "KB Fallbacks %.3fKB",
- (float)stats.nInstancePoolInUse / 1024,
- iVolatilePercentage,
- (float)stats.nInstancePoolInUsePeak / 1024,
- stats.nInstancePoolSize / 1024,
- (float)stats.nInstanceFallbacks / 1024.0f);
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE,
- Col_White, szVolatilePoolsUse);
- }
-
- memcpy(&lastStats, &stats, sizeof(lastStats));
- }
-
- // streaming info
- {
- IStreamEngine* pSE = gEnv->pSystem->GetStreamEngine();
- if (pSE)
- {
- SStreamEngineStatistics& stats = pSE->GetStreamingStatistics();
- SStreamEngineOpenStats openStats;
- pSE->GetStreamingOpenStatistics(openStats);
-
- static char szStreaming[128] = "";
- if (!(GetRenderer()->GetFrameID(false) & 7))
- {
- if (pDisplayInfo->GetIVal() == 2)
- {
- sprintf_s(szStreaming, "Streaming IO: ACT: %3dmsec, Jobs:%2d Total:%5d",
- (uint32)stats.fAverageCompletionTime, openStats.nOpenRequestCount, stats.nTotalStreamingRequestCount);
- }
- else
- {
- sprintf_s(szStreaming, "Streaming IO: ACT: %3dmsec, Jobs:%2d",
- (uint32)stats.fAverageCompletionTime, openStats.nOpenRequestCount);
- }
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, szStreaming);
-
- if (stats.bTempMemOutOfBudget)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.3f, Col_Red, "Temporary Streaming Memory Pool Out of Budget!");
- }
- }
-
- if (pDisplayInfo && pDisplayInfo->GetIVal() == 2) // more streaming info
- {
- SStreamEngineStatistics& stats = gEnv->pSystem->GetStreamEngine()->GetStreamingStatistics();
-
- { // HDD stats
- static char szStreaming[512] = "";
- sprintf_s(szStreaming, "HDD: BW:%1.2f|%1.2fMb/s (Eff:%2.1f|%2.1fMb/s) - Seek:%1.2fGB - Active:%2.1f%%%%",
- (float)stats.hddInfo.nCurrentReadBandwidth / (1024 * 1024), (float)stats.hddInfo.nSessionReadBandwidth / (1024 * 1024),
- (float)stats.hddInfo.nActualReadBandwidth / (1024 * 1024), (float)stats.hddInfo.nAverageActualReadBandwidth / (1024 * 1024),
- (float)stats.hddInfo.nAverageSeekOffset / (1024 * 1024), stats.hddInfo.fAverageActiveTime);
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, szStreaming);
- }
- }
- }
-
- //////////////////////////////////////////////////////////////////////////
- // Display Info about dynamic lights.
- //////////////////////////////////////////////////////////////////////////
- {
- {
-#ifndef _RELEASE
- // Checkpoint loading information
- if (!gEnv->bMultiplayer)
- {
- ISystem::ICheckpointData data;
- gEnv->pSystem->GetCheckpointData(data);
-
- if (data.m_loadOrigin != ISystem::eLLO_Unknown)
- {
- static const char* loadStates[] =
- {
- "",
- "New Level",
- "Level to Level",
- "Resumed Game",
- "Map Command",
- };
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.3f, Col_White, "%s, Checkpoint loads: %i", loadStates[(int)data.m_loadOrigin], (int)data.m_totalLoads);
- }
- }
-#endif
-
- int nPeakMemMB = (int)(processMemInfo.PeakPagefileUsage >> 20);
- int nVirtMemMB = (int)(processMemInfo.PagefileUsage >> 20);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "Mem=%d Peak=%d DLights=(%d)", nVirtMemMB, nPeakMemMB, m_nRealLightsNum + m_nDeferredLightsNum);
-
- uint32 nShadowFrustums = 0;
- uint32 nShadowAllocs = 0;
- uint32 nShadowMaskChannels = 0;
- m_pRenderer->EF_Query(EFQ_GetShadowPoolFrustumsNum, nShadowFrustums);
- m_pRenderer->EF_Query(EFQ_GetShadowPoolAllocThisFrameNum, nShadowAllocs);
- m_pRenderer->EF_Query(EFQ_GetShadowMaskChannelsNum, nShadowMaskChannels);
- bool bThrash = (nShadowAllocs & 0x80000000) ? true : false;
- nShadowAllocs &= ~0x80000000;
- uint32 nAvailableShadowMaskChannels = nShadowMaskChannels >> 16;
- uint32 nUsedShadowMaskChannels = nShadowMaskChannels & 0xFFFF;
- bool bTooManyLights = nUsedShadowMaskChannels > nAvailableShadowMaskChannels ? true : false;
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, (nShadowFrustums || nShadowAllocs) ? Col_Yellow : Col_White, "%d Shadow Mask Channels, %3d Shadow Frustums, %3d Frustum Renders This Frame",
- nUsedShadowMaskChannels, nShadowFrustums, nShadowAllocs);
-
- if (bThrash)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Red, "SHADOW POOL THRASHING!!!");
- }
-
- if (bTooManyLights)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Red, "TOO MANY SHADOW CASTING LIGHTS (%d/%d)!!!", nUsedShadowMaskChannels, nAvailableShadowMaskChannels);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Red, "Consider increasing 'r_ShadowCastingLightsMaxCount'");
- }
-
-#ifndef _RELEASE
- uint32 numTiledShadingSkippedLights;
- m_pRenderer->EF_Query(EFQ_GetTiledShadingSkippedLightsNum, numTiledShadingSkippedLights);
- if (numTiledShadingSkippedLights > 0)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, Col_Red, "TILED SHADING: SKIPPED %d LIGHTS", numTiledShadingSkippedLights);
- }
-
- if (GetCVars()->e_levelStartupFrameNum)
- {
- static float startupAvgFPS = 0.f;
- static float levelStartupTime = 0;
- static int levelStartupFrameEnd = GetCVars()->e_levelStartupFrameNum + GetCVars()->e_levelStartupFrameDelay;
- int curFrameID = GetRenderer()->GetFrameID(false);
-
- if (curFrameID >= GetCVars()->e_levelStartupFrameDelay)
- {
- if (curFrameID == GetCVars()->e_levelStartupFrameDelay)
- {
- levelStartupTime = gEnv->pTimer->GetAsyncCurTime();
- }
- if (curFrameID == levelStartupFrameEnd)
- {
- startupAvgFPS = (float)GetCVars()->e_levelStartupFrameNum / (gEnv->pTimer->GetAsyncCurTime() - levelStartupTime);
- }
- if (curFrameID >= levelStartupFrameEnd)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 2.f, Col_Red, "Startup AVG FPS: %.2f", startupAvgFPS);
- fTextPosY += fTextStepY;
- }
- }
- }
-#endif //_RELEASE
- }
-
- m_nDeferredLightsNum = 0;
- }
-
- assert(pDisplayInfo);
- if (bEnhanced)
- {
-#define CONVX(x) (((x) / (float)gUpdateTimesNum))
-#define CONVY(y) (1.f - ((y) / 720.f))
-#define TICKS_TO_MS(t) (1000.f * gEnv->pTimer->TicksToSeconds(t))
-# define MAX_PHYS_TIME 32.f
-# define MAX_PLE_TIME 4.f
- uint32 gUpdateTimeIdx = 0, gUpdateTimesNum = 0;
- const sUpdateTimes* gUpdateTimes = gEnv->pSystem->GetUpdateTimeStats(gUpdateTimeIdx, gUpdateTimesNum);
- if (pDisplayInfo->GetIVal() >= 5)
- {
- const SAuxGeomRenderFlags flags = gEnv->pRenderer->GetIRenderAuxGeom()->GetRenderFlags();
- SAuxGeomRenderFlags newFlags(flags);
- newFlags.SetAlphaBlendMode(e_AlphaNone);
- newFlags.SetMode2D3DFlag(e_Mode2D);
- newFlags.SetCullMode(e_CullModeNone);
- newFlags.SetDepthWriteFlag(e_DepthWriteOff);
- newFlags.SetDepthTestFlag(e_DepthTestOff);
- newFlags.SetFillMode(e_FillModeSolid);
- gEnv->pRenderer->GetIRenderAuxGeom()->SetRenderFlags(newFlags);
- const ColorF colorPhysFull = Col_Blue;
- const ColorF colorSysFull = Col_Green;
- const ColorF colorRenFull = Col_Red;
- const ColorF colorPhysHalf = colorPhysFull * 0.15f;
- const ColorF colorSysHalf = colorSysFull * 0.15f;
- const ColorF colorRenHalf = colorRenFull * 0.15f;
- float phys = (TICKS_TO_MS(gUpdateTimes[0].PhysStepTime) / 66.f) * 720.f;
- float sys = (TICKS_TO_MS(gUpdateTimes[0].SysUpdateTime) / 66.f) * 720.f;
- float ren = (TICKS_TO_MS(gUpdateTimes[0].RenderTime) / 66.f) * 720.f;
- float _lerp = ((float)(max((int)gUpdateTimeIdx - (int)0, 0) / (float)gUpdateTimesNum));
- ColorB colorPhysLast;
- colorPhysLast.lerpFloat(colorPhysFull, colorPhysHalf, _lerp);
- ColorB colorSysLast;
- colorSysLast.lerpFloat(colorSysFull, colorSysHalf, _lerp);
- ColorB colorRenLast;
- colorRenLast.lerpFloat(colorRenFull, colorRenHalf, _lerp);
- Vec3 lastPhys(CONVX(0), CONVY(phys), 1.f);
- Vec3 lastSys(CONVX(0), CONVY(sys), 1.f);
- Vec3 lastRen(CONVX(0), CONVY(ren), 1.f);
- for (uint32 i = 0; i < gUpdateTimesNum; ++i)
- {
- const float x = (float)i;
- _lerp = ((float)(max((int)gUpdateTimeIdx - (int)i, 0) / (float)gUpdateTimesNum));
- const sUpdateTimes& sample = gUpdateTimes[i];
- phys = (TICKS_TO_MS(sample.PhysStepTime) / 66.f) * 720.f;
- sys = (TICKS_TO_MS(sample.SysUpdateTime) / 66.f) * 720.f;
- ren = (TICKS_TO_MS(sample.RenderTime) / 66.f) * 720.f;
- Vec3 curPhys(CONVX(x), CONVY(phys), 1.f);
- Vec3 curSys(CONVX(x), CONVY(sys), 1.f);
- Vec3 curRen(CONVX(x), CONVY(ren), 1.f);
- ColorB colorPhys;
- colorPhys.lerpFloat(colorPhysFull, colorPhysHalf, _lerp);
- ColorB colorSys;
- colorSys.lerpFloat(colorSysFull, colorSysHalf, _lerp);
- ColorB colorRen;
- colorRen.lerpFloat(colorRenFull, colorRenHalf, _lerp);
- gEnv->pRenderer->GetIRenderAuxGeom()->DrawLine(lastPhys, colorPhysLast, curPhys, colorPhys);
- gEnv->pRenderer->GetIRenderAuxGeom()->DrawLine(lastSys, colorSysLast, curSys, colorSys);
- gEnv->pRenderer->GetIRenderAuxGeom()->DrawLine(lastRen, colorRenLast, curRen, colorRen);
- lastPhys = curPhys;
- colorPhysLast = colorPhys;
- lastSys = curSys;
- colorSysLast = colorSys;
- lastRen = curRen;
- colorRenLast = colorRen;
- }
- gEnv->pRenderer->GetIRenderAuxGeom()->SetRenderFlags(flags);
- }
- const float curPhysTime = TICKS_TO_MS(gUpdateTimes[gUpdateTimeIdx].PhysStepTime);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE_SMALL, curPhysTime > MAX_PHYS_TIME ? Col_Red : Col_White, "%3.1f ms Phys", curPhysTime);
- const float curPhysWaitTime = TICKS_TO_MS(gUpdateTimes[gUpdateTimeIdx].physWaitTime);
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE_SMALL, curPhysTime > MAX_PHYS_TIME ? Col_Red : Col_White, "%3.1f ms WaitPhys", curPhysWaitTime);
-
- float partTicks = 0;
-
- //3dengine stats from RenderWorld
- {
-#if defined(MOBILE)
- const float maxVal = 12.f;
-#else
- const float maxVal = 50.f;
-#endif
- float fTimeMS = TICKS_TO_MS(m_nRenderWorldUSecs) - partTicks;
- DrawTextRightAligned(fTextPosX, fTextPosY += (fTextStepY - STEP_SMALL_DIFF), DISPLAY_INFO_SCALE_SMALL, fTimeMS > maxVal ? Col_Red : Col_White, "%.2f ms RendWorld", fTimeMS);
- }
-
- {
- SStreamEngineStatistics stat = gEnv->pSystem->GetStreamEngine()->GetStreamingStatistics();
-
- float fTimeMS = 1000.0f * gEnv->pTimer->TicksToSeconds(stat.nMainStreamingThreadWait);
- DrawTextRightAligned(fTextPosX, fTextPosY += (fTextStepY - STEP_SMALL_DIFF),
- DISPLAY_INFO_SCALE_SMALL, Col_White, "%3.1f ms StreamFin", fTimeMS);
- }
- }
-
-#undef MAX_PHYS_TIME
-#undef TICKS_TO_MS
-#undef CONVY
-#undef CONVX
-
- //////////////////////////////////////////////////////////////////////////
- // Display Thermal information of the device (if supported)
- //////////////////////////////////////////////////////////////////////////
-
- if (ThermalInfoRequestsBus::GetTotalNumOfEventHandlers())
- {
- const int thermalSensorCount = static_cast(ThermalSensorType::Count);
- const char* sensorStrings[thermalSensorCount] = { "CPU", "GPU", "Battery" };
- for (int i = 0; i < thermalSensorCount; ++i)
- {
- float temperature = 0.f;
- ThermalSensorType sensor = static_cast(i);
- EBUS_EVENT_RESULT(temperature, ThermalInfoRequestsBus, GetSensorTemp, sensor);
- AZStd::string tempText;
- ColorF tempColor;
- if (temperature > 0.f)
- {
- float overheatingTemp = 0.f;
- EBUS_EVENT_RESULT(overheatingTemp, ThermalInfoRequestsBus, GetSensorOverheatingTemp, sensor);
- tempText = AZStd::string::format(" %.1f C", temperature);
- tempColor = temperature >= overheatingTemp ? Col_Red : Col_White;
- }
- else
- {
- tempText = "N/A";
- tempColor = Col_White;
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE, tempColor, "%s Temp %s", sensorStrings[i], tempText.c_str());
- }
- }
-
- //////////////////////////////////////////////////////////////////////////
- // Display Current fps
- //////////////////////////////////////////////////////////////////////////
-
- if (iBlendMode)
- {
- // Track FPS frequency, report min/max.
- Blend(m_fAverageFPS, fFPS, fBlendCur);
-
- Blend(m_fMinFPSDecay, fFPS, fBlendCur);
- if (fFPS <= m_fMinFPSDecay)
- {
- m_fMinFPS = m_fMinFPSDecay = fFPS;
- }
-
- Blend(m_fMaxFPSDecay, fFPS, fBlendCur);
- if (fFPS >= m_fMaxFPSDecay)
- {
- m_fMaxFPS = m_fMaxFPSDecay = fFPS;
- }
-
- const char* sMode = "";
- switch (iBlendMode)
- {
- case 1:
- sMode = "frame avg";
- break;
- case 2:
- sMode = "time avg";
- break;
- case 3:
- sMode = "peak hold";
- break;
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.5f, ColorF(1.0f, 1.0f, 0.5f, 1.0f),
- "FPS %.1f [%.0f..%.0f], %s over %.1f s",
- m_fAverageFPS, m_fMinFPS, m_fMaxFPS, sMode, fBlendTime);
- }
- else
- {
- const int nHistorySize = 16;
- static float arrfFrameRateHistory[nHistorySize] = {0};
-
- static int nFrameId = 0;
- nFrameId++;
- int nSlotId = nFrameId % nHistorySize;
- assert(nSlotId >= 0 && nSlotId < nHistorySize);
- arrfFrameRateHistory[nSlotId] = min(9999.f, GetTimer()->GetFrameRate());
-
- float fMinFPS = 9999.0f;
- float fMaxFPS = 0;
- for (int i = 0; i < nHistorySize; i++)
- {
- if (arrfFrameRateHistory[i] < fMinFPS)
- {
- fMinFPS = arrfFrameRateHistory[i];
- }
- if (arrfFrameRateHistory[i] > fMaxFPS)
- {
- fMaxFPS = arrfFrameRateHistory[i];
- }
- }
-
- float fFrameRate = 0;
- float fValidFrames = 0;
- for (int i = 0; i < nHistorySize; i++)
- {
- int s = (nFrameId - i) % nHistorySize;
- fFrameRate += arrfFrameRateHistory[s];
- fValidFrames++;
- }
- fFrameRate /= fValidFrames;
-
- m_fAverageFPS = fFrameRate;
- m_fMinFPS = m_fMinFPSDecay = fMinFPS;
- m_fMaxFPS = m_fMaxFPSDecay = fMaxFPS;
-
-
- //only difference to r_DisplayInfo 1, need ms for GPU time
- float fMax = (int(GetCurTimeSec() * 2) & 1) ? 999.f : 888.f;
- if (bEnhanced)
- {
- /* DrawTextRightAligned( fTextPosX, fTextPosY+=fTextStepY, "%6.2f ~%6.2f ms (%6.2f..%6.2f) CPU",
- GetTimer()->GetFrameTime()*1000.0f, 1000.0f/max(0.0001f,fFrameRate),
- 1000.0f/max(0.0001f,fMinFPS),
- 1000.0f/max(0.0001f,fMaxFPS));
- */
- const RPProfilerStats* pFrameRPPStats = GetRenderer()->GetRPPStats(eRPPSTATS_OverallFrame);
- float gpuTime = pFrameRPPStats ? pFrameRPPStats->gpuTime : 0.0f;
- static float sGPUTime = 0.f;
- if (gpuTime < 1000.f && gpuTime > 0.01f)
- {
- sGPUTime = gpuTime; //catch sporadic jumps
- }
- if (sGPUTime > 0.01f)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, DISPLAY_INFO_SCALE_SMALL, (gpuTime >= 40.f) ? Col_Red : Col_White, "%3.1f ms GPU", sGPUTime);
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.4f, ColorF(1.0f, 1.0f, 0.2f, 1.0f), "FPS %5.1f (%3d..%3d)(%3.1f ms)",
- min(fMax, fFrameRate), (int)min(fMax, fMinFPS), (int)min(fMax, fMaxFPS), GetTimer()->GetFrameTime() * 1000.0f);
- }
- else
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, 1.4f, ColorF(1.0f, 1.0f, 0.2f, 1.0f), "FPS %5.1f (%3d..%3d)",
- min(fMax, fFrameRate), (int)min(fMax, fMinFPS), (int)min(fMax, fMaxFPS));
- }
- }
-
-#ifndef _RELEASE
- if (GetCVars()->e_GsmStats)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "--------------- GSM Stats ---------------");
-
- if (m_pSun && m_pSun->m_pShadowMapInfo)
- {
- CLightEntity::ShadowMapInfo* pSMI = m_pSun->m_pShadowMapInfo;
- int arrGSMCastersCount[MAX_GSM_LODS_NUM];
- memset(arrGSMCastersCount, 0, sizeof(arrGSMCastersCount));
- char szText[256] = "Objects count per shadow map: ";
- for (int nLod = 0; nLod < Get3DEngine()->GetShadowsCascadeCount(NULL) && nLod < MAX_GSM_LODS_NUM; nLod++)
- {
- ShadowMapFrustum*& pLsource = pSMI->pGSM[nLod];
- if (nLod)
- {
- azstrcat(szText, AZ_ARRAY_SIZE(szText), ", ");
- }
-
- char* pstr = szText + strlen(szText);
- sprintf_s(pstr, sizeof(szText) - (pstr - szText), "%d", pLsource->m_castersList.Count());
- }
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, szText);
- }
-
- for (int nSunInUse = 0; nSunInUse < 2; nSunInUse++)
- {
- if (nSunInUse)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "WithSun ListId FrNum UserNum");
- }
- else
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "NoSun ListId FrNum UserNum");
- }
-
- // TODO: For Nick, check if needed anymore
- //for(ShadowFrustumListsCache::iterator it = m_FrustumsCache[nSunInUse].begin(); it != m_FrustumsCache[nSunInUse].end(); ++it)
- //{
- // int nListId = (int)it->first;
- // PodArray * pList = it->second;
-
- // DrawTextRightAligned( fTextPosX, fTextPosY+=fTextStepY,
- // "%8d %8d %8d",
- // nListId,
- // pList->Count(), m_FrustumsCacheUsers[nSunInUse][nListId]);
- //}
- }
- }
-
- // objects counter
- if (GetCVars()->e_ObjStats)
- {
-#define DRAW_OBJ_STATS(_var) DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "%s: %d", (#_var), GetInstCount(_var))
-
- DRAW_OBJ_STATS(eERType_NotRenderNode);
- DRAW_OBJ_STATS(eERType_Light);
- DRAW_OBJ_STATS(eERType_Cloud);
- DRAW_OBJ_STATS(eERType_FogVolume);
- DRAW_OBJ_STATS(eERType_Decal);
- DRAW_OBJ_STATS(eERType_WaterVolume);
- DRAW_OBJ_STATS(eERType_DistanceCloud);
- DRAW_OBJ_STATS(eERType_VolumeObject);
- DRAW_OBJ_STATS(eERType_Rope);
- DRAW_OBJ_STATS(eERType_PrismObject);
- DRAW_OBJ_STATS(eERType_RenderComponent);
- DRAW_OBJ_STATS(eERType_StaticMeshRenderComponent);
- DRAW_OBJ_STATS(eERType_DynamicMeshRenderComponent);
- DRAW_OBJ_STATS(eERType_SkinnedMeshRenderComponent);
- DRAW_OBJ_STATS(eERType_GameEffect);
- DRAW_OBJ_STATS(eERType_BreakableGlass);
-
- if (IsObjectTreeReady())
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "--- By list type: ---");
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, " Main: %d", m_pObjectsTree->GetObjectsCount(eMain));
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "Caster: %d", m_pObjectsTree->GetObjectsCount(eCasters));
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "LigAll: %d", m_lstStaticLights.Count());
- }
-
- int nFree = m_LTPRootFree.Count();
- int nUsed = m_LTPRootUsed.Count();
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "RNTmpData(Used+Free): %d + %d = %d (%d KB)",
- nUsed, nFree, nUsed + nFree, (nUsed + nFree) * (int)sizeof(CRNTmpData) / 1024);
-
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "COctreeNode::m_arrEmptyNodes.Count() = %d", COctreeNode::m_arrEmptyNodes.Count());
- }
-
- CCullBuffer* pCB = GetCoverageBuffer();
- if (pCB && GetCVars()->e_CoverageBuffer && GetCVars()->e_CoverageBufferDebug && pCB->TrisWritten())
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY,
- "CB: Write:%3d/%2d Test:%4d/%4d/%3d ZFarM:%.2f ZNearM:%.2f Res:%d OI:%s",
- pCB->TrisWritten(), pCB->ObjectsWritten(),
- pCB->TrisTested(), pCB->ObjectsTested(), pCB->ObjectsTestedAndRejected(),
- pCB->GetZFarInMeters(), pCB->GetZNearInMeters(), pCB->SelRes(),
- pCB->IsOutdooVisible() ? "Out" : "In");
- }
-
-#if defined(INFO_FRAME_COUNTER)
- ++frameCounter;
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "Frame #%d", frameCounter);
-#endif
-
- ITimeOfDay* pTimeOfDay = Get3DEngine()->GetTimeOfDay();
- if (GetCVars()->e_TimeOfDayDebug && pTimeOfDay)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "---------------------------------------");
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "------------ Time of Day -------------");
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, " ");
-
- int nVarCount = pTimeOfDay->GetVariableCount();
- for (int v = 0; v < nVarCount; ++v)
- {
- ITimeOfDay::SVariableInfo pVar;
- pTimeOfDay->GetVariableInfo(v, pVar);
-
- if (pVar.type == ITimeOfDay::TYPE_FLOAT)
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, " %s: %.9f", pVar.displayName, pVar.fValue[0]);
- }
- else
- {
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, " %s: %.3f %.3f %.3f", pVar.displayName, pVar.fValue[0], pVar.fValue[1], pVar.fValue[2]);
- }
- }
- DrawTextRightAligned(fTextPosX, fTextPosY += fTextStepY, "---------------------------------------");
- }
-
-#endif
- // We only show memory usage in dev mode.
- if (gEnv->pSystem->IsDevMode())
- {
- if (GetCVars()->e_DisplayMemoryUsageIcon)
- {
- uint64 nAverageMemoryUsage(0);
- uint64 nHighMemoryUsage(0);
- uint64 nCurrentMemoryUsage(0);
- const uint64 nMegabyte(1024 * 1024);
-
- // Copied from D3DDriver.cpp, function CD3D9Renderer::RT_EndFrame().
- int nIconSize = 16;
-
- nCurrentMemoryUsage = processMemInfo.TotalPhysicalMemory - processMemInfo.FreePhysicalMemory;
-
-#if defined(_WIN64) || defined(WIN64) || defined(MAC) || defined(LINUX64)
- nAverageMemoryUsage = 3000;
- nHighMemoryUsage = 6000;
- // This is the same value as measured in the editor.
- nCurrentMemoryUsage = processMemInfo.PagefileUsage / nMegabyte;
-#elif defined(_WIN32) || defined(LINUX32)
- nAverageMemoryUsage = 800;
- nHighMemoryUsage = 1200;
- // This is the same value as measured in the editor.
- nCurrentMemoryUsage = processMemInfo.PagefileUsage / nMegabyte;
-#endif //_WIN32
-
- ITexture* pRenderTexture(m_ptexIconAverageMemoryUsage);
- if (nCurrentMemoryUsage > nHighMemoryUsage)
- {
- pRenderTexture = m_ptexIconHighMemoryUsage;
- }
- else if (nCurrentMemoryUsage < nAverageMemoryUsage)
- {
- pRenderTexture = m_ptexIconLowMemoryUsage;
- }
-
- if (pRenderTexture && gEnv->pRenderer)
- {
- float vpWidth = (float)gEnv->pRenderer->GetOverlayWidth(), vpHeight = (float)gEnv->pRenderer->GetOverlayHeight();
- float iconWidth = (float)nIconSize / vpWidth * 800.0f;
- float iconHeight = (float)nIconSize / vpHeight * 600.0f;
- gEnv->pRenderer->Push2dImage((fTextPosX / vpWidth) * 800.0f - iconWidth, ((fTextPosY += nIconSize + 3) / vpHeight) * 600.0f,
- iconWidth, iconHeight, pRenderTexture->GetTextureID(), 0, 1.0f, 1.0f, 0);
- }
- }
- }
-#endif
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-static const float DISPLAY_MEMORY_ROW_MARGIN = 16.0f;
-static const float DISPLAY_MEMORY_ROW_HEIGHT = 32.0f;
-static const float DISPLAY_MEMORY_ROW_NUMBER_WIDTH = 128.0f;
-static const float DISPLAY_MEMORY_ROW_FONT_SCALE = 1.5f;
-static const float DISPLAY_MEMORY_COL_LABEL_FONT_SCALE = 1.0f;
-
-static inline void AdjustDisplayMemoryParameters(float& yPos, float& columnInset, float columnWidth, float screenHeight)
-{
- int column = (int)(yPos + DISPLAY_MEMORY_ROW_HEIGHT) / (int)screenHeight;
- columnInset += columnWidth * column;
- yPos -= screenHeight * column;
-}
-
-static void DisplayMemoryRow(C3DEngine& engine, float columnWidth, float screenHeight, float yPos, float valueA, float valueB, const char* valueBFormat, const ColorF& color, const char* categoryName, const char* subcategoryName = nullptr)
-{
- float columnInset = columnWidth - DISPLAY_MEMORY_ROW_MARGIN;
- AdjustDisplayMemoryParameters(yPos, columnInset, columnWidth, screenHeight);
- if (valueA != -1.0f)
- {
- engine.DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, color, "%.1fMB", valueA);
- }
- if (valueB != -1.0f)
- {
- engine.DrawTextRightAligned(columnInset, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, color, valueBFormat, valueB);
- }
-
- if (subcategoryName)
- {
- static const float MAIN_TEXT_SCALE = 1.5f;
- static const float SUB_TEXT_SCALE = 1.0f;
- static const float SUB_LINE_OFFSET_Y = 16.0f;
-
- engine.DrawTextLeftAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 4, yPos, MAIN_TEXT_SCALE, color, "%s", categoryName);
- engine.DrawTextLeftAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 4, yPos + SUB_LINE_OFFSET_Y, SUB_TEXT_SCALE, color, "%s", subcategoryName);
- }
- else
- {
- engine.DrawTextLeftAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 4, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, color, "%s", categoryName);
- }
-}
-
-void C3DEngine::DisplayMemoryStatistics()
-{
- const ColorF headerColor = ColorF(0.4f, 0.9f, 0.3f, 1.0f);
- const ColorF statisticColor = ColorF(0.4f, 0.9f, 0.9f, 1.0f);
- const ColorF subtotalColor = ColorF(0.4f, 0.3f, 0.9f, 1.0f);
- const ColorF totalColor = ColorF(0.9f, 0.9f, 0.9f, 1.0f);
- const ColorF labelColor = ColorF(0.4f, 0.3f, 0.3f, 1.0f);
-
- const float screenHeight = (float)m_pRenderer->GetHeight();
-
- if (GetCVars()->e_MemoryProfiling == 1)
- {
- const float columnWidth = (float)(m_pRenderer->GetWidth() / 2);
- float columnInset = columnWidth - DISPLAY_MEMORY_ROW_MARGIN;
-
- float memoryYPos = DISPLAY_MEMORY_ROW_HEIGHT;
- float memoryYPosStepSize = DISPLAY_MEMORY_ROW_HEIGHT;
-
- // Add column labels and header
- this->DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH, memoryYPos, DISPLAY_MEMORY_COL_LABEL_FONT_SCALE, labelColor, "Allocated");
- this->DrawTextRightAligned(columnInset, memoryYPos, DISPLAY_MEMORY_COL_LABEL_FONT_SCALE, labelColor, "No. Allocations");
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, -1.0f, -1.0f, "%.1fMB", headerColor, "VRAM Usage");
- memoryYPos += (memoryYPosStepSize * 0.5f);
-
- float totalTrackedGPUAlloc = 0.0f;
-
- // Print the memory usage of each major VRAM category and each subcategory
- for (int category = 0; category < Render::Debug::VRAM_CATEGORY_NUMBER_CATEGORIES; ++category)
- {
- float categorySubTotal = 0.0f;
- AZStd::string categoryName;
-
- for (int subcategory = 0; subcategory < Render::Debug::VRAM_SUBCATEGORY_NUMBER_SUBCATEGORIES; ++subcategory)
- {
- AZStd::string subcategoryName;
- size_t numberBytesAllocated = 0;
- size_t numberAllocations = 0;
- EBUS_EVENT(Render::Debug::VRAMDrillerBus, GetCurrentVRAMStats, static_cast(category),
- static_cast(subcategory), categoryName, subcategoryName, numberBytesAllocated, numberAllocations);
-
- if (numberAllocations != 0)
- {
- float numMBallocated = numberBytesAllocated / (1024.0f * 1024.0f);
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, numMBallocated, (float)numberAllocations, "%.0f", statisticColor, categoryName.c_str(), subcategoryName.c_str());
-
- memoryYPos += memoryYPosStepSize;
- totalTrackedGPUAlloc += numMBallocated;
- categorySubTotal += numMBallocated;
- }
- }
- if (categorySubTotal > 0.0f)
- {
- float yPos = memoryYPos;
- AdjustDisplayMemoryParameters(yPos, columnInset, columnWidth, screenHeight);
- DrawTextLeftAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 4, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, subtotalColor, "%s Subtotal", categoryName.c_str());
- DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, subtotalColor, "%.1fMB", categorySubTotal);
- memoryYPos += (memoryYPosStepSize * 0.5f);
- }
- }
-
- float allocatedVideoMemoryMB = -1.0f, reservedVideoMemoryMB = -1.0f;
-
-#if defined(AZ_PLATFORM_PROVO)
- size_t allocatedVideoMemoryBytes = 0, reservedVideoMemoryBytes = 0;
- VirtualAllocator::QueryVideoMemory(allocatedVideoMemoryBytes, reservedVideoMemoryBytes);
- allocatedVideoMemoryMB = static_cast(allocatedVideoMemoryBytes) / (1024.0f * 1024.0f);
- reservedVideoMemoryMB = static_cast(reservedVideoMemoryBytes) / (1024.0f * 1024.0f);
-#else
- // Non PROVO platforms just sum up the tracked allocations
- allocatedVideoMemoryMB = totalTrackedGPUAlloc;
-#endif
-
- DrawTextLeftAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 4, memoryYPos, DISPLAY_MEMORY_ROW_FONT_SCALE, totalColor, "Total");
- if (reservedVideoMemoryMB != -1.0f)
- {
- DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 1, memoryYPos, DISPLAY_MEMORY_ROW_FONT_SCALE, totalColor, "%.1fMB/%.1fMB", allocatedVideoMemoryMB, reservedVideoMemoryMB);
- memoryYPos += (memoryYPosStepSize * 0.5f);
- }
- else
- {
- DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH * 1, memoryYPos, DISPLAY_MEMORY_ROW_FONT_SCALE, totalColor, "%.1fMB", allocatedVideoMemoryMB);
- memoryYPos += (memoryYPosStepSize * 0.5f);
- }
-
- // Spacer
- memoryYPos += (memoryYPosStepSize * 0.5f);
-
- // Add column labels and header
- this->DrawTextRightAligned(columnInset - DISPLAY_MEMORY_ROW_NUMBER_WIDTH, memoryYPos, DISPLAY_MEMORY_COL_LABEL_FONT_SCALE, labelColor, "Allocated");
- this->DrawTextRightAligned(columnInset, memoryYPos, DISPLAY_MEMORY_COL_LABEL_FONT_SCALE, labelColor, "Capacity");
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, -1.0f, -1.0f, "%.1fMB", headerColor, "CPU Memory Usage");
- memoryYPos += (memoryYPosStepSize * 0.5f);
-
- float totalTrackedCPUAlloc = 0.0f;
- float totalCapacityCPUAlloc = 0.0f;
-
- AZ::AllocatorManager& allocatorManager = AZ::AllocatorManager::Instance();
- const size_t allocatorCount = allocatorManager.GetNumAllocators();
- AZStd::map existingAllocators;
- AZStd::map sourcesToAllocators;
-
- // Build a mapping of original allocator sources to their allocators
- for (int i = 0; i < allocatorCount; ++i)
- {
- AZ::IAllocator* allocator = allocatorManager.GetAllocator(i);
- sourcesToAllocators.emplace(allocator->GetOriginalAllocationSource(), allocator);
- }
-
- // Group up any allocators under this size
- static float smallAllocatorCapacityMaxMB = 10.0f;
- float smallAllocatorsTotalCapacityMB = 0.0f;
- float smallAllocatorsTotalAllocatedMB = 0.0f;
-
- for (int i = 0; i < allocatorCount; ++i)
- {
- AZ::IAllocator* allocator = allocatorManager.GetAllocator(i);
- AZ::IAllocatorAllocate* source = allocator->GetAllocationSource();
- AZ::IAllocatorAllocate* originalSource = allocator->GetOriginalAllocationSource();
- AZ::IAllocatorAllocate* schema = allocator->GetSchema();
- AZ::IAllocator* alias = (source != originalSource) ? sourcesToAllocators[source] : nullptr;
-
- if (schema && !alias)
- {
- // Check to see if this allocator's source maps to another allocator
- // Need to check both the schema and the allocator itself, as either one might be used as the alias depending on how it's implemented
- AZStd::array checkAllocators = { { schema, allocator->GetAllocationSource() } };
-
- for (AZ::IAllocatorAllocate* check : checkAllocators)
- {
- auto existing = existingAllocators.emplace(check, allocator);
-
- if (!existing.second)
- {
- alias = existing.first->second;
- // Do not break out of the loop as we need to add to the map for all entries
- }
- }
- }
-
- if (!alias)
- {
- static const AZ::IAllocator* OS_ALLOCATOR = &AZ::AllocatorInstance::GetAllocator();
- float allocatedMB = (float)source->NumAllocatedBytes() / (1024.0f * 1024.0f);
- float capacityMB = (float)source->Capacity() / (1024.0f * 1024.0f);
-
- totalTrackedCPUAlloc += allocatedMB;
- totalCapacityCPUAlloc += capacityMB;
-
- // Skip over smaller allocators so the display is readable.
- if (capacityMB < smallAllocatorCapacityMaxMB)
- {
- smallAllocatorsTotalCapacityMB += capacityMB;
- smallAllocatorsTotalAllocatedMB += allocatedMB;
- continue;
- }
-
- if (allocator == OS_ALLOCATOR)
- {
- // Need to special case the OS allocator because its capacity is a made-up number. Better to just use the allocated amount, it will hopefully be small anyway.
- capacityMB = allocatedMB;
- }
-
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, allocatedMB, capacityMB, "%.1fMB", statisticColor, allocator->GetName(), allocator->GetDescription());
-
- memoryYPos += memoryYPosStepSize;
- }
- }
-
- if (smallAllocatorCapacityMaxMB > 0.0f)
- {
- AZStd::string subText = AZStd::string::format("Allocators smaller than %.0f MB", smallAllocatorCapacityMaxMB);
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, smallAllocatorsTotalAllocatedMB, smallAllocatorsTotalCapacityMB, "%.1fMB", statisticColor, "All Small Allocators", subText.c_str());
- memoryYPos += memoryYPosStepSize;
- }
-
- DisplayMemoryRow(*this, columnWidth, screenHeight, memoryYPos, totalTrackedCPUAlloc, totalCapacityCPUAlloc, "%.1fMB", totalColor, "Total");
- memoryYPos += (memoryYPosStepSize * 0.5f);
- }
- else if (GetCVars()->e_MemoryProfiling == 2)
- {
- const float columnWidth = (float)(m_pRenderer->GetWidth() / 2);
-
- float memoryYPos = DISPLAY_MEMORY_ROW_HEIGHT;
- float memoryYPosStepSize = DISPLAY_MEMORY_ROW_HEIGHT;
-
- AZ::AllocatorManager& allocatorManager = AZ::AllocatorManager::Instance();
- const size_t allocatorCount = allocatorManager.GetNumAllocators();
- AZStd::map existingAllocators;
- AZStd::map sourcesToAllocators;
-
- // Build a mapping of original allocator sources to their allocators
- for (int i = 0; i < allocatorCount; ++i)
- {
- AZ::IAllocator* allocator = allocatorManager.GetAllocator(i);
- sourcesToAllocators.emplace(allocator->GetOriginalAllocationSource(), allocator);
- }
-
- for (int i = 0; i < allocatorCount; ++i)
- {
- AZ::IAllocator* allocator = allocatorManager.GetAllocator(i);
- AZ::IAllocatorAllocate* source = allocator->GetAllocationSource();
- AZ::IAllocatorAllocate* originalSource = allocator->GetOriginalAllocationSource();
- AZ::IAllocatorAllocate* schema = allocator->GetSchema();
- AZ::IAllocator* alias = (source != originalSource) ? sourcesToAllocators[source] : nullptr;
-
- if (schema && !alias)
- {
- // Check to see if this allocator's source maps to another allocator
- // Need to check both the schema and the allocator itself, as either one might be used as the alias depending on how it's implemented
- AZStd::array checkAllocators = { { schema, allocator->GetAllocationSource() } };
-
- for (AZ::IAllocatorAllocate* check : checkAllocators)
- {
- auto existing = existingAllocators.emplace(check, allocator);
-
- if (!existing.second)
- {
- alias = existing.first->second;
- // Do not break out of the loop as we need to add to the map for all entries
- }
- }
- }
-
- if (alias)
- {
- float columnInset = columnWidth - DISPLAY_MEMORY_ROW_MARGIN;
- float yPos = memoryYPos;
- AdjustDisplayMemoryParameters(yPos, columnInset, columnWidth, screenHeight);
- DrawTextRightAligned(columnInset, yPos, DISPLAY_MEMORY_ROW_FONT_SCALE, statisticColor, "%s => %s", allocator->GetName(), alias->GetName());
- memoryYPos += (memoryYPosStepSize * 0.5f);
- }
- }
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-void C3DEngine::SetupDistanceFog()
-{
- FUNCTION_PROFILER_3DENGINE;
-
- GetRenderer()->SetFogColor(ColorF(m_vFogColor.x, m_vFogColor.y, m_vFogColor.z, 1.0f));
- GetRenderer()->EnableFog(GetCVars()->e_Fog > 0);
-}
-
-void C3DEngine::ScreenShotHighRes([[maybe_unused]] CStitchedImage* pStitchedImage, [[maybe_unused]] const int nRenderFlags, [[maybe_unused]] const SRenderingPassInfo& passInfo, [[maybe_unused]] uint32 SliceCount, [[maybe_unused]] f32 fTransitionSize)
-{
-#if defined(WIN32) || defined(WIN64) || defined(MAC)
-
- //If the requested format is TGA we want the framebuffer in BGR format; otherwise we want RGB
- const char* szExtension = GetCVars()->e_ScreenShotFileFormat->GetString();
- bool BGRA = (azstricmp(szExtension, "tga") == 0) ? true : false;
-
- // finish frame started by system
- GetRenderer()->EndFrame();
-
- // The occlusion system does not like being restarted mid-frame like this. Disable it for
- // the screenshot system.
- AZ::s32 statObjBufferRenderTasks = GetCVars()->e_StatObjBufferRenderTasks;
- GetCVars()->e_StatObjBufferRenderTasks = 0;
-
- GetConsole()->SetScrollMax(0);
-
- const uint32 ScreenWidth = GetRenderer()->GetWidth();
- const uint32 ScreenHeight = GetRenderer()->GetHeight();
- uint32* pImage = new uint32[ScreenWidth * ScreenHeight];
- for (uint32 yy = 0; yy < SliceCount; yy++)
- {
- for (uint32 xx = 0; xx < SliceCount; xx++)
- {
- const int BlendX = (xx * 2) / SliceCount;
- const int BlendY = (yy * 2) / SliceCount;
- const int x = (((xx * 2) % SliceCount) & ~1) + BlendX;
- const int y = (((yy * 2) % SliceCount) & ~1) + BlendY;
- const int reverseX = SliceCount - 1 - x;
- const int reverseY = SliceCount - 1 - y;
-
- const float halfTransitionSize = fTransitionSize * 0.5f;
- const float sliceCountF = static_cast(SliceCount);
-
- // start new frame and define needed tile
- const f32 ScreenScale = 1.0f / ((1.0f / sliceCountF) * (1.0f + fTransitionSize));
-
- GetRenderer()->BeginFrame();
-
- // This has to happen after BeginFrame(), because BeginFrame increments the frame counter, and SRenderingPassInfo
- // pulls from that counter in the constructor. Individual render nodes track the frame they were last rendered with
- // and will bail if the same frame is rendered twice.
- SRenderingPassInfo screenShotPassInfo = SRenderingPassInfo::CreateGeneralPassRenderingInfo(passInfo.GetCamera());
- PrintMessage("Rendering tile %d of %d ... ", xx + yy * SliceCount + 1, SliceCount * SliceCount);
-
- const float normalizedX = ((static_cast(reverseX) - halfTransitionSize) / sliceCountF);
- const float normalizedY = ((static_cast(reverseY) - halfTransitionSize) / sliceCountF);
-
- GetRenderer()->SetRenderTile(
- ScreenScale * normalizedX,
- ScreenScale * normalizedY,
- ScreenScale, ScreenScale);
-
- UpdateRenderingCamera("ScreenShotHighRes", screenShotPassInfo);
-
- RenderInternal(nRenderFlags, screenShotPassInfo, "ScreenShotHighRes");
-
- // Make sure we've composited to the final back buffer.
- GetRenderer()->SwitchToNativeResolutionBackbuffer();
-
- GetRenderer()->EndFrame();
-
- PrintMessagePlus("reading frame buffer ... ");
-
- GetRenderer()->ReadFrameBufferFast(pImage, ScreenWidth, ScreenHeight, BGRA);
- pStitchedImage->RasterizeRect(pImage, ScreenWidth, ScreenHeight, x, y, fTransitionSize,
- fTransitionSize > 0.0001f && BlendX,
- fTransitionSize > 0.0001f && BlendY);
-
- PrintMessagePlus("ok");
- }
- }
- delete[] pImage;
-
- GetCVars()->e_StatObjBufferRenderTasks = statObjBufferRenderTasks;
-
- // re-start frame so system can safely finish it
- GetRenderer()->BeginFrame();
-
- // restore initial state
- GetRenderer()->SetViewport(0, 0, GetRenderer()->GetWidth(), GetRenderer()->GetHeight());
- GetConsole()->SetScrollMax(300);
- GetRenderer()->SetRenderTile();
-
- PrintMessagePlus(" ok");
-#endif // #if defined(WIN32) || defined(WIN64)
-}
-
-
-
-bool C3DEngine::ScreenShotMap([[maybe_unused]] CStitchedImage* pStitchedImage,
- [[maybe_unused]] const int nRenderFlags,
- [[maybe_unused]] const SRenderingPassInfo& passInfo,
- [[maybe_unused]] const uint32 SliceCount,
- [[maybe_unused]] const f32 fTransitionSize)
-{
-#if defined(WIN32) || defined(WIN64) || defined(MAC)
-
- const f32 fTLX = GetCVars()->e_ScreenShotMapCenterX - GetCVars()->e_ScreenShotMapSizeX + fTransitionSize * GetRenderer()->GetWidth();
- const f32 fTLY = GetCVars()->e_ScreenShotMapCenterY - GetCVars()->e_ScreenShotMapSizeY + fTransitionSize * GetRenderer()->GetHeight();
- const f32 fBRX = GetCVars()->e_ScreenShotMapCenterX + GetCVars()->e_ScreenShotMapSizeX + fTransitionSize * GetRenderer()->GetWidth();
- const f32 fBRY = GetCVars()->e_ScreenShotMapCenterY + GetCVars()->e_ScreenShotMapSizeY + fTransitionSize * GetRenderer()->GetHeight();
- const f32 Height = GetCVars()->e_ScreenShotMapCamHeight;
- const int Orient = GetCVars()->e_ScreenShotMapOrientation;
-
- const char* SettingsFileName = GetLevelFilePath("ScreenshotMap.Settings");
-
- AZ::IO::HandleType metaFileHandle = gEnv->pCryPak->FOpen(SettingsFileName, "wt");
- if (metaFileHandle != AZ::IO::InvalidHandle)
- {
- char Data[1024 * 8];
- snprintf(Data, sizeof(Data), "",
- GetCVars()->e_ScreenShotMapCenterX,
- GetCVars()->e_ScreenShotMapCenterY,
- GetCVars()->e_ScreenShotMapSizeX,
- GetCVars()->e_ScreenShotMapSizeY,
- GetCVars()->e_ScreenShotMapCamHeight,
- GetCVars()->e_ScreenShotQuality,
- GetCVars()->e_ScreenShotMapOrientation);
- string data(Data);
- gEnv->pCryPak->FWrite(data.c_str(), data.size(), metaFileHandle);
- gEnv->pCryPak->FClose(metaFileHandle);
- }
-
- // This bit is necessary because we don't have a way to render the world using an orthographic projection. This is doing
- // a hacky orthographic projection by shifting the camera up to a sufficient height to fake it. To preserve depth range
- // we define a maximum range then then fit the near / far planes to extend [-HeightRangeMax, HeightRangeMax] along Z (which is the up axis).
- const float HeightRangeMax = 4096;
- const float HeightRangeMaxDiv2 = HeightRangeMax / 2.0f;
-
- const float NearClip = max(Height - HeightRangeMaxDiv2, 1.0f);
- const float FarClip = max(Height + HeightRangeMaxDiv2, HeightRangeMax);
-
- CCamera cam = passInfo.GetCamera();
- Matrix34 tmX, tmY;
- float xrot = -gf_PI * 0.5f;
- float yrot = Orient == 0 ? -gf_PI * 0.5f : -0.0f;
- tmX.SetRotationX(xrot);
- tmY.SetRotationY(yrot);
- Matrix34 tm = tmX * tmY;
- tm.SetTranslation(Vec3((fTLX + fBRX) * 0.5f, (fTLY + fBRY) * 0.5f, Height));
- cam.SetMatrix(tm);
-
- const f32 AngleX = atanf(((fBRX - fTLX) * 0.5f) / Height);
- const f32 AngleY = atanf(((fBRY - fTLY) * 0.5f) / Height);
-
- ICVar* r_drawnearfov = GetConsole()->GetCVar("r_DrawNearFoV");
- assert(r_drawnearfov);
- const f32 drawnearfov_backup = r_drawnearfov->GetFVal();
- const f32 ViewingSize = (float)min(cam.GetViewSurfaceX(), cam.GetViewSurfaceZ());
- if (max(AngleX, AngleY) <= 0)
- {
- return false;
- }
- cam.SetFrustum((int)ViewingSize, (int)ViewingSize, max(0.001f, max(AngleX, AngleY) * 2.f), NearClip, FarClip);
- r_drawnearfov->Set(-1);
- ScreenShotHighRes(pStitchedImage, nRenderFlags, SRenderingPassInfo::CreateTempRenderingInfo(cam, passInfo), SliceCount, fTransitionSize);
- r_drawnearfov->Set(drawnearfov_backup);
-
- return true;
-#else // #if defined(WIN32) || defined(WIN64)
- return false;
-#endif // #if defined(WIN32) || defined(WIN64)
-}
-
-
-bool C3DEngine::ScreenShotPanorama([[maybe_unused]] CStitchedImage* pStitchedImage, [[maybe_unused]] const int nRenderFlags, [[maybe_unused]] const SRenderingPassInfo& passInfo, [[maybe_unused]] uint32 SliceCount, [[maybe_unused]] f32 fTransitionSize)
-{
-#if defined(WIN32) || defined(WIN64) || defined(MAC)
-
- //If the requested format is TGA we want the framebuffer in BGR format; otherwise we want RGB
- const char* szExtension = GetCVars()->e_ScreenShotFileFormat->GetString();
- bool BGRA = (azstricmp(szExtension, "tga") == 0) ? true : false;
-
- // finish frame started by system
- GetRenderer()->EndFrame();
-
- float r_drawnearfov_backup = -1;
- ICVar* r_drawnearfov = GetConsole()->GetCVar("r_DrawNearFoV");
- assert(r_drawnearfov);
-
- r_drawnearfov_backup = r_drawnearfov->GetFVal();
- r_drawnearfov->Set(-1); // means the fov override should be switched off
-
- // The occlusion system does not like being restarted mid-frame like this. Disable it for
- // the screenshot system.
- AZ::s32 statObjBufferRenderTasks = GetCVars()->e_StatObjBufferRenderTasks;
- GetCVars()->e_StatObjBufferRenderTasks = 0;
-
- GetTimer()->EnableTimer(false);
-
- uint32* pImage = new uint32[GetRenderer()->GetWidth() * GetRenderer()->GetHeight()];
-
- for (int iSlice = SliceCount - 1; iSlice >= 0; --iSlice)
- {
- if (iSlice == 0) // the last one should do eye adaption
- {
- GetTimer()->EnableTimer(true);
- }
-
- GetRenderer()->BeginFrame();
-
- Matrix33 rot;
- rot.SetIdentity();
-
- float fAngle = pStitchedImage->GetSliceAngle(iSlice);
-
- rot.SetRotationZ(fAngle);
-
- CCamera cam = passInfo.GetCamera();
-
- Matrix34 tm = cam.GetMatrix();
- tm = tm * rot;
- tm.SetTranslation(passInfo.GetCamera().GetPosition());
- cam.SetMatrix(tm);
-
- cam.SetFrustum(cam.GetViewSurfaceX(), cam.GetViewSurfaceZ(), pStitchedImage->m_fPanoramaShotVertFOV, cam.GetNearPlane(), cam.GetFarPlane(), cam.GetPixelAspectRatio());
-
- SRenderingPassInfo screenShotPassInfo = SRenderingPassInfo::CreateGeneralPassRenderingInfo(cam);
-
- UpdateRenderingCamera("ScreenShotPanorama", screenShotPassInfo);
-
- // render scene
- RenderInternal(nRenderFlags, screenShotPassInfo, "ScreenShotPanorama");
-
- // Make sure we've composited to the final back buffer.
- GetRenderer()->SwitchToNativeResolutionBackbuffer();
-
- GetRenderer()->ReadFrameBufferFast(pImage, GetRenderer()->GetWidth(), GetRenderer()->GetHeight(), BGRA);
-
- GetRenderer()->EndFrame(); // show last frame (from direction)
-
- const bool bFadeBorders = (iSlice + 1) * 2 <= (int)SliceCount;
-
- PrintMessage("PanoramaScreenShot %d/%d FadeBorders:%c (id: %d/%d)", iSlice + 1, SliceCount, bFadeBorders ? 't' : 'f', GetRenderer()->GetFrameID(false), GetRenderer()->GetFrameID(true));
-
- pStitchedImage->RasterizeCylinder(pImage, GetRenderer()->GetWidth(), GetRenderer()->GetHeight(), iSlice + 1, bFadeBorders);
-
- if (GetCVars()->e_ScreenShotQuality < 0) // to debug FadeBorders
- {
- if (iSlice * 2 == SliceCount)
- {
- pStitchedImage->Clear();
- PrintMessage("PanoramaScreenShot clear");
- }
- }
- }
- delete [] pImage;
-
- r_drawnearfov->Set(r_drawnearfov_backup);
- GetCVars()->e_StatObjBufferRenderTasks = statObjBufferRenderTasks;
-
- // re-start frame so system can safely finish it
- GetRenderer()->BeginFrame();
-
- return true;
-#else // #if defined(WIN32) || defined(WIN64)
- return false;
-#endif // #if defined(WIN32) || defined(WIN64)
-}
-
-
-
-void C3DEngine::SetupClearColor()
-{
- FUNCTION_PROFILER_3DENGINE;
-
- bool bCameraInOutdoors = m_pVisAreaManager && !m_pVisAreaManager->m_pCurArea && !(m_pVisAreaManager->m_pCurPortal && m_pVisAreaManager->m_pCurPortal->m_lstConnections.Count() > 1);
- GetRenderer()->SetClearColor(bCameraInOutdoors ? m_vFogColor : Vec3(0, 0, 0));
-}
-
-void C3DEngine::FillDebugFPSInfo(SDebugFPSInfo& info)
-{
- size_t c = 0;
- float average = 0.0f, min = 0.0f, max = 0.0f;
- const float clampFPS = 200.0f;
- for (size_t i = 0, end = arrFPSforSaveLevelStats.size(); i < end; ++i)
- {
- if (arrFPSforSaveLevelStats[i] > 1.0f && arrFPSforSaveLevelStats[i] < clampFPS)
- {
- ++c;
- average += arrFPSforSaveLevelStats[i];
- }
- }
-
- if (c)
- {
- average /= (float)c;
- }
-
- int minc = 0, maxc = 0;
- for (size_t i = 0, end = arrFPSforSaveLevelStats.size(); i < end; ++i)
- {
- if (arrFPSforSaveLevelStats[i] > average && arrFPSforSaveLevelStats[i] < clampFPS)
- {
- ++maxc;
- max += arrFPSforSaveLevelStats[i];
- }
-
- if (arrFPSforSaveLevelStats[i] < average && arrFPSforSaveLevelStats[i] < clampFPS)
- {
- ++minc;
- min += arrFPSforSaveLevelStats[i];
- }
- }
-
- if (minc == 0)
- {
- minc = 1;
- }
- if (maxc == 0)
- {
- maxc = 1;
- }
-
- info.fAverageFPS = average;
- info.fMinFPS = min / (float)minc;
- info.fMaxFPS = max / (float)maxc;
-}
diff --git a/Code/CryEngine/Cry3DEngine/3DEngine_Jobs.cpp b/Code/CryEngine/Cry3DEngine/3DEngine_Jobs.cpp
deleted file mode 100644
index a6beb77dda..0000000000
--- a/Code/CryEngine/Cry3DEngine/3DEngine_Jobs.cpp
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Implementation of I3DEngine interface methods
-
-
-#include "Cry3DEngine_precompiled.h"
-#include
-
-#include "3dEngine.h"
-
-#include
-
-#include "VisAreas.h"
-#include "ObjMan.h"
-#include "Ocean.h"
-
-#include "DecalManager.h"
-#include "IndexedMesh.h"
-#include "AABBSV.h"
-
-#include "MatMan.h"
-
-#include "CullBuffer.h"
-#include "CGF/CGFLoader.h"
-#include "CGF/ReadOnlyChunkFile.h"
-
-#include "CloudRenderNode.h"
-#include "CloudsManager.h"
-#include "SkyLightManager.h"
-#include "FogVolumeRenderNode.h"
-#include "DecalRenderNode.h"
-#include "TimeOfDay.h"
-#include "LightEntity.h"
-#include "FogVolumeRenderNode.h"
-#include "ObjectsTree.h"
-#include "WaterVolumeRenderNode.h"
-#include "DistanceCloudRenderNode.h"
-#include "VolumeObjectRenderNode.h"
-#include "RenderMeshMerger.h"
-#include "DeferredCollisionEvent.h"
-#include "OpticsManager.h"
-#include "ClipVolumeManager.h"
-#include "Environment/OceanEnvironmentBus.h"
-
-
-#if !defined(EXCLUDE_DOCUMENTATION_PURPOSE)
-#include "PrismRenderNode.h"
-#endif // EXCLUDE_DOCUMENTATION_PURPOSE
-
-//Platform specific includes
-#if defined(WIN32) || defined(WIN64)
-#include "CryWindows.h"
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-void C3DEngine::CheckAddLight(CDLight* pLight, const SRenderingPassInfo& passInfo)
-{
- if (pLight->m_Id < 0)
- {
- GetRenderer()->EF_ADDDlight(pLight, passInfo);
- assert(pLight->m_Id >= 0);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-float C3DEngine::GetLightAmount(CDLight* pLight, const AABB& objBox)
-{
- // find amount of light
- float fDist = sqrt_tpl(Distance::Point_AABBSq(pLight->m_Origin, objBox));
- float fLightAttenuation = (pLight->m_Flags & DLF_DIRECTIONAL) ? 1.f : 1.f - (fDist) / (pLight->m_fRadius);
- if (fLightAttenuation < 0)
- {
- fLightAttenuation = 0;
- }
-
- float fLightAmount =
- (pLight->m_Color.r + pLight->m_Color.g + pLight->m_Color.b) * 0.233f +
- (pLight->GetSpecularMult()) * 0.1f;
-
- return fLightAmount * fLightAttenuation;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-float C3DEngine::GetWaterLevel()
-{
- if (OceanToggle::IsActive())
- {
- return OceanRequest::GetOceanLevel();
- }
- return m_pOcean ? m_pOcean->GetWaterLevel() : WATER_LEVEL_UNKNOWN;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool C3DEngine::IsTessellationAllowed(const CRenderObject* pObj, const SRenderingPassInfo& passInfo, bool bIgnoreShadowPass) const
-{
-#ifdef MESH_TESSELLATION_ENGINE
- assert(pObj && GetCVars());
- bool rendererTessellation;
- GetRenderer()->EF_Query(EFQ_MeshTessellation, rendererTessellation);
- if (pObj->m_fDistance < GetCVars()->e_TessellationMaxDistance
- && GetCVars()->e_Tessellation
- && rendererTessellation
- && !(pObj->m_ObjFlags & FOB_DISSOLVE)) // dissolve is not working with tessellation for now
- {
- bool bAllowTessellation = true;
-
- // Check if rendering into shadow map and enable tessellation only if allowed
- if (!bIgnoreShadowPass && passInfo.IsShadowPass())
- {
- if (IsTessellationAllowedForShadowMap(passInfo))
- {
- // NOTE: This might be useful for game projects
- // Use tessellation only for objects visible in main view
- // Shadows will switch to non-tessellated when caster gets out of view
- IRenderNode* pRN = (IRenderNode*)pObj->m_pRenderNode;
- if (pRN)
- {
- bAllowTessellation = (pRN->IsRenderNode() && (pRN->GetDrawFrame() > passInfo.GetFrameID() - 10));
- }
- }
- else
- {
- bAllowTessellation = false;
- }
- }
-
- return bAllowTessellation;
- }
-#endif //#ifdef MESH_TESSELLATION_ENGINE
-
- return false;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void C3DEngine::CreateRNTmpData(CRNTmpData** ppInfo, IRenderNode* pRNode, const SRenderingPassInfo& passInfo)
-{
- // m_checkCreateRNTmpData lock scope
- {
- AUTO_LOCK(m_checkCreateRNTmpData);
- FUNCTION_PROFILER_3DENGINE;
-
- if (*ppInfo)
- {
- return; // check if another thread already intialized ppInfo
- }
- // make sure element is allocated
- if (m_LTPRootFree.pNext == &m_LTPRootFree)
- {
- CRNTmpData* pNew = new CRNTmpData; //m_RNTmpDataPools.GetNewElement();
- pNew->Link(&m_LTPRootFree);
- }
-
- // move element from m_LTPRootFree to m_LTPRootUsed
- CRNTmpData* pElem = m_LTPRootFree.pNext;
- pElem->Unlink();
- pElem->Link(&m_LTPRootUsed);
-
- pElem->pOwnerRef = ppInfo;
- pElem->nFrameInfoId = GetFrameInfoId(ppInfo, passInfo.GetMainFrameID());
-
- assert(!pElem->pOwnerRef || !(*pElem->pOwnerRef));
- memset(&pElem->userData, 0, sizeof(pElem->userData));
-
-
- // Add a memory barrier that the write to nFrameInfoID is visible
- // before *ppInfo is written, else we have a race condtition in
- // CheckCreateRNTmpData as we don't use a lock there
- // for performance reasons
- MemoryBarrier();
-
- *ppInfo = pElem;
- }
-
- if (pRNode)
- {
- pRNode->OnRenderNodeBecomeVisible(passInfo); // Internally uses the just assigned RNTmpData pointer i.e IRenderNode::m_pRNTmpData ...
-
- if (IVisArea* pVisArea = pRNode->GetEntityVisArea())
- {
- pRNode->m_pRNTmpData->userData.m_pClipVolume = pVisArea;
- }
- else if (GetClipVolumeManager()->IsClipVolumeRequired(pRNode))
- {
- GetClipVolumeManager()->UpdateEntityClipVolume(pRNode->GetPos(), pRNode);
- }
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void C3DEngine::RenderRenderNode_ShadowPass(IShadowCaster* pShadowCaster, const SRenderingPassInfo& passInfo, [[maybe_unused]] AZ::LegacyJobExecutor* pJobExecutor)
-{
- assert(passInfo.IsShadowPass());
-
- SRendItemSorter rendItemSorter = SRendItemSorter::CreateShadowPassRendItemSorter(passInfo);
-
- if (!pShadowCaster->IsRenderNode())
- {
- const Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- const AABB objBox = pShadowCaster->GetBBoxVirtual();
-
- SRendParams rParams;
- rParams.fDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, objBox)) * passInfo.GetZoomFactor();
- rParams.lodValue = pShadowCaster->ComputeLod(0, passInfo);
- rParams.rendItemSorter = rendItemSorter.GetValue();
-
- pShadowCaster->Render(rParams, passInfo);
- return;
- }
-
- IRenderNode* pRenderNode = static_cast(pShadowCaster);
- if ((pRenderNode->m_dwRndFlags & ERF_HIDDEN) != 0)
- {
- return;
- }
-
- int nStaticObjectLod = -1;
- if (passInfo.GetShadowMapType() == SRenderingPassInfo::SHADOW_MAP_CACHED)
- {
- nStaticObjectLod = GetCVars()->e_ShadowsCacheObjectLod;
- }
- else if (passInfo.GetShadowMapType() == SRenderingPassInfo::SHADOW_MAP_CACHED_MGPU_COPY)
- {
- nStaticObjectLod = pRenderNode->m_cStaticShadowLod;
- }
-
- Get3DEngine()->CheckCreateRNTmpData(&pRenderNode->m_pRNTmpData, pRenderNode, passInfo);
-
- int wantedLod = pRenderNode->m_pRNTmpData->userData.nWantedLod;
-
- if (GetCVars()->e_LodForceUpdate && m_pObjManager)
- {
- const Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- const AABB objBox = pRenderNode->GetBBoxVirtual();
- float fDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, objBox)) * passInfo.GetZoomFactor();
- wantedLod = m_pObjManager->GetObjectLOD(pRenderNode, fDistance);
- }
-
- if (pRenderNode->GetShadowLodBias() != IRenderNode::SHADOW_LODBIAS_DISABLE)
- {
- if (passInfo.IsShadowPass() && (pRenderNode->GetDrawFrame(0) < (passInfo.GetFrameID() - 10)))
- {
- wantedLod += GetCVars()->e_ShadowsLodBiasInvis;
- }
- wantedLod += GetCVars()->e_ShadowsLodBiasFixed;
- wantedLod += pRenderNode->GetShadowLodBias();
- }
-
- if (nStaticObjectLod >= 0)
- {
- wantedLod = nStaticObjectLod;
- }
-
- {
- const Vec3 vCamPos = passInfo.GetCamera().GetPosition();
- const AABB objBox = pRenderNode->GetBBoxVirtual();
- SRendParams rParams;
- rParams.fDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, objBox)) * passInfo.GetZoomFactor();
- rParams.lodValue = pRenderNode->ComputeLod(wantedLod, passInfo);
- rParams.rendItemSorter = rendItemSorter.GetValue();
- rParams.pRenderNode = pRenderNode;
- pRenderNode->Render(rParams, passInfo);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-ITimeOfDay* C3DEngine::GetTimeOfDay()
-{
- CTimeOfDay* tod = m_pTimeOfDay;
-
- if (!tod)
- {
- tod = new CTimeOfDay;
- m_pTimeOfDay = tod;
- }
-
- return tod;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void C3DEngine::TraceFogVolumes(const Vec3& vPos, const AABB& objBBox, SFogVolumeData& fogVolData, const SRenderingPassInfo& passInfo, bool fogVolumeShadingQuality)
-{
- CFogVolumeRenderNode::TraceFogVolumes(vPos, objBBox, fogVolData, passInfo, fogVolumeShadingQuality);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-void C3DEngine::AsyncOctreeUpdate(IRenderNode* pEnt, int nSID, [[maybe_unused]] int nSIDConsideredSafe, uint32 nFrameID, bool bUnRegisterOnly)
-{
- FUNCTION_PROFILER_3DENGINE;
-
-#ifdef _DEBUG // crash test basically
- const char* szClass = pEnt->GetEntityClassName();
- const char* szName = pEnt->GetName();
- if (!szName[0] && !szClass[0])
- {
- Warning("I3DEngine::RegisterEntity: Entity undefined"); // do not register undefined objects
- }
- // if(strstr(szName,"Dude"))
- // int y=0;
-#endif
-
- IF (bUnRegisterOnly, 0)
- {
- UnRegisterEntityImpl(pEnt);
- return;
- }
- ;
-
- AABB aabb;
- pEnt->FillBBox(aabb);
- float fObjRadiusSqr = aabb.GetRadiusSqr();
- EERType eERType = pEnt->GetRenderNodeType();
-
-#ifdef SUPP_HMAP_OCCL
- if (pEnt->m_pRNTmpData)
- {
- pEnt->m_pRNTmpData->userData.m_OcclState.vLastVisPoint.Set(0, 0, 0);
- }
-#endif
-
-
- const unsigned int dwRndFlags = pEnt->GetRndFlags();
-
- if (!(dwRndFlags & ERF_RENDER_ALWAYS) && !(dwRndFlags & ERF_CASTSHADOWMAPS))
- {
- if (GetCVars()->e_ObjFastRegister && pEnt->m_pOcNode && ((COctreeNode*)pEnt->m_pOcNode)->IsRightNode(aabb, fObjRadiusSqr, pEnt->m_fWSMaxViewDist))
- { // same octree node
- Vec3 vEntCenter = GetEntityRegisterPoint(pEnt);
-
- IVisArea* pVisArea = pEnt->GetEntityVisArea();
- if (pVisArea && pVisArea->IsPointInsideVisArea(vEntCenter))
- {
- return; // same visarea
- }
- IVisArea* pVisAreaFromPos = (!m_pVisAreaManager || dwRndFlags & ERF_OUTDOORONLY) ? NULL : GetVisAreaManager()->GetVisAreaFromPos(vEntCenter);
- if (pVisAreaFromPos == pVisArea)
- {
- // NOTE: can only get here when pVisArea==NULL due to 'same visarea' check above. So check for changed clip volume
- if (GetClipVolumeManager()->IsClipVolumeRequired(pEnt))
- {
- GetClipVolumeManager()->UpdateEntityClipVolume(vEntCenter, pEnt);
- }
-
- return; // same visarea or same outdoor
- }
- }
- }
-
- if (pEnt->m_pOcNode)
- {
- UnRegisterEntityImpl(pEnt);
- }
- else if (GetCVars()->e_StreamCgf && (eERType == eERType_RenderComponent || eERType == eERType_DynamicMeshRenderComponent || eERType == eERType_GeomCache))
- { // Temporary solution: Force streaming priority update for objects that was not registered before
- // and was not visible before since usual prediction system was not able to detect them
-
- if ((uint32)pEnt->GetDrawFrame(0) < nFrameID - 16)
- {
- // defer the render node streaming priority update still we have a correct 3D Engine camera
- int nElementID = m_deferredRenderComponentStreamingPriorityUpdates.Find(pEnt);
- if (nElementID == -1) // only add elements once
- {
- m_deferredRenderComponentStreamingPriorityUpdates.push_back(pEnt);
- }
- }
- }
-
- pEnt->m_fWSMaxViewDist = pEnt->GetMaxViewDist();
-
- bool useVisAreas = true;
-
- if (eERType != eERType_Light)
- {
- if (fObjRadiusSqr > sqr(MAX_VALID_OBJECT_VOLUME) || !_finite(fObjRadiusSqr))
- {
- Warning("I3DEngine::RegisterEntity: Object has invalid bbox: name: %s, class name: %s, GetRadius() = %.2f",
- pEnt->GetName(), pEnt->GetEntityClassName(), fObjRadiusSqr);
- return; // skip invalid objects - usually only objects with invalid very big scale will reach this point
- }
-
- if (dwRndFlags & ERF_RENDER_ALWAYS)
- {
- if (m_lstAlwaysVisible.Find(pEnt) < 0)
- {
- m_lstAlwaysVisible.Add(pEnt);
- }
-
- if (dwRndFlags & ERF_HUD)
- {
- return;
- }
- }
-
- if (pEnt->m_dwRndFlags & ERF_OUTDOORONLY)
- {
- useVisAreas = false;
- }
- }
- else
- {
- CLightEntity* pLight = (CLightEntity*)pEnt;
- uint32 lightFlag = pLight->m_light.m_Flags;
- if ((lightFlag & DLF_ATTACH_TO_SUN) || //If the light is attached to the sun, we need to make sure it renders even the entity is not in view port
- (lightFlag & (DLF_IGNORES_VISAREAS | DLF_DEFERRED_LIGHT | DLF_THIS_AREA_ONLY)) == (DLF_IGNORES_VISAREAS | DLF_DEFERRED_LIGHT)
- )
- {
- if (m_lstAlwaysVisible.Find(pEnt) < 0)
- {
- m_lstAlwaysVisible.Add(pEnt);
- }
- }
-
- if (lightFlag & DLF_IGNORES_VISAREAS)
- {
- useVisAreas = false;
- }
- }
-
- //////////////////////////////////////////////////////////////////////////
- // Check for occlusion proxy.
- {
- CStatObj* pStatObj = (CStatObj*)pEnt->GetEntityStatObj();
- if (pStatObj)
- {
- if (pStatObj->m_bHaveOcclusionProxy)
- {
- pEnt->m_dwRndFlags |= ERF_GOOD_OCCLUDER;
- pEnt->m_nInternalFlags |= IRenderNode::HAS_OCCLUSION_PROXY;
- }
- }
- }
- //////////////////////////////////////////////////////////////////////////
- if (!useVisAreas || !(m_pVisAreaManager && m_pVisAreaManager->SetEntityArea(pEnt, aabb, fObjRadiusSqr)))
- {
- if (m_pObjectsTree == nullptr)
- {
- AZ::Aabb terrainAabb = AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
- AzFramework::Terrain::TerrainDataRequestBus::BroadcastResult(terrainAabb, &AzFramework::Terrain::TerrainDataRequests::GetTerrainAabb);
- m_pObjectsTree = COctreeNode::Create(nSID, AABB(Vec3(0, 0, 0), Vec3(terrainAabb.GetXExtent(), terrainAabb.GetYExtent(), terrainAabb.GetZExtent())), NULL);
- }
-
- m_pObjectsTree->InsertObject(pEnt, aabb, fObjRadiusSqr, aabb.GetCenter());
- }
-
- // update clip volume: use vis area if we have one, otherwise check if we're in the same volume as before. check other volumes as last resort only
- if (pEnt->m_pRNTmpData)
- {
- Vec3 vEntCenter = GetEntityRegisterPoint(pEnt);
- CRNTmpData::SRNUserData& userData = pEnt->m_pRNTmpData->userData;
-
- if (IVisArea* pVisArea = pEnt->GetEntityVisArea())
- {
- userData.m_pClipVolume = pVisArea;
- }
- else if (GetClipVolumeManager()->IsClipVolumeRequired(pEnt))
- {
- GetClipVolumeManager()->UpdateEntityClipVolume(vEntCenter, pEnt);
- }
- }
-
- // register decals, to clean up longer not renderes decals and their render meshes
- if (eERType == eERType_Decal)
- {
- m_decalRenderNodes.push_back((IDecalRenderNode*)pEnt);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-bool C3DEngine::UnRegisterEntityImpl(IRenderNode* pEnt)
-{
- // make sure we don't try to update the streaming priority if an object
- // was added and removed in the same frame
- int nElementID = m_deferredRenderComponentStreamingPriorityUpdates.Find(pEnt);
- if (nElementID != -1)
- {
- m_deferredRenderComponentStreamingPriorityUpdates.DeleteFastUnsorted(nElementID);
- }
-
- FUNCTION_PROFILER_3DENGINE;
-
-#ifdef _DEBUG // crash test basically
- const char* szClass = pEnt->GetEntityClassName();
- const char* szName = pEnt->GetName();
- if (!szName[0] && !szClass[0])
- {
- Warning("C3DEngine::RegisterEntity: Entity undefined");
- }
-#endif
-
- EERType eRenderNodeType = pEnt->GetRenderNodeType();
-
- bool bFound = false;
-
- if (pEnt->m_pOcNode)
- {
- bFound = ((COctreeNode*)pEnt->m_pOcNode)->DeleteObject(pEnt);
- }
-
- if (pEnt->m_dwRndFlags & ERF_RENDER_ALWAYS || (eRenderNodeType == eERType_Light) || (eRenderNodeType == eERType_FogVolume))
- {
- m_lstAlwaysVisible.Delete(pEnt);
- }
-
- if (eRenderNodeType == eERType_Decal)
- {
- std::vector::iterator it = std::find(m_decalRenderNodes.begin(), m_decalRenderNodes.end(), (IDecalRenderNode*)pEnt);
- if (it != m_decalRenderNodes.end())
- {
- m_decalRenderNodes.erase(it);
- }
- }
-
- if (CClipVolumeManager* pClipVolumeManager = GetClipVolumeManager())
- {
- pClipVolumeManager->UnregisterRenderNode(pEnt);
- }
-
- return bFound;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-Vec3 C3DEngine::GetEntityRegisterPoint(IRenderNode* pEnt)
-{
- AABB aabb;
- pEnt->FillBBox(aabb);
-
- Vec3 vPoint;
-
- if (pEnt->m_dwRndFlags & ERF_REGISTER_BY_POSITION)
- {
- vPoint = pEnt->GetPos();
-
- if (pEnt->GetRenderNodeType() != eERType_Light)
- {
- // check for valid position
- if (aabb.GetDistanceSqr(vPoint) > sqr(128.f))
- {
- Warning("I3DEngine::RegisterEntity: invalid entity position: Name: %s, Class: %s, Pos=(%.1f,%.1f,%.1f), BoxMin=(%.1f,%.1f,%.1f), BoxMax=(%.1f,%.1f,%.1f)",
- pEnt->GetName(), pEnt->GetEntityClassName(),
- pEnt->GetPos().x, pEnt->GetPos().y, pEnt->GetPos().z,
- pEnt->GetBBox().min.x, pEnt->GetBBox().min.y, pEnt->GetBBox().min.z,
- pEnt->GetBBox().max.x, pEnt->GetBBox().max.y, pEnt->GetBBox().max.z
- );
- }
- // clamp by bbox
- vPoint.CheckMin(aabb.max);
- vPoint.CheckMax(aabb.min + Vec3(0, 0, .5f));
- }
- }
- else
- {
- vPoint = aabb.GetCenter();
- }
-
- return vPoint;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-Vec3 C3DEngine::GetSunDirNormalized() const
-{
- return m_vSunDirNormalized;
-}
-
-
diff --git a/Code/CryEngine/Cry3DEngine/3dEngine.cpp b/Code/CryEngine/Cry3DEngine/3dEngine.cpp
deleted file mode 100644
index 1050916423..0000000000
--- a/Code/CryEngine/Cry3DEngine/3dEngine.cpp
+++ /dev/null
@@ -1,5536 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-// Description : Implementation of I3DEngine interface methods
-
-
-#include "Cry3DEngine_precompiled.h"
-
-#include "3dEngine.h"
-
-#include
-#include
-#include
-#include "VisAreas.h"
-#include "ObjMan.h"
-#include "Ocean.h"
-#include
-#include "DecalManager.h"
-#include "IndexedMesh.h"
-
-#include "MatMan.h"
-
-#include "CullBuffer.h"
-#include "CGF/CGFLoader.h"
-#include "CGF/ChunkFileWriters.h"
-#include "CGF/ReadOnlyChunkFile.h"
-
-#include "CloudRenderNode.h"
-#include "CloudsManager.h"
-#include "SkyLightManager.h"
-#include "FogVolumeRenderNode.h"
-#include "DecalRenderNode.h"
-#include "TimeOfDay.h"
-#include "LightEntity.h"
-#include "FogVolumeRenderNode.h"
-#include "ObjectsTree.h"
-#include "WaterVolumeRenderNode.h"
-#include "DistanceCloudRenderNode.h"
-#include "VolumeObjectRenderNode.h"
-#include "RenderMeshMerger.h"
-#include "DeferredCollisionEvent.h"
-#include "OpticsManager.h"
-#include "GeomCacheRenderNode.h"
-#include "GeomCacheManager.h"
-#include "ClipVolumeManager.h"
-#include
-#include "PostEffectGroup.h"
-#include "MainThreadRenderRequestBus.h"
-#include "ObjMan.h"
-#include "Environment/OceanEnvironmentBus.h"
-#include
-#include
-
-#if !defined(EXCLUDE_DOCUMENTATION_PURPOSE)
-#include "PrismRenderNode.h"
-#endif // EXCLUDE_DOCUMENTATION_PURPOSE
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-// required for LARGE_INTEGER used by QueryPerformanceCounter
-#ifdef WIN32
-#include
-#endif
-
-threadID Cry3DEngineBase::m_nMainThreadId = 0;
-bool Cry3DEngineBase::m_bRenderTypeEnabled[eERType_TypesNum];
-ISystem* Cry3DEngineBase::m_pSystem = 0;
-IRenderer* Cry3DEngineBase::m_pRenderer = 0;
-ITimer* Cry3DEngineBase::m_pTimer = 0;
-ILog* Cry3DEngineBase::m_pLog = 0;
-
-COcean* Cry3DEngineBase::m_pOcean = nullptr;
-CObjManager* Cry3DEngineBase::m_pObjManager = 0;
-IConsole* Cry3DEngineBase::m_pConsole = 0;
-C3DEngine* Cry3DEngineBase::m_p3DEngine = 0;
-CVars* Cry3DEngineBase::m_pCVars = 0;
-AZ::IO::IArchive* Cry3DEngineBase::m_pCryPak = nullptr;
-IOpticsManager* Cry3DEngineBase::m_pOpticsManager = 0;
-CDecalManager* Cry3DEngineBase::m_pDecalManager = 0;
-CSkyLightManager* Cry3DEngineBase::m_pSkyLightManager = 0;
-CCloudsManager* Cry3DEngineBase::m_pCloudsManager = 0;
-CVisAreaManager* Cry3DEngineBase::m_pVisAreaManager = 0;
-CClipVolumeManager* Cry3DEngineBase::m_pClipVolumeManager = 0;
-CRenderMeshMerger* Cry3DEngineBase::m_pRenderMeshMerger = 0;
-CMatMan* Cry3DEngineBase::m_pMatMan = 0;
-IStreamedObjectListener* Cry3DEngineBase::m_pStreamListener = 0;
-#if defined(USE_GEOM_CACHES)
-CGeomCacheManager* Cry3DEngineBase::m_pGeomCacheManager = 0;
-#endif
-
-bool Cry3DEngineBase::m_bLevelLoadingInProgress = false;
-bool Cry3DEngineBase::m_bIsInRenderScene = false;
-
-int Cry3DEngineBase::m_CpuFlags = 0;
-#if !defined(CONSOLE)
-bool Cry3DEngineBase::m_bEditor = false;
-#endif //!defined(CONSOLE)
-ESystemConfigSpec Cry3DEngineBase::m_LightConfigSpec = CONFIG_VERYHIGH_SPEC;
-int Cry3DEngineBase::m_arrInstancesCounter[eERType_TypesNum];
-
-#define LAST_POTENTIALLY_VISIBLE_TIME 2
-
-namespace
-{
- class CLoadLogListener
- : public ILoaderCGFListener
- {
- public:
- virtual ~CLoadLogListener(){}
- virtual void Warning(const char* format) {Cry3DEngineBase::Warning("%s", format); }
- virtual void Error(const char* format) {Cry3DEngineBase::Error("%s", format); }
- virtual bool IsValidationEnabled() { return Cry3DEngineBase::GetCVars()->e_StatObjValidate != 0; }
- };
-}
-
-namespace OceanGlobals
-{
- float g_oceanLevel = 0.0f;
- float g_oceanStep = 1.0f;
- AZStd::recursive_mutex g_oceanParamsMutex;
-}
-
-//////////////////////////////////////////////////////////////////////
-C3DEngine::C3DEngine(ISystem* pSystem)
-{
- //#if defined(_DEBUG) && defined(WIN32)
- // _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
- //#endif
-
- // Level info
- m_fSunSpecMult = 1.f;
- m_bAreaActivationInUse = false;
-
- Cry3DEngineBase::m_nMainThreadId = CryGetCurrentThreadId();
- Cry3DEngineBase::m_pSystem = pSystem;
- Cry3DEngineBase::m_pRenderer = gEnv->pRenderer;
- Cry3DEngineBase::m_pTimer = gEnv->pTimer;
- Cry3DEngineBase::m_pLog = gEnv->pLog;
- Cry3DEngineBase::m_pConsole = gEnv->pConsole;
- Cry3DEngineBase::m_p3DEngine = this;
- Cry3DEngineBase::m_pCryPak = gEnv->pCryPak;
- Cry3DEngineBase::m_pCVars = 0;
- Cry3DEngineBase::m_pRenderMeshMerger = new CRenderMeshMerger;
- Cry3DEngineBase::m_pMatMan = new CMatMan;
- Cry3DEngineBase::m_pStreamListener = NULL;
- Cry3DEngineBase::m_CpuFlags = pSystem->GetCPUFlags();
-
- memset(Cry3DEngineBase::m_arrInstancesCounter, 0, sizeof(Cry3DEngineBase::m_arrInstancesCounter));
-
-#if !defined(CONSOLE)
- m_bEditor = gEnv->IsEditor();
-#endif
- m_pObjectsTree = nullptr;
- m_pCVars = new CVars();
- Cry3DEngineBase::m_pCVars = m_pCVars;
-
- m_pTimeOfDay = NULL;
-
- m_postEffectGroups = std::make_unique();
- m_postEffectBaseGroup = m_postEffectGroups->GetGroup("Base");
- if (IPostEffectGroup* pPostEffectsDefaultGroup = m_postEffectGroups->GetGroup(m_defaultPostEffectGroup))
- {
- pPostEffectsDefaultGroup->SetEnable(true);
- }
-
- m_szLevelFolder[0] = 0;
-
- m_pSun = 0;
- m_nFlags = 0;
- m_pSkyMat = 0;
- m_pSkyLowSpecMat = 0;
- m_pTerrainWaterMat = 0;
- m_nWaterBottomTexId = 0;
- m_vSunDir = Vec3(5.f, 5.f, DISTANCE_TO_THE_SUN);
- m_vSunDirRealtime = Vec3(5.f, 5.f, DISTANCE_TO_THE_SUN).GetNormalized();
-
- m_nBlackTexID = 0;
-
- // create components
- m_pObjManager = CryAlignedNew();
-
- m_pDecalManager = 0;//new CDecalManager (m_pSystem, this);
- m_pCloudsManager = new CCloudsManager;
- m_pOpticsManager = 0;
- m_pVisAreaManager = 0;
- m_pClipVolumeManager = new CClipVolumeManager();
- m_pSkyLightManager = CryAlignedNew();
-
- // create REs
- m_pRESky = 0;
- m_pREHDRSky = 0;
-
- m_pPhysMaterialEnumerator = 0;
-
- m_fMaxViewDistHighSpec = 8000;
- m_fMaxViewDistLowSpec = 1000;
-
- m_fSkyBoxAngle = 0;
- m_fSkyBoxStretching = 0;
-
-
- m_physicsAreaUpdatesHandler = AZStd::make_unique(m_PhysicsAreaUpdates);
-
- m_bOcean = true;
- m_nOceanRenderFlags = 0;
-
- m_bSunShadows = true;
- m_nSunAdditionalCascades = 0;
- m_CachedShadowsBounds.Reset();
- m_nCachedShadowsUpdateStrategy = ShadowMapFrustum::ShadowCacheData::eFullUpdate;
-
- m_fSunClipPlaneRange = 256.0f;
- m_fSunClipPlaneRangeShift = 0.0f;
-
- m_nRealLightsNum = m_nDeferredLightsNum = 0;
-
- m_pCoverageBuffer = CryAlignedNew();
-
- m_fLightsHDRDynamicPowerFactor = 0.0f;
-
- m_vHDRFilmCurveParams = Vec4(1.0f, 1.0f, 1.0f, 1.0f);
- m_vHDREyeAdaptation = Vec3(0.05f, 0.8f, 0.9f);
- m_fHDRBloomAmount = 0.0f;
- m_vColorBalance = Vec3(1.0f, 1.0f, 1.0f);
- m_fHDRSaturation = 1.0f;
-
- m_vSkyHightlightPos.Set(0, 0, 0);
- m_vSkyHightlightCol.Set(0, 0, 0);
- m_fSkyHighlightSize = 0;
-
- m_volFogGlobalDensity = 0.02f;
- m_volFogGlobalDensityMultiplierLDR = 1.0f;
- m_volFogFinalDensityClamp = 1.0f;
-
- m_idMatLeaves = -1;
-
- m_oceanFogColor = 0.2f * Vec3(29.0f, 102.0f, 141.0f) / 255.0f;
- m_oceanFogColorShallow = Vec3(0, 0, 0); //0.5f * Vec3( 206.0f, 249.0f, 253.0f ) / 255.0f;
- m_oceanFogDensity = 0; //0.2f;
-
- m_oceanCausticsDistanceAtten = 100.0f;
-
- m_oceanCausticDepth = 8.0f;
- m_oceanCausticIntensity = 1.0f;
-
- m_oceanWindDirection = 1;
- m_oceanWindSpeed = 4.0f;
- m_oceanWavesSpeed = 1.0f;
- m_oceanWavesAmount = 1.5f;
- m_oceanWavesSize = 0.75f;
-
- m_fParticlesAmbientMultiplier = m_fParticlesLightMultiplier = 1.f;
- m_fRefreshSceneDataCVarsSumm = -1;
- m_nRenderTypeEnableCVarSum = -1;
-
- if (!m_LTPRootFree.pNext)
- {
- m_LTPRootFree.pNext = &m_LTPRootFree;
- m_LTPRootFree.pPrev = &m_LTPRootFree;
- }
-
- if (!m_LTPRootUsed.pNext)
- {
- m_LTPRootUsed.pNext = &m_LTPRootUsed;
- m_LTPRootUsed.pPrev = &m_LTPRootUsed;
- }
- m_bResetRNTmpDataPool = false;
-
- m_fSunDirUpdateTime = 0;
- m_vSunDirNormalized.zero();
-
- m_volFogRamp = Vec3(0, 100.0f, 0);
- m_volFogShadowRange = Vec3(0.1f, 0, 0);
- m_volFogShadowDarkening = Vec3(0.25f, 1, 1);
- m_volFogShadowEnable = Vec3(0, 0, 0);
- m_volFog2CtrlParams = Vec3(64.0f, 0.0f, 1.0f);
- m_volFog2ScatteringParams = Vec3(1.0f, 0.3f, 0.6f);
- m_volFog2Ramp = Vec3(0.0f, 0.0f, 0.0f);
- m_volFog2Color = Vec3(1.0f, 1.0f, 1.0f);
- m_volFog2GlobalDensity = Vec3(0.1f, 1.0f, 0.4f);
- m_volFog2HeightDensity = Vec3(0.0f, 1.0f, 0.1f);
- m_volFog2HeightDensity2 = Vec3(4000.0f, 0.0001f, 0.95f);
- m_volFog2Color1 = Vec3(1.0f, 1.0f, 1.0f);
- m_volFog2Color2 = Vec3(1.0f, 1.0f, 1.0f);
- m_nightSkyHorizonCol = Vec3(0, 0, 0);
- m_nightSkyZenithCol = Vec3(0, 0, 0);
- m_nightSkyZenithColShift = 0;
- m_nightSkyStarIntensity = 0;
- m_moonDirection = Vec3(0, 0, 0);
- m_nightMoonCol = Vec3(0, 0, 0);
- m_nightMoonSize = 0;
- m_nightMoonInnerCoronaCol = Vec3(0, 0, 0);
- m_nightMoonInnerCoronaScale = 1.0f;
- m_nightMoonOuterCoronaCol = Vec3(0, 0, 0);
- m_nightMoonOuterCoronaScale = 1.0f;
- m_moonRotationLatitude = 0;
- m_moonRotationLongitude = 0;
- m_skyboxMultiplier = 1.0f;
- m_dayNightIndicator = 1.0f;
- m_fogColor2 = Vec3(0, 0, 0);
- m_fogColorRadial = Vec3(0, 0, 0);
- m_volFogHeightDensity = Vec3(0, 1, 0);
- m_volFogHeightDensity2 = Vec3(4000.0f, 0, 0);
- m_volFogGradientCtrl = Vec3(1, 1, 1);
-
- m_vFogColor = Vec3(1.0f, 1.0f, 1.0f);
- m_vAmbGroundCol = Vec3(0.0f, 0.0f, 0.0f);
-
- m_dawnStart = 350.0f / 60.0f;
- m_dawnEnd = 360.0f / 60.0f;
- m_duskStart = 12.0f + 360.0f / 60.0f;
- m_duskEnd = 12.0f + 370.0f / 60.0f;
-
- m_fCloudShadingSunLightMultiplier = 0;
- m_fCloudShadingSkyLightMultiplier = 0;
- m_vCloudShadingCustomSunColor = Vec3(0, 0, 0);
- m_vCloudShadingCustomSkyColor = Vec3(0, 0, 0);
-
- m_vPrevMainFrameCamPos.Set(-1000000.f, -1000000.f, -1000000.f);
- m_fAverageCameraSpeed = 0;
- m_vAverageCameraMoveDir = Vec3(0);
- m_bContentPrecacheRequested = false;
- m_bTerrainTextureStreamingInProgress = false;
- m_bLayersActivated = false;
- m_eShadowMode = ESM_NORMAL;
-
- ClearDebugFPSInfo();
-
- m_fMaxViewDistScale = 1.f;
-
- m_ptexIconLowMemoryUsage = NULL;
- m_ptexIconAverageMemoryUsage = NULL;
- m_ptexIconHighMemoryUsage = NULL;
- m_ptexIconEditorConnectedToConsole = NULL;
- m_pScreenshotCallback = 0;
- m_bInShutDown = false;
- m_bInUnload = false;
- m_bInLoad = false;
-
- m_nCloudShadowTexId = 0;
-
- m_nNightMoonTexId = 0;
-
- m_pDeferredPhysicsEventManager = new CDeferredPhysicsEventManager();
-
-#if defined(USE_GEOM_CACHES)
- m_pGeomCacheManager = new CGeomCacheManager();
-#endif
-
- m_LightVolumesMgr.Init();
-
- m_pBreakableBrushHeap = NULL;
-
- m_nWindSamplePositions = 0;
- m_pWindSamplePositions = NULL;
-
- m_fZoomFactor = 0.0f;
-
- m_fAmbMaxHeight = 0.0f;
- m_fAmbMinHeight = 0.0f;
-
- m_pLightQuality = NULL;
- m_fSaturation = 0.0f;
-
- m_fGsmRange = 0.0f;
- m_fGsmRangeStep = 0.0f;
- m_fShadowsConstBias = 0.0f;
- m_fShadowsSlopeBias = 0.0f;
- m_nCustomShadowFrustumCount = 0;
- m_bHeightMapAoEnabled = false;
-
- m_bendingPoolIdx = 0;
- m_levelLoaded = false;
-}
-
-//////////////////////////////////////////////////////////////////////
-C3DEngine::~C3DEngine()
-{
- m_bInShutDown = true;
- m_bInUnload = true;
- m_bInLoad = false;
-
- CheckMemoryHeap();
-
- ShutDown();
-
- delete m_pTimeOfDay;
- delete m_pDecalManager;
- delete m_pVisAreaManager;
- SAFE_DELETE(m_pClipVolumeManager);
-
- CryAlignedDelete(m_pCoverageBuffer);
- m_pCoverageBuffer = 0;
- CryAlignedDelete(m_pSkyLightManager);
- m_pSkyLightManager = 0;
- SAFE_DELETE(m_pObjectsTree);
- // delete m_pSceneTree;
- delete m_pRenderMeshMerger;
- delete m_pMatMan;
- m_pMatMan = 0;
- delete m_pCloudsManager;
-
- delete m_pCVars;
-
- delete m_pDeferredPhysicsEventManager;
-}
-
-bool C3DEngine::CheckMinSpec(uint32 nMinSpec)
-{
- return Cry3DEngineBase::CheckMinSpec(nMinSpec);
-}
-
-bool C3DEngine::Init()
-{
- m_pOpticsManager = new COpticsManager;
- m_pSystem->SetIOpticsManager(m_pOpticsManager);
-
- for (int i = 0; i < eERType_TypesNum; i++)
- {
- m_bRenderTypeEnabled[i] = true;
- }
-
- UpdateRenderTypeEnableLookup();
-
- // Allocate the temporary pool used for allocations during streaming and loading
- const size_t tempPoolSize = static_cast(GetCVars()->e_3dEngineTempPoolSize) << 10;
- AZ_Assert(tempPoolSize != 0, "Temp pool size should not be 0.");
-
- {
- if (!CTemporaryPool::Initialize(tempPoolSize))
- {
- AZ_Assert(false, "Could not initialize initialize temporary pool for 3D Engine startup.");
- return false;
- }
- }
-
- SFrameLodInfo frameLodInfo;
- frameLodInfo.fLodRatio = GetCVars()->e_LodRatio;
-
- frameLodInfo.fTargetSize = GetCVars()->e_LodFaceAreaTargetSize;
- AZ_Assert(frameLodInfo.fTargetSize > 0.f, "FrameLodInfo target size should be greater than 0.");
- if (frameLodInfo.fTargetSize <= 0.f)
- {
- frameLodInfo.fTargetSize = 1.f;
- }
-
- frameLodInfo.nMinLod = GetCVars()->e_LodMin;
- frameLodInfo.nMaxLod = GetCVars()->e_LodMax;
- if (GetCVars()->e_Lods == 0)
- {
- frameLodInfo.nMinLod = 0;
- frameLodInfo.nMaxLod = 0;
- }
- SetFrameLodInfo(frameLodInfo);
-
- return true;
-}
-
-bool C3DEngine::IsCameraAnd3DEngineInvalid(const SRenderingPassInfo& passInfo, const char* szCaller)
-{
- const CCamera& rCamera = passInfo.GetCamera();
- const float MAX_M23_REPORTED = 3000000.f; // MAT => upped from 100,000 which spammed this message on spear and cityhall. Really should stop editor generating
- // water levels that trigger this message.
-
- if (!_finite(rCamera.GetMatrix().m03) || !_finite(rCamera.GetMatrix().m13) || !_finite(rCamera.GetMatrix().m23) || GetMaxViewDistance() <= 0 ||
- rCamera.GetMatrix().m23 < -MAX_M23_REPORTED || rCamera.GetMatrix().m23 > MAX_M23_REPORTED || rCamera.GetFov() < 0.0001f || rCamera.GetFov() > gf_PI)
- {
- Error("Bad camera passed to 3DEngine from %s: Pos=(%.1f, %.1f, %.1f), Fov=%.1f, MaxViewDist=%.1f. Maybe the water level is too extreme.",
- szCaller,
- rCamera.GetMatrix().m03, rCamera.GetMatrix().m13, rCamera.GetMatrix().m23,
- rCamera.GetFov(), _finite(rCamera.GetMatrix().m03) ? GetMaxViewDistance() : 0);
- return true;
- }
-
- return false;
-}
-
-void C3DEngine::OnFrameStart()
-{
- FUNCTION_PROFILER_3DENGINE;
-
- m_nRenderWorldUSecs = 0;
- m_pDeferredPhysicsEventManager->Update();
-
- m_bendingPoolIdx = (m_bendingPoolIdx + 1) % NUM_BENDING_POOLS;
- m_bendingPool[m_bendingPoolIdx].resize(0);
-
-#if defined(USE_GEOM_CACHES)
- if (!gEnv->IsDedicated())
- {
- if (m_pGeomCacheManager)
- {
- m_pGeomCacheManager->StreamingUpdate();
- }
- }
-#endif
- //update texture load handlers
- for (TTextureLoadHandlers::iterator iter = m_textureLoadHandlers.begin(); iter != m_textureLoadHandlers.end(); iter++)
- {
- (*iter)->Update();
- }
-}
-
-float GetOceanLevelCallback(int ix, int iy)
-{
- using namespace OceanGlobals;
- return OceanToggle::IsActive() ? OceanRequest::GetAccurateOceanHeight(Vec3(ix * g_oceanStep, iy * g_oceanStep, g_oceanLevel)) : gEnv->p3DEngine->GetAccurateOceanHeight(Vec3(ix * g_oceanStep, iy * g_oceanStep, g_oceanLevel));
-}
-
-unsigned char GetOceanSurfTypeCallback([[maybe_unused]] int ix, [[maybe_unused]] int iy)
-{
- return 0;
-}
-
-void C3DEngine::Update()
-{
- FUNCTION_PROFILER_3DENGINE_LEGACYONLY;
- AZ_TRACE_METHOD();
-
- ProcessAsyncStaticObjectLoadRequests();
-
- m_LightConfigSpec = (ESystemConfigSpec)GetCurrentLightSpec();
-
- if (GetObjManager())
- {
- GetObjManager()->ClearStatObjGarbage();
- }
-
- if (m_pDecalManager)
- {
- m_pDecalManager->Update(GetTimer()->GetFrameTime());
- }
-
- if (GetCVars()->e_PrecacheLevel == 3)
- {
- PrecacheLevel(true, 0, 0);
- }
-
- DebugDraw_Draw();
-
- ProcessCVarsChange();
-
- {
- using namespace OceanGlobals;
- AZStd::lock_guard lock(g_oceanParamsMutex);
-
- g_oceanLevel = OceanToggle::IsActive() ? OceanRequest::GetOceanLevel() : GetWaterLevel();
- }
-
- CRenderMeshUtils::ClearHitCache();
-
- CleanUpOldDecals();
-
- CDecalRenderNode::ResetDecalUpdatesCounter();
-
-
- if (m_pBreakableBrushHeap)
- {
- m_pBreakableBrushHeap->Cleanup();
- }
-
- // make sure all jobs from the previous frame have finished
- threadID nThreadID;
- gEnv->pRenderer->EF_Query(EFQ_RenderThreadList, nThreadID);
- gEnv->pRenderer->GetFinalizeRendItemJobExecutor(nThreadID)->WaitForCompletion();
- gEnv->pRenderer->GetFinalizeShadowRendItemJobExecutor(nThreadID)->WaitForCompletion();
-
- UpdateRNTmpDataPool(m_bResetRNTmpDataPool);
- m_bResetRNTmpDataPool = false;
-
- m_PhysicsAreaUpdates.GarbageCollect();
-}
-
-void C3DEngine::Tick()
-{
- AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::System);
-
- // make sure all jobs from the previous frame have finished (also in Tick since Update is not called during loading)
- threadID nThreadID = 0;
- gEnv->pRenderer->EF_Query(EFQ_RenderThreadList, nThreadID);
- gEnv->pRenderer->GetFinalizeRendItemJobExecutor(nThreadID)->WaitForCompletion();
- gEnv->pRenderer->GetFinalizeShadowRendItemJobExecutor(nThreadID)->WaitForCompletion();
-
- AZ::MainThreadRenderRequestBus::ExecuteQueuedEvents();
-
- AZ::MaterialNotificationEventBus::ExecuteQueuedEvents();
-
- // clear stored cameras from last frame
- m_RenderingPassCameras[nThreadID].resize(0);
-}
-
-
-void C3DEngine::ProcessCVarsChange()
-{
- static int nObjectLayersActivation = -1;
-
- if (nObjectLayersActivation != GetCVars()->e_ObjectLayersActivation)
- {
- if (GetCVars()->e_ObjectLayersActivation == 2)
- {
- ActivateObjectsLayer(~0, true, true, true, true, "ALL_OBJECTS");
- }
- if (GetCVars()->e_ObjectLayersActivation == 3)
- {
- ActivateObjectsLayer(~0, false, true, true, true, "ALL_OBJECTS");
- }
-
- nObjectLayersActivation = GetCVars()->e_ObjectLayersActivation;
- }
-
- float fNewCVarsSumm =
- GetCVars()->e_ShadowsCastViewDistRatio +
- GetCVars()->e_Dissolve +
- GetFloatCVar(e_DissolveDistMin) +
- GetFloatCVar(e_DissolveDistMax) +
- GetFloatCVar(e_DissolveDistband) +
- GetCVars()->e_ViewDistRatio +
- GetCVars()->e_ViewDistMin +
- GetCVars()->e_ViewDistRatioDetail +
- GetCVars()->e_DefaultMaterial +
- GetGeomDetailScreenRes() +
- GetCVars()->e_Portals +
- GetCVars()->e_DebugDraw +
- GetFloatCVar(e_ViewDistCompMaxSize) +
- GetCVars()->e_DecalsDefferedStatic +
- GetRenderer()->GetWidth();
-
- if (m_fRefreshSceneDataCVarsSumm != -1 && m_fRefreshSceneDataCVarsSumm != fNewCVarsSumm)
- {
- UpdateStatInstGroups();
-
- AZ::Aabb terrainAabb = AZ::Aabb::CreateFromPoint(AZ::Vector3::CreateZero());
- AzFramework::Terrain::TerrainDataRequestBus::BroadcastResult(terrainAabb, &AzFramework::Terrain::TerrainDataRequests::GetTerrainAabb);
- float terrainSize = AZ::GetMax(terrainAabb.GetXExtent(), terrainAabb.GetYExtent());
-
- // re-register every instance in level
- constexpr float UNREASONABLY_SMALL_TERRAIN_SIZE = 1.0f;
- constexpr float VERY_LARGE_TERRAIN_SIZE = 16.0f * 1024.0f;
- if (terrainSize < UNREASONABLY_SMALL_TERRAIN_SIZE)
- {
- //Only happens when the runtime terrain system was excluded from this build.
- terrainSize = VERY_LARGE_TERRAIN_SIZE;
- }
- GetObjManager()->ReregisterEntitiesInArea(
- Vec3(-terrainSize, -terrainSize, -terrainSize),
- Vec3(terrainSize * 2.f, terrainSize * 2.f, terrainSize * 2.f));
-
- // refresh vegetation properties
- UpdateStatInstGroups();
-
- // force refresh of temporary data associated with visible objects
- MarkRNTmpDataPoolForReset();
- }
-
- m_fRefreshSceneDataCVarsSumm = fNewCVarsSumm;
-
- int nRenderTypeEnableCVarSum =
- (GetCVars()->e_Entities << 2);
-
- if (m_nRenderTypeEnableCVarSum != nRenderTypeEnableCVarSum)
- {
- m_nRenderTypeEnableCVarSum = nRenderTypeEnableCVarSum;
-
- UpdateRenderTypeEnableLookup();
- }
-
- {
- float fNewCVarsSumm2 =
- GetCVars()->e_LodRatio;
-
- static float fCVarsSumm2 = fNewCVarsSumm2;
-
- if (fCVarsSumm2 != fNewCVarsSumm2)
- {
- MarkRNTmpDataPoolForReset();
-
- fCVarsSumm2 = fNewCVarsSumm2;
- }
- }
-
- SFrameLodInfo frameLodInfo;
- frameLodInfo.fLodRatio = GetCVars()->e_LodRatio;
-
- frameLodInfo.fTargetSize = GetCVars()->e_LodFaceAreaTargetSize;
- CRY_ASSERT(frameLodInfo.fTargetSize > 0.f);
- if (frameLodInfo.fTargetSize <= 0.f)
- {
- frameLodInfo.fTargetSize = 1.f;
- }
-
- frameLodInfo.nMinLod = GetCVars()->e_LodMin;
- frameLodInfo.nMaxLod = GetCVars()->e_LodMax;
- if (GetCVars()->e_Lods == 0)
- {
- frameLodInfo.nMinLod = 0;
- frameLodInfo.nMaxLod = 0;
- }
- SetFrameLodInfo(frameLodInfo);
-}
-
-//////////////////////////////////////////////////////////////////////
-void C3DEngine::ShutDown()
-{
- if (GetRenderer() != GetSystem()->GetIRenderer())
- {
- CryFatalError("Renderer was deallocated before I3DEngine::ShutDown() call");
- }
-
- UnlockCGFResources();
-
- UnloadLevel();
-
-#if defined(USE_GEOM_CACHES)
- delete m_pGeomCacheManager;
- m_pGeomCacheManager = 0;
-#endif
-
- if (m_pOpticsManager)
- {
- delete m_pOpticsManager;
- m_pOpticsManager = 0;
- m_pSystem->SetIOpticsManager(m_pOpticsManager);
- }
-
- CryAlignedDelete(m_pObjManager);
- m_pObjManager = 0;
-
-
- // Free the temporary pool's underlying storage
- // and reset the pool
- if (!CTemporaryPool::Shutdown())
- {
- CryFatalError("C3DEngine::Shutdown() could not shutdown temporary pool");
- }
-
- COctreeNode::Shutdown();
-}
-
-#ifndef _RELEASE
-void C3DEngine::ProcessStreamingLatencyTest(const CCamera& camIn, CCamera& camOut, const SRenderingPassInfo& passInfo)
-{
- static float fSQTestOffset = 0;
- static PodArray arrTestTextures;
- static ITexture* pTestTexture = 0;
- static ITexture* pLastNotReadyTexture = 0;
- static float fStartTime = 0;
- static float fDelayStartTime = 0;
- static size_t nMaxTexUsage = 0;
-
- static int nOpenRequestCount = 0;
- SStreamEngineOpenStats stats;
- gEnv->pSystem->GetStreamEngine()->GetStreamingOpenStatistics(stats);
- if (stats.nOpenRequestCount > nOpenRequestCount)
- {
- nOpenRequestCount = stats.nOpenRequestCount;
- }
- else
- {
- nOpenRequestCount = max(0, nOpenRequestCount + stats.nOpenRequestCount) / 2;
- }
-
- ICVar* pTSFlush = GetConsole()->GetCVar("r_TexturesStreamingDebug");
-
- if (GetCVars()->e_SQTestBegin == 1)
- { // Init waiting few seconds until streaming is stabilized and all required textures are loaded
- PrintMessage("======== Starting streaming latency test ========");
- fDelayStartTime = GetCurTimeSec();
- nMaxTexUsage = 0;
- GetCVars()->e_SQTestBegin = 2;
- PrintMessage("Waiting %.1f seconds and zero requests and no camera movement", GetCVars()->e_SQTestDelay);
-
- if (ICVar* pPart = GetConsole()->GetCVar("e_Particles"))
- {
- pPart->Set(0);
- }
- if (ICVar* pAI = GetConsole()->GetCVar("sys_AI"))
- {
- pAI->Set(0);
- }
- }
- else if (GetCVars()->e_SQTestBegin == 2)
- { // Perform waiting
- if (GetCurTimeSec() - fDelayStartTime > GetCVars()->e_SQTestDelay && !nOpenRequestCount && m_fAverageCameraSpeed < .01f)
- {
- pTSFlush->Set(0);
- GetCVars()->e_SQTestBegin = 3;
- }
- else
- {
- pTSFlush->Set(3);
- }
- }
- else if (GetCVars()->e_SQTestBegin == 3)
- { // Build a list of all important loaded textures
- PrintMessage("Collect information about loaded textures");
-
- fSQTestOffset = (float)GetCVars()->e_SQTestDistance;
-
- arrTestTextures.Clear();
- SRendererQueryGetAllTexturesParam param;
-
- GetRenderer()->EF_Query(EFQ_GetAllTextures, param);
- if (param.pTextures)
- {
- for (uint32 i = 0; i < param.numTextures; i++)
- {
- ITexture* pTexture = param.pTextures[i];
- if (pTexture->GetAccessFrameId() > (int)(passInfo.GetMainFrameID() - 4))
- {
- if (pTexture->GetMinLoadedMip() <= GetCVars()->e_SQTestMip)
- {
- if (pTexture->IsStreamable())
- {
- if (pTexture->GetWidth() * pTexture->GetHeight() >= 256 * 256)
- {
- arrTestTextures.Add(pTexture);
-
- if (strstr(pTexture->GetName(), GetCVars()->e_SQTestTextureName->GetString()))
- {
- pTestTexture = pTexture;
- PrintMessage("Test texture name: %s", pTexture->GetName());
- }
- }
- }
- }
- }
- }
- }
-
- GetRenderer()->EF_Query(EFQ_GetAllTexturesRelease, param);
-
- PrintMessage("%d test textures found", arrTestTextures.Count());
-
- PrintMessage("Teleporting camera to offset position");
-
- GetCVars()->e_SQTestBegin = 4;
- }
- else if (GetCVars()->e_SQTestBegin == 4)
- { // Init waiting few seconds until streaming is stabilized and all required textures are loaded
- fDelayStartTime = GetCurTimeSec();
- GetCVars()->e_SQTestBegin = 5;
- PrintMessage("Waiting %.1f seconds and zero requests and no camera movement", GetCVars()->e_SQTestDelay);
- }
- else if (GetCVars()->e_SQTestBegin == 5)
- { // Move camera to offset position and perform waiting
- Matrix34 mat = camIn.GetMatrix();
- Vec3 vPos = camIn.GetPosition() - camIn.GetViewdir() * fSQTestOffset;
- mat.SetTranslation(vPos);
- camOut.SetMatrix(mat);
-
- if (GetCurTimeSec() - fDelayStartTime > GetCVars()->e_SQTestDelay && !nOpenRequestCount && m_fAverageCameraSpeed < .01f)
- {
- PrintMessage("Begin camera movement");
- GetCVars()->e_SQTestBegin = 6;
- pTSFlush->Set(0);
- }
- else
- {
- pTSFlush->Set(3);
- }
- }
- else if (GetCVars()->e_SQTestBegin == 6)
- { // Process camera movement from offset position to test point
- Matrix34 mat = camIn.GetMatrix();
- Vec3 vPos = camIn.GetPosition() - camIn.GetViewdir() * fSQTestOffset;
- mat.SetTranslation(vPos);
- camOut.SetMatrix(mat);
-
- fSQTestOffset -= GetTimer()->GetFrameTime() * (float)GetCVars()->e_SQTestMoveSpeed;
-
- STextureStreamingStats statsTex(true);
- m_pRenderer->EF_Query(EFQ_GetTexStreamingInfo, statsTex);
- nMaxTexUsage = max(nMaxTexUsage, statsTex.nRequiredStreamedTexturesSize);
-
- if (fSQTestOffset <= 0)
- {
- PrintMessage("Finished camera movement");
- fStartTime = GetCurTimeSec();
- PrintMessage("Waiting for %d textures to stream in ...", arrTestTextures.Count());
-
- GetCVars()->e_SQTestBegin = 7;
- pLastNotReadyTexture = 0;
- }
- }
- else if (GetCVars()->e_SQTestBegin == 7)
- { // Wait until test all needed textures are loaded again
- STextureStreamingStats statsTex(true);
- m_pRenderer->EF_Query(EFQ_GetTexStreamingInfo, statsTex);
- nMaxTexUsage = max(nMaxTexUsage, statsTex.nRequiredStreamedTexturesSize);
-
- if (pTestTexture)
- {
- if (pTestTexture->GetMinLoadedMip() <= GetCVars()->e_SQTestMip)
- {
- PrintMessage("BINGO: Selected test texture loaded in %.1f sec", GetCurTimeSec() - fStartTime);
- pTestTexture = NULL;
- if (!arrTestTextures.Count())
- {
- GetCVars()->e_SQTestBegin = 0;
- GetConsole()->GetCVar("e_SQTestBegin")->Set(0);
- }
- }
- }
-
- if (arrTestTextures.Count())
- {
- int nFinishedNum = 0;
- for (int i = 0; i < arrTestTextures.Count(); i++)
- {
- if (arrTestTextures[i]->GetMinLoadedMip() <= GetCVars()->e_SQTestMip)
- {
- nFinishedNum++;
- }
- else
- {
- pLastNotReadyTexture = arrTestTextures[i];
- }
- }
-
- if (nFinishedNum == arrTestTextures.Count())
- {
- PrintMessage("BINGO: %d of %d test texture loaded in %.1f sec", nFinishedNum, arrTestTextures.Count(), GetCurTimeSec() - fStartTime);
- if (pLastNotReadyTexture)
- {
- PrintMessage("LastNotReadyTexture: %s [%d x %d]", pLastNotReadyTexture->GetName(), pLastNotReadyTexture->GetWidth(), pLastNotReadyTexture->GetHeight());
- }
- PrintMessage("MaxTexUsage: %" PRISIZE_T " MB", nMaxTexUsage / 1024 / 1024);
- arrTestTextures.Clear();
-
- GetCVars()->e_SQTestBegin = 0;
- GetConsole()->GetCVar("e_SQTestBegin")->Set(0);
-
- m_arrProcessStreamingLatencyTestResults.Add(GetCurTimeSec() - fStartTime);
- m_arrProcessStreamingLatencyTexNum.Add(nFinishedNum);
-
- if (GetCVars()->e_SQTestCount == 0)
- {
- const char* testResultsFile = "@usercache@/TestResults/Streaming_Latency_Test.xml";
-
- AZ::IO::HandleType resultsFile = gEnv->pCryPak->FOpen(testResultsFile, "wb");
- if (resultsFile != AZ::IO::InvalidHandle)
- {
- float fAverTime = 0;
- for (int i = 0; i < m_arrProcessStreamingLatencyTestResults.Count(); i++)
- {
- fAverTime += m_arrProcessStreamingLatencyTestResults[i];
- }
- fAverTime /= m_arrProcessStreamingLatencyTestResults.Count();
-
- int nAverTexNum = 0;
- for (int i = 0; i < m_arrProcessStreamingLatencyTexNum.Count(); i++)
- {
- nAverTexNum += m_arrProcessStreamingLatencyTexNum[i];
- }
- nAverTexNum /= m_arrProcessStreamingLatencyTexNum.Count();
-
- AZ::IO::Print(resultsFile, "\n"
- "\n"
- "\n"
- "\n"
- "\n"
- "\n",
- fAverTime,
- nAverTexNum);
- gEnv->pCryPak->FClose(resultsFile);
- }
-
- if (GetCVars()->e_SQTestExitOnFinish)
- {
- GetSystem()->Quit();
- }
- }
- }
- else if ((passInfo.GetMainFrameID() & 31) == 0)
- {
- PrintMessage("Waiting: %d of %d test texture loaded in %.1f sec", nFinishedNum, arrTestTextures.Count(), GetCurTimeSec() - fStartTime);
- }
- }
- }
-}
-#endif
-
-//////////////////////////////////////////////////////////////////////
-void C3DEngine::UpdateRenderingCamera([[maybe_unused]] const char* szCallerName, const SRenderingPassInfo& passInfo)
-{
- CCamera newCam = passInfo.GetCamera();
-
- if (passInfo.IsGeneralPass())
- {
- SVOGILegacyRequestBus::Broadcast(&SVOGILegacyRequests::UpdateVoxelData);
- }
-
- if IsCVarConstAccess(constexpr) (bool(GetFloatCVar(e_CameraRotationSpeed)))
- {
- Matrix34 mat = passInfo.GetCamera().GetMatrix();
- Matrix33 matRot;
- matRot.SetRotationZ(-GetCurTimeSec() * GetFloatCVar(e_CameraRotationSpeed));
- newCam.SetMatrix(mat * matRot);
- }
-
-#if !defined(_RELEASE)
-
- {
- //this feature move the camera along with the player to a certain position and sets the angle accordingly
- // (does not work via goto)
- //u can switch it off again via e_CameraGoto 0
- const char* const pCamGoto = GetCVars()->e_CameraGoto->GetString();
- assert(pCamGoto);
- if (strlen(pCamGoto) > 1)
- {
- Ang3 aAngDeg;
- Vec3 vPos;
- int args = azsscanf(pCamGoto, "%f %f %f %f %f %f", &vPos.x, &vPos.y, &vPos.z, &aAngDeg.x, &aAngDeg.y, &aAngDeg.z);
- if (args >= 3)
- {
- Vec3 curPos = newCam.GetPosition();
- if (fabs(vPos.x - curPos.x) > 10.f || fabs(vPos.y - curPos.y) > 10.f || fabs(vPos.z - curPos.z) > 10.f)
- {
- char buf[128];
- sprintf_s(buf, "goto %f %f %f", vPos.x, vPos.y, vPos.z);
- gEnv->pConsole->ExecuteString(buf);
- }
- if (args >= 6)
- {
- Matrix34 mat = passInfo.GetCamera().GetMatrix();
- mat.SetTranslation(vPos);
- mat.SetRotation33(Matrix33::CreateRotationXYZ(DEG2RAD(aAngDeg)));
- newCam.SetMatrix(mat);
- }
- }
- }
- }
-
- // Streaming latency test
- if (GetCVars()->e_SQTestCount && !GetCVars()->e_SQTestBegin)
- {
- GetConsole()->GetCVar("e_SQTestBegin")->Set(1);
- GetConsole()->GetCVar("e_SQTestCount")->Set(GetCVars()->e_SQTestCount - 1);
- }
- if (GetCVars()->e_SQTestBegin)
- {
- ProcessStreamingLatencyTest(passInfo.GetCamera(), newCam, passInfo);
- }
-
-#endif
-
- // set the camera if e_cameraFreeze is not set
- if (GetCVars()->e_CameraFreeze || GetCVars()->e_CoverageBufferDebugFreeze)
- {
- DrawSphere(GetRenderingCamera().GetPosition(), .05f);
-
- // always set camera to request position for the renderer, allows debugging with e_camerafreeze
- GetRenderer()->SetCamera(gEnv->pSystem->GetViewCamera());
- }
- else
- {
- m_RenderingCamera = newCam;
- // always set camera to request position for the renderer, allows debugging with e_camerafreeze
- GetRenderer()->SetCamera(newCam);
- }
-
- // now we have a valid camera, we can start generation of the occlusion buffer
- // only needed for editor here, in game we spawn the job more early
- if (passInfo.IsGeneralPass() && GetCVars()->e_StatObjBufferRenderTasks)
- {
- if (gEnv->IsEditor())
- {
- GetObjManager()->PrepareCullbufferAsync(passInfo.GetCamera());
- }
- else
- {
- assert(IsEquivalent(passInfo.GetCamera().GetViewdir(), GetObjManager()->GetCullThread().GetViewDir())); // early set camera differs from current main camera - will cause occlusion errors
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // update streaming priority of newly seen CComponentRenders (fix for streaming system issue)
- for (int i = 0, nSize = m_deferredRenderComponentStreamingPriorityUpdates.size(); i < nSize; ++i)
- {
- IRenderNode* pRenderNode = m_deferredRenderComponentStreamingPriorityUpdates[i];
- AABB aabb = pRenderNode->GetBBox();
- const Vec3& vCamPos = GetRenderingCamera().GetPosition();
- float fEntDistance = sqrt_tpl(Distance::Point_AABBSq(vCamPos, aabb)) * passInfo.GetZoomFactor();
-
- GetObjManager()->UpdateRenderNodeStreamingPriority(pRenderNode, fEntDistance, 1.0f, false, passInfo);
- if (GetCVars()->e_StreamCgfDebug == 2)
- {
- PrintMessage("C3DEngine::RegisterEntity__GetObjManager()->UpdateRenderNodeStreamingPriority %s", pRenderNode->GetName());
- }
- }
- m_deferredRenderComponentStreamingPriorityUpdates.resize(0);
-}
-
-void C3DEngine::GetSvoStaticTextures(I3DEngine::SSvoStaticTexInfo& svoInfo, PodArray* pLightsTI_S, PodArray* pLightsTI_D)
-{
- SVOGILegacyRequestBus::Broadcast(&SVOGILegacyRequests::GetSvoStaticTextures, svoInfo, pLightsTI_S, pLightsTI_D);
-}
-
-void C3DEngine::GetSvoBricksForUpdate(PodArray& arrNodeInfo, bool getDynamic)
-{
- SVOGILegacyRequestBus::Broadcast(&SVOGILegacyRequests::GetSvoBricksForUpdate, arrNodeInfo, getDynamic);
-}
-
-#if defined(FEATURE_SVO_GI)
-void C3DEngine::LoadTISettings(XmlNodeRef pInputNode)
-{
- const char* szXmlNodeName = "Total_Illumination_v2";
- if (gEnv->pConsole->GetCVar("e_svoTI_Active"))
- {
- gEnv->pConsole->GetCVar("e_svoTI_Active")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "Active", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_InjectionMultiplier")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "InjectionMultiplier", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_NumberOfBounces")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "NumberOfBounces", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_Saturation")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "Saturation", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_ConeMaxLength")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "ConeMaxLength", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_DiffuseConeWidth")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "DiffuseConeWidth", "0"));
-
- gEnv->pConsole->GetCVar("e_svoTI_SSAOAmount")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "SSAOAmount", "0"));
- gEnv->pConsole->GetCVar("e_svoTI_UseLightProbes")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "UseLightProbes", "0"));
- gEnv->pConsole->GetCVar("e_svoTI_AmbientOffsetRed")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "AmbientOffsetRed", "1"));
- gEnv->pConsole->GetCVar("e_svoTI_AmbientOffsetGreen")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "AmbientOffsetGreen", "1"));
- gEnv->pConsole->GetCVar("e_svoTI_AmbientOffsetBlue")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "AmbientOffsetBlue", "1"));
- gEnv->pConsole->GetCVar("e_svoTI_AmbientOffsetBias")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "AmbientOffsetBias", ".1"));
-
- gEnv->pConsole->GetCVar("e_svoTI_IntegrationMode")->Set(GetXMLAttribText(pInputNode, szXmlNodeName, "IntegrationMode", "0"));
-
- if (gEnv->pConsole->GetCVar("e_svoTI_IntegrationMode")->GetIVal() < 1) // AO
- {
- gEnv->pConsole->GetCVar("e_svoTI_NumberOfBounces")->Set("1");
- }
- }
-}
-#endif
-void C3DEngine::PrepareOcclusion(const CCamera& rCamera)
-{
- if (!gEnv->IsEditor() && GetCVars()->e_StatObjBufferRenderTasks && !gEnv->IsFMVPlaying() && (!IsEquivalent(rCamera.GetPosition(), Vec3(0, 0, 0), VEC_EPSILON) || GetRenderer()->IsPost3DRendererEnabled()))
- {
- GetObjManager()->PrepareCullbufferAsync(rCamera);
- }
-}
-
-void C3DEngine::EndOcclusion()
-{
- GetObjManager()->EndOcclusionCulling();
-}
-
-IStatObj* C3DEngine::LoadStatObjUnsafeManualRef(const char* fileName, const char* geomName, IStatObj::SSubObject** subObject,
- bool useStreaming, unsigned long loadingFlags, const void* data, int dataSize)
-{
- return LoadStatObjInternal(fileName, geomName, subObject, useStreaming, loadingFlags, &CObjManager::LoadStatObjUnsafeManualRef, data, dataSize);
-}
-
-_smart_ptr C3DEngine::LoadStatObjAutoRef(const char* fileName, const char* geomName, IStatObj::SSubObject** subObject,
- bool useStreaming, unsigned long loadingFlags, const void* data, int dataSize)
-{
- return LoadStatObjInternal(fileName, geomName, subObject, useStreaming, loadingFlags, &CObjManager::LoadStatObjAutoRef, data, dataSize);
-}
-
-template
-TReturn C3DEngine::LoadStatObjInternal(const char* fileName, const char* geomName, IStatObj::SSubObject** subObject, bool useStreaming,
- unsigned long loadingFlags, LoadStatObjFunc loadStatObjFunc, const void* data, int dataSize)
-{
- if (!fileName || !fileName[0])
- {
- m_pSystem->Warning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_ERROR, 0, 0, "I3DEngine::LoadStatObj: filename is not specified");
- return nullptr;
- }
-
- if (!m_pObjManager)
- {
- m_pObjManager = CryAlignedNew();
- }
-
- CObjManager* pObjManager = static_cast(m_pObjManager);
- return (pObjManager->*loadStatObjFunc)(fileName, geomName, subObject, useStreaming, loadingFlags, data, dataSize, nullptr);
-}
-
-void C3DEngine::LoadStatObjAsync(I3DEngine::LoadStaticObjectAsyncResult resultCallback, const char* szFileName, const char* szGeomName, bool bUseStreaming, unsigned long nLoadingFlags)
-{
- CRY_ASSERT_MESSAGE(szFileName && szFileName[0], "LoadStatObjAsync: Invalid filename");
- CRY_ASSERT_MESSAGE(m_pObjManager, "Object manager is not ready.");
-
- StaticObjectAsyncLoadRequest request;
- request.m_callback = resultCallback;
- request.m_filename = szFileName;
- request.m_geomName = szGeomName;
- request.m_useStreaming = bUseStreaming;
- request.m_loadingFlags = nLoadingFlags;
-
- {
- AZStd::lock_guard lock(m_statObjQueueLock);
- m_statObjLoadRequests.push(std::move(request));
- }
-}
-
-void C3DEngine::ProcessAsyncStaticObjectLoadRequests()
-{
- // Same scheme as skinned meshes: CharacterManager::ProcessAsyncLoadRequests.
-
- enum
- {
- kMaxLoadsPerFrame = 20
- };
- size_t loadsThisFrame = 0;
-
- while (loadsThisFrame < kMaxLoadsPerFrame)
- {
- StaticObjectAsyncLoadRequest request;
- {
- AZStd::lock_guard lock(m_statObjQueueLock);
- if (m_statObjLoadRequests.empty())
- {
- break;
- }
- request = std::move(m_statObjLoadRequests.front());
- m_statObjLoadRequests.pop();
- }
-
- _smart_ptr object = LoadStatObjAutoRef(request.m_filename.c_str(), request.m_geomName.c_str(), nullptr, request.m_useStreaming, request.m_loadingFlags);
- request.m_callback(object);
-
- ++loadsThisFrame;
- }
-}
-
-IStatObj* C3DEngine::FindStatObjectByFilename(const char* filename)
-{
- if (filename == NULL)
- {
- return NULL;
- }
-
- if (filename[0] == 0)
- {
- return NULL;
- }
-
- return m_pObjManager->FindStaticObjectByFilename(filename);
-}
-
-void C3DEngine::RegisterEntity(IRenderNode* pEnt, int nSID, int nSIDConsideredSafe)
-{
- FUNCTION_PROFILER_3DENGINE;
- if (gEnv->mMainThreadId != CryGetCurrentThreadId())
- {
- CryFatalError("C3DEngine::RegisterEntity should only be called on main thread.");
- }
-
- uint32 nFrameID = GetRenderer()->GetFrameID();
- AsyncOctreeUpdate(pEnt, nSID, nSIDConsideredSafe, nFrameID, false);
-}
-
-void C3DEngine::UnRegisterEntityDirect(IRenderNode* pEnt)
-{
- UnRegisterEntityImpl(pEnt);
-}
-
-void C3DEngine::UnRegisterEntityAsJob(IRenderNode* pEnt)
-{
- AsyncOctreeUpdate(pEnt, (int)0, (int)0, (int)0, true);
-}
-
-bool C3DEngine::CreateDecalInstance(const CryEngineDecalInfo& decal, CDecal* pCallerManagedDecal)
-{
- if (!GetCVars()->e_Decals && !pCallerManagedDecal)
- {
- return false;
- }
-
- return m_pDecalManager->Spawn(decal, pCallerManagedDecal);
-}
-
-void C3DEngine::SelectEntity(IRenderNode* pEntity)
-{
- static IRenderNode* pSelectedNode;
- static float fLastTime;
- if (pEntity && GetCVars()->e_Decals == 3)
- {
- float fCurTime = gEnv->pTimer->GetAsyncCurTime();
- if (fCurTime - fLastTime < 1.0f)
- {
- return;
- }
- fLastTime = fCurTime;
- if (pSelectedNode)
- {
- pSelectedNode->SetRndFlags(ERF_SELECTED, false);
- }
- pEntity->SetRndFlags(ERF_SELECTED, true);
- pSelectedNode = pEntity;
- }
-}
-
-void C3DEngine::CreateDecal(const struct CryEngineDecalInfo& decal)
-{
- IF (!GetCVars()->e_DecalsAllowGameDecals, 0)
- {
- return;
- }
-
- if (GetCVars()->e_Decals == 2)
- {
- IRenderNode* pRN = decal.ownerInfo.pRenderNode;
- PrintMessage("Debug: C3DEngine::CreateDecal: Pos=(%.1f,%.1f,%.1f) Size=%.2f DecalMaterial=%s HitObjectName=%s(%s)",
- decal.vPos.x, decal.vPos.y, decal.vPos.z, decal.fSize, decal.szMaterialName,
- pRN ? pRN->GetName() : "NULL", pRN ? pRN->GetEntityClassName() : "NULL");
- }
-
- assert(!decal.pExplicitRightUpFront); // only game-play decals come here
-
- static uint32 nGroupId = 0;
- nGroupId++;
-
- if ((GetCVars()->e_DecalsDefferedStatic == 1 && decal.pExplicitRightUpFront) ||
- (GetCVars()->e_DecalsDefferedDynamic == 1 && !decal.pExplicitRightUpFront &&
- (!decal.ownerInfo.pRenderNode ||
- decal.ownerInfo.pRenderNode->GetRenderNodeType() == eERType_StaticMeshRenderComponent ||
- decal.fGrowTimeAlpha || decal.fSize > GetFloatCVar(e_DecalsDefferedDynamicMinSize)))
- && !decal.bForceSingleOwner)
- {
- CryEngineDecalInfo decal_adjusted = decal;
- decal_adjusted.nGroupId = nGroupId;
- decal_adjusted.bDeferred = true;
- m_pDecalManager->SpawnHierarchical(decal_adjusted, NULL);
- return;
- }
-
- if (decal.ownerInfo.pRenderNode && decal.fSize > 0.5f && !decal.bForceSingleOwner)
- {
- PodArray lstEntities;
- Vec3 vRadius(decal.fSize, decal.fSize, decal.fSize);
- const AABB cExplosionBox(decal.vPos - vRadius, decal.vPos + vRadius);
-
- if (CVisArea* pArea = (CVisArea*)decal.ownerInfo.pRenderNode->GetEntityVisArea())
- {
- if (pArea->m_pObjectsTree)
- {
- pArea->m_pObjectsTree->MoveObjectsIntoList(&lstEntities, &cExplosionBox, false, true, true, true);
- }
- }
- else
- {
- Get3DEngine()->MoveObjectsIntoListGlobal(&lstEntities, &cExplosionBox, false, true, true, true);
- }
-
- for (int i = 0; i < lstEntities.Count(); i++)
- {
- // decals on statobj's of render node
- CryEngineDecalInfo decalOnRenderNode = decal;
- decalOnRenderNode.ownerInfo.pRenderNode = lstEntities[i].pNode;
- decalOnRenderNode.nGroupId = nGroupId;
-
- // if(decalOnRenderNode.ownerInfo.pRenderNode->GetRenderNodeType() != decal.ownerInfo.pRenderNode->GetRenderNodeType())
- // continue;
-
- if (decalOnRenderNode.ownerInfo.pRenderNode->GetRndFlags() & ERF_HIDDEN)
- {
- continue;
- }
-
- m_pDecalManager->SpawnHierarchical(decalOnRenderNode, NULL);
- }
- }
- else
- {
- CryEngineDecalInfo decalStatic = decal;
- decalStatic.nGroupId = nGroupId;
- m_pDecalManager->SpawnHierarchical(decalStatic, NULL);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::SetSunColor(Vec3 vColor)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSunColor(vColor);
- m_pObjManager->SetSunAnimColor(vColor);
- }
-}
-
-Vec3 C3DEngine::GetSunAnimColor()
-{
- if (m_pObjManager)
- {
- return m_pObjManager->GetSunAnimColor();
- }
-
- return Vec3();
-}
-
-void C3DEngine::SetSunAnimColor(const Vec3& sunAnimColor)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSunAnimColor(sunAnimColor);
- }
-}
-
-float C3DEngine::GetSunAnimSpeed()
-{
- if (m_pObjManager)
- {
- return m_pObjManager->GetSunAnimSpeed();
- }
-
- return 0.0f;
-}
-
-void C3DEngine::SetSunAnimSpeed(float sunAnimSpeed)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSunAnimSpeed(sunAnimSpeed);
- }
-}
-
-AZ::u8 C3DEngine::GetSunAnimPhase()
-{
- if (m_pObjManager)
- {
- return m_pObjManager->GetSunAnimPhase();
- }
-
- return 0;
-}
-
-void C3DEngine::SetSunAnimPhase(AZ::u8 sunAnimPhase)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSunAnimPhase(sunAnimPhase);
- }
-}
-
-AZ::u8 C3DEngine::GetSunAnimIndex()
-{
- if (m_pObjManager)
- {
- return m_pObjManager->GetSunAnimIndex();
- }
-
- return 0;
-}
-
-void C3DEngine::SetSunAnimIndex(AZ::u8 sunAnimIndex)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSunAnimIndex(sunAnimIndex);
- }
-}
-
-void C3DEngine::SetSSAOAmount(float fMul)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSSAOAmount(fMul);
- }
-}
-
-void C3DEngine::SetSSAOContrast(float fMul)
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetSSAOContrast(fMul);
- }
-}
-
-void C3DEngine::RemoveAllStaticObjects([[maybe_unused]] int nSID)
-{
- if (!IsObjectTreeReady())
- {
- return;
- }
-
- PodArray lstObjects;
-
- // Don't remove objects from the octree, since our query will return more objects than just the ones we're looking for.
- const bool removeObjectsFromOctree = false;
-
- // Skip gathering decals, since we're only looking for vegetation.
- const bool skipDecals = true;
- const bool skipERFNoDecalNodeDecals = true;
-
- // Skip dynamic vegetation, since we're only looking to remove static vegetation.
- const bool skipDynamicObjects = true;
-
- GetObjectTree()->MoveObjectsIntoList(&lstObjects, nullptr, removeObjectsFromOctree, skipDecals, skipERFNoDecalNodeDecals, skipDynamicObjects);
-}
-
-void C3DEngine::OnExplosion(Vec3 vPos, float fRadius, [[maybe_unused]] bool bDeformTerrain)
-{
- if (GetCVars()->e_Decals == 2)
- {
- PrintMessage("Debug: C3DEngine::OnExplosion: Pos=(%.1f,%.1f,%.1f) fRadius=%.2f", vPos.x, vPos.y, vPos.z, fRadius);
- }
-
- auto terrain = AzFramework::Terrain::TerrainDataRequestBus::FindFirstHandler();
- if (!terrain)
- {
- return;
- }
-
- AZ::Aabb terrainAabb = terrain->GetTerrainAabb();
- if (!terrainAabb.Contains(LYVec3ToAZVec3(vPos)) || fRadius <= 0)
- {
- return; // out of terrain
- }
-
- const AZ::Vector2 terrainGridResolution = terrain->GetTerrainGridResolution();
- const float unitSizeX = terrainGridResolution.GetX();
- const float unitSizeY = terrainGridResolution.GetY();
-
- // do not create decals near the terrain holes
- {
- for (float x = vPos.x - fRadius; x <= vPos.x + fRadius + 1.0f; x += unitSizeX)
- {
- for (float y = vPos.y - fRadius; y <= vPos.y + fRadius + 1.0f; y += unitSizeY)
- {
- if (terrain->GetIsHoleFromFloats(x, y))
- {
- return;
- }
- }
- }
- }
-
- // reduce ground decals size depending on distance to the ground
-
- // delete decals what can not be correctly updated
- Vec3 vRadius(fRadius, fRadius, fRadius);
- AABB areaBox(vPos - vRadius, vPos + vRadius);
- Get3DEngine()->DeleteDecalsInRange(&areaBox, NULL);
-}
-
-float C3DEngine::GetMaxViewDistance(bool bScaled)
-{
- // lerp between specs
- float fMaxViewDist;
-
- // camera height lerp factor
- if (OceanToggle::IsActive() && !OceanRequest::OceanIsEnabled())
- {
- fMaxViewDist = m_fMaxViewDistHighSpec;
- }
- else
- {
- // spec lerp factor
- float lerpSpec = clamp_tpl(GetCVars()->e_MaxViewDistSpecLerp, 0.0f, 1.0f);
-
- // lerp between specs
- fMaxViewDist = m_fMaxViewDistLowSpec * (1.f - lerpSpec) + m_fMaxViewDistHighSpec * lerpSpec;
-
- const float waterLevel = OceanToggle::IsActive() ? OceanRequest::GetOceanLevel() : GetWaterLevel();
- float lerpHeight = clamp_tpl(max(0.f, GetSystem()->GetViewCamera().GetPosition().z - waterLevel) / GetFloatCVar(e_MaxViewDistFullDistCamHeight), 0.0f, 1.0f);
-
- // lerp between prev result and high spec
- fMaxViewDist = fMaxViewDist * (1.f - lerpHeight) + m_fMaxViewDistHighSpec * lerpHeight;
- }
-
- if (bScaled)
- {
- fMaxViewDist *= m_fMaxViewDistScale;
- }
-
- // for debugging
- const float fMaxViewDistCVar = GetFloatCVar(e_MaxViewDistance);
- fMaxViewDist = (float)fsel(fMaxViewDistCVar, fMaxViewDistCVar, fMaxViewDist);
-
- fMaxViewDist = (float)fsel(fabsf(fMaxViewDist) - 0.100001f, fMaxViewDist, 0.100001f);
-
- // eliminate some floating point inconsistency here, there's no point in nitpicking 7999.9995 view distance vs 8000
- fMaxViewDist = AZ::ClampIfCloseMag(fMaxViewDist, float(round(fMaxViewDist)), 0.01f);
-
- return fMaxViewDist;
-}
-
-void C3DEngine::SetFrameLodInfo(const SFrameLodInfo& frameLodInfo)
-{
- if (frameLodInfo.fLodRatio != m_frameLodInfo.fLodRatio || frameLodInfo.fTargetSize != m_frameLodInfo.fTargetSize)
- {
- ++m_frameLodInfo.nID;
- m_frameLodInfo.fLodRatio = frameLodInfo.fLodRatio;
- m_frameLodInfo.fTargetSize = frameLodInfo.fTargetSize;
- }
- m_frameLodInfo.nMinLod = frameLodInfo.nMinLod;
- m_frameLodInfo.nMaxLod = frameLodInfo.nMaxLod;
-}
-
-void C3DEngine::SetFogColor(const Vec3& vFogColor)
-{
- m_vFogColor = vFogColor;
- GetRenderer()->SetClearColor(m_vFogColor);
-}
-
-Vec3 C3DEngine::GetFogColor()
-{
- return m_vFogColor;
-}
-
-void C3DEngine::GetSkyLightParameters(Vec3& sunDir, Vec3& sunIntensity, float& Km, float& Kr, float& g, Vec3& rgbWaveLengths)
-{
- CSkyLightManager::SSkyDomeCondition skyCond;
- m_pSkyLightManager->GetCurSkyDomeCondition(skyCond);
-
- g = skyCond.m_g;
- Km = skyCond.m_Km;
- Kr = skyCond.m_Kr;
- sunIntensity = skyCond.m_sunIntensity;
- rgbWaveLengths = skyCond.m_rgbWaveLengths;
- sunDir = skyCond.m_sunDirection;
-}
-
-void C3DEngine::SetSkyLightParameters(const Vec3& sunDir, const Vec3& sunIntensity, float Km, float Kr, float g, const Vec3& rgbWaveLengths, bool forceImmediateUpdate)
-{
- CSkyLightManager::SSkyDomeCondition skyCond;
-
- skyCond.m_g = g;
- skyCond.m_Km = Km;
- skyCond.m_Kr = Kr;
- skyCond.m_sunIntensity = sunIntensity;
- skyCond.m_rgbWaveLengths = rgbWaveLengths;
- skyCond.m_sunDirection = sunDir;
-
- m_pSkyLightManager->SetSkyDomeCondition(skyCond);
- if (forceImmediateUpdate && IsHDRSkyMaterial(GetSkyMaterial()))
- {
- m_pSkyLightManager->FullUpdate();
- }
-}
-
-void C3DEngine::SetLightsHDRDynamicPowerFactor(const float value)
-{
- m_fLightsHDRDynamicPowerFactor = value;
-}
-
-float C3DEngine::GetLightsHDRDynamicPowerFactor() const
-{
- return m_fLightsHDRDynamicPowerFactor;
-}
-
-bool C3DEngine::IsTessellationAllowedForShadowMap(const SRenderingPassInfo& passInfo) const
-{
-#ifdef MESH_TESSELLATION_ENGINE
- SRenderingPassInfo::EShadowMapType shadowType = passInfo.GetShadowMapType();
- switch (shadowType)
- {
- case SRenderingPassInfo::SHADOW_MAP_GSM:
- return passInfo.ShadowFrustumLod() < GetCVars()->e_ShadowsTessellateCascades;
- case SRenderingPassInfo::SHADOW_MAP_LOCAL:
- return GetCVars()->e_ShadowsTessellateDLights != 0;
- case SRenderingPassInfo::SHADOW_MAP_NONE:
- default:
- return false;
- }
-#else
-
- return false;
-
-#endif //#ifdef MESH_TESSELLATION_ENGINE
-}
-
-void C3DEngine::SetPhysMaterialEnumerator(IPhysMaterialEnumerator* pPhysMaterialEnumerator)
-{
- m_pPhysMaterialEnumerator = pPhysMaterialEnumerator;
-}
-
-IPhysMaterialEnumerator* C3DEngine::GetPhysMaterialEnumerator()
-{
- return m_pPhysMaterialEnumerator;
-}
-
-float C3DEngine::GetDistanceToSectorWithWater()
-{
- const Vec3 camPosition = GetRenderingCamera().GetPosition();
- const float minDistance = 0.1f;
- const bool oceanActive = OceanToggle::IsActive();
- const bool oceanEnabled = OceanRequest::OceanIsEnabled();
- float distance = minDistance;
-
- if (oceanActive && !oceanEnabled)
- {
- distance = std::numeric_limits::infinity();
- }
- else
- {
- if (oceanActive && oceanEnabled)
- {
- distance = camPosition.z - OceanRequest::GetOceanLevel();
- }
- else
- {
- distance = std::numeric_limits::infinity();
- }
- }
-
- return max(distance, minDistance);
-}
-
-Vec3 C3DEngine::GetSunColor() const
-{
- return m_pObjManager ? m_pObjManager->GetSunColor() : Vec3(0, 0, 0);
-}
-
-float C3DEngine::GetSSAOAmount() const
-{
- return m_pObjManager ? m_pObjManager->GetSSAOAmount() : 1.0f;
-}
-
-float C3DEngine::GetSSAOContrast() const
-{
- return m_pObjManager ? m_pObjManager->GetSSAOContrast() : 1.0f;
-}
-
-void C3DEngine::SetRainParams(const SRainParams& rainParams)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetRainParams().bIgnoreVisareas = rainParams.bIgnoreVisareas;
- m_pObjManager->GetRainParams().bDisableOcclusion = rainParams.bDisableOcclusion;
- m_pObjManager->GetRainParams().qRainRotation = rainParams.qRainRotation;
- m_pObjManager->GetRainParams().vWorldPos = rainParams.vWorldPos;
- m_pObjManager->GetRainParams().vColor = rainParams.vColor;
- m_pObjManager->GetRainParams().fAmount = rainParams.fAmount;
- m_pObjManager->GetRainParams().fCurrentAmount = rainParams.fCurrentAmount;
- m_pObjManager->GetRainParams().fRadius = rainParams.fRadius;
- m_pObjManager->GetRainParams().fFakeGlossiness = rainParams.fFakeGlossiness;
- m_pObjManager->GetRainParams().fFakeReflectionAmount = rainParams.fFakeReflectionAmount;
- m_pObjManager->GetRainParams().fDiffuseDarkening = rainParams.fDiffuseDarkening;
- m_pObjManager->GetRainParams().fRainDropsAmount = rainParams.fRainDropsAmount;
- m_pObjManager->GetRainParams().fRainDropsSpeed = rainParams.fRainDropsSpeed;
- m_pObjManager->GetRainParams().fRainDropsLighting = rainParams.fRainDropsLighting;
- m_pObjManager->GetRainParams().fMistAmount = rainParams.fMistAmount;
- m_pObjManager->GetRainParams().fMistHeight = rainParams.fMistHeight;
- m_pObjManager->GetRainParams().fPuddlesAmount = rainParams.fPuddlesAmount;
- m_pObjManager->GetRainParams().fPuddlesMaskAmount = rainParams.fPuddlesMaskAmount;
- m_pObjManager->GetRainParams().fPuddlesRippleAmount = rainParams.fPuddlesRippleAmount;
- m_pObjManager->GetRainParams().fSplashesAmount = rainParams.fSplashesAmount;
-
- m_pObjManager->GetRainParams().nUpdateFrameID = GetRenderer()->GetFrameID();
- }
-}
-
-bool C3DEngine::GetRainParams(SRainParams& rainParams)
-{
- bool bRet = false;
- const int nFrmID = GetRenderer()->GetFrameID();
- if (m_pObjManager)
- {
- // Copy shared rain data only
- rainParams.bIgnoreVisareas = m_pObjManager->GetRainParams().bIgnoreVisareas;
- rainParams.bDisableOcclusion = m_pObjManager->GetRainParams().bDisableOcclusion;
- rainParams.qRainRotation = m_pObjManager->GetRainParams().qRainRotation;
- rainParams.vWorldPos = m_pObjManager->GetRainParams().vWorldPos;
- rainParams.vColor = m_pObjManager->GetRainParams().vColor;
- rainParams.fAmount = m_pObjManager->GetRainParams().fAmount;
- rainParams.fCurrentAmount = m_pObjManager->GetRainParams().fCurrentAmount;
- rainParams.fRadius = m_pObjManager->GetRainParams().fRadius;
- rainParams.fFakeGlossiness = m_pObjManager->GetRainParams().fFakeGlossiness;
- rainParams.fFakeReflectionAmount = m_pObjManager->GetRainParams().fFakeReflectionAmount;
- rainParams.fDiffuseDarkening = m_pObjManager->GetRainParams().fDiffuseDarkening;
- rainParams.fRainDropsAmount = m_pObjManager->GetRainParams().fRainDropsAmount;
- rainParams.fRainDropsSpeed = m_pObjManager->GetRainParams().fRainDropsSpeed;
- rainParams.fRainDropsLighting = m_pObjManager->GetRainParams().fRainDropsLighting;
- rainParams.fMistAmount = m_pObjManager->GetRainParams().fMistAmount;
- rainParams.fMistHeight = m_pObjManager->GetRainParams().fMistHeight;
- rainParams.fPuddlesAmount = m_pObjManager->GetRainParams().fPuddlesAmount;
- rainParams.fPuddlesMaskAmount = m_pObjManager->GetRainParams().fPuddlesMaskAmount;
- rainParams.fPuddlesRippleAmount = m_pObjManager->GetRainParams().fPuddlesRippleAmount;
- rainParams.fSplashesAmount = m_pObjManager->GetRainParams().fSplashesAmount;
-
- if (!IsOutdoorVisible() && !rainParams.bIgnoreVisareas)
- {
- rainParams.fAmount = 0.f;
- }
-
- bRet = m_pObjManager->GetRainParams().nUpdateFrameID == nFrmID;
- }
- return bRet;
-}
-
-void C3DEngine::SetSnowSurfaceParams(const Vec3& vCenter, float fRadius, float fSnowAmount, float fFrostAmount, float fSurfaceFreezing)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetSnowParams().m_vWorldPos = vCenter;
- m_pObjManager->GetSnowParams().m_fRadius = fRadius;
- m_pObjManager->GetSnowParams().m_fSnowAmount = fSnowAmount;
- m_pObjManager->GetSnowParams().m_fFrostAmount = fFrostAmount;
- m_pObjManager->GetSnowParams().m_fSurfaceFreezing = fSurfaceFreezing;
- }
-}
-
-bool C3DEngine::GetSnowSurfaceParams(Vec3& vCenter, float& fRadius, float& fSnowAmount, float& fFrostAmount, float& fSurfaceFreezing)
-{
- bool bRet = false;
- if (m_pObjManager)
- {
- vCenter = m_pObjManager->GetSnowParams().m_vWorldPos;
- fRadius = m_pObjManager->GetSnowParams().m_fRadius;
- fSnowAmount = 0.f;
- fFrostAmount = 0.f;
- fSurfaceFreezing = 0.f;
- if (IsOutdoorVisible())
- {
- fSnowAmount = m_pObjManager->GetSnowParams().m_fSnowAmount;
- fFrostAmount = m_pObjManager->GetSnowParams().m_fFrostAmount;
- fSurfaceFreezing = m_pObjManager->GetSnowParams().m_fSurfaceFreezing;
- }
- bRet = true;
- }
- return bRet;
-}
-
-void C3DEngine::SetSnowFallParams(int nSnowFlakeCount, float fSnowFlakeSize, float fSnowFallBrightness, float fSnowFallGravityScale, float fSnowFallWindScale, float fSnowFallTurbulence, float fSnowFallTurbulenceFreq)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetSnowParams().m_nSnowFlakeCount = nSnowFlakeCount;
- m_pObjManager->GetSnowParams().m_fSnowFlakeSize = fSnowFlakeSize;
- m_pObjManager->GetSnowParams().m_fSnowFallBrightness = fSnowFallBrightness;
- m_pObjManager->GetSnowParams().m_fSnowFallGravityScale = fSnowFallGravityScale;
- m_pObjManager->GetSnowParams().m_fSnowFallWindScale = fSnowFallWindScale;
- m_pObjManager->GetSnowParams().m_fSnowFallTurbulence = fSnowFallTurbulence;
- m_pObjManager->GetSnowParams().m_fSnowFallTurbulenceFreq = fSnowFallTurbulenceFreq;
- }
-}
-
-bool C3DEngine::GetSnowFallParams(int& nSnowFlakeCount, float& fSnowFlakeSize, float& fSnowFallBrightness, float& fSnowFallGravityScale, float& fSnowFallWindScale, float& fSnowFallTurbulence, float& fSnowFallTurbulenceFreq)
-{
- bool bRet = false;
- if (m_pObjManager)
- {
- nSnowFlakeCount = 0;
- fSnowFlakeSize = 0.f;
- fSnowFallBrightness = 0.f;
- fSnowFallGravityScale = 0.f;
- fSnowFallWindScale = 0.f;
- fSnowFallTurbulence = 0.f;
- fSnowFallTurbulenceFreq = 0.f;
- if (IsOutdoorVisible())
- {
- nSnowFlakeCount = m_pObjManager->GetSnowParams().m_nSnowFlakeCount;
- fSnowFlakeSize = m_pObjManager->GetSnowParams().m_fSnowFlakeSize;
- fSnowFallBrightness = m_pObjManager->GetSnowParams().m_fSnowFallBrightness;
- fSnowFallGravityScale = m_pObjManager->GetSnowParams().m_fSnowFallGravityScale;
- fSnowFallWindScale = m_pObjManager->GetSnowParams().m_fSnowFallWindScale;
- fSnowFallTurbulence = m_pObjManager->GetSnowParams().m_fSnowFallTurbulence;
- fSnowFallTurbulenceFreq = m_pObjManager->GetSnowParams().m_fSnowFallTurbulenceFreq;
- }
- bRet = true;
- }
- return bRet;
-}
-
-void C3DEngine::SetSunDir(const Vec3& newSunDir)
-{
- Vec3 vSunDirNormalized = newSunDir.normalized();
- m_vSunDirRealtime = vSunDirNormalized;
- if (vSunDirNormalized.Dot(m_vSunDirNormalized) < GetFloatCVar(e_SunAngleSnapDot) ||
- GetCurTimeSec() - m_fSunDirUpdateTime > GetFloatCVar(e_SunAngleSnapSec))
- {
- m_vSunDirNormalized = vSunDirNormalized;
- m_vSunDir = m_vSunDirNormalized * DISTANCE_TO_THE_SUN;
-
- m_fSunDirUpdateTime = GetCurTimeSec();
- }
-}
-
-Vec3 C3DEngine::GetSunDir() const
-{
- return m_vSunDir;
-}
-
-Vec3 C3DEngine::GetRealtimeSunDirNormalized() const
-{
- return m_vSunDirRealtime;
-}
-
-void C3DEngine::FreeRenderNodeState(IRenderNode* pEnt)
-{
- // make sure we don't try to update the streaming priority if an object
- // was added and removed in the same frame
- int nElementID = m_deferredRenderComponentStreamingPriorityUpdates.Find(pEnt);
- if (nElementID != -1)
- {
- m_deferredRenderComponentStreamingPriorityUpdates.DeleteFastUnsorted(nElementID);
- }
-
- m_pObjManager->RemoveFromRenderAllObjectDebugInfo(pEnt);
-
-
-#if !defined(_RELEASE)
- if (!gEnv->IsDedicated())
- {
- //As render nodes can be deleted in many places, it's possible that the map of render nodes used by stats gathering (r_stats 6, perfHUD, debug gun) could get aliased.
- //Ensure that this node is removed from the map to prevent a dereference after deletion.
- gEnv->pRenderer->ForceRemoveNodeFromDrawCallsMap(pEnt);
- }
-#endif
-
- m_lstAlwaysVisible.Delete(pEnt);
-
- if (m_pDecalManager && (pEnt->m_nInternalFlags & IRenderNode::DECAL_OWNER))
- {
- m_pDecalManager->OnEntityDeleted(pEnt);
- }
-
- if (pEnt->GetRenderNodeType() == eERType_Light)
- {
- GetRenderer()->OnEntityDeleted(pEnt);
- }
-
- if (pEnt->GetRndFlags() & (ERF_CASTSHADOWMAPS | ERF_HAS_CASTSHADOWMAPS))
- { // make sure pointer to object will not be used somewhere in the renderer
-#if !defined(_RELEASE)
- if (!(pEnt->GetRndFlags() & ERF_HAS_CASTSHADOWMAPS))
- {
- Warning("IRenderNode has ERF_CASTSHADOWMAPS set but not ERF_HAS_CASTSHADOWMAPS, name: '%s', class: '%s'.", pEnt->GetName(), pEnt->GetEntityClassName());
- }
-#endif
- Get3DEngine()->OnCasterDeleted(pEnt);
- }
-
- UnRegisterEntityImpl(pEnt);
-
- if (pEnt->m_pRNTmpData)
- {
- Get3DEngine()->FreeRNTmpData(&pEnt->m_pRNTmpData);
- assert(!pEnt->m_pRNTmpData);
- }
-}
-
-const char* C3DEngine::GetLevelFilePath(const char* szFileName)
-{
- cry_strcpy(m_sGetLevelFilePathTmpBuff, m_szLevelFolder);
- if (*szFileName && (*szFileName == '/' || *szFileName == '\\'))
- {
- cry_strcat(m_sGetLevelFilePathTmpBuff, szFileName + 1);
- }
- else
- {
- cry_strcat(m_sGetLevelFilePathTmpBuff, szFileName);
- }
- return m_sGetLevelFilePathTmpBuff;
-}
-
-void C3DEngine::ActivatePortal(const Vec3& vPos, bool bActivate, const char* szEntityName)
-{
- if (m_pVisAreaManager)
- {
- m_pVisAreaManager->ActivatePortal(vPos, bActivate, szEntityName);
- }
-}
-
-bool C3DEngine::SetStatInstGroup(int nGroupId, const IStatInstGroup& siGroup, int nSID)
-{
- if (m_pObjManager->GetListStaticTypes().Count() == 0)
- {
- AZ_Warning("C3DEngine", false, "Trying to set a Stat instance without an initialized Object manager. This might be caused by using the vegetation system without terrain.");
- return false;
- }
- if ((nSID < 0) || (nSID >= m_pObjManager->GetListStaticTypes().Count()))
- {
- AZ_Assert(false, "Invalid StatInst ID: %d (should be > 0 and < %d)", nSID, m_pObjManager->GetListStaticTypes().Count());
- return false;
- }
-
- m_fRefreshSceneDataCVarsSumm = -100;
-
- m_pObjManager->GetListStaticTypes()[nSID].resize(max(nGroupId + 1, m_pObjManager->GetListStaticTypes()[nSID].Count()));
-
- if (nGroupId < 0 || nGroupId >= m_pObjManager->GetListStaticTypes()[nSID].Count())
- {
- return false;
- }
-
- StatInstGroup& rGroup = m_pObjManager->GetListStaticTypes()[nSID][nGroupId];
-
- // If the object was changed in the editor, ResetActiveNodes will need to be called later
- // Keep track of the previous object so we can check for this later
- _smart_ptr pPreviousObject = rGroup.pStatObj;
- rGroup.pStatObj = siGroup.pStatObj;
-
- if (rGroup.pStatObj)
- {
- cry_strcpy(rGroup.szFileName, siGroup.pStatObj->GetFilePath());
- }
- else
- {
- rGroup.szFileName[0] = 0;
- }
-
- rGroup.bHideability = siGroup.bHideability;
- rGroup.bHideabilitySecondary = siGroup.bHideabilitySecondary;
- rGroup.nPlayerHideable = siGroup.nPlayerHideable;
- rGroup.fBending = siGroup.fBending;
- rGroup.nCastShadowMinSpec = siGroup.nCastShadowMinSpec;
- rGroup.bRecvShadow = siGroup.bRecvShadow;
- rGroup.bDynamicDistanceShadows = siGroup.bDynamicDistanceShadows;
-
- rGroup.bUseAlphaBlending = siGroup.bUseAlphaBlending;
- rGroup.fSpriteDistRatio = siGroup.fSpriteDistRatio;
- rGroup.fLodDistRatio = siGroup.fLodDistRatio;
- rGroup.fShadowDistRatio = siGroup.fShadowDistRatio;
- rGroup.fMaxViewDistRatio = siGroup.fMaxViewDistRatio;
-
- rGroup.fBrightness = siGroup.fBrightness;
-
- _smart_ptr pPreviousGroupMaterial = rGroup.pMaterial;
- rGroup.pMaterial = siGroup.pMaterial;
-
- rGroup.fDensity = siGroup.fDensity;
- rGroup.fElevationMax = siGroup.fElevationMax;
- rGroup.fElevationMin = siGroup.fElevationMin;
- rGroup.fSize = siGroup.fSize;
- rGroup.fSizeVar = siGroup.fSizeVar;
- rGroup.fSlopeMax = siGroup.fSlopeMax;
- rGroup.fSlopeMin = siGroup.fSlopeMin;
- rGroup.fStiffness = siGroup.fStiffness;
- rGroup.fDamping = siGroup.fDamping;
- rGroup.fVariance = siGroup.fVariance;
- rGroup.fAirResistance = siGroup.fAirResistance;
-
- rGroup.bRandomRotation = siGroup.bRandomRotation;
- rGroup.nRotationRangeToTerrainNormal = siGroup.nRotationRangeToTerrainNormal;
- rGroup.nMaterialLayers = siGroup.nMaterialLayers;
-
- rGroup.bAllowIndoor = siGroup.bAllowIndoor;
- rGroup.fAlignToTerrainCoefficient = siGroup.fAlignToTerrainCoefficient;
-
- rGroup.bAutoMerged = siGroup.bAutoMerged;
- rGroup.minConfigSpec = siGroup.minConfigSpec;
-
- rGroup.nID = siGroup.nID;
-
- rGroup.Update(GetCVars(), Get3DEngine()->GetGeomDetailScreenRes());
-
- MarkRNTmpDataPoolForReset();
-
- return true;
-}
-
-bool C3DEngine::GetStatInstGroup(int nGroupId, IStatInstGroup& siGroup, int nSID)
-{
- assert(nSID >= 0 && nSID < m_pObjManager->GetListStaticTypes().Count());
-
- if (nGroupId < 0 || nGroupId >= m_pObjManager->GetListStaticTypes()[nSID].Count())
- {
- return false;
- }
-
- StatInstGroup& rGroup = m_pObjManager->GetListStaticTypes()[nSID][nGroupId];
-
- siGroup.pStatObj = rGroup.pStatObj;
- if (siGroup.pStatObj)
- {
- cry_strcpy(siGroup.szFileName, rGroup.pStatObj->GetFilePath());
- }
-
- siGroup.bHideability = rGroup.bHideability;
- siGroup.bHideabilitySecondary = rGroup.bHideabilitySecondary;
- siGroup.nPlayerHideable = rGroup.nPlayerHideable;
- siGroup.fBending = rGroup.fBending;
- siGroup.nCastShadowMinSpec = rGroup.nCastShadowMinSpec;
- siGroup.bRecvShadow = rGroup.bRecvShadow;
- siGroup.bDynamicDistanceShadows = rGroup.bDynamicDistanceShadows;
-
- siGroup.bUseAlphaBlending = rGroup.bUseAlphaBlending;
- siGroup.fSpriteDistRatio = rGroup.fSpriteDistRatio;
- siGroup.fLodDistRatio = rGroup.fLodDistRatio;
- siGroup.fShadowDistRatio = rGroup.fShadowDistRatio;
- siGroup.fMaxViewDistRatio = rGroup.fMaxViewDistRatio;
-
- siGroup.fBrightness = rGroup.fBrightness;
- siGroup.pMaterial = rGroup.pMaterial;
-
- siGroup.fDensity = rGroup.fDensity;
- siGroup.fElevationMax = rGroup.fElevationMax;
- siGroup.fElevationMin = rGroup.fElevationMin;
- siGroup.fSize = rGroup.fSize;
- siGroup.fSizeVar = rGroup.fSizeVar;
- siGroup.fSlopeMax = rGroup.fSlopeMax;
- siGroup.fSlopeMin = rGroup.fSlopeMin;
- siGroup.bAutoMerged = rGroup.bAutoMerged;
-
- siGroup.fStiffness = rGroup.fStiffness;
- siGroup.fDamping = rGroup.fDamping;
- siGroup.fVariance = rGroup.fVariance;
- siGroup.fAirResistance = rGroup.fAirResistance;
-
- siGroup.nID = rGroup.nID;
-
- return true;
-}
-
-void C3DEngine::UpdateStatInstGroups()
-{
- if (!m_pObjManager)
- {
- return;
- }
-
- for (uint32 nSID = 0; nSID < m_pObjManager->GetListStaticTypes().size(); nSID++)
- {
- PodArray& rGroupTable = m_pObjManager->GetListStaticTypes()[nSID];
- for (uint32 nGroupId = 0; nGroupId < rGroupTable.size(); nGroupId++)
- {
- StatInstGroup& rGroup = rGroupTable[nGroupId];
- rGroup.Update(GetCVars(), Get3DEngine()->GetGeomDetailScreenRes());
- }
- }
-}
-
-void C3DEngine::GetMemoryUsage(class ICrySizer* pSizer) const
-{
- pSizer->AddObject(this, sizeof(*this) + (GetCVars()->e_StreamCgfDebug ? 100 * 1024 * 1024 : 0));
- pSizer->AddObject(m_pCVars);
-
- pSizer->AddObject(m_lstStaticLights);
- pSizer->AddObject(m_arrLightProjFrustums);
-
- pSizer->AddObject(arrFPSforSaveLevelStats);
- pSizer->AddObject(m_lstAlwaysVisible);
-
- if (CTemporaryPool* pPool = CTemporaryPool::Get())
- {
- SIZER_COMPONENT_NAME(pSizer, "Temporary Pool");
- pPool->GetMemoryUsage(pSizer);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "RenderMeshMerger");
- m_pRenderMeshMerger->GetMemoryUsage(pSizer);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "Optics");
- pSizer->AddObject(m_pOpticsManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "SkyLightManager");
- pSizer->AddObject(m_pSkyLightManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "DecalManager");
- pSizer->AddObject(m_pDecalManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "OutdoorObjectsTree");
- pSizer->AddObject(m_pObjectsTree);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "ObjManager");
- pSizer->AddObject(m_pObjManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "Ocean");
- pSizer->AddObject(m_pOcean);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "VisAreas");
- pSizer->AddObject(m_pVisAreaManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "ClipVolumes");
- pSizer->AddObject(m_pClipVolumeManager);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "CoverageBuffer");
- pSizer->AddObject(m_pCoverageBuffer);
- }
-
- {
- SIZER_COMPONENT_NAME(pSizer, "RNTmpDataPool");
-
- CRNTmpData* pNext = NULL;
-
- for (CRNTmpData* pElem = m_LTPRootFree.pNext; pElem != &m_LTPRootFree; pElem = pNext)
- {
- pSizer->AddObject(pElem, sizeof(*pElem));
- pNext = pElem->pNext;
- }
-
- for (CRNTmpData* pElem = m_LTPRootUsed.pNext; pElem != &m_LTPRootUsed; pElem = pNext)
- {
- pSizer->AddObject(pElem, sizeof(*pElem));
- pNext = pElem->pNext;
- }
- }
-}
-
-void C3DEngine::GetResourceMemoryUsage(ICrySizer* pSizer, const AABB& cstAABB)
-{
- //////////////////////////////////////////////////////////////////////////
- std::vector cFoundRenderNodes;
- unsigned int nFoundObjects(0);
-
- nFoundObjects = GetObjectsInBox(cstAABB);
- cFoundRenderNodes.resize(nFoundObjects, NULL);
- GetObjectsInBox(cstAABB, &cFoundRenderNodes.front());
-
- size_t nCurrentRenderNode(0);
- size_t nTotalNumberOfRenderNodes(0);
-
- nTotalNumberOfRenderNodes = cFoundRenderNodes.size();
- for (nCurrentRenderNode = 0; nCurrentRenderNode < nTotalNumberOfRenderNodes; ++nCurrentRenderNode)
- {
- IRenderNode*& piRenderNode = cFoundRenderNodes[nCurrentRenderNode];
-
- _smart_ptr piMaterial(piRenderNode->GetMaterialOverride());
- if (!piMaterial)
- {
- piMaterial = piRenderNode->GetMaterial();
- }
-
- if (piMaterial)
- {
- piMaterial->GetResourceMemoryUsage(pSizer);
- }
-
- {
- IRenderMesh* piMesh(NULL);
- size_t nCount(0);
-
- piMesh = piRenderNode->GetRenderMesh(nCount);
- for (; piMesh; ++nCount, piMesh = piRenderNode->GetRenderMesh(nCount))
- {
- // Timur, RenderMesh may not be loaded due to streaming!
- piMesh->GetMemoryUsage(pSizer, IRenderMesh::MEM_USAGE_COMBINED);
- }
- }
- }
- //////////////////////////////////////////////////////////////////////////
-}
-
-bool C3DEngine::IsUnderWater(const Vec3& vPos) const
-{
- bool bUnderWater = false;
- // Check underwater
- AZ_UNUSED(vPos)
- CRY_PHYSICS_REPLACEMENT_ASSERT();
- return bUnderWater;
-}
-
-void C3DEngine::SetOceanRenderFlags(uint8 nFlags)
-{
- m_nOceanRenderFlags = nFlags;
-}
-
-uint32 C3DEngine::GetOceanVisiblePixelsCount() const
-{
- return COcean::GetVisiblePixelsCount();
-}
-
-float C3DEngine::GetBottomLevel(const Vec3& referencePos, float maxRelevantDepth, [[maybe_unused]] int objflags)
-{
- FUNCTION_PROFILER_3DENGINE;
-
- float terrainWorldZ = AzFramework::Terrain::TerrainDataRequests::GetDefaultTerrainHeight();
- AzFramework::Terrain::TerrainDataRequestBus::BroadcastResult(terrainWorldZ
- , &AzFramework::Terrain::TerrainDataRequests::GetHeightFromFloats
- , referencePos.x, referencePos.y, AzFramework::Terrain::TerrainDataRequests::Sampler::BILINEAR, nullptr);
-
- const float padding = 0.2f;
- float rayLength;
-
- // NOTE: Terrain is above referencePos, so referencePos is probably inside a voxel or something.
- if (terrainWorldZ <= referencePos.z)
- {
- rayLength = min(maxRelevantDepth, (referencePos.z - terrainWorldZ));
- }
- else
- {
- rayLength = maxRelevantDepth;
- }
-
- rayLength += padding * 2.0f;
-
- // Get bottom level
- CRY_PHYSICS_REPLACEMENT_ASSERT();
-
- // Terrain was above or too far below referencePos, and no solid object was close enough.
- return BOTTOM_LEVEL_UNKNOWN;
-}
-
-float C3DEngine::GetBottomLevel(const Vec3& referencePos, float maxRelevantDepth /* = 10.0f */)
-{
- return GetBottomLevel (referencePos, maxRelevantDepth, ent_terrain | ent_static | ent_sleeping_rigid | ent_rigid);
-}
-
-float C3DEngine::GetBottomLevel(const Vec3& referencePos, int objflags)
-{
- return GetBottomLevel (referencePos, 10.0f, objflags);
-}
-
-#if defined(USE_GEOM_CACHES)
-IGeomCache* C3DEngine::LoadGeomCache(const char* szFileName)
-{
- if (!szFileName || !szFileName[0])
- {
- m_pSystem->Warning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_ERROR, 0, 0, "I3DEngine::LoadGeomCache: filename is not specified");
- return 0;
- }
-
- return m_pGeomCacheManager->LoadGeomCache(szFileName);
-}
-
-IGeomCache* C3DEngine::FindGeomCacheByFilename(const char* szFileName)
-{
- if (!szFileName || szFileName[0] == 0)
- {
- return NULL;
- }
-
- return m_pGeomCacheManager->FindGeomCacheByFilename(szFileName);
-}
-#endif
-
-namespace
-{
- // The return value is the next position of the source buffer.
- int ReadFromBuffer(const char* pSource, int nSourceSize, int nSourcePos, void* pDest, int nDestSize)
- {
- if (pDest == 0 || nDestSize == 0)
- {
- return 0;
- }
-
- if (nSourcePos < 0 || nSourcePos >= nSourceSize)
- {
- return 0;
- }
-
- memcpy(pDest, &pSource[nSourcePos], nDestSize);
-
- return nSourcePos + nDestSize;
- }
-}
-
-IStatObj* C3DEngine::LoadDesignerObject(int nVersion, const char* szBinaryStream, int size)
-{
- if (nVersion < 0 || nVersion > 2)
- {
- return NULL;
- }
-
- int nBufferPos = 0;
- int32 nSubObjectCount = 0;
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nSubObjectCount, sizeof(int32));
-
- IStatObj* pStatObj = gEnv->p3DEngine->CreateStatObj();
- if (!pStatObj)
- {
- return NULL;
- }
-
- std::vector statObjList;
- if (nSubObjectCount == 2)
- {
- pStatObj->AddSubObject(gEnv->p3DEngine->CreateStatObj());
- pStatObj->AddSubObject(gEnv->p3DEngine->CreateStatObj());
- pStatObj->GetIndexedMesh()->FreeStreams();
- statObjList.push_back(pStatObj->GetSubObject(0)->pStatObj);
- statObjList.push_back(pStatObj->GetSubObject(1)->pStatObj);
- }
- else
- {
- statObjList.push_back(pStatObj);
- }
-
- if (nVersion == 2)
- {
- int32 nStaticObjFlags = 0;
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nStaticObjFlags, sizeof(int32));
- pStatObj->SetFlags(nStaticObjFlags);
- }
-
- for (int k = 0, iCount(statObjList.size()); k < iCount; ++k)
- {
- int32 nPositionCount = 0;
- int32 nTexCoordCount = 0;
- int32 nFaceCount = 0;
- int32 nIndexCount = 0;
- int32 nTangentCount = 0;
- int32 nSubsetCount = 0;
-
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nPositionCount, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nTexCoordCount, sizeof(int32));
- if (nPositionCount <= 0 || nTexCoordCount <= 0)
- {
- return NULL;
- }
-
- if (nVersion == 0)
- {
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nFaceCount, sizeof(int32));
- if (nFaceCount <= 0)
- {
- return NULL;
- }
- }
- else if (nVersion >= 1)
- {
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nIndexCount, sizeof(int32));
- if (nIndexCount <= 0)
- {
- return NULL;
- }
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nTangentCount, sizeof(int32));
- }
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nSubsetCount, sizeof(int32));
- IIndexedMesh* pMesh = statObjList[k]->GetIndexedMesh();
- if (!pMesh)
- {
- return NULL;
- }
-
- pMesh->FreeStreams();
- pMesh->SetVertexCount((int)nPositionCount);
- pMesh->SetFaceCount((int)nFaceCount);
- pMesh->SetIndexCount((int)nIndexCount);
- pMesh->SetTexCoordCount((int)nTexCoordCount);
-
- Vec3* const positions = pMesh->GetMesh()->GetStreamPtr(CMesh::POSITIONS);
- Vec3* const normals = pMesh->GetMesh()->GetStreamPtr(CMesh::NORMALS);
- SMeshTexCoord* const texcoords = pMesh->GetMesh()->GetStreamPtr(CMesh::TEXCOORDS);
-
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, positions, sizeof(Vec3) * nPositionCount);
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, normals, sizeof(Vec3) * nPositionCount);
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, texcoords, sizeof(SMeshTexCoord) * nTexCoordCount);
- if (nVersion == 0)
- {
- SMeshFace* const faces = pMesh->GetMesh()->GetStreamPtr(CMesh::FACES);
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, faces, sizeof(SMeshFace) * nFaceCount);
- }
- else if (nVersion >= 1)
- {
- vtx_idx* const indices = pMesh->GetMesh()->GetStreamPtr(CMesh::INDICES);
- if constexpr (sizeof(vtx_idx) == sizeof(uint16))
- {
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, indices, sizeof(uint16) * nIndexCount);
- }
- else
- {
- uint16* indices16 = new uint16[nIndexCount];
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, indices16, sizeof(uint16) * nIndexCount);
- for (int32 i = 0; i < nIndexCount; ++i)
- {
- indices[i] = (vtx_idx)indices16[i];
- }
- delete [] indices16;
- }
- pMesh->SetTangentCount((int)nTangentCount);
- if (nTangentCount > 0)
- {
- SMeshTangents* const tangents = pMesh->GetMesh()->GetStreamPtr(CMesh::TANGENTS);
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, tangents, sizeof(SMeshTangents) * nTangentCount);
- }
- }
-
- pMesh->SetSubSetCount(nSubsetCount);
- for (int i = 0; i < nSubsetCount; ++i)
- {
- SMeshSubset subset;
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &subset.vCenter, sizeof(Vec3));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &subset.fRadius, sizeof(float));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &subset.fTexelDensity, sizeof(float));
-
- int32 nFirstIndexId = 0;
- int32 nNumIndices = 0;
- int32 nFirstVertId = 0;
- int32 nNumVerts = 0;
- int32 nMatID = 0;
- int32 nMatFlags = 0;
- int32 nPhysicalizeType = 0;
-
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nFirstIndexId, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nNumIndices, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nFirstVertId, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nNumVerts, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nMatID, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nMatFlags, sizeof(int32));
- nBufferPos = ReadFromBuffer(szBinaryStream, size, nBufferPos, &nPhysicalizeType, sizeof(int32));
-
- pMesh->SetSubsetBounds(i, subset.vCenter, subset.fRadius);
- pMesh->SetSubsetIndexVertexRanges(i, (int)nFirstIndexId, (int)nNumIndices, (int)nFirstVertId, (int)nNumVerts);
- pMesh->SetSubsetMaterialId(i, nMatID == -1 ? 0 : (int)nMatID);
- pMesh->SetSubsetMaterialProperties(i, (int)nMatFlags, (int)nPhysicalizeType, eVF_P3F_C4B_T2F);
- }
-
- if (nVersion == 0)
- {
-#if defined(WIN32) || defined(WIN64)
- pMesh->Optimize();
-#endif
- }
-
- statObjList[k]->Invalidate(true);
- }
-
- return pStatObj;
-}
-
-float C3DEngine::GetWaterLevel(const Vec3* pvPos, IPhysicalEntity* pent, bool bAccurate)
-{
- FUNCTION_PROFILER_3DENGINE;
- if (!OceanGlobals::g_oceanParamsMutex.try_lock())
- {
- return OceanGlobals::g_oceanLevel;
- }
-
- bool bInVisarea = m_pVisAreaManager && m_pVisAreaManager->GetVisAreaFromPos(*pvPos) != 0;
-
-
- AZ_UNUSED(pent);
-
- float max_level = (!bInVisarea) ? (bAccurate ? GetAccurateOceanHeight(*pvPos) : GetWaterLevel()) : WATER_LEVEL_UNKNOWN;
-
-
- OceanGlobals::g_oceanParamsMutex.unlock();
- return max(WATER_LEVEL_UNKNOWN, max_level);
-}
-
-void C3DEngine::SetShadowsGSMCache(bool bCache)
-{
- if (bCache)
- {
- m_nGsmCache = m_pConsole->GetCVar("r_ShadowsCache")->GetIVal();
- }
- else
- {
- m_nGsmCache = 0;
- }
-}
-
-float C3DEngine::GetAccurateOceanHeight(const Vec3& pCurrPos) const
-{
- FUNCTION_PROFILER_3DENGINE;
-
- static int nFrameID = -1;
- const int nEngineFrameID = GetRenderer()->GetFrameID();
- static float fWaterLevel = 0;
- if (nFrameID != nEngineFrameID && m_pOcean)
- {
- fWaterLevel = OceanToggle::IsActive() ? OceanRequest::GetOceanLevel() : m_pOcean->GetWaterLevel();
- nFrameID = nEngineFrameID;
- }
-
- const float waterLevel = fWaterLevel + COcean::GetWave(pCurrPos, GetRenderer()->GetFrameID());
- return waterLevel;
-}
-
-I3DEngine::CausticsParams C3DEngine::GetCausticsParams() const
-{
- I3DEngine::CausticsParams params;
- if (OceanToggle::IsActive())
- {
- params.tiling = OceanRequest::GetCausticsTiling();
- params.distanceAttenuation = OceanRequest::GetCausticsDistanceAttenuation();
- params.depth = OceanRequest::GetCausticsDepth();
- params.intensity = OceanRequest::GetCausticsIntensity();
- }
- else
- {
- params.tiling = m_oceanCausticsTiling;
- params.distanceAttenuation = m_oceanCausticsDistanceAtten;
- params.depth = m_oceanCausticDepth;
- params.intensity = m_oceanCausticIntensity;
- }
- params.height = 0.0f; // @TODO: (@pruiksma) Parameter not currently accessible, need to decide whether to rip out or start using. [LY-62048]
- return params;
-}
-
-void C3DEngine::GetHDRSetupParams(Vec4 pParams[5]) const
-{
- float hdrBloomAmount;
- GetPostEffectParam("Global_User_HDRBloom", hdrBloomAmount);
- pParams[0] = m_vHDRFilmCurveParams;
- pParams[1] = Vec4(hdrBloomAmount * 0.3f, hdrBloomAmount * 0.3f, hdrBloomAmount * 0.3f, m_fGrainAmount);
- pParams[2] = Vec4(m_vColorBalance, m_fHDRSaturation);
- pParams[3] = Vec4(m_vHDREyeAdaptation, 1.0f);
- pParams[4] = Vec4(m_vHDREyeAdaptationLegacy, 1.0f);
-};
-
-
-I3DEngine::OceanAnimationData C3DEngine::GetOceanAnimationParams() const
-{
- I3DEngine::OceanAnimationData data;
- if (OceanToggle::IsActive())
- {
- data.fWavesAmount = OceanRequest::GetWavesAmount();
- data.fWavesSize = OceanRequest::GetWavesSize();
- data.fWavesSpeed = OceanRequest::GetWavesSpeed();
- data.fWindDirection = OceanRequest::GetWindDirection();
- data.fWindSpeed = OceanRequest::GetWindSpeed();
- }
- else
- {
- data.fWavesAmount = m_oceanWavesAmount;
- data.fWavesSize = m_oceanWavesSize;
- data.fWavesSpeed = m_oceanWavesSpeed;
- data.fWindDirection = m_oceanWindDirection;
- data.fWindSpeed = m_oceanWindSpeed;
- }
-
- sincos_tpl(data.fWindDirection, &data.fWindDirectionU, &data.fWindDirectionV);
- return data;
-}
-
-IVisArea* C3DEngine::CreateVisArea(uint64 visGUID)
-{
- return m_pObjManager ? m_pVisAreaManager->CreateVisArea(visGUID) : 0;
-}
-
-void C3DEngine::DeleteVisArea(IVisArea* pVisArea)
-{
- if (!m_pVisAreaManager->IsValidVisAreaPointer((CVisArea*)pVisArea))
- {
- Warning("I3DEngine::DeleteVisArea: Invalid VisArea pointer");
- return;
- }
- if (m_pObjManager)
- {
- CVisArea* pArea = (CVisArea*)pVisArea;
-
- PodArray lstEntitiesInArea;
- if (pArea->m_pObjectsTree)
- {
- pArea->m_pObjectsTree->MoveObjectsIntoList(&lstEntitiesInArea, NULL);
- }
-
- // unregister from indoor
- for (int i = 0; i < lstEntitiesInArea.Count(); i++)
- {
- Get3DEngine()->UnRegisterEntityDirect(lstEntitiesInArea[i].pNode);
- }
-
- if (pArea->m_pObjectsTree)
- {
- assert(pArea->m_pObjectsTree->GetObjectsCount(eMain) == 0);
- }
-
- m_pVisAreaManager->DeleteVisArea((CVisArea*)pVisArea);
-
- for (int i = 0; i < lstEntitiesInArea.Count(); i++)
- {
- Get3DEngine()->RegisterEntity(lstEntitiesInArea[i].pNode);
- }
- }
-}
-
-void C3DEngine::UpdateVisArea(IVisArea* pVisArea, const Vec3* pPoints, int nCount, const char* szName,
- const SVisAreaInfo& info, bool bReregisterObjects)
-{
- if (!m_pObjManager)
- {
- return;
- }
-
- CVisArea* pArea = (CVisArea*)pVisArea;
-
- // PrintMessage("C3DEngine::UpdateVisArea: %s", szName);
-
- Vec3 vTotalBoxMin = pArea->m_boxArea.min;
- Vec3 vTotalBoxMax = pArea->m_boxArea.max;
-
- m_pVisAreaManager->UpdateVisArea((CVisArea*)pVisArea, pPoints, nCount, szName, info);
-
- if (((CVisArea*)pVisArea)->m_pObjectsTree && ((CVisArea*)pVisArea)->m_pObjectsTree->GetObjectsCount(eMain))
- {
- // merge old and new bboxes
- vTotalBoxMin.CheckMin(pArea->m_boxArea.min);
- vTotalBoxMax.CheckMax(pArea->m_boxArea.max);
- }
- else
- {
- vTotalBoxMin = pArea->m_boxArea.min;
- vTotalBoxMax = pArea->m_boxArea.max;
- }
-
- if (bReregisterObjects)
- {
- m_pObjManager->ReregisterEntitiesInArea(vTotalBoxMin - Vec3(8, 8, 8), vTotalBoxMax + Vec3(8, 8, 8));
- }
-}
-
-IClipVolume* C3DEngine::CreateClipVolume()
-{
- return m_pClipVolumeManager->CreateClipVolume();
-}
-
-void C3DEngine::DeleteClipVolume(IClipVolume* pClipVolume)
-{
- m_pClipVolumeManager->DeleteClipVolume(pClipVolume);
-}
-
-void C3DEngine::UpdateClipVolume(IClipVolume* pClipVolume, _smart_ptr pRenderMesh, IBSPTree3D* pBspTree, const Matrix34& worldTM, bool bActive, uint32 flags, const char* szName)
-{
- m_pClipVolumeManager->UpdateClipVolume(pClipVolume, pRenderMesh, pBspTree, worldTM, bActive, flags, szName);
-}
-
-void C3DEngine::ResetParticlesAndDecals()
-{
- if (m_pDecalManager)
- {
- m_pDecalManager->Reset();
- }
-}
-
-IRenderNode* C3DEngine::CreateRenderNode(EERType type)
-{
- switch (type)
- {
- case eERType_Cloud:
- {
- CCloudRenderNode* pCloud = new CCloudRenderNode();
- return pCloud;
- }
- case eERType_FogVolume:
- {
- CFogVolumeRenderNode* pFogVolume = new CFogVolumeRenderNode();
- return pFogVolume;
- }
- case eERType_Decal:
- {
- CDecalRenderNode* pDecal = new CDecalRenderNode();
- return pDecal;
- }
- case eERType_WaterVolume:
- {
- CWaterVolumeRenderNode* pWaterVolume = new CWaterVolumeRenderNode();
- return pWaterVolume;
- }
- case eERType_DistanceCloud:
- {
- CDistanceCloudRenderNode* pRenderNode = new CDistanceCloudRenderNode();
- return pRenderNode;
- }
- case eERType_VolumeObject:
- {
- IVolumeObjectRenderNode* pRenderNode = new CVolumeObjectRenderNode();
- return pRenderNode;
- }
-#if !defined(EXCLUDE_DOCUMENTATION_PURPOSE)
- case eERType_PrismObject:
- {
- IPrismRenderNode* pRenderNode = new CPrismRenderNode();
- return pRenderNode;
- }
-#endif // EXCLUDE_DOCUMENTATION_PURPOSE
-
-#if defined(USE_GEOM_CACHES)
- case eERType_GeomCache:
- {
- IRenderNode* pRenderNode = new CGeomCacheRenderNode();
- return pRenderNode;
- }
-#endif
- }
- assert(!"C3DEngine::CreateRenderNode: Specified node type is not supported.");
- return 0;
-}
-
-void C3DEngine::DeleteRenderNode(IRenderNode* pRenderNode)
-{
- UnRegisterEntityDirect(pRenderNode);
- delete pRenderNode;
-}
-
-
-Vec3 C3DEngine::GetWind(const AABB& box, bool bIndoors) const
-{
- FUNCTION_PROFILER_3DENGINE;
-
-#if defined(CONSOLE_CONST_CVAR_MODE)
- if constexpr (!CVars::e_Wind)
-#else
- if (!m_pCVars->e_Wind)
-#endif
- {
- return Vec3_Zero;
- }
-
- // Start with global wind.
- Vec3 vWind = GetGlobalWind(bIndoors);
-
-#if defined(CONSOLE_CONST_CVAR_MODE)
- if constexpr (CVars::e_WindAreas)
-#else
- if (m_pCVars->e_WindAreas)
-#endif
- {
- const Physics::WindRequests* windRequests = AZ::Interface::Get();
- if (windRequests)
- {
- const AZ::Aabb aabb = LyAABBToAZAabb(box);
- const AZ::Vector3 wind = windRequests->GetWind(aabb);
- vWind += AZVec3ToLYVec3(wind);
- }
- }
-
- return vWind;
-}
-
-Vec3 C3DEngine::GetGlobalWind(bool bIndoors) const
-{
- FUNCTION_PROFILER_3DENGINE;
-
- // We assume indoor wind is zero.
- if (!m_pCVars->e_Wind || bIndoors)
- {
- return Vec3_Zero;
- }
-
- const Physics::WindRequests* windRequests = AZ::Interface::Get();
- if (windRequests)
- {
- const AZ::Vector3 wind = windRequests->GetGlobalWind();
- return AZVec3ToLYVec3(wind);
- }
- return Vec3_Zero;
-}
-
-bool C3DEngine::SampleWind(Vec3* pSamples, int nSamples, const AABB& volume, bool bIndoors) const
-{
- FUNCTION_PROFILER_3DENGINE;
-
- if (!m_pCVars->e_Wind || nSamples == 0)
- {
- return false;
- }
-
- IF (m_nWindSamplePositions < (size_t)nSamples, 0)
- {
- if (m_pWindSamplePositions)
- {
- CryModuleMemalignFree(m_pWindSamplePositions);
- }
- m_nWindSamplePositions = nSamples;
- m_pWindSamplePositions = (Vec3*)CryModuleMemalign(m_nWindSamplePositions * sizeof(Vec3), 128u);
- }
-
- Vec3* pPositions = m_pWindSamplePositions;
- memcpy(pPositions, pSamples, sizeof(Vec3) * nSamples);
-
- // Start with global wind.
- Vec3 vWind = GetGlobalWind(bIndoors);
-
- for (int i = 0; i < nSamples; ++i)
- {
- pSamples[i] = vWind;
- }
-
-#if defined(CONSOLE_CONST_CVAR_MODE)
- if constexpr (CVars::e_WindAreas)
-#else
- if (m_pCVars->e_WindAreas)
-#endif
- {
- const Physics::WindRequests* windRequests = AZ::Interface::Get();
- if (windRequests)
- {
- for (int i = 0; i < nSamples; ++i)
- {
- const AZ::Vector3 position = LYVec3ToAZVec3(pPositions[i]);
- const AZ::Vector3 wind = windRequests->GetWind(position);
- pSamples[i] += AZVec3ToLYVec3(wind);
- }
- }
- }
- AZ_UNUSED(volume);
- return true;
-}
-
-void C3DEngine::SetupBending(CRenderObject*& pObj, const IRenderNode* pNode, const float fRadiusVert, const SRenderingPassInfo& passInfo, bool alreadyDuplicated)
-{
- FUNCTION_PROFILER_3DENGINE;
- if (!GetCVars()->e_VegetationBending)
- {
- return;
- }
-
- if (!pNode->m_pRNTmpData)
- {
- return;
- }
-
- // Get/Update PhysAreaChanged Proxy
- {
- // Lock to avoid a situation where two threads simultaneously find that nProxId is ~0,
- // which would result in two physics proxies for the same render node which eventually leads to a crash
- AUTO_LOCK(m_PhysicsAreaUpdates.m_Mutex);
- const uint32 nProxyId = pNode->m_pRNTmpData->nPhysAreaChangedProxyId;
- if (nProxyId != ~0)
- {
- m_PhysicsAreaUpdates.UpdateProxy(pNode, nProxyId);
- }
- else
- {
- pNode->m_pRNTmpData->nPhysAreaChangedProxyId = m_PhysicsAreaUpdates.CreateProxy(pNode, Area_Air);
- }
- }
-
- CRNTmpData::SRNUserData& userData = pNode->m_pRNTmpData->userData;
- const bool needsUpdate = userData.nBendingLastFrame != (passInfo.GetMainFrameID() & ~(3 << 29));
- const bool isFirstFrame = userData.nBendingLastFrame == 0;
-
- const Vec3& vObjPos = pObj->GetTranslation();
- const float fMaxViewDist = const_cast(pNode)->GetMaxViewDist();
- const float fBendingAttenuation = 1.f - (pObj->m_fDistance / (fMaxViewDist * GetFloatCVar(e_WindBendingDistRatio)));
- uint32 bendingMaskOr = 0u;
- uint32 bendingMaskAnd = ~FOB_BENDED;
-
- if (fBendingAttenuation > 0.f && userData.m_Bending.m_fMainBendingScale > 0.f)
- {
- bendingMaskOr = FOB_BENDED;
- bendingMaskAnd = ~0u;
-
- userData.m_BendingPrev = userData.m_Bending;
-
- if (needsUpdate)
- {
- userData.nBendingLastFrame = passInfo.GetMainFrameID();
-
- static const float fBEND_RESPONSE = 0.25f;
- static const float fMAX_BENDING = 2.f;
- static const float fWAVE_PARALLEL = 0.008f;
- static const float fWAVE_TRANSVERSE = 0.002f;
-
- if (!userData.bWindCurrent)
- {
- userData.vCurrentWind = m_p3DEngine->GetWind(pNode->GetBBox(), !!pNode->GetEntityVisArea());
- userData.bWindCurrent = true;
- }
-
- // Soft clamp bending from wind amplitude.
- Vec2 vBending = Vec2(userData.vCurrentWind) * fBEND_RESPONSE;
- vBending *= fMAX_BENDING / (fMAX_BENDING + vBending.GetLength());
- vBending *= fBendingAttenuation;
-
- SBending* pBending = &userData.m_Bending;
-
- float fWaveFreq = 0.4f / (fRadiusVert + 1.f) + 0.2f;
-
- if (!userData.bBendingSet)
- {
- // First time shown, set full bending.
- pBending->m_vBending = vBending;
- userData.bBendingSet = true;
- }
- else
- {
- // Already visible, fade toward current value.
- float fInterp = min(gEnv->pTimer->GetFrameTime() * fWaveFreq * 0.5f, 1.f);
- pBending->m_vBending += (vBending - pBending->m_vBending) * fInterp;
- }
-
- pBending->m_Waves[0].m_Level = 0.000f;
- pBending->m_Waves[0].m_Freq = fWaveFreq;
- pBending->m_Waves[0].m_Phase = vObjPos.x * 0.125f;
- pBending->m_Waves[0].m_Amp = pBending->m_vBending.x * fWAVE_PARALLEL + pBending->m_vBending.y * fWAVE_TRANSVERSE;
- pBending->m_Waves[0].m_eWFType = eWF_Sin;
-
- pBending->m_Waves[1].m_Level = 0.000f;
- pBending->m_Waves[1].m_Freq = fWaveFreq * 1.125f;
- pBending->m_Waves[1].m_Phase = vObjPos.y * 0.125f;
- pBending->m_Waves[1].m_Amp = pBending->m_vBending.y * fWAVE_PARALLEL - pBending->m_vBending.x * fWAVE_TRANSVERSE;
- pBending->m_Waves[1].m_eWFType = eWF_Sin;
- }
-
- // When starting fresh, we use the same bend info for previous so
- // that we don't get crazy motion changes.
- if (isFirstFrame)
- {
- userData.m_BendingPrev = userData.m_Bending;
- }
- }
-
- if (!alreadyDuplicated)
- {
- pObj = GetRenderer()->EF_DuplicateRO(pObj, passInfo);
- }
- SRenderObjData* pOD = GetRenderer()->EF_GetObjData(pObj, true, passInfo.ThreadID());
- if (!pOD)
- {
- return;
- }
-
- pObj->m_ObjFlags |= bendingMaskOr | FOB_DYNAMIC_OBJECT | FOB_MOTION_BLUR;
- pObj->m_ObjFlags &= bendingMaskAnd;
- pOD->m_pBending = Get3DEngine()->GetBendingEntry(&userData.m_Bending, passInfo);
- pOD->m_BendingPrev = Get3DEngine()->GetBendingEntry(&userData.m_BendingPrev, passInfo);
-}
-
-IVisArea* C3DEngine::GetVisAreaFromPos(const Vec3& vPos)
-{
- if (m_pObjManager && m_pVisAreaManager)
- {
- return m_pVisAreaManager->GetVisAreaFromPos(vPos);
- }
-
- return 0;
-}
-
-bool C3DEngine::IntersectsVisAreas(const AABB& box, void** pNodeCache)
-{
- if (m_pObjManager && m_pVisAreaManager)
- {
- return m_pVisAreaManager->IntersectsVisAreas(box, pNodeCache);
- }
- return false;
-}
-
-bool C3DEngine::ClipToVisAreas(IVisArea* pInside, Sphere& sphere, Vec3 const& vNormal, void* pNodeCache)
-{
- if (pInside)
- {
- return pInside->ClipToVisArea(true, sphere, vNormal);
- }
- else if (m_pVisAreaManager)
- {
- return m_pVisAreaManager->ClipOutsideVisAreas(sphere, vNormal, pNodeCache);
- }
- return false;
-}
-
-bool C3DEngine::IsVisAreasConnected(IVisArea* pArea1, IVisArea* pArea2, int nMaxRecursion, bool bSkipDisabledPortals)
-{
- if (pArea1 == pArea2)
- {
- return (true); // includes the case when both pArea1 & pArea2 are NULL (totally outside)
- }
- // not considered by the other checks
- if (!pArea1 || !pArea2)
- {
- return (false); // avoid a crash - better to put this check only
- }
- // here in one place than in all the places where this function is called
-
- nMaxRecursion *= 2; // include portals since portals are the areas
-
- if (m_pObjManager && m_pVisAreaManager)
- {
- return ((CVisArea*)pArea1)->FindVisArea((CVisArea*)pArea2, nMaxRecursion, bSkipDisabledPortals);
- }
-
- return false;
-}
-
-bool C3DEngine::IsOutdoorVisible()
-{
- if (m_pObjManager && m_pVisAreaManager)
- {
- return m_pVisAreaManager->IsOutdoorAreasVisible();
- }
-
- return false;
-}
-
-void C3DEngine::EnableOceanRendering(bool bOcean)
-{
- m_bOcean = bOcean;
-}
-
-IObjManager* C3DEngine::GetObjManager()
-{
- return Cry3DEngineBase::GetObjManager();
-}
-
-//////////////////////////////////////////////////////////////////////////
-IMaterialHelpers& C3DEngine::GetMaterialHelpers()
-{
- return Cry3DEngineBase::GetMatMan()->s_materialHelpers;
-}
-
-IMaterialManager* C3DEngine::GetMaterialManager()
-{
- return Cry3DEngineBase::GetMatMan();
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::AddTextureLoadHandler(ITextureLoadHandler* pHandler)
-{
- stl::push_back_unique(m_textureLoadHandlers, pHandler);
-}
-
-void C3DEngine::RemoveTextureLoadHandler(ITextureLoadHandler* pHandler)
-{
- stl::find_and_erase(m_textureLoadHandlers, pHandler);
-}
-
-ITextureLoadHandler* C3DEngine::GetTextureLoadHandlerForImage(const char* path)
-{
- const char* ext = PathUtil::GetExt(path);
-
- for (TTextureLoadHandlers::iterator iter = m_textureLoadHandlers.begin(); iter != m_textureLoadHandlers.end(); iter++)
- {
- if ((*iter)->SupportsExtension(ext))
- {
- return *iter;
- }
- }
-
- return nullptr;
-}
-
-void C3DEngine::CheckMemoryHeap()
-{
- assert (CryMemory::IsHeapValid());
-}
-
-//////////////////////////////////////////////////////////////////////////
-int C3DEngine::GetLoadedObjectCount()
-{
- int nObjectsLoaded = m_pObjManager ? m_pObjManager->GetLoadedObjectCount() : 0;
- return nObjectsLoaded;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::GetLoadedStatObjArray(IStatObj** pObjectsArray, int& nCount)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetLoadedStatObjArray(pObjectsArray, nCount);
- }
- else
- {
- nCount = 0;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::GetObjectsStreamingStatus(SObjectsStreamingStatus& outStatus)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetObjectsStreamingStatus(outStatus);
- }
- else
- {
- memset(&outStatus, 0, sizeof(outStatus));
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::GetStreamingSubsystemData(int subsystem, SStremaingBandwidthData& outData)
-{
- switch (subsystem)
- {
- case eStreamTaskTypeSound:
- // Audio: bandwidth stats
- break;
- case eStreamTaskTypeGeometry:
- m_pObjManager->GetBandwidthStats(&outData.fBandwidthRequested);
- break;
- case eStreamTaskTypeTexture:
- gEnv->pRenderer->GetBandwidthStats(&outData.fBandwidthRequested);
- break;
- }
-
-#if defined(STREAMENGINE_ENABLE_STATS)
- gEnv->pSystem->GetStreamEngine()->GetBandwidthStats((EStreamTaskType)subsystem, &outData.fBandwidthActual);
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::DeleteEntityDecals(IRenderNode* pEntity)
-{
- if (m_pDecalManager && pEntity && (pEntity->m_nInternalFlags & IRenderNode::DECAL_OWNER))
- {
- m_pDecalManager->OnEntityDeleted(pEntity);
- }
-}
-
-void C3DEngine::DeleteDecalsInRange(AABB* pAreaBox, IRenderNode* pEntity)
-{
- if (m_pDecalManager)
- {
- m_pDecalManager->DeleteDecalsInRange(pAreaBox, pEntity);
- }
-}
-
-void C3DEngine::LockCGFResources()
-{
- if (m_pObjManager)
- {
- m_pObjManager->SetLockCGFResources(true);
- }
-}
-
-void C3DEngine::UnlockCGFResources()
-{
- if (m_pObjManager)
- {
- bool bNeedToFreeCGFs = m_pObjManager->IsLockCGFResources();
- m_pObjManager->SetLockCGFResources(false);
- if (bNeedToFreeCGFs)
- {
- m_pObjManager->FreeNotUsedCGFs();
- }
- }
-}
-
-void C3DEngine::FreeUnusedCGFResources()
-{
- if (m_pObjManager)
- {
- m_pObjManager->FreeNotUsedCGFs();
- }
-}
-
-void CLightEntity::ShadowMapInfo::Release([[maybe_unused]] struct IRenderer* pRenderer)
-{
- delete this;
-}
-
-//////////////////////////////////////////////////////////////////////////
-IIndexedMesh* C3DEngine::CreateIndexedMesh()
-{
- return new CIndexedMesh();
-}
-
-void C3DEngine::SerializeState(TSerialize ser)
-{
- ser.Value("m_bOcean", m_bOcean);
- ser.Value("m_moonRotationLatitude", m_moonRotationLatitude);
- ser.Value("m_moonRotationLongitude", m_moonRotationLongitude);
- ser.Value("m_eShadowMode", *(alias_cast(&m_eShadowMode)));
- if (ser.IsReading())
- {
- UpdateMoonDirection();
- }
-
- if (m_pDecalManager)
- {
- m_pDecalManager->Serialize(ser);
- }
-
- m_pTimeOfDay->Serialize(ser);
-}
-
-void C3DEngine::PostSerialize(bool /*bReading*/)
-{
-}
-
-void C3DEngine::InitMaterialDefautMappingAxis(_smart_ptr pMat)
-{
- uint8 arrProj[3] = {'X', 'Y', 'Z'};
- pMat->m_ucDefautMappingAxis = 'Z';
- pMat->m_fDefautMappingScale = 1.f;
- for (int c = 0; c < 3 && c < pMat->GetSubMtlCount(); c++)
- {
- _smart_ptr pSubMat = (_smart_ptr)pMat->GetSubMtl(c);
- pSubMat->m_ucDefautMappingAxis = arrProj[c];
- pSubMat->m_fDefautMappingScale = pMat->m_fDefautMappingScale;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-CContentCGF* C3DEngine::CreateChunkfileContent(const char* filename)
-{
- return new CContentCGF(filename);
-}
-void C3DEngine::ReleaseChunkfileContent(CContentCGF* pCGF)
-{
- delete pCGF;
-}
-
-bool C3DEngine::LoadChunkFileContent(CContentCGF* pCGF, const char* filename, bool bNoWarningMode, bool bCopyChunkFile)
-{
- CLoadLogListener listener;
-
- if (!pCGF)
- {
- FileWarning(0, filename, "CGF Loading Failed: no content instance passed");
- }
- else
- {
- CLoaderCGF cgf;
-
- CReadOnlyChunkFile* pChunkFile = new CReadOnlyChunkFile(bCopyChunkFile, bNoWarningMode);
-
- if (cgf.LoadCGF(pCGF, filename, *pChunkFile, &listener))
- {
- pCGF->SetChunkFile(pChunkFile);
- return true;
- }
-
- CryWarning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_WARNING, "%s: Failed to load chunk file: '%s'", __FUNCTION__, cgf.GetLastError());
- delete pChunkFile;
- }
-
- return false;
-}
-
-bool C3DEngine::LoadChunkFileContentFromMem(CContentCGF* pCGF, const void* pData, size_t nDataLen, uint32 nLoadingFlags, bool bNoWarningMode, bool bCopyChunkFile)
-{
- if (!pCGF)
- {
- FileWarning(0, "", "CGF Loading Failed: no content instance passed");
- }
- else
- {
- CLoadLogListener listener;
-
- CLoaderCGF cgf;
- CReadOnlyChunkFile* pChunkFile = new CReadOnlyChunkFile(bCopyChunkFile, bNoWarningMode);
-
- if (cgf.LoadCGFFromMem(pCGF, pData, nDataLen, *pChunkFile, &listener, nLoadingFlags))
- {
- pCGF->SetChunkFile(pChunkFile);
- return true;
- }
-
- CryWarning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_WARNING, "%s: Failed to load chunk file: '%s'", __FUNCTION__, cgf.GetLastError());
- delete pChunkFile;
- }
-
- return false;
-}
-
-IChunkFile* C3DEngine::CreateChunkFile(bool bReadOnly)
-{
- if (bReadOnly)
- {
- return new CReadOnlyChunkFile(false);
- }
- else
- {
- return new CChunkFile;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-ChunkFile::IChunkFileWriter* C3DEngine::CreateChunkFileWriter(EChunkFileFormat eFormat, AZ::IO::IArchive* pPak, const char* filename) const
-{
- ChunkFile::CryPakFileWriter* const p = new ChunkFile::CryPakFileWriter();
-
- if (!p)
- {
- return 0;
- }
-
- if (!p->Create(pPak, filename))
- {
- delete p;
- return 0;
- }
-
- const ChunkFile::MemorylessChunkFileWriter::EChunkFileFormat fmt =
- (eFormat == I3DEngine::eChunkFileFormat_0x745)
- ? ChunkFile::MemorylessChunkFileWriter::eChunkFileFormat_0x745
- : ChunkFile::MemorylessChunkFileWriter::eChunkFileFormat_0x746;
-
- return new ChunkFile::MemorylessChunkFileWriter(fmt, p);
-}
-
-void C3DEngine::ReleaseChunkFileWriter(ChunkFile::IChunkFileWriter* p) const
-{
- if (p)
- {
- delete p->GetWriter();
- delete p;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-bool C3DEngine::CreateOcean(_smart_ptr pTerrainWaterMat, float waterLevel)
-{
- // make ocean surface
- SAFE_DELETE(m_pOcean);
-
- if (pTerrainWaterMat == nullptr)
- {
- if (!m_pTerrainWaterMat)
- {
- return false;
- }
-
- pTerrainWaterMat = m_pTerrainWaterMat;
- }
-
- if (OceanToggle::IsActive() ? OceanRequest::OceanIsEnabled() : (waterLevel > 0))
- {
- m_pOcean = new COcean(pTerrainWaterMat, waterLevel);
- }
- return m_pOcean != nullptr;
-}
-
-void C3DEngine::DeleteOcean()
-{
- SAFE_DELETE(m_pOcean);
-}
-
-void C3DEngine::ChangeOceanMaterial(_smart_ptr pMat)
-{
- if (m_pOcean)
- {
- m_pOcean->SetMaterial(pMat);
- }
-}
-
-void C3DEngine::ChangeOceanWaterLevel(float fWaterLevel)
-{
- COcean::SetWaterLevelInfo(fWaterLevel);
-
- if (m_pOcean)
- {
- m_pOcean->SetWaterLevel(fWaterLevel);
- }
-}
-
-void C3DEngine::SetStreamableListener(IStreamedObjectListener* pListener)
-{
- m_pStreamListener = pListener;
-}
-
-void C3DEngine::PrecacheLevel(bool bPrecacheAllVisAreas, Vec3* pPrecachePoints, int nPrecachePointsNum)
-{
- LOADING_TIME_PROFILE_SECTION;
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->PrecacheLevel(bPrecacheAllVisAreas, pPrecachePoints, nPrecachePointsNum);
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::SetGlobalParameter(E3DEngineParameter param, const Vec3& v)
-{
- float fValue = v.x;
- switch (param)
- {
- case E3DPARAM_SUN_COLOR:
- SetSunColor(v);
- break;
-
- case E3DPARAM_SUN_SPECULAR_MULTIPLIER:
- m_fSunSpecMult = v.x;
- break;
-
- case E3DPARAM_AMBIENT_GROUND_COLOR:
- m_vAmbGroundCol = v;
- break;
- case E3DPARAM_AMBIENT_MIN_HEIGHT:
- m_fAmbMaxHeight = v.x;
- break;
- case E3DPARAM_AMBIENT_MAX_HEIGHT:
- m_fAmbMinHeight = v.x;
- break;
-
- case E3DPARAM_SKY_HIGHLIGHT_POS:
- m_vSkyHightlightPos = v;
- break;
- case E3DPARAM_SKY_HIGHLIGHT_COLOR:
- m_vSkyHightlightCol = v;
- break;
- case E3DPARAM_SKY_HIGHLIGHT_SIZE:
- m_fSkyHighlightSize = fValue > 0.0f ? fValue : 0.0f;
- break;
- case E3DPARAM_VOLFOG_RAMP:
- m_volFogRamp = v;
- break;
- case E3DPARAM_VOLFOG_SHADOW_RANGE:
- m_volFogShadowRange = v;
- break;
- case E3DPARAM_VOLFOG_SHADOW_DARKENING:
- m_volFogShadowDarkening = v;
- break;
- case E3DPARAM_VOLFOG_SHADOW_ENABLE:
- m_volFogShadowEnable = v;
- break;
- case E3DPARAM_VOLFOG2_CTRL_PARAMS:
- m_volFog2CtrlParams = v;
- break;
- case E3DPARAM_VOLFOG2_SCATTERING_PARAMS:
- m_volFog2ScatteringParams = v;
- break;
- case E3DPARAM_VOLFOG2_RAMP:
- m_volFog2Ramp = v;
- break;
- case E3DPARAM_VOLFOG2_COLOR:
- m_volFog2Color = v;
- break;
- case E3DPARAM_VOLFOG2_GLOBAL_DENSITY:
- m_volFog2GlobalDensity = v;
- break;
- case E3DPARAM_VOLFOG2_HEIGHT_DENSITY:
- m_volFog2HeightDensity = v;
- break;
- case E3DPARAM_VOLFOG2_HEIGHT_DENSITY2:
- m_volFog2HeightDensity2 = v;
- break;
- case E3DPARAM_VOLFOG2_COLOR1:
- m_volFog2Color1 = v;
- break;
- case E3DPARAM_VOLFOG2_COLOR2:
- m_volFog2Color2 = v;
- break;
- case E3DPARAM_NIGHSKY_HORIZON_COLOR:
- m_nightSkyHorizonCol = v;
- break;
- case E3DPARAM_NIGHSKY_ZENITH_COLOR:
- m_nightSkyZenithCol = v;
- break;
- case E3DPARAM_NIGHSKY_ZENITH_SHIFT:
- m_nightSkyZenithColShift = v.x;
- break;
- case E3DPARAM_NIGHSKY_STAR_INTENSITY:
- m_nightSkyStarIntensity = v.x;
- break;
- case E3DPARAM_NIGHSKY_MOON_COLOR:
- m_nightMoonCol = v;
- break;
- case E3DPARAM_NIGHSKY_MOON_SIZE:
- m_nightMoonSize = v.x;
- break;
- case E3DPARAM_NIGHSKY_MOON_INNERCORONA_COLOR:
- m_nightMoonInnerCoronaCol = v;
- break;
- case E3DPARAM_NIGHSKY_MOON_INNERCORONA_SCALE:
- m_nightMoonInnerCoronaScale = v.x;
- break;
- case E3DPARAM_NIGHSKY_MOON_OUTERCORONA_COLOR:
- m_nightMoonOuterCoronaCol = v;
- break;
- case E3DPARAM_NIGHSKY_MOON_OUTERCORONA_SCALE:
- m_nightMoonOuterCoronaScale = v.x;
- break;
- case E3DPARAM_OCEANFOG_COLOR:
- m_oceanFogColor = v;
- break;
- case E3DPARAM_OCEANFOG_DENSITY:
- m_oceanFogDensity = v.x;
- break;
- case E3DPARAM_SKY_MOONROTATION:
- m_moonRotationLatitude = v.x;
- m_moonRotationLongitude = v.y;
- UpdateMoonDirection();
- break;
- case E3DPARAM_SKYBOX_MULTIPLIER:
- m_skyboxMultiplier = v.x;
- break;
- case E3DPARAM_DAY_NIGHT_INDICATOR:
- m_dayNightIndicator = v.x;
- // Audio: Set daylight parameter
- break;
- case E3DPARAM_FOG_COLOR2:
- m_fogColor2 = v;
- break;
- case E3DPARAM_FOG_RADIAL_COLOR:
- m_fogColorRadial = v;
- break;
- case E3DPARAM_VOLFOG_HEIGHT_DENSITY:
- m_volFogHeightDensity = Vec3(v.x, v.y, 0);
- break;
- case E3DPARAM_VOLFOG_HEIGHT_DENSITY2:
- m_volFogHeightDensity2 = Vec3(v.x, v.y, 0);
- break;
- case E3DPARAM_VOLFOG_GRADIENT_CTRL:
- m_volFogGradientCtrl = v;
- break;
- case E3DPARAM_VOLFOG_GLOBAL_DENSITY:
- m_volFogGlobalDensity = v.x;
- m_volFogFinalDensityClamp = v.z;
- break;
- case E3DPARAM_COLORGRADING_FILTERS_PHOTOFILTER_COLOR:
- m_pPhotoFilterColor = Vec4(v.x, v.y, v.z, 1);
- GetPostEffectBaseGroup()->SetParam("clr_ColorGrading_PhotoFilterColor", m_pPhotoFilterColor);
- break;
- case E3DPARAM_COLORGRADING_FILTERS_PHOTOFILTER_DENSITY:
- m_fPhotoFilterColorDensity = fValue;
- GetPostEffectBaseGroup()->SetParam("ColorGrading_PhotoFilterColorDensity", m_fPhotoFilterColorDensity);
- break;
- case E3DPARAM_COLORGRADING_FILTERS_GRAIN:
- m_fGrainAmount = fValue;
- GetPostEffectBaseGroup()->SetParam("ColorGrading_GrainAmount", m_fGrainAmount);
- break;
- case E3DPARAM_SKY_SKYBOX_ANGLE: // sky box rotation
- m_fSkyBoxAngle = fValue;
- break;
- case E3DPARAM_SKY_SKYBOX_STRETCHING: // sky box stretching
- m_fSkyBoxStretching = fValue;
- break;
- case E3DPARAM_HDR_FILMCURVE_SHOULDER_SCALE:
- m_vHDRFilmCurveParams.x = v.x;
- break;
- case E3DPARAM_HDR_FILMCURVE_LINEAR_SCALE:
- m_vHDRFilmCurveParams.y = v.x;
- break;
- case E3DPARAM_HDR_FILMCURVE_TOE_SCALE:
- m_vHDRFilmCurveParams.z = v.x;
- break;
- case E3DPARAM_HDR_FILMCURVE_WHITEPOINT:
- m_vHDRFilmCurveParams.w = v.x;
- break;
- case E3DPARAM_HDR_EYEADAPTATION_PARAMS:
- m_vHDREyeAdaptation = v;
- break;
- case E3DPARAM_HDR_EYEADAPTATION_PARAMS_LEGACY:
- m_vHDREyeAdaptationLegacy = v;
- break;
- case E3DPARAM_HDR_BLOOM_AMOUNT:
- m_fHDRBloomAmount = v.x;
- break;
- case E3DPARAM_HDR_COLORGRADING_COLOR_SATURATION:
- m_fHDRSaturation = v.x;
- break;
- case E3DPARAM_HDR_COLORGRADING_COLOR_BALANCE:
- m_vColorBalance = v;
- break;
- case E3DPARAM_CLOUDSHADING_MULTIPLIERS:
- m_fCloudShadingSunLightMultiplier = (v.x >= 0) ? v.x : 0;
- m_fCloudShadingSkyLightMultiplier = (v.y >= 0) ? v.y : 0;
- break;
- case E3DPARAM_CLOUDSHADING_SUNCOLOR:
- m_vCloudShadingCustomSunColor = v;
- break;
- case E3DPARAM_CLOUDSHADING_SKYCOLOR:
- m_vCloudShadingCustomSkyColor = v;
- break;
- case E3DPARAM_NIGHSKY_MOON_DIRECTION: // moon direction is fixed per level or updated via FG node (E3DPARAM_SKY_MOONROTATION)
- default:
- assert(0);
- break;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::GetGlobalParameter(E3DEngineParameter param, Vec3& v)
-{
- switch (param)
- {
- case E3DPARAM_SUN_COLOR:
- v = GetSunColor();
- break;
-
- case E3DPARAM_SUN_SPECULAR_MULTIPLIER:
- v = Vec3(m_fSunSpecMult, 0, 0);
- break;
-
- case E3DPARAM_AMBIENT_GROUND_COLOR:
- v = m_vAmbGroundCol;
- break;
- case E3DPARAM_AMBIENT_MIN_HEIGHT:
- v = Vec3(m_fAmbMaxHeight, 0, 0);
- break;
- case E3DPARAM_AMBIENT_MAX_HEIGHT:
- v = Vec3(m_fAmbMinHeight, 0, 0);
- break;
- case E3DPARAM_SKY_HIGHLIGHT_POS:
- v = m_vSkyHightlightPos;
- break;
- case E3DPARAM_SKY_HIGHLIGHT_COLOR:
- v = m_vSkyHightlightCol;
- break;
- case E3DPARAM_SKY_HIGHLIGHT_SIZE:
- v = Vec3(m_fSkyHighlightSize, 0, 0);
- break;
- case E3DPARAM_VOLFOG_RAMP:
- v = m_volFogRamp;
- break;
- case E3DPARAM_VOLFOG_SHADOW_RANGE:
- v = m_volFogShadowRange;
- break;
- case E3DPARAM_VOLFOG_SHADOW_DARKENING:
- v = m_volFogShadowDarkening;
- break;
- case E3DPARAM_VOLFOG_SHADOW_ENABLE:
- v = m_volFogShadowEnable;
- break;
- case E3DPARAM_VOLFOG2_CTRL_PARAMS:
- v = m_volFog2CtrlParams;
- break;
- case E3DPARAM_VOLFOG2_SCATTERING_PARAMS:
- v = m_volFog2ScatteringParams;
- break;
- case E3DPARAM_VOLFOG2_RAMP:
- v = m_volFog2Ramp;
- break;
- case E3DPARAM_VOLFOG2_COLOR:
- v = m_volFog2Color;
- break;
- case E3DPARAM_VOLFOG2_GLOBAL_DENSITY:
- v = m_volFog2GlobalDensity;
- break;
- case E3DPARAM_VOLFOG2_HEIGHT_DENSITY:
- v = m_volFog2HeightDensity;
- break;
- case E3DPARAM_VOLFOG2_HEIGHT_DENSITY2:
- v = m_volFog2HeightDensity2;
- break;
- case E3DPARAM_VOLFOG2_COLOR1:
- v = m_volFog2Color1;
- break;
- case E3DPARAM_VOLFOG2_COLOR2:
- v = m_volFog2Color2;
- break;
- case E3DPARAM_NIGHSKY_HORIZON_COLOR:
- v = m_nightSkyHorizonCol;
- break;
- case E3DPARAM_NIGHSKY_ZENITH_COLOR:
- v = m_nightSkyZenithCol;
- break;
- case E3DPARAM_NIGHSKY_ZENITH_SHIFT:
- v = Vec3(m_nightSkyZenithColShift, 0, 0);
- break;
- case E3DPARAM_NIGHSKY_STAR_INTENSITY:
- v = Vec3(m_nightSkyStarIntensity, 0, 0);
- break;
- case E3DPARAM_NIGHSKY_MOON_DIRECTION:
- v = m_moonDirection;
- break;
- case E3DPARAM_NIGHSKY_MOON_COLOR:
- v = m_nightMoonCol;
- break;
- case E3DPARAM_NIGHSKY_MOON_SIZE:
- v = Vec3(m_nightMoonSize, 0, 0);
- break;
- case E3DPARAM_NIGHSKY_MOON_INNERCORONA_COLOR:
- v = m_nightMoonInnerCoronaCol;
- break;
- case E3DPARAM_NIGHSKY_MOON_INNERCORONA_SCALE:
- v = Vec3(m_nightMoonInnerCoronaScale, 0, 0);
- break;
- case E3DPARAM_NIGHSKY_MOON_OUTERCORONA_COLOR:
- v = m_nightMoonOuterCoronaCol;
- break;
- case E3DPARAM_NIGHSKY_MOON_OUTERCORONA_SCALE:
- v = Vec3(m_nightMoonOuterCoronaScale, 0, 0);
- break;
- case E3DPARAM_SKY_MOONROTATION:
- v = Vec3(m_moonRotationLatitude, m_moonRotationLongitude, 0);
- break;
- case E3DPARAM_OCEANFOG_COLOR:
- v = m_oceanFogColor;
- break;
- case E3DPARAM_OCEANFOG_DENSITY:
- v = Vec3(m_oceanFogDensity, 0, 0);
- break;
- case E3DPARAM_SKYBOX_MULTIPLIER:
- v = Vec3(m_skyboxMultiplier, 0, 0);
- break;
- case E3DPARAM_DAY_NIGHT_INDICATOR:
- v = Vec3(m_dayNightIndicator, 0, 0);
- break;
- case E3DPARAM_FOG_COLOR2:
- v = m_fogColor2;
- break;
- case E3DPARAM_FOG_RADIAL_COLOR:
- v = m_fogColorRadial;
- break;
- case E3DPARAM_VOLFOG_HEIGHT_DENSITY:
- v = m_volFogHeightDensity;
- break;
- case E3DPARAM_VOLFOG_HEIGHT_DENSITY2:
- v = m_volFogHeightDensity2;
- break;
- case E3DPARAM_VOLFOG_GRADIENT_CTRL:
- v = m_volFogGradientCtrl;
- break;
- case E3DPARAM_VOLFOG_GLOBAL_DENSITY:
- v = Vec3(m_volFogGlobalDensity, m_volFogGlobalDensityMultiplierLDR, m_volFogFinalDensityClamp);
- break;
- case E3DPARAM_COLORGRADING_FILTERS_PHOTOFILTER_COLOR:
- v = Vec3(m_pPhotoFilterColor.x, m_pPhotoFilterColor.y, m_pPhotoFilterColor.z);
- break;
- case E3DPARAM_COLORGRADING_FILTERS_PHOTOFILTER_DENSITY:
- v = Vec3(m_fPhotoFilterColorDensity, 0, 0);
- break;
- case E3DPARAM_COLORGRADING_FILTERS_GRAIN:
- v = Vec3(m_fGrainAmount, 0, 0);
- break;
- case E3DPARAM_HDR_FILMCURVE_SHOULDER_SCALE:
- v = Vec3(m_vHDRFilmCurveParams.x, 0, 0);
- break;
- case E3DPARAM_HDR_FILMCURVE_LINEAR_SCALE:
- v = Vec3(m_vHDRFilmCurveParams.y, 0, 0);
- break;
- case E3DPARAM_HDR_FILMCURVE_TOE_SCALE:
- v = Vec3(m_vHDRFilmCurveParams.z, 0, 0);
- break;
- case E3DPARAM_HDR_FILMCURVE_WHITEPOINT:
- v = Vec3(m_vHDRFilmCurveParams.w, 0, 0);
- break;
- case E3DPARAM_HDR_EYEADAPTATION_PARAMS:
- v = m_vHDREyeAdaptation;
- break;
- case E3DPARAM_HDR_EYEADAPTATION_PARAMS_LEGACY:
- v = m_vHDREyeAdaptationLegacy;
- break;
- case E3DPARAM_HDR_BLOOM_AMOUNT:
- v = Vec3(m_fHDRBloomAmount, 0, 0);
- break;
- case E3DPARAM_HDR_COLORGRADING_COLOR_SATURATION:
- v = Vec3(m_fHDRSaturation, 0, 0);
- break;
- case E3DPARAM_HDR_COLORGRADING_COLOR_BALANCE:
- v = m_vColorBalance;
- break;
- case E3DPARAM_CLOUDSHADING_MULTIPLIERS:
- v = Vec3(m_fCloudShadingSunLightMultiplier, m_fCloudShadingSkyLightMultiplier, 0);
- break;
- case E3DPARAM_CLOUDSHADING_SUNCOLOR:
- v = m_vCloudShadingCustomSunColor;
- break;
- case E3DPARAM_CLOUDSHADING_SKYCOLOR:
- v = m_vCloudShadingCustomSkyColor;
- break;
- default:
- assert(0);
- break;
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void C3DEngine::SetCachedShadowBounds(const AABB& shadowBounds, float fAdditionalCascadesScale)
-{
- const Vec3 boxSize = shadowBounds.GetSize();
- const bool isValid = boxSize.x > 0 && boxSize.y > 0 && boxSize.z > 0;
-
- m_CachedShadowsBounds = isValid ? shadowBounds : AABB(AABB::RESET);
- m_fCachedShadowsCascadeScale = fAdditionalCascadesScale;
-
- m_nCachedShadowsUpdateStrategy = ShadowMapFrustum::ShadowCacheData::eFullUpdate;
-}
-
-//////////////////////////////////////////////////////////////////////////
-
-void C3DEngine::SetRecomputeCachedShadows(uint nUpdateStrategy)
-{
- m_nCachedShadowsUpdateStrategy = nUpdateStrategy;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::SetShadowsCascadesBias(const float* pCascadeConstBias, const float* pCascadeSlopeBias)
-{
- memcpy(m_pShadowCascadeConstBias, pCascadeConstBias, sizeof(float) * MAX_SHADOW_CASCADES_NUM);
- memcpy(m_pShadowCascadeSlopeBias, pCascadeSlopeBias, sizeof(float) * MAX_SHADOW_CASCADES_NUM);
-}
-
-int C3DEngine::GetShadowsCascadeCount([[maybe_unused]] const CDLight* pLight) const
-{
- int nCascadeCount = m_eShadowMode == ESM_HIGHQUALITY ? MAX_GSM_LODS_NUM : GetCVars()->e_GsmLodsNum;
- return clamp_tpl(nCascadeCount, 0, MAX_GSM_LODS_NUM);
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool C3DEngine::CheckIntersectClouds(const Vec3& p1, const Vec3& p2)
-{
- return m_pCloudsManager->CheckIntersectClouds(p1, p2);
-}
-
-void C3DEngine::OnRenderMeshDeleted(IRenderMesh* pRenderMesh)
-{
- if (m_pDecalManager)
- {
- m_pDecalManager->OnRenderMeshDeleted(pRenderMesh);
- }
-}
-
-bool C3DEngine::RayObjectsIntersection2D([[maybe_unused]] Vec3 vStart, [[maybe_unused]] Vec3 vEnd, [[maybe_unused]] Vec3& vHitPoint, [[maybe_unused]] EERType eERType)
-{
-#ifdef SUPPORT_TERRAIN_AO_PRE_COMPUTATIONS
-
- float fClosestHitDistance = 1000000;
-
- AABB aabb;
- aabb.Reset();
- aabb.Add(vStart);
- aabb.Add(vEnd);
- if (IsObjectTreeReady())
- {
- if (Overlap::AABB_AABB2D(aabb, m_pObjectsTree->GetNodeBox())) //!!!mpeykov: 2D?
- {
- m_pObjectsTree->RayObjectsIntersection2D(vStart, vEnd, vHitPoint, fClosestHitDistance, eERType);
- }
- }
-
- return (fClosestHitDistance < 1000000);
-
-#else
-
- assert(!"C3DEngine::RayObjectsIntersection2D not supported on consoles");
- return 0;
-
-#endif
-}
-
-bool C3DEngine::RenderMeshRayIntersection(IRenderMesh* pRenderMesh, SRayHitInfo& hitInfo, _smart_ptr pCustomMtl)
-{
- return CRenderMeshUtils::RayIntersection(pRenderMesh, hitInfo, pCustomMtl);
-}
-
-static SBending sBendRemoved;
-
-void C3DEngine::FreeRNTmpData(CRNTmpData** ppInfo)
-{
- AUTO_LOCK(m_checkCreateRNTmpData);
-
- CRNTmpData* pTmpRNTData = (*ppInfo);
-
- assert(pTmpRNTData->pNext != &m_LTPRootFree);
- assert(pTmpRNTData->pPrev != &m_LTPRootFree);
- assert(pTmpRNTData != &m_LTPRootUsed);
- if (gEnv->mMainThreadId != CryGetCurrentThreadId())
- {
- CryFatalError("CRNTmpData should only be allocated and free'd on main thread.");
- }
-
- if (pTmpRNTData != &m_LTPRootUsed)
- {
- pTmpRNTData->Unlink();
- }
-
- // Mark for phys area changed proxy for deletion
- if (pTmpRNTData->nPhysAreaChangedProxyId != ~0)
- {
- m_PhysicsAreaUpdates.ResetProxy(pTmpRNTData->nPhysAreaChangedProxyId);
- pTmpRNTData->nPhysAreaChangedProxyId = ~0;
- }
-
- if (pTmpRNTData->nFrameInfoId != ~0)
- {
- m_elementFrameInfo[pTmpRNTData->nFrameInfoId].Reset();
- pTmpRNTData->nFrameInfoId = ~0;
- }
-
- {
-#ifdef SUPP_HWOBJ_OCCL
- if (pTmpRNTData->userData.m_OcclState.pREOcclusionQuery)
- {
- pTmpRNTData->userData.m_OcclState.pREOcclusionQuery->Release(false);
- pTmpRNTData->userData.m_OcclState.pREOcclusionQuery = NULL;
- }
-#endif
- }
-
- if (pTmpRNTData != &m_LTPRootUsed)
- {
- pTmpRNTData->Link(&m_LTPRootFree);
- *(pTmpRNTData->pOwnerRef) = NULL;
- }
-}
-
-void C3DEngine::UpdateRNTmpDataPool(bool bFreeAll)
-{
- // if we are freeing the whole pool, make sure no jobs are still running which could use the RNTmpObjects
- if (bFreeAll)
- {
- threadID nThreadID;
- gEnv->pRenderer->EF_Query(EFQ_MainThreadList, nThreadID);
- gEnv->pRenderer->GetFinalizeRendItemJobExecutor(nThreadID)->WaitForCompletion();
- gEnv->pRenderer->GetFinalizeShadowRendItemJobExecutor(nThreadID)->WaitForCompletion();
- }
- //CryLogAlways("UpdateRNTmpDataPool bFreeAll 0x%x nMainFrameID 0X%x", bFreeAll, nMainFrameID );
- FUNCTION_PROFILER_3DENGINE;
-
- // Ensure continues memory
- m_elementFrameInfo.CoalesceMemory();
-
- const uint32 nSize = m_elementFrameInfo.size();
- if (nSize == 0)
- {
- return;
- }
-
- const uint32 nMainFrameID = GetRenderer()->GetFrameID(false);
- const uint32 nTmpDataMaxFrames = (uint32)GetCVars()->e_RNTmpDataPoolMaxFrames;
-
- if (!bFreeAll && nMainFrameID >= nTmpDataMaxFrames)
- {
- const uint32 nLastValidFrame = nMainFrameID - nTmpDataMaxFrames;
-
- uint32 nNumItemsToDelete = 0;
-
- SFrameInfo* pFrontIter = &m_elementFrameInfo[0];
- SFrameInfo* pBackIter = &m_elementFrameInfo[nSize - 1];
- SFrameInfo* pHead = pFrontIter;
-
- // Handle single element case
- IF (nSize == 1, 0)
- {
- if (pFrontIter->bIsValid && pFrontIter->nLastUsedFrameId >= nLastValidFrame)
- {
- if (pFrontIter->bIsValid)
- {
- FreeRNTmpData(pFrontIter->ppRNTmpData);
- }
-
- ++nNumItemsToDelete;
- }
- }
-
- // Move invalid elements to back of array and free if timed out
- while (pFrontIter < pBackIter)
- {
- while (pFrontIter->bIsValid && pFrontIter->nLastUsedFrameId >= nLastValidFrame && pFrontIter < pBackIter)
- {
- ++pFrontIter;
- } // Find invalid element at front
- while (!(pBackIter->bIsValid && pBackIter->nLastUsedFrameId >= nLastValidFrame) && pFrontIter < pBackIter) // Find valid element at back
- {
- // Element timed out
- if (pBackIter->bIsValid)
- {
- FreeRNTmpData(pBackIter->ppRNTmpData);
- pBackIter->bIsValid = false;
- }
-
- --pBackIter;
- ++nNumItemsToDelete;
- }
-
- if (pFrontIter < pBackIter)
- {
- // Element timed out
- if (pFrontIter->bIsValid)
- {
- FreeRNTmpData(pFrontIter->ppRNTmpData);
- }
-
- // Replace invalid front element with back element
- // Note: No need to swap because we cut the data from the array at the end anyway
- memcpy(pFrontIter, pBackIter, sizeof(SFrameInfo));
- (*pFrontIter->ppRNTmpData)->nFrameInfoId = (uint32)(pFrontIter - pHead);
-
- pBackIter->bIsValid = false; // safety
- pBackIter->ppRNTmpData = 0;
-
- --pBackIter;
- ++pFrontIter;
- ++nNumItemsToDelete;
- }
- }
-
- assert(nSize == m_elementFrameInfo.size());
- m_elementFrameInfo.resize(nSize - nNumItemsToDelete);
- }
- else if (bFreeAll) // Free all
- {
- SFrameInfo* pFrontIter = &m_elementFrameInfo[0];
- SFrameInfo* pBackIter = &m_elementFrameInfo[nSize - 1];
- ++pBackIter; // Point to element after last element in array
-
- // Free all
- while (pFrontIter != pBackIter)
- {
- // Element timed out
- if (pFrontIter->bIsValid)
- {
- FreeRNTmpData(pFrontIter->ppRNTmpData);
- }
-
- ++pFrontIter;
- }
- m_elementFrameInfo.resize(0);
- }
-}
-
-void C3DEngine::FreeRNTmpDataPool()
-{
- // move all into m_LTPRootFree
- UpdateRNTmpDataPool(true);
-
- AUTO_LOCK(m_checkCreateRNTmpData);
- if (gEnv->mMainThreadId != CryGetCurrentThreadId())
- {
- CryFatalError("CRNTmpData should only be allocated and free'd on main thread.");
- }
-
- // delete all elements of m_LTPRootFree
- CRNTmpData* pNext = NULL;
- for (CRNTmpData* pElem = m_LTPRootFree.pNext; pElem != &m_LTPRootFree; pElem = pNext)
- {
- pNext = pElem->pNext;
- pElem->Unlink();
- delete pElem;
- }
-}
-
-void C3DEngine::CopyObjectsByType(EERType objType, const AABB* pBox, PodArray* plstObjects, ObjectTreeQueryFilterCallback filterCallback)
-{
- GetObjectsByTypeGlobal(*plstObjects, objType, pBox, filterCallback);
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->GetObjectsByType(*plstObjects, objType, pBox, filterCallback);
- }
-}
-
-void C3DEngine::CopyObjects(const AABB* pBox, PodArray* plstObjects)
-{
- if (IsObjectTreeReady())
- {
- m_pObjectsTree->GetObjects(*plstObjects, pBox);
- }
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->GetObjects(*plstObjects, pBox);
- }
-}
-
-uint32 C3DEngine::GetObjectsByType(EERType objType, IRenderNode** pObjects)
-{
- PodArray lstObjects;
- CopyObjectsByType(objType, NULL, &lstObjects);
- if (pObjects && !lstObjects.IsEmpty())
- {
- memcpy(pObjects, &lstObjects[0], lstObjects.GetDataSize());
- }
- return lstObjects.Count();
-}
-
-uint32 C3DEngine::GetObjectsByTypeInBox(EERType objType, const AABB& bbox, IRenderNode** pObjects, ObjectTreeQueryFilterCallback filterCallback)
-{
- PodArray lstObjects;
- CopyObjectsByType(objType, &bbox, &lstObjects, filterCallback);
- if (pObjects && !lstObjects.IsEmpty())
- {
- memcpy(pObjects, &lstObjects[0], lstObjects.GetDataSize());
- }
- return lstObjects.Count();
-}
-
-void C3DEngine::GetObjectsByTypeInBox(EERType objType, const AABB& bbox, PodArray* pLstObjects, ObjectTreeQueryFilterCallback filterCallback)
-{
- CopyObjectsByType(objType, &bbox, pLstObjects, filterCallback);
-}
-
-uint32 C3DEngine::GetObjectsInBox(const AABB& bbox, IRenderNode** pObjects)
-{
- PodArray lstObjects;
- CopyObjects(&bbox, &lstObjects);
- if (pObjects && !lstObjects.IsEmpty())
- {
- memcpy(pObjects, &lstObjects[0], lstObjects.GetDataSize());
- }
- return lstObjects.Count();
-}
-
-uint32 C3DEngine::GetObjectsByFlags(uint dwFlags, IRenderNode** pObjects /* =0 */)
-{
- PodArray lstObjects;
-
- if (Get3DEngine()->IsObjectTreeReady())
- {
- Get3DEngine()->GetObjectTree()->GetObjectsByFlags(dwFlags, lstObjects);
- }
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->GetObjectsByFlags(dwFlags, lstObjects);
- }
-
- if (pObjects && !lstObjects.IsEmpty())
- {
- memcpy(pObjects, &lstObjects[0], lstObjects.GetDataSize());
- }
- return lstObjects.Count();
-}
-
-void C3DEngine::OnObjectModified([[maybe_unused]] IRenderNode* pRenderNode, uint dwFlags)
-{
- if ((dwFlags & (ERF_CASTSHADOWMAPS | ERF_HAS_CASTSHADOWMAPS)) != 0)
- {
- SetRecomputeCachedShadows(ShadowMapFrustum::ShadowCacheData::eFullUpdate);
- }
-}
-
-int SImageInfo::GetMemoryUsage()
-{
- int nSize = 0;
- if (detailInfo.pImgMips[0])
- {
- nSize += (int)((float)(detailInfo.nDim * detailInfo.nDim * sizeof(ColorB)) * 1.3f);
- }
- if (baseInfo.pImgMips[0])
- {
- nSize += (int)((float)(baseInfo.nDim * baseInfo.nDim * sizeof(ColorB)) * 1.3f);
- }
- return nSize;
-}
-
-byte** C3DEngine::AllocateMips(byte* pImage, int nDim, byte** pImageMips)
-{
- memset(pImageMips, 0, SImageSubInfo::nMipsNum * sizeof(pImageMips[0]));
-
- pImageMips[0] = new byte[nDim * nDim * sizeof(ColorB)];
- memcpy(pImageMips[0], pImage, nDim * nDim * sizeof(ColorB));
-
- ColorB* pMipMain = (ColorB*)pImageMips[0];
-
- for (int nMip = 1; (nDim >> nMip) && nMip < SImageSubInfo::nMipsNum; nMip++)
- {
- int nDimMip = nDim >> nMip;
-
- int nSubSize = 1 << nMip;
-
- pImageMips[nMip] = new byte[nDimMip * nDimMip * sizeof(ColorB)];
-
- ColorB* pMipThis = (ColorB*)pImageMips[nMip];
-
- for (int x = 0; x < nDimMip; x++)
- {
- for (int y = 0; y < nDimMip; y++)
- {
- ColorF colSumm(0, 0, 0, 0);
- float fCount = 0;
- for (int _x = x * nSubSize - nSubSize / 2; _x < x * nSubSize + nSubSize + nSubSize / 2; _x++)
- {
- for (int _y = y * nSubSize - nSubSize / 2; _y < y * nSubSize + nSubSize + nSubSize / 2; _y++)
- {
- int nMask = nDim - 1;
- int id = (_x & nMask) * nDim + (_y & nMask);
- colSumm.r += 1.f / 255.f * pMipMain[id].r;
- colSumm.g += 1.f / 255.f * pMipMain[id].g;
- colSumm.b += 1.f / 255.f * pMipMain[id].b;
- colSumm.a += 1.f / 255.f * pMipMain[id].a;
- fCount++;
- }
- }
-
- colSumm /= fCount;
-
- colSumm.Clamp(0, 1);
-
- pMipThis[x * nDimMip + y] = colSumm;
- }
- }
- }
-
- return pImageMips;
-}
-
-void C3DEngine::RegisterForStreaming(IStreamable* pObj)
-{
- if (GetObjManager())
- {
- GetObjManager()->RegisterForStreaming(pObj);
- }
-}
-
-void C3DEngine::UnregisterForStreaming(IStreamable* pObj)
-{
- if (GetObjManager())
- {
- GetObjManager()->UnregisterForStreaming(pObj);
- }
-}
-
-SImageSubInfo* C3DEngine::GetImageInfo(const char* pName)
-{
- if (m_imageInfos.find(string(pName)) != m_imageInfos.end())
- {
- return m_imageInfos[string(pName)];
- }
-
- return NULL;
-}
-
-SImageSubInfo* C3DEngine::RegisterImageInfo(byte** pMips, int nDim, const char* pName)
-{
- if (m_imageInfos.find(string(pName)) != m_imageInfos.end())
- {
- return m_imageInfos[string(pName)];
- }
-
- assert(pMips && pMips[0]);
-
- SImageSubInfo* pImgSubInfo = new SImageSubInfo;
-
- pImgSubInfo->nDim = nDim;
-
- int nMipDim = pImgSubInfo->nDim;
-
- for (int m = 0; m < SImageSubInfo::nMipsNum && nMipDim; m++)
- {
- pImgSubInfo->pImgMips[m] = new byte[nMipDim * nMipDim * 4];
-
- memcpy(pImgSubInfo->pImgMips[m], pMips[m], nMipDim * nMipDim * 4);
-
- nMipDim /= 2;
- }
-
- const string strFileName = pName;
-
- pImgSubInfo->nReady = 1;
-
- m_imageInfos[strFileName] = pImgSubInfo;
-
- return pImgSubInfo;
-}
-
-void C3DEngine::SyncProcessStreamingUpdate()
-{
- if (m_pObjManager)
- {
- m_pObjManager->ProcessObjectsStreaming_Finish();
- }
-}
-
-void C3DEngine::SetScreenshotCallback(IScreenshotCallback* pCallback)
-{
- m_pScreenshotCallback = pCallback;
-}
-
-void C3DEngine::ActivateObjectsLayer(uint16 nLayerId, bool bActivate, bool bPhys, bool bObjects, bool bStaticLights, const char* pLayerName, IGeneralMemoryHeap* pHeap, bool bCheckLayerActivation /*=true*/)
-{
- if (bCheckLayerActivation && !IsAreaActivationInUse())
- {
- return;
- }
-
- if (bActivate)
- {
- m_bLayersActivated = true;
- }
-
- if (bActivate && m_nFramesSinceLevelStart <= 1)
- {
- m_vPrevMainFrameCamPos.Set(-1000000.f, -1000000.f, -1000000.f);
- }
-
- FUNCTION_PROFILER_3DENGINE;
-
- PrintMessage("%s object layer %s (Id = %d) (LevelFrameId = %d)", bActivate ? "Activating" : "Deactivating", pLayerName, nLayerId, m_nFramesSinceLevelStart);
- INDENT_LOG_DURING_SCOPE();
-
- if (bObjects)
- {
- if (IsObjectTreeReady())
- {
- m_pObjectsTree->ActivateObjectsLayer(nLayerId, bActivate, bPhys, pHeap);
- }
-
- if (m_pVisAreaManager)
- {
- m_pVisAreaManager->ActivateObjectsLayer(nLayerId, bActivate, bPhys, pHeap);
- }
- }
-
- if (bStaticLights)
- {
- for (size_t i = 0; i < m_lstStaticLights.size(); ++i)
- {
- ILightSource* pLight = m_lstStaticLights[i];
- if (pLight->GetLayerId() == nLayerId)
- {
- pLight->SetRndFlags(ERF_HIDDEN, !bActivate);
- }
- }
- }
-}
-
-
-void C3DEngine::GetLayerMemoryUsage(uint16 nLayerId, ICrySizer* pSizer, int* pNumBrushes, int* pNumDecals) const
-{
- if (pNumBrushes)
- {
- *pNumBrushes = 0;
- }
- if (pNumDecals)
- {
- *pNumDecals = 0;
- }
-
- if (m_pObjectsTree != nullptr)
- {
- m_pObjectsTree->GetLayerMemoryUsage(nLayerId, pSizer, pNumBrushes, pNumDecals);
- }
-}
-
-
-void C3DEngine::SkipLayerLoading(uint16 nLayerId, bool bClearList)
-{
- if (bClearList)
- {
- m_skipedLayers.clear();
- }
- m_skipedLayers.insert(nLayerId);
-}
-
-
-bool C3DEngine::IsLayerSkipped(uint16 nLayerId)
-{
- return m_skipedLayers.find(nLayerId) != m_skipedLayers.end() ? true : false;
-}
-
-void C3DEngine::PrecacheRenderNode(IRenderNode* pObj, float fEntDistanceReal)
-{
- FUNCTION_PROFILER_3DENGINE;
-
- // PrintMessage("==== PrecacheRenderNodePrecacheRenderNode: %s ====", pObj->GetName());
-
- if (m_pObjManager)
- {
- int dwOldRndFlags = pObj->m_dwRndFlags;
- pObj->m_dwRndFlags &= ~ERF_HIDDEN;
-
- SRenderingPassInfo passInfo = SRenderingPassInfo::CreateGeneralPassRenderingInfo(gEnv->pSystem->GetViewCamera());
-
- m_pObjManager->UpdateRenderNodeStreamingPriority(pObj, fEntDistanceReal, 1.0f, fEntDistanceReal < GetFloatCVar(e_StreamCgfFastUpdateMaxDistance), passInfo, true);
- pObj->m_dwRndFlags = dwOldRndFlags;
- }
-}
-
-
-void C3DEngine::CleanUpOldDecals()
-{
- FUNCTION_PROFILER_3DENGINE;
- static uint32 nLastIndex = 0;
- const uint32 nDECALS_PER_FRAME = 50;
-
- if (uint32 nNumDecalRenderNodes = m_decalRenderNodes.size())
- {
- for (uint32 i = 0, end = __min(nDECALS_PER_FRAME, nNumDecalRenderNodes); i < end; ++i, ++nLastIndex)
- {
- // wrap around at the end to restart at the beginning
- if (nLastIndex >= nNumDecalRenderNodes)
- {
- nLastIndex = 0;
- }
-
- m_decalRenderNodes[nLastIndex]->CleanUpOldDecals();
- }
- }
-}
-
-void C3DEngine::UpdateRenderTypeEnableLookup()
-{
- SetRenderNodeTypeEnabled(eERType_RenderComponent, (GetCVars()->e_Entities != 0));
- SetRenderNodeTypeEnabled(eERType_StaticMeshRenderComponent, (GetCVars()->e_Entities != 0));
- SetRenderNodeTypeEnabled(eERType_DynamicMeshRenderComponent, (GetCVars()->e_Entities != 0));
- SetRenderNodeTypeEnabled(eERType_SkinnedMeshRenderComponent, (GetCVars()->e_Entities != 0));
-}
-
-void C3DEngine::SetRenderNodeMaterialAtPosition(EERType eNodeType, const Vec3& vPos, _smart_ptr pMat)
-{
- PodArray lstObjects;
-
- AABB aabbPos(vPos - Vec3(.1f, .1f, .1f), vPos + Vec3(.1f, .1f, .1f));
-
- GetObjectsByTypeGlobal(lstObjects, eNodeType, &aabbPos);
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->GetObjectsByType(lstObjects, eNodeType, &aabbPos);
- }
-
- for (int i = 0; i < lstObjects.Count(); i++)
- {
- PrintMessage("Game changed render node material: %s EERType:%d pos: (%d,%d,%d)",
- pMat ? pMat->GetName() : "NULL",
- (int)eNodeType,
- (int)vPos.x, (int)vPos.y, (int)vPos.z);
-
- lstObjects[i]->SetMaterial(pMat);
- }
-}
-
-void C3DEngine::OverrideCameraPrecachePoint(const Vec3& vPos)
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetStreamPreCacheCameras()[0].vPosition = vPos;
- m_pObjManager->SetCameraPrecacheOverridden(true);
- }
-}
-
-int C3DEngine::AddPrecachePoint(const Vec3& vPos, const Vec3& vDir, float fTimeOut, float fImportanceFactor)
-{
- if (m_pObjManager)
- {
- if (m_pObjManager->GetStreamPreCachePointDefs().size() >= CObjManager::MaxPrecachePoints)
- {
- size_t nOldestIdx = 0;
- int nOldestId = INT_MAX;
- for (size_t i = 1, c = m_pObjManager->GetStreamPreCachePointDefs().size(); i < c; ++i)
- {
- if (m_pObjManager->GetStreamPreCachePointDefs()[i].nId < nOldestId)
- {
- nOldestIdx = i;
- nOldestId = m_pObjManager->GetStreamPreCachePointDefs()[i].nId;
- }
- }
-
- assert (nOldestIdx > 0);
-
- CryWarning(VALIDATOR_MODULE_3DENGINE, VALIDATOR_WARNING, "Precache points full - evicting oldest (%f, %f, %f)",
- m_pObjManager->GetStreamPreCacheCameras()[nOldestIdx].vPosition.x,
- m_pObjManager->GetStreamPreCacheCameras()[nOldestIdx].vPosition.y,
- m_pObjManager->GetStreamPreCacheCameras()[nOldestIdx].vPosition.z);
-
- m_pObjManager->GetStreamPreCachePointDefs().DeleteFastUnsorted((int)nOldestIdx);
- m_pObjManager->GetStreamPreCacheCameras().DeleteFastUnsorted((int)nOldestIdx);
- }
-
- SObjManPrecachePoint pp;
- pp.nId = m_pObjManager->IncrementNextPrecachePointId();
- pp.expireTime = gEnv->pTimer->GetAsyncTime() + CTimeValue(fTimeOut);
- SObjManPrecacheCamera pc;
- pc.vPosition = vPos;
- pc.bbox = AABB(vPos, GetCVars()->e_StreamPredictionBoxRadius);
- pc.vDirection = vDir;
- pc.fImportanceFactor = fImportanceFactor;
- m_pObjManager->GetStreamPreCachePointDefs().Add(pp);
- m_pObjManager->GetStreamPreCacheCameras().Add(pc);
-
- return pp.nId;
- }
-
- return -1;
-}
-
-void C3DEngine::ClearPrecachePoint(int id)
-{
- if (m_pObjManager)
- {
- for (size_t i = 1, c = m_pObjManager->GetStreamPreCachePointDefs().size(); i < c; ++i)
- {
- if (m_pObjManager->GetStreamPreCachePointDefs()[i].nId == id)
- {
- m_pObjManager->GetStreamPreCachePointDefs().DeleteFastUnsorted((int)i);
- m_pObjManager->GetStreamPreCacheCameras().DeleteFastUnsorted((int)i);
- break;
- }
- }
- }
-}
-
-void C3DEngine::ClearAllPrecachePoints()
-{
- if (m_pObjManager)
- {
- m_pObjManager->GetStreamPreCachePointDefs().resize(1);
- m_pObjManager->GetStreamPreCacheCameras().resize(1);
- }
-}
-
-void C3DEngine::GetPrecacheRoundIds(int pRoundIds[MAX_STREAM_PREDICTION_ZONES])
-{
- if (m_pObjManager)
- {
- pRoundIds[0] = m_pObjManager->GetUpdateStreamingPrioriryRoundIdFast();
- pRoundIds[1] = m_pObjManager->GetUpdateStreamingPrioriryRoundId();
- }
-}
-
-SBending* C3DEngine::GetBendingEntry(SBending* pSrc, [[maybe_unused]] const SRenderingPassInfo& passInfo)
-{
- assert(pSrc);
- SBending* pStorage = m_bendingPool[m_bendingPoolIdx].push_back_new();
- *pStorage = *pSrc;
- return pStorage;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-CCamera* C3DEngine::GetRenderingPassCamera(const CCamera& rCamera)
-{
- threadID nThreadID = 0;
- gEnv->pRenderer->EF_Query(EFQ_RenderThreadList, nThreadID);
- CCamera* pCamera = m_RenderingPassCameras[nThreadID].push_back_new();
- *pCamera = rCamera;
- return pCamera;
-}
-
-void C3DEngine::GetCollisionClass(SCollisionClass& collclass, int tableIndex)
-{
- if ((unsigned)tableIndex < m_collisionClasses.size())
- {
- collclass = m_collisionClasses[tableIndex];
- }
- else
- {
- collclass = SCollisionClass(0, 0);
- }
-}
-
-class C3DEngine::PhysicsAreaUpdatesHandler
- : private Physics::WindNotificationsBus::Handler
-{
-public:
- explicit PhysicsAreaUpdatesHandler(C3DEngine::PhysicsAreaUpdates& physicsAreaUpdates)
- : m_physicsAreaUpdates(physicsAreaUpdates)
- {
- Physics::WindNotificationsBus::Handler::BusConnect();
- }
-
- ~PhysicsAreaUpdatesHandler()
- {
- Physics::WindNotificationsBus::Handler::BusDisconnect();
- }
-
-private:
- // Physics::WindNotificationsBus::Handler
- void OnGlobalWindChanged() override
- {
- // Using same 'global wind' area size value CryPhysics code had
- const AZ::Vector3 globalWindHalfBound(1e7);
- AZ::Aabb globalWindAabb = AZ::Aabb::CreateFromMinMax(-globalWindHalfBound, globalWindHalfBound);
-
- OnWindChanged(globalWindAabb);
- }
-
- void OnWindChanged(const AZ::Aabb& aabb) override
- {
- SAreaChangeRecord record;
- record.boxAffected = AZAabbToLyAABB(aabb);
- record.uPhysicsMask = Area_Air;
-
- m_physicsAreaUpdates.SetAreaDirty(record);
- }
-
- C3DEngine::PhysicsAreaUpdates& m_physicsAreaUpdates;
-};
-
-void C3DEngine::PhysicsAreaUpdates::SetAreaDirty(const SAreaChangeRecord& rec)
-{
- // Merge with existing bb if close enough and same medium
- AUTO_LOCK(m_Mutex);
- static const float fMERGE_THRESHOLD = 2.f;
- float fNewVolume = rec.boxAffected.GetVolume();
- for (uint i = 0; i < m_DirtyAreas.size(); i++)
- {
- if (m_DirtyAreas[i].uPhysicsMask == rec.uPhysicsMask)
- {
- AABB bbUnion = rec.boxAffected;
- bbUnion.Add(m_DirtyAreas[i].boxAffected);
- if (bbUnion.GetVolume() <= (fNewVolume + m_DirtyAreas[i].boxAffected.GetVolume()) * fMERGE_THRESHOLD)
- {
- m_DirtyAreas[i].boxAffected = bbUnion;
- return;
- }
- }
- }
- m_DirtyAreas.push_back(rec);
-}
-
-void C3DEngine::PhysicsAreaUpdates::Update()
-{
- //
- // (bethelz) This whole class is only used for CParticleEffect right now.
- //
-
- FUNCTION_PROFILER_3DENGINE;
- AUTO_LOCK(m_Mutex);
- if (m_DirtyAreas.empty())
- {
- return;
- }
-
- // Check area against registered proxies
- int nSizeAreasChanged = (int)m_DirtyAreas.size();
- int nSizeProxies = m_Proxies.size();
-
- // Access elements via [i] as the thread safe list does not always safe its element in a continues array
- for (int i = 0; i < nSizeProxies; ++i)
- {
- const SPhysAreaNodeProxy& proxy = m_Proxies[i];
-
- IF (!proxy.bIsValid, 0)
- {
- continue;
- }
-
- for (int j = 0; j < nSizeAreasChanged; ++j)
- {
- const SAreaChangeRecord& rec = m_DirtyAreas[j];
- if ((proxy.uPhysicsMask & rec.uPhysicsMask) && Overlap::AABB_AABB(proxy.bbox, rec.boxAffected))
- {
- if (rec.uPhysicsMask & Area_Air)
- {
- if (proxy.pRenderNode->m_pRNTmpData)
- {
- proxy.pRenderNode->m_pRNTmpData->userData.bWindCurrent = 0;
- }
- }
-
- proxy.pRenderNode->OnPhysAreaChange();
- break;
- }
- }
- }
-
- m_DirtyAreas.resize(0);
-}
-
-void C3DEngine::PhysicsAreaUpdates::Reset()
-{
- stl::free_container(m_DirtyAreas);
-}
-
-uint32 C3DEngine::PhysicsAreaUpdates::CreateProxy(const IRenderNode* pRenderNode, uint16 uPhysicsMask)
-{
- size_t nIndex = ~0;
- SPhysAreaNodeProxy* proxy = m_Proxies.push_back_new(nIndex);
-
- proxy->pRenderNode = (IRenderNode*)pRenderNode;
- proxy->uPhysicsMask = uPhysicsMask;
- proxy->bIsValid = true;
- proxy->bbox = pRenderNode->GetBBox();
- return nIndex;
-}
-
-void C3DEngine::PhysicsAreaUpdates::UpdateProxy(const IRenderNode* pRenderNode, uint32 nProxyId)
-{
- m_Proxies[nProxyId].bbox = pRenderNode->GetBBox();
-}
-
-void C3DEngine::PhysicsAreaUpdates::ResetProxy(uint32 proxyId)
-{
- m_Proxies[proxyId].Reset();
-}
-
-void C3DEngine::PhysicsAreaUpdates::GarbageCollect()
-{
- // Ensure list is continues in memory
- m_Proxies.CoalesceMemory();
-
- const uint32 nSize = m_Proxies.size();
- if (nSize == 0)
- {
- return;
- }
-
- SPhysAreaNodeProxy* pFrontIter = &m_Proxies[0];
- SPhysAreaNodeProxy* pBackIter = &m_Proxies[nSize - 1];
- const SPhysAreaNodeProxy* pHead = pFrontIter;
- uint32 nNumItemsToDelete = 0;
-
- // Move invalid nodes to the back of the array
- do
- {
- while (pFrontIter->bIsValid && pFrontIter < pBackIter)
- {
- ++pFrontIter;
- }
- while (!pBackIter->bIsValid && pFrontIter < pBackIter)
- {
- --pBackIter;
- ++nNumItemsToDelete;
- }
-
- if (pFrontIter < pBackIter)
- {
- // Replace invalid front element with back element
- // Note: No need to swap because we cut the data from the array at the end anyway
- memcpy(pFrontIter, pBackIter, sizeof(SPhysAreaNodeProxy));
- AZ_Assert(pFrontIter->pRenderNode && pFrontIter->pRenderNode->m_pRNTmpData, "The front iterator should have a valid m_pRNTmpData after the data from the valid back iterator has been copied to it.");
- if (pFrontIter->pRenderNode && pFrontIter->pRenderNode->m_pRNTmpData)
- {
- pFrontIter->pRenderNode->m_pRNTmpData->nPhysAreaChangedProxyId = (uint32)(pFrontIter - pHead);
- }
-
- pBackIter->bIsValid = false;
-
- --pBackIter;
- ++pFrontIter;
- ++nNumItemsToDelete;
- }
- } while (pFrontIter < pBackIter);
-
- // Cut off invalid elements
- m_Proxies.resize(nSize - nNumItemsToDelete);
-}
-
-void C3DEngine::UpdateShaderItems()
-{
- if (GetMatMan())
- {
- GetMatMan()->UpdateShaderItems();
- }
-}
-
-void C3DEngine::OnCameraTeleport()
-{
- MarkRNTmpDataPoolForReset();
-}
-
-IObjManager* C3DEngine::GetObjectManager()
-{
- return m_pObjManager;
-}
-
-const IObjManager* C3DEngine::GetObjectManager() const
-{
- return m_pObjManager;
-}
-
-bool C3DEngine::RemoveObjectsInArea(Vec3 vExploPos, float fExploRadius)
-{
- bool bEverythingDeleted = true;
-
- Vec3 vRadius(fExploRadius, fExploRadius, fExploRadius);
-
- PodArray lstEntities;
- const AABB cExplosionBox(vExploPos - vRadius, vExploPos + vRadius);
- MoveObjectsIntoListGlobal(&lstEntities, &cExplosionBox, false, true, true, true);
-
- // remove small objects around
- {
- for (int i = 0; i < lstEntities.Count(); i++)
- {
- IRenderNode* pRenderNode = lstEntities[i].pNode;
- AABB entBox = pRenderNode->GetBBox();
- float fEntRadius = entBox.GetRadius();
- Vec3 vEntCenter = pRenderNode->GetBBox().GetCenter();
- float fDist = vExploPos.GetDistance(vEntCenter);
- if (fDist < fExploRadius + fEntRadius &&
- Overlap::Sphere_AABB(Sphere(vExploPos, fExploRadius), entBox))
- {
- if (fDist >= fExploRadius)
- { //
- Matrix34A objMat;
- CStatObj* pStatObj = (CStatObj*)pRenderNode->GetEntityStatObj(0, 0, &objMat);
- if (!pStatObj)
- {
- continue;
- }
- objMat.Invert();
- //assert(0);
- Vec3 vOSExploPos = objMat.TransformPoint(vExploPos);
-
- Vec3 vScaleTest(0, 0, 1.f);
- vScaleTest = objMat.TransformVector(vScaleTest);
- float fObjScaleInv = vScaleTest.len();
-
- if (!pStatObj->IsSphereOverlap(Sphere(vOSExploPos, fExploRadius * fObjScaleInv)))
- {
- continue;
- }
- }
- }
- }
- }
-
- return bEverythingDeleted;
-}
-
-#ifndef _RELEASE
-
-//////////////////////////////////////////////////////////////////////////
-// onscreen infodebug code for e_debugDraw >= 100
-
-//////////////////////////////////////////////////////////////////////////
-void C3DEngine::AddObjToDebugDrawList(SObjectInfoToAddToDebugDrawList& objInfo)
-{
- m_DebugDrawListMgr.AddObject(objInfo);
-}
-
-
-bool CDebugDrawListMgr::m_dumpLogRequested = false;
-bool CDebugDrawListMgr::m_freezeRequested = false;
-bool CDebugDrawListMgr::m_unfreezeRequested = false;
-uint32 CDebugDrawListMgr::m_filter = I3DEngine::DLOT_ALL;
-
-
-//////////////////////////////////////////////////////////////////////////
-CDebugDrawListMgr::CDebugDrawListMgr()
-{
- m_isFrozen = false;
- ClearFrameData();
- ClearConsoleCommandRequestVars();
- m_assets.reserve(32); // just a reasonable value
- m_drawBoxes.reserve(256); // just a reasonable value
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::ClearFrameData()
-{
- m_counter = 0;
- m_assetCounter = 0;
- m_assets.clear();
- m_drawBoxes.clear();
- m_indexLeastValueAsset = 0;
- CheckFilterCVar();
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::ClearConsoleCommandRequestVars()
-{
- m_dumpLogRequested = false;
- m_freezeRequested = false;
- m_unfreezeRequested = false;
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::AddObject(I3DEngine::SObjectInfoToAddToDebugDrawList& newObjInfo)
-{
- if (m_isFrozen)
- {
- return;
- }
-
- m_lock.Lock();
-
- m_counter++;
-
- if (!ShouldFilterOutObject(newObjInfo))
- {
- TAssetInfo newAsset(newObjInfo);
- TObjectDrawBoxInfo newDrawBox(newObjInfo);
-
- TAssetInfo* pAssetDuplicated = FindDuplicate(newAsset);
- if (pAssetDuplicated)
- {
- pAssetDuplicated->numInstances++;
- newDrawBox.assetID = pAssetDuplicated->ID;
- m_drawBoxes.push_back(newDrawBox);
- pAssetDuplicated->drawCalls = max(pAssetDuplicated->drawCalls, newAsset.drawCalls);
- }
- else
- {
- newAsset.ID = m_assetCounter;
- newDrawBox.assetID = newAsset.ID;
- bool used = false;
-
- // list not full, so we add
- if (m_assets.size() < uint(Cry3DEngineBase::GetCVars()->e_DebugDrawListSize))
- {
- used = true;
- m_assets.push_back(newAsset);
- }
- else // if is full, only use it if value is greater than the current minimum, and then it substitutes the lowest slot
- {
- const TAssetInfo& leastValueAsset = m_assets[ m_indexLeastValueAsset ];
- if (leastValueAsset < newAsset)
- {
- used = true;
- m_assets[ m_indexLeastValueAsset ] = newAsset;
- }
- }
- if (used)
- {
- m_assetCounter++;
- m_drawBoxes.push_back(newDrawBox);
- FindNewLeastValueAsset();
- }
- }
- }
-
- m_lock.Unlock();
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-CDebugDrawListMgr::TAssetInfo* CDebugDrawListMgr::FindDuplicate(const TAssetInfo& asset)
-{
- std::vector::iterator iter = m_assets.begin();
- std::vector::const_iterator endArray = m_assets.end();
-
- while (iter != endArray)
- {
- TAssetInfo& currAsset = *iter;
- if (currAsset.fileName == asset.fileName)
- {
- return &currAsset;
- }
- ++iter;
- }
- return NULL;
-}
-
-
-
-//////////////////////////////////////////////////////////////////////////
-bool CDebugDrawListMgr::ShouldFilterOutObject(const I3DEngine::SObjectInfoToAddToDebugDrawList& object)
-{
- if (m_filter == I3DEngine::DLOT_ALL)
- {
- return false;
- }
-
- return (m_filter & object.type) == 0;
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::FindNewLeastValueAsset()
-{
- uint32 size = m_assets.size();
- for (uint32 i = 0; i < size; ++i)
- {
- const TAssetInfo& currAsset = m_assets[ i ];
- const TAssetInfo& leastValueAsset = m_assets[ m_indexLeastValueAsset ];
-
- if (currAsset < leastValueAsset)
- {
- m_indexLeastValueAsset = i;
- }
- }
-}
-
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::Update()
-{
- m_lock.Lock();
- if (!m_isFrozen)
- {
- std::sort(m_assets.begin(), m_assets.end(), CDebugDrawListMgr::SortComparison);
- }
- gEnv->pRenderer->CollectDrawCallsInfoPerNode(true);
- // it displays values from the previous frame. This mean that if it is disabled, and then enabled again later on, it will display bogus values for 1 frame...but i dont care (yet)
- float X = 10.f;
- float Y = 100.f;
- if (m_isFrozen)
- {
- PrintText(X, Y, Col_Red, "FROZEN DEBUGINFO");
- }
- Y += 20.f;
- PrintText(X, Y, Col_White, "total assets: %d Ordered by: Showing:", m_counter);
- PrintText(X + 240, Y, Col_Yellow, GetStrCurrMode());
- TMyStandardString filterStr;
- GetStrCurrFilter(filterStr);
- PrintText(X + 420, Y, Col_Yellow, filterStr.c_str());
- Y += 20.f;
- float XName = 270;
-
- const char* pHeaderStr = "";
- switch (Cry3DEngineBase::GetCVars()->e_DebugDraw)
- {
- case LM_TRI_COUNT:
- pHeaderStr = " tris " " meshMem " "rep " " type ";
- break;
- case LM_VERT_COUNT:
- pHeaderStr = " verts " " meshMem " "rep " " type ";
- break;
- case LM_DRAWCALLS:
- pHeaderStr = "draw Calls " " tris " "rep " " type ";
- break;
- case LM_TEXTMEM:
- pHeaderStr = " texMem " " meshMem " "rep " " type ";
- break;
- case LM_MESHMEM:
- pHeaderStr = " meshMem " " texMem " "rep " " type ";
- break;
- }
-
-
- PrintText(X, Y, Col_White, pHeaderStr);
- const int standardNameSize = 48;
- PrintText(XName, Y, Col_White, "Entity (class)");
- PrintText(XName + (standardNameSize + 2) * 7, Y, Col_White, "File name");
-
- Y += 20.f;
- for (uint32 i = 0; i < m_assets.size(); ++i)
- {
- ColorF colorLine = Col_Cyan;
- if (Cry3DEngineBase::GetCVars()->e_DebugDrawListBBoxIndex - 1 == i)
- {
- colorLine = Col_Blue;
- }
- const TAssetInfo& currAsset = m_assets[ i ];
- TMyStandardString texMemoryStr;
- TMyStandardString meshMemoryStr;
- MemToString(currAsset.texMemory, texMemoryStr);
- MemToString(currAsset.meshMemory, meshMemoryStr);
-
- switch (Cry3DEngineBase::GetCVars()->e_DebugDraw)
- {
- case LM_TRI_COUNT:
- PrintText(X, Y + 20.f * i, colorLine, "%7d " "%s " "%3d " "%s",
- currAsset.numTris, meshMemoryStr.c_str(), currAsset.numInstances, GetAssetTypeName(currAsset.type));
- break;
- case LM_VERT_COUNT:
- PrintText(X, Y + 20.f * i, colorLine, "%7d " "%s " "%3d " "%s",
- currAsset.numVerts, meshMemoryStr.c_str(), currAsset.numInstances, GetAssetTypeName(currAsset.type));
- break;
- case LM_DRAWCALLS:
- {
- PrintText(X, Y + 20.f * i, colorLine, " %5d " "%7d " "%3d " "%s",
- currAsset.drawCalls, currAsset.numTris, currAsset.numInstances, GetAssetTypeName(currAsset.type));
- }
- break;
- case LM_TEXTMEM:
- PrintText(X, Y + 20.f * i, colorLine, "%s " "%s " "%3d " "%s",
- texMemoryStr.c_str(), meshMemoryStr.c_str(), currAsset.numInstances, GetAssetTypeName(currAsset.type));
- break;
- case LM_MESHMEM:
- PrintText(X, Y + 20.f * i, colorLine, "%s " "%s " "%3d " "%s",
- meshMemoryStr.c_str(), texMemoryStr.c_str(), currAsset.numInstances, GetAssetTypeName(currAsset.type));
- break;
- }
-
- int filenameSep = 7 * (max(standardNameSize, int(currAsset.name.length())) + 2);
- float XFileName = XName + filenameSep;
-
- PrintText(XName, Y + 20.f * i, colorLine, currAsset.name.c_str());
- PrintText(XFileName, Y + 20.f * i, colorLine, currAsset.fileName.c_str());
- }
-
- if (Cry3DEngineBase::GetCVars()->e_DebugDrawListBBoxIndex > 0 && uint(Cry3DEngineBase::GetCVars()->e_DebugDrawListBBoxIndex - 1) < m_assets.size())
- {
- const TAssetInfo& assetInfo = m_assets[ Cry3DEngineBase::GetCVars()->e_DebugDrawListBBoxIndex - 1 ];
- uint32 numBoxesDrawn = 0;
- for (uint32 i = 0; i < m_drawBoxes.size(); ++i)
- {
- const TObjectDrawBoxInfo& drawBox = m_drawBoxes[ i ];
- if (drawBox.assetID == assetInfo.ID)
- {
- gEnv->pRenderer->GetIRenderAuxGeom()->DrawAABB(drawBox.bbox, drawBox.mat, true, ColorB(0, 0, 255, 100), eBBD_Faceted);
- numBoxesDrawn++;
- if (numBoxesDrawn >= assetInfo.numInstances)
- {
- break;
- }
- }
- }
- }
-
- if (m_freezeRequested)
- {
- m_isFrozen = true;
- }
- if (m_unfreezeRequested)
- {
- m_isFrozen = false;
- }
- if (m_dumpLogRequested)
- {
- DumpLog();
- }
-
- ClearConsoleCommandRequestVars();
-
- if (!m_isFrozen)
- {
- ClearFrameData();
- m_assets.reserve(Cry3DEngineBase::GetCVars()->e_DebugDrawListSize);
- }
- m_lock.Unlock();
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::PrintText(float x, float y, const ColorF& fColor, const char* label_text, ...)
-{
- va_list args;
- va_start(args, label_text);
- SDrawTextInfo ti;
- ti.xscale = ti.yscale = 1.2f;
- ti.flags = eDrawText_2D | eDrawText_FixedSize | eDrawText_Monospace;
- {
- ti.color[0] = fColor[0];
- ti.color[1] = fColor[1];
- ti.color[2] = fColor[2];
- ti.color[3] = fColor[3];
- }
- gEnv->pRenderer->DrawTextQueued(Vec3(x, y, 0.5f), ti, label_text, args);
- va_end(args);
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::MemToString(uint32 memVal, TMyStandardString& outStr)
-{
- if (memVal < 1024 * 1024)
- {
- outStr.Format("%5.1f kb", memVal / (1024.f));
- }
- else
- {
- outStr.Format("%5.1f MB", memVal / (1024.f * 1024.f));
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-bool CDebugDrawListMgr::TAssetInfo::operator<(const TAssetInfo& other) const
-{
- switch (Cry3DEngineBase::GetCVars()->e_DebugDraw)
- {
- case LM_TRI_COUNT:
- return (numTris < other.numTris);
-
- case LM_VERT_COUNT:
- return (numVerts < other.numVerts);
-
- case LM_DRAWCALLS:
- return (drawCalls < other.drawCalls);
-
- case LM_TEXTMEM:
- return (texMemory < other.texMemory);
-
- case LM_MESHMEM:
- return (meshMemory < other.meshMemory);
-
- default:
- assert(false);
- return false;
- }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-CDebugDrawListMgr::TAssetInfo::TAssetInfo(const I3DEngine::SObjectInfoToAddToDebugDrawList& objInfo)
-{
- type = objInfo.type;
- if (!objInfo.pClassName)
- {
- // custom functions to avoid any heap allocation
- MyString_Assign(name, objInfo.pName);
- MyStandardString_Concatenate(name, "(");
- MyStandardString_Concatenate(name, objInfo.pClassName);
- MyStandardString_Concatenate(name, ")");
- }
-
- MyFileNameString_Assign(fileName, objInfo.pFileName);
-
- numTris = objInfo.numTris;
- numVerts = objInfo.numVerts;
- texMemory = objInfo.texMemory;
- meshMemory = objInfo.meshMemory;
- drawCalls = gEnv->pRenderer->GetDrawCallsPerNode(objInfo.pRenderNode);
- numInstances = 1;
- ID = UNDEFINED_ASSET_ID;
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-CDebugDrawListMgr::TObjectDrawBoxInfo::TObjectDrawBoxInfo(const I3DEngine::SObjectInfoToAddToDebugDrawList& objInfo)
-{
- mat.SetIdentity();
- bbox.Reset();
- if (objInfo.pMat)
- {
- mat = *objInfo.pMat;
- }
- if (objInfo.pBox)
- {
- bbox = *objInfo.pBox;
- }
- assetID = UNDEFINED_ASSET_ID;
-}
-
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::MyStandardString_Concatenate(TMyStandardString& outStr, const char* pStr)
-{
- if (pStr && outStr.length() < outStr.capacity())
- {
- outStr._ConcatenateInPlace(pStr, min(strlen(pStr), outStr.capacity() - outStr.length()));
- }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::MyFileNameString_Assign(TFilenameString& outStr, const char* pStr)
-{
- char tempBuf[ outStr.MAX_SIZE + 1 ];
-
- uint32 outInd = 0;
- if (pStr)
- {
- while (*pStr != 0 && outInd < outStr.MAX_SIZE)
- {
- tempBuf[outInd] = *pStr;
- outInd++;
- if (*pStr == '%' && outInd < outStr.MAX_SIZE)
- {
- tempBuf[outInd] = '%';
- outInd++;
- }
- pStr++;
- }
- }
- tempBuf[ outInd ] = 0;
- outStr = tempBuf;
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::ConsoleCommand(IConsoleCmdArgs* args)
-{
- if (args->GetArgCount() > 1 && args->GetArg(1))
- {
- switch (toupper(args->GetArg(1)[0]))
- {
- case 'F':
- m_freezeRequested = true;
- break;
- case 'C':
- m_unfreezeRequested = true;
- break;
- case 'D':
- m_dumpLogRequested = true;
- break;
- }
- }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::CheckFilterCVar()
-{
- ICVar* pCVar = gEnv->pConsole->GetCVar("e_debugdrawlistfilter");
-
- if (!pCVar)
- {
- return;
- }
-
- const char* pVal = pCVar->GetString();
-
- if (pVal && azstricmp(pVal, "all") == 0)
- {
- m_filter = I3DEngine::DLOT_ALL;
- return;
- }
-
- m_filter = 0;
- while (pVal && pVal[0])
- {
- switch (toupper(pVal[0]))
- {
- case 'C':
- m_filter |= I3DEngine::DLOT_CHARACTER;
- break;
- case 'S':
- m_filter |= I3DEngine::DLOT_STATOBJ;
- break;
- }
- ++pVal;
- }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::DumpLog()
-{
- TMyStandardString filterStr;
- GetStrCurrFilter(filterStr);
- CryLog("--------------------------------------------------------------------------------");
- CryLog(" DebugDrawList infodebug");
- CryLog("--------------------------------------------------------------------------------");
- CryLog(" total objects: %d Ordered by: %s Showing: %s", m_counter, GetStrCurrMode(), filterStr.c_str());
- CryLog(PRINTF_EMPTY_FORMAT);
- CryLog(" tris verts draw Calls texMem meshMem type");
- CryLog(" ------- -------- ---------- -------- -------- ----------");
- for (uint32 i = 0; i < m_assets.size(); ++i)
- {
- const TAssetInfo& currAsset = m_assets[ i ];
- TMyStandardString texMemoryStr;
- TMyStandardString meshMemoryStr;
- MemToString(currAsset.texMemory, texMemoryStr);
- MemToString(currAsset.meshMemory, meshMemoryStr);
- CryLog("%8d %8d %5d %s %s %s %s %s", currAsset.numTris, currAsset.numVerts, currAsset.drawCalls,
- texMemoryStr.c_str(), meshMemoryStr.c_str(), GetAssetTypeName(currAsset.type), currAsset.name.c_str(), currAsset.fileName.c_str());
- }
- CryLog("--------------------------------------------------------------------------------");
-}
-
-
-
-//////////////////////////////////////////////////////////////////////////
-const char* CDebugDrawListMgr::GetStrCurrMode()
-{
- const char* pModesNames[] =
- {
- "Tri count",
- "Vert count",
- "Draw calls",
- "Texture memory",
- "Mesh memory"
- };
-
- uint32 index = Cry3DEngineBase::GetCVars()->e_DebugDraw - LM_BASENUMBER;
- uint32 numElems = sizeof(pModesNames) / sizeof *(pModesNames);
- if (index < numElems)
- {
- return pModesNames[index];
- }
- else
- {
- return "";
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-void CDebugDrawListMgr::GetStrCurrFilter(TMyStandardString& strOut)
-{
- const char* pFilterNames[] =
- {
- "",
- "Characters",
- "StatObjs"
- };
-
- uint32 numElems = sizeof(pFilterNames) / sizeof *(pFilterNames);
- for (uint32 i = 1, bitVal = 1; i < numElems; ++i)
- {
- if ((bitVal & m_filter) != 0)
- {
- if (strOut.size() > 0)
- {
- strOut += "+";
- }
- strOut += pFilterNames[i];
- }
- bitVal *= 2;
- }
-
- if (strOut.size() == 0)
- {
- strOut = "ALL";
- }
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-const char* CDebugDrawListMgr::GetAssetTypeName(I3DEngine::EDebugDrawListAssetTypes type)
-{
- const char* pNames[] =
- {
- "",
- "Brush ",
- "Vegetation",
- "Character ",
- "StatObj "
- };
-
- uint32 numElems = sizeof(pNames) / sizeof *(pNames);
- for (uint32 i = 1, bitVal = 1; i < numElems; ++i)
- {
- if (bitVal == type)
- {
- return pNames[i];
- }
- bitVal *= 2;
- }
-
- return "";
-}
-
-
-
-#endif //RELEASE
-
-void C3DEngine::GetStatObjAndMatTables(DynArray* pStatObjTable, DynArray<_smart_ptr >* pMatTable, DynArray* pStatInstGroupTable, uint32 nObjTypeMask)
-{
- SHotUpdateInfo exportInfo;
- exportInfo.nObjTypeMask = nObjTypeMask;
-
- std::vector statObjTable;
- std::vector<_smart_ptr > matTable;
- std::vector statInstGroupTable;
-
- if (Get3DEngine() && Get3DEngine()->IsObjectTreeReady())
- {
- Get3DEngine()->GetObjectTree()->GenerateStatObjAndMatTables((pStatObjTable != NULL) ? &statObjTable : NULL,
- (pMatTable != NULL) ? &matTable : NULL,
- (pStatInstGroupTable != NULL) ? &statInstGroupTable : NULL,
- &exportInfo);
- }
-
- if (GetVisAreaManager())
- {
- GetVisAreaManager()->GenerateStatObjAndMatTables((pStatObjTable != NULL) ? &statObjTable : NULL,
- (pMatTable != NULL) ? &matTable : NULL,
- (pStatInstGroupTable != NULL) ? &statInstGroupTable : NULL,
- &exportInfo);
- }
-
- if (pStatObjTable)
- {
- pStatObjTable->resize(statObjTable.size());
- for (size_t i = 0; i < statObjTable.size(); ++i)
- {
- (*pStatObjTable)[i] = statObjTable[i];
- }
-
- statObjTable.clear();
- }
-
- if (pMatTable)
- {
- pMatTable->resize(matTable.size());
- for (size_t i = 0; i < matTable.size(); ++i)
- {
- (*pMatTable)[i] = matTable[i];
- }
-
- matTable.clear();
- }
-
- if (pStatInstGroupTable)
- {
- pStatInstGroupTable->resize(statInstGroupTable.size());
- for (size_t i = 0; i < statInstGroupTable.size(); ++i)
- {
- (*pStatInstGroupTable)[i] = statInstGroupTable[i];
- }
-
- statInstGroupTable.clear();
- }
-}
-
diff --git a/Code/CryEngine/Cry3DEngine/3dEngine.h b/Code/CryEngine/Cry3DEngine/3dEngine.h
deleted file mode 100644
index a8e46c32ae..0000000000
--- a/Code/CryEngine/Cry3DEngine/3dEngine.h
+++ /dev/null
@@ -1,1514 +0,0 @@
-/*
-* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-* its licensors.
-*
-* For complete copyright and license terms please see the LICENSE at the root of this
-* distribution (the "License"). All use of this software is governed by the License,
-* or, if provided, by the license below or the license accompanying this file. Do not
-* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-*
-*/
-// Original file Copyright Crytek GMBH or its affiliates, used under license.
-
-#ifndef CRYINCLUDE_CRY3DENGINE_3DENGINE_H
-#define CRYINCLUDE_CRY3DENGINE_3DENGINE_H
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#ifdef DrawText
-#undef DrawText
-#endif //DrawText
-
-struct IOctreeNode;
-struct IDeferredPhysicsEventManager;
-class COctreeNode;
-class CCullBuffer;
-
-struct StatInstGroup;
-
-
-namespace LegacyProceduralVegetation
-{
- class VegetationPoolManager;
-}
-
-class CMemoryBlock
- : public IMemoryBlock
-{
-public:
- virtual void* GetData() { return m_pData; }
- virtual int GetSize() { return m_nSize; }
- virtual ~CMemoryBlock() { delete[] m_pData; }
-
- CMemoryBlock() { m_pData = 0; m_nSize = 0; }
- CMemoryBlock(const void* pData, int nSize)
- {
- m_pData = 0;
- m_nSize = 0;
- SetData(pData, nSize);
- }
- void SetData(const void* pData, int nSize)
- {
- delete[] m_pData;
- m_pData = new uint8[nSize];
- memcpy(m_pData, pData, nSize);
- m_nSize = nSize;
- }
- void Free()
- {
- delete[] m_pData;
- m_pData = NULL;
- m_nSize = 0;
- }
- void Allocate(int nSize)
- {
- delete[] m_pData;
- m_pData = new uint8[nSize];
- memset(m_pData, 0, nSize);
- m_nSize = nSize;
- }
-
- static CMemoryBlock* CompressToMemBlock(void* pData, int nSize, ISystem* pSystem)
- {
- CMemoryBlock* pMemBlock = NULL;
- uint8* pTmp = new uint8[nSize + 4];
- size_t nComprSize = nSize;
- *(uint32*)pTmp = nSize;
- if (pSystem->CompressDataBlock(pData, nSize, pTmp + 4, nComprSize))
- {
- pMemBlock = new CMemoryBlock(pTmp, nComprSize + 4);
- }
-
- delete[] pTmp;
- return pMemBlock;
- }
-
- static CMemoryBlock* DecompressFromMemBlock(CMemoryBlock* pMemBlock, ISystem* pSystem)
- {
- size_t nUncompSize = *(uint32*)pMemBlock->GetData();
- SwapEndian(nUncompSize);
- CMemoryBlock* pResult = new CMemoryBlock;
- pResult->Allocate(nUncompSize);
- if (!pSystem->DecompressDataBlock((byte*)pMemBlock->GetData() + 4, pMemBlock->GetSize() - 4, pResult->GetData(), nUncompSize))
- {
- assert(!"CMemoryBlock::DecompressFromMemBlock failed");
- delete pResult;
- pResult = NULL;
- }
-
- return pResult;
- }
-
- uint8* m_pData;
- int m_nSize;
-};
-
-// Values to combine for phys area type selection
-enum EAreaPhysics
-{
- Area_Water = BIT(0),
- Area_Air = BIT(1),
- // Other physics media can be masked in as well
-
- Area_Gravity = BIT(14),
- Area_Other = BIT(15),
-};
-
-struct SAreaChangeRecord
-{
- AABB boxAffected; // Area of change
- uint16 uPhysicsMask; // Types of mediums for this area
-};
-
-struct SPhysAreaNodeProxy
-{
- void Reset()
- {
- pRenderNode = (IRenderNode*)(intptr_t)-1;
- bIsValid = false;
- bbox.Reset();
- }
-
- IRenderNode* pRenderNode; // RenderNode
- uint16 uPhysicsMask; // Bit mask of physics interested in
- bool bIsValid; // Does the proxy carry valid data
- AABB bbox; // Bounding box of render node
-};
-
-struct SFrameInfo
-{
- void Reset()
- {
- ppRNTmpData = (CRNTmpData**)(intptr_t)-1;
- bIsValid = false;
- nCreatedFrameId = nLastUsedFrameId = ~0;
- }
-
- uint32 nLastUsedFrameId;
- uint32 nCreatedFrameId;
- bool bIsValid;
- CRNTmpData** ppRNTmpData;
-};
-
-struct SNodeInfo;
-class CStitchedImage;
-struct DLightAmount
-{
- CDLight* pLight;
- float fAmount;
-};
-
-template
-struct CPoolAllocator
-{
- CPoolAllocator() { m_nCounter = 0; }
-
- ~CPoolAllocator()
- {
- Reset();
- }
-
- void Reset()
- {
- for (int i = 0; i < m_Pools.Count(); i++)
- {
- delete[](byte*)m_Pools[i];
- m_Pools[i] = NULL;
- }
- m_nCounter = 0;
- }
-
- void ReleaseElement(T* pElem)
- {
- if (pElem)
- {
- m_FreeElements.Add(pElem);
- }
- }
-
- T* GetNewElement()
- {
- if (m_FreeElements.Count())
- {
- T* pPtr = m_FreeElements.Last();
- m_FreeElements.DeleteLast();
- return pPtr;
- }
-
- int nPoolId = m_nCounter / nMaxElemsInChunk;
- int nElemId = m_nCounter - nPoolId * nMaxElemsInChunk;
- m_Pools.PreAllocate(nPoolId + 1, nPoolId + 1);
- if (!m_Pools[nPoolId])
- {
- m_Pools[nPoolId] = (T*)new byte[nMaxElemsInChunk * sizeof(T)];
- }
- m_nCounter++;
- return &m_Pools[nPoolId][nElemId];
- }
-
- int GetCount() { return m_nCounter - m_FreeElements.Count(); }
- int GetCapacity() { return m_Pools.Count() * nMaxElemsInChunk; }
- int GetCapacityBytes() { return GetCapacity() * sizeof(T); }
-
-private:
-
- int m_nCounter;
- PodArray m_Pools;
- PodArray m_FreeElements;
-};
-
-struct SImageSubInfo
-{
- SImageSubInfo() { memset(this, 0, sizeof(*this)); fTiling = fTilingIn = 1.f; }
-
- static const int nMipsNum = 4;
-
- union
- {
- byte* pImgMips[nMipsNum];
- int pImgMipsSizeKeeper[8];
- };
-
- float fAmount;
- int nReady;
- int nDummy[4];
-
- _smart_ptr pMat;
- int nDim;
- float fTilingIn;
- float fTiling;
- float fSpecularAmount;
- int nSortOrder;
- int nAlignFix;
-
- AUTO_STRUCT_INFO
-};
-
-struct SImageInfo
- : public Cry3DEngineBase
-{
- SImageInfo()
- {
- szDetMatName[0] = szBaseTexName[0] = '\0';
- nPhysSurfaceType = 0;
- nLayerId = 0;
- fUseRemeshing = 0;
- fBr = 1.f;
- layerFilterColor = Col_White;
- nDetailSurfTypeId = 0;
- ZeroStruct(arrTextureId);
- }
-
- void GetMemoryUsage([[maybe_unused]] ICrySizer* pSizer) const { /*nothing*/ }
-
- SImageSubInfo baseInfo;
- SImageSubInfo detailInfo;
-
- char szDetMatName[128 - 20];
-
- int arrTextureId[4];
- int nPhysSurfaceType;
-
- char szBaseTexName[128];
-
- float fUseRemeshing;
- ColorF layerFilterColor;
- int nLayerId;
- float fBr;
- int nDetailSurfTypeId;
-
- int GetMemoryUsage();
-
- AUTO_STRUCT_INFO
-};
-
-struct SSceneFrustum
-{
- uint32* pRgbImage;
- uint32 nRgbWidth, nRgbHeight;
-
- float* pDepthImage;
- uint32 nDepthWidth, nDepthHeight;
-
- CCamera camera;
-
- IRenderMesh* pRM;
- _smart_ptr pMaterial;
-
- float fDistance;
- int nId;
-
- static int Compare(const void* v1, const void* v2)
- {
- SSceneFrustum* p[2] = { (SSceneFrustum*)v1, (SSceneFrustum*)v2 };
-
- if (p[0]->fDistance > p[1]->fDistance)
- {
- return 1;
- }
- if (p[0]->fDistance < p[1]->fDistance)
- {
- return -1;
- }
-
- if (p[0]->nId > p[1]->nId)
- {
- return 1;
- }
- if (p[0]->nId < p[1]->nId)
- {
- return -1;
- }
-
- return 0;
- }
-};
-
-struct SPerObjectShadow
-{
- IShadowCaster* pCaster;
- float fConstBias;
- float fSlopeBias;
- float fJitter;
- Vec3 vBBoxScale;
- uint nTexSize;
-};
-//////////////////////////////////////////////////////////////////////
-#define LV_MAX_COUNT 256
-#define LV_LIGHTS_MAX_COUNT 64
-
-#define LV_WORLD_BUCKET_SIZE 512
-#define LV_LIGHTS_WORLD_BUCKET_SIZE 512
-
-#define LV_WORLD_SIZEX 128
-#define LV_WORLD_SIZEY 128
-#define LV_WORLD_SIZEZ 64
-
-#define LV_CELL_SIZEX 4
-#define LV_CELL_SIZEY 4
-#define LV_CELL_SIZEZ 8
-
-#define LV_CELL_RSIZEX (1.0f / (float)LV_CELL_SIZEX)
-#define LV_CELL_RSIZEY (1.0f / (float)LV_CELL_SIZEY)
-#define LV_CELL_RSIZEZ (1.0f / (float)LV_CELL_SIZEZ)
-
-#define LV_LIGHT_CELL_SIZE 32
-#define LV_LIGHT_CELL_R_SIZE (1.0f / (float)LV_LIGHT_CELL_SIZE)
-
-#define LV_DLF_LIGHTVOLUMES_MASK (DLF_DISABLED | DLF_FAKE | DLF_AMBIENT | DLF_DEFERRED_CUBEMAPS)
-
-class CLightVolumesMgr
- : public Cry3DEngineBase
-{
-public:
- CLightVolumesMgr()
- {
- Init();
- }
-
- void Init();
- void Reset();
- uint16 RegisterVolume(const Vec3& vPos, f32 fRadius, uint8 nClipVolumeRef, const SRenderingPassInfo& passInfo);
- void RegisterLight(const CDLight& pDL, uint32 nLightID, const SRenderingPassInfo& passInfo);
- void Update(const SRenderingPassInfo& passInfo);
- void Clear(const SRenderingPassInfo& passInfo);
- void GetLightVolumes(threadID nThreadID, SLightVolume*& pLightVols, uint32& nNumVols);
-#ifndef _RELEASE
- void DrawDebug(const SRenderingPassInfo& passInfo);
-#endif
-
-private:
- struct SLightVolInfo
- {
- SLightVolInfo()
- : vVolume(ZERO, 0.0f)
- , nNextVolume(0)
- , nClipVolumeID(0)
- {
- };
- SLightVolInfo(const Vec3& pPos, float fRad, uint8 clipVolumeID)
- : vVolume(pPos, fRad)
- , nNextVolume(0)
- , nClipVolumeID(clipVolumeID)
- {
- };
-
- Vec4 vVolume; // xyz: position, w: radius
- uint16 nNextVolume; // index of next light volume for this hash bucket (0 if none)
- uint8 nClipVolumeID; // clip volume stencil ref
- };
-
- struct SLightCell
- {
- SLightCell()
- : nLightCount(0)
- {
- };
-
- uint16 nLightID[LV_LIGHTS_MAX_COUNT];
- uint8 nLightCount;
- };
-
- inline int32 GetIntHash(const int32 k, [[maybe_unused]] const int32 nBucketSize = LV_WORLD_BUCKET_SIZE) const
- {
- static const uint32 nHashBits = 9;
- static const uint32 nGoldenRatio32bits = 2654435761u; // (2^32) / (golden ratio)
- return (k * nGoldenRatio32bits) >> (32 - nHashBits); // ref: knuths integer multiplicative hash function
- }
-
- inline uint16 GetWorldHashBucketKey(const int32 x, const int32 y, const int32 z, const int32 nBucketSize = LV_WORLD_BUCKET_SIZE) const
- {
- const uint32 nPrimeNum = 101;//0xd8163841;
- return aznumeric_caster((((GetIntHash(x) + nPrimeNum) * nPrimeNum + GetIntHash(y)) * nPrimeNum + GetIntHash(z)) & (nBucketSize - 1));
- }
-
- void AddLight(const SRenderLight& pLight, const SLightVolInfo* __restrict pVolInfo, SLightVolume& pVolume);
-
- typedef DynArray LightVolumeVector;
-
-private:
- LightVolumeVector m_pLightVolumes[RT_COMMAND_BUF_COUNT]; // Final light volume list. move light list creation to renderer to avoid double-buffering this
- DynArray m_pLightVolsInfo[RT_COMMAND_BUF_COUNT]; // World cells data
- SLightCell m_pWorldLightCells[LV_LIGHTS_WORLD_BUCKET_SIZE]; // 2D World cell buckets for light sources ids
- uint16 m_nWorldCells[LV_WORLD_BUCKET_SIZE]; // World cell buckets for light volumes
- bool m_bUpdateLightVolumes : 1;
-};
-
-// onscreen infodebug for e_debugDraw >= 100
-#ifndef _RELEASE
-class CDebugDrawListMgr
-{
- typedef CryFixedStringT<64> TMyStandardString;
- typedef CryFixedStringT<128> TFilenameString;
-
-public:
-
- CDebugDrawListMgr();
- void Update();
- void AddObject(I3DEngine::SObjectInfoToAddToDebugDrawList& objInfo);
- void DumpLog();
- bool IsEnabled() const { return Cry3DEngineBase::GetCVars()->e_DebugDraw >= LM_BASENUMBER; }
- static void ConsoleCommand(IConsoleCmdArgs* args);
-
-private:
-
- enum
- {
- UNDEFINED_ASSET_ID = 0xffffffff
- };
-
- struct TAssetInfo
- {
- TMyStandardString name;
- TFilenameString fileName;
- uint32 numTris;
- uint32 numVerts;
- uint32 texMemory;
- uint32 meshMemory;
- uint32 drawCalls;
- uint32 numInstances;
- I3DEngine::EDebugDrawListAssetTypes type;
- uint32 ID; // to identify which drawBoxes belong to this asset
-
- TAssetInfo(const I3DEngine::SObjectInfoToAddToDebugDrawList& objInfo);
- bool operator<(const TAssetInfo& other) const;
- };
-
- struct TObjectDrawBoxInfo
- {
- Matrix34 mat;
- AABB bbox;
- uint32 assetID;
-
- TObjectDrawBoxInfo(const I3DEngine::SObjectInfoToAddToDebugDrawList& objInfo);
- };
-
- void FindNewLeastValueAsset();
- void ClearFrameData();
- void ClearConsoleCommandRequestVars();
- static bool SortComparison(const TAssetInfo& A, const TAssetInfo& B) { return B < A; }
- const char* GetStrCurrMode();
- void GetStrCurrFilter(TMyStandardString& strOut);
- bool ShouldFilterOutObject(const I3DEngine::SObjectInfoToAddToDebugDrawList& newObject);
- void MemToString(uint32 memVal, TMyStandardString& outStr);
- static void PrintText(float x, float y, const ColorF& fColor, const char* label_text, ...);
- const char* GetAssetTypeName(I3DEngine::EDebugDrawListAssetTypes type);
- TAssetInfo* FindDuplicate(const TAssetInfo& object);
- void CheckFilterCVar();
-
- // to avoid any heap allocation
- static void MyStandardString_Concatenate(TMyStandardString& outStr, const char* str);
- static void MyFileNameString_Assign(TFilenameString& outStr, const char* pStr);
-
- template
- static void MyString_Assign(T& outStr, const char* pStr)
- {
- if (pStr)
- {
- outStr._Assign(pStr, min(strlen(pStr), outStr.capacity()));
- }
- else
- {
- outStr = "";
- }
- }
-
-
-
- enum EListModes
- {
- LM_BASENUMBER = 100,
- LM_TRI_COUNT = LM_BASENUMBER,
- LM_VERT_COUNT,
- LM_DRAWCALLS,
- LM_TEXTMEM,
- LM_MESHMEM
- };
-
-
- bool m_isFrozen;
- uint32 m_counter;
- uint32 m_assetCounter;
- uint32 m_indexLeastValueAsset;
- std::vector m_assets;
- std::vector m_drawBoxes;
- CryCriticalSection m_lock;
-
- static bool m_dumpLogRequested;
- static bool m_freezeRequested;
- static bool m_unfreezeRequested;
- static uint32 m_filter;
-};
-#endif //_RELEASE
-
-//////////////////////////////////////////////////////////////////////
-class C3DEngine
- : public I3DEngine
- , public Cry3DEngineBase
-{
-public:
-
- // I3DEngine interface implementation
- virtual bool Init();
- virtual void OnFrameStart();
- virtual void Update();
- virtual void RenderWorld(int nRenderFlags, const SRenderingPassInfo& passInfo, const char* szDebugName);
- virtual void PreWorldStreamUpdate(const CCamera& cam);
- virtual void WorldStreamUpdate();
- virtual void ShutDown();
- virtual void Release() { CryAlignedDelete(this); };
- virtual void SetLevelPath(const char* szFolderName);
- virtual bool LoadLevel(const char* szFolderName, const char* szMissionName);
- virtual void UnloadLevel();
- virtual void PostLoadLevel();
- virtual bool InitLevelForEditor(const char* szFolderName, const char* szMissionName);
- virtual bool LevelLoadingInProgress();
- virtual void DisplayInfo(float& fTextPosX, float& fTextPosY, float& fTextStepY, bool bEnhanced);
- virtual void DisplayMemoryStatistics();
- virtual void SetupDistanceFog();
- virtual IStatObj* LoadStatObjUnsafeManualRef(const char* fileName, const char* geomName = nullptr, /*[Out]*/ IStatObj::SSubObject** subObject = nullptr,
- bool useStreaming = true, unsigned long loadingFlags = 0, const void* data = nullptr, int dataSize = 0) override;
- virtual _smart_ptr LoadStatObjAutoRef(const char* fileName, const char* geomName = nullptr, /*[Out]*/ IStatObj::SSubObject** subObject = nullptr,
- bool useStreaming = true, unsigned long loadingFlags = 0, const void* data = nullptr, int dataSize = 0) override;
- virtual const IObjManager* GetObjectManager() const;
- virtual IObjManager* GetObjectManager();
-
- virtual IStatObj* FindStatObjectByFilename(const char* filename);
- virtual void RegisterEntity(IRenderNode* pEnt, int nSID = -1, int nSIDConsideredSafe = -1);
- virtual bool IsSunShadows(){ return m_bSunShadows; };
- virtual void SelectEntity(IRenderNode* pEnt);
- virtual void LoadEmptyLevel() override;
-
- virtual void LoadStatObjAsync(LoadStaticObjectAsyncResult resultCallback, const char* szFileName, const char* szGeomName = nullptr, bool bUseStreaming = true, unsigned long nLoadingFlags = 0);
- virtual void ProcessAsyncStaticObjectLoadRequests() override;
-
-#ifndef _RELEASE
- virtual void AddObjToDebugDrawList(SObjectInfoToAddToDebugDrawList& objInfo);
- virtual bool IsDebugDrawListEnabled() const { return m_DebugDrawListMgr.IsEnabled(); }
-#endif
-
- virtual void UnRegisterEntityDirect(IRenderNode* pEnt);
- virtual void UnRegisterEntityAsJob(IRenderNode* pEnt);
-
- virtual bool IsUnderWater(const Vec3& vPos) const;
- virtual void SetOceanRenderFlags(uint8 nFlags);
- virtual uint8 GetOceanRenderFlags() const { return m_nOceanRenderFlags; }
- virtual uint32 GetOceanVisiblePixelsCount() const;
- virtual float GetBottomLevel(const Vec3& referencePos, float maxRelevantDepth, int objtypes);
- virtual float GetBottomLevel(const Vec3& referencePos, float maxRelevantDepth /* = 10.0f*/);
- virtual float GetBottomLevel(const Vec3& referencePos, int objflags);
-
-#if defined(USE_GEOM_CACHES)
- virtual IGeomCache* LoadGeomCache(const char* szFileName);
- virtual IGeomCache* FindGeomCacheByFilename(const char* szFileName);
-#endif
-
- virtual IStatObj* LoadDesignerObject(int nVersion, const char* szBinaryStream, int size);
-
- void AsyncOctreeUpdate(IRenderNode* pEnt, int nSID, int nSIDConsideredSafe, uint32 nFrameID, bool bUnRegisterOnly);
- bool UnRegisterEntityImpl(IRenderNode* pEnt);
-
- // Fast option - use if just ocean height required
- virtual float GetWaterLevel();
- // This will return ocean height or water volume height, optional for accurate water height query
- virtual float GetWaterLevel(const Vec3* pvPos, IPhysicalEntity* pent = NULL, bool bAccurate = false);
- // Only use for Accurate query - this will return exact ocean height
- virtual float GetAccurateOceanHeight(const Vec3& pCurrPos) const;
-
- virtual CausticsParams GetCausticsParams() const;
- virtual OceanAnimationData GetOceanAnimationParams() const override;
- virtual void GetHDRSetupParams(Vec4 pParams[5]) const;
- virtual void CreateDecal(const CryEngineDecalInfo& Decal);
-
- virtual void SetSunDir(const Vec3& newSunOffset);
- virtual Vec3 GetSunDir() const;
- virtual Vec3 GetSunDirNormalized() const;
- virtual Vec3 GetRealtimeSunDirNormalized() const;
- virtual void SetSunColor(Vec3 vColor);
- Vec3 GetSunAnimColor() override;
- void SetSunAnimColor(const Vec3& sunAnimColor) override;
- float GetSunAnimSpeed() override;
- void SetSunAnimSpeed(float sunAnimSpeed) override;
- AZ::u8 GetSunAnimPhase() override;
- void SetSunAnimPhase(AZ::u8 sunAnimPhase) override;
- AZ::u8 GetSunAnimIndex() override;
- void SetSunAnimIndex(AZ::u8 sunAnimIndex) override;
- virtual void SetSSAOAmount(float fMul);
- virtual void SetSSAOContrast(float fMul);
- virtual void SetRainParams(const SRainParams& rainParams);
- virtual bool GetRainParams(SRainParams& rainParams);
- virtual void SetSnowSurfaceParams(const Vec3& vCenter, float fRadius, float fSnowAmount, float fFrostAmount, float fSurfaceFreezing);
- virtual bool GetSnowSurfaceParams(Vec3& vCenter, float& fRadius, float& fSnowAmount, float& fFrostAmount, float& fSurfaceFreezing);
- virtual void SetSnowFallParams(int nSnowFlakeCount, float fSnowFlakeSize, float fSnowFallBrightness, float fSnowFallGravityScale, float fSnowFallWindScale, float fSnowFallTurbulence, float fSnowFallTurbulenceFreq);
- virtual bool GetSnowFallParams(int& nSnowFlakeCount, float& fSnowFlakeSize, float& fSnowFallBrightness, float& fSnowFallGravityScale, float& fSnowFallWindScale, float& fSnowFallTurbulence, float& fSnowFallTurbulenceFreq);
- virtual void OnExplosion(Vec3 vPos, float fRadius, bool bDeformTerrain = true);
- //! For editor
- virtual void RemoveAllStaticObjects(int nSID);
-
- virtual void SetPhysMaterialEnumerator(IPhysMaterialEnumerator* pPhysMaterialEnumerator);
- virtual IPhysMaterialEnumerator* GetPhysMaterialEnumerator();
- virtual void LoadMissionDataFromXMLNode(const char* szMissionName);
-
- void AddDynamicLightSource(const class CDLight& LSource, ILightSource* pEnt, int nEntityLightId, float fFadeout, const SRenderingPassInfo& passInfo);
-
- inline void AddLightToRenderer(const CDLight& pLight, float fMult, const SRenderingPassInfo& passInfo, const SRendItemSorter& rendItemSorter)
- {
- const uint32 nLightID = GetRenderer()->EF_GetDeferredLightsNum();
- GetRenderer()->EF_AddDeferredLight(pLight, fMult, passInfo, rendItemSorter);
- Get3DEngine()->m_LightVolumesMgr.RegisterLight(pLight, nLightID, passInfo);
- m_nDeferredLightsNum++;
- }
-
- virtual void SetMaxViewDistanceScale(float fScale) { m_fMaxViewDistScale = fScale; }
- virtual float GetMaxViewDistance(bool bScaled = true);
- virtual const SFrameLodInfo& GetFrameLodInfo() const { return m_frameLodInfo; }
- virtual void SetFrameLodInfo(const SFrameLodInfo& frameLodInfo);
- virtual void SetFogColor(const Vec3& vFogColor);
- virtual Vec3 GetFogColor();
- virtual float GetDistanceToSectorWithWater();
-
- virtual void GetSkyLightParameters(Vec3& sunDir, Vec3& sunIntensity, float& Km, float& Kr, float& g, Vec3& rgbWaveLengths);
- virtual void SetSkyLightParameters(const Vec3& sunDir, const Vec3& sunIntensity, float Km, float Kr, float g, const Vec3& rgbWaveLengths, bool forceImmediateUpdate = false);
-
- void SetLightsHDRDynamicPowerFactor(const float value);
- virtual float GetLightsHDRDynamicPowerFactor() const;
-
- // Return true if tessellation is allowed (by cvars) into currently set shadow map LOD
- bool IsTessellationAllowedForShadowMap(const SRenderingPassInfo& passInfo) const;
- // Return true if tessellation is allowed for given render object
- virtual bool IsTessellationAllowed(const CRenderObject* pObj, const SRenderingPassInfo& passInfo, bool bIgnoreShadowPass = false) const;
-
- virtual void SetRenderNodeMaterialAtPosition(EERType eNodeType, const Vec3& vPos, _smart_ptr pMat);
- virtual void OverrideCameraPrecachePoint(const Vec3& vPos);
- virtual int AddPrecachePoint(const Vec3& vPos, const Vec3& vDir, float fTimeOut = 3.f, float fImportanceFactor = 1.0f);
- virtual void ClearPrecachePoint(int id);
- virtual void ClearAllPrecachePoints();
- virtual void GetPrecacheRoundIds(int pRoundIds[MAX_STREAM_PREDICTION_ZONES]);
-
- virtual void TraceFogVolumes(const Vec3& vPos, const AABB& objBBox, SFogVolumeData& fogVolData, const SRenderingPassInfo& passInfo, bool fogVolumeShadingQuality);
-
- virtual Vec3 GetSunColor() const;
- virtual float GetSSAOAmount() const;
- virtual float GetSSAOContrast() const;
-
- virtual void FreeRenderNodeState(IRenderNode* pEnt);
- virtual const char* GetLevelFilePath(const char* szFileName);
-
- bool LoadCompiledOctreeForEditor() override;
- virtual bool SetStatInstGroup(int nGroupId, const IStatInstGroup& siGroup, int nSID);
- virtual bool GetStatInstGroup(int nGroupId, IStatInstGroup& siGroup, int nSID);
- virtual void ActivatePortal(const Vec3& vPos, bool bActivate, const char* szEntityName);
- virtual void GetMemoryUsage(ICrySizer* pSizer) const;
- virtual void GetResourceMemoryUsage(ICrySizer* pSizer, const AABB& cstAABB);
- virtual IVisArea* CreateVisArea(uint64 visGUID);
- virtual void DeleteVisArea(IVisArea* pVisArea);
- virtual void UpdateVisArea(IVisArea* pArea, const Vec3* pPoints, int nCount, const char* szName,
- const SVisAreaInfo& info, bool bReregisterObjects);
- virtual IClipVolume* CreateClipVolume();
- virtual void DeleteClipVolume(IClipVolume* pClipVolume);
- virtual void UpdateClipVolume(IClipVolume* pClipVolume, _smart_ptr pRenderMesh, IBSPTree3D* pBspTree, const Matrix34& worldTM, bool bActive, uint32 flags, const char* szName);
- virtual void ResetParticlesAndDecals();
- virtual IRenderNode* CreateRenderNode(EERType type);
- virtual void DeleteRenderNode(IRenderNode* pRenderNode);
- virtual Vec3 GetWind(const AABB& box, bool bIndoors) const;
- virtual Vec3 GetGlobalWind(bool bIndoors) const;
- virtual bool SampleWind(Vec3* pSamples, int nSamples, const AABB& volume, bool bIndoors) const;
- void SetupBending(CRenderObject*& pObj, const IRenderNode* pNode, const float fRadiusVert, const SRenderingPassInfo& passInfo, bool alreadyDuplicated = false);
- virtual IVisArea* GetVisAreaFromPos(const Vec3& vPos);
- virtual bool IntersectsVisAreas(const AABB& box, void** pNodeCache = 0);
- virtual bool ClipToVisAreas(IVisArea* pInside, Sphere& sphere, Vec3 const& vNormal, void* pNodeCache = 0);
- virtual bool IsVisAreasConnected(IVisArea* pArea1, IVisArea* pArea2, int nMaxReqursion, bool bSkipDisabledPortals);
- void EnableOceanRendering(bool bOcean); // todo: remove
-
- virtual void AddTextureLoadHandler(ITextureLoadHandler* pHandler);
- virtual void RemoveTextureLoadHandler(ITextureLoadHandler* pHandler);
- virtual ITextureLoadHandler* GetTextureLoadHandlerForImage(const char* ext);
- virtual struct ILightSource* CreateLightSource();
- virtual void DeleteLightSource(ILightSource* pLightSource);
- virtual bool RestoreTerrainFromDisk(int nSID);
- virtual void CheckMemoryHeap();
-
- virtual int GetLoadedObjectCount();
- virtual void GetLoadedStatObjArray(IStatObj** pObjectsArray, int& nCount);
- virtual void GetObjectsStreamingStatus(SObjectsStreamingStatus& outStatus);
- virtual void GetStreamingSubsystemData(int subsystem, SStremaingBandwidthData& outData);
- virtual void DeleteEntityDecals(IRenderNode* pEntity);
- virtual void DeleteDecalsInRange(AABB* pAreaBox, IRenderNode* pEntity);
- virtual void LockCGFResources();
- virtual void UnlockCGFResources();
- virtual void FreeUnusedCGFResources();
-
- virtual void SerializeState(TSerialize ser);
- virtual void PostSerialize(bool bReading);
-
- virtual void SetStreamableListener(IStreamedObjectListener* pListener);
-
- //////////////////////////////////////////////////////////////////////////
- // Materials access.
- virtual IMaterialHelpers& GetMaterialHelpers();
- virtual IMaterialManager* GetMaterialManager();
- //////////////////////////////////////////////////////////////////////////
-
- //////////////////////////////////////////////////////////////////////////
- // ObjManager access.
- virtual IObjManager* GetObjManager() override;
- //////////////////////////////////////////////////////////////////////////
-
- //////////////////////////////////////////////////////////////////////////
- // CGF Loader.
- //////////////////////////////////////////////////////////////////////////
- virtual CContentCGF* CreateChunkfileContent(const char* filename);
- virtual void ReleaseChunkfileContent(CContentCGF*);
- virtual bool LoadChunkFileContent(CContentCGF* pCGF, const char* filename, bool bNoWarningMode = false, bool bCopyChunkFile = true);
- virtual bool LoadChunkFileContentFromMem(CContentCGF* pCGF, const void* pData, size_t nDataLen, uint32 nLoadingFlags, bool bNoWarningMode = false, bool bCopyChunkFile = true);
- //////////////////////////////////////////////////////////////////////////
- virtual IChunkFile* CreateChunkFile(bool bReadOnly = false);
-
- //////////////////////////////////////////////////////////////////////////
- // Chunk file writer.
- //////////////////////////////////////////////////////////////////////////
- virtual ChunkFile::IChunkFileWriter* CreateChunkFileWriter(EChunkFileFormat eFormat, AZ::IO::IArchive* pPak, const char* filename) const;
- virtual void ReleaseChunkFileWriter(ChunkFile::IChunkFileWriter* p) const;
-
- //////////////////////////////////////////////////////////////////////////
- // Post processing effects interfaces
-
- class IPostEffectGroupManager* GetPostEffectGroups() const override { return m_postEffectGroups.get(); }
- class IPostEffectGroup* GetPostEffectBaseGroup() const override { return m_postEffectBaseGroup; }
-
- // Most code should use either GetPostEffectGroups() or GetPostEffectBaseGroup() instead of these
- virtual void SetPostEffectParam(const char* pParam, float fValue, bool bForceValue = false) const;
- virtual void SetPostEffectParamVec4(const char* pParam, const Vec4& pValue, bool bForceValue = false) const;
- virtual void SetPostEffectParamString(const char* pParam, const char* pszArg) const;
-
- virtual void GetPostEffectParam(const char* pParam, float& fValue) const;
- virtual void GetPostEffectParamVec4(const char* pParam, Vec4& pValue) const;
- virtual void GetPostEffectParamString(const char* pParam, const char*& pszArg) const;
-
- virtual int32 GetPostEffectID(const char* pPostEffectName);
-
- virtual void ResetPostEffects(bool bOnSpecChange = false);
- virtual void DisablePostEffects();
-
- virtual void SetShadowsGSMCache(bool bCache);
- virtual void SetCachedShadowBounds(const AABB& shadowBounds, float fAdditionalCascadesScale);
- virtual void SetRecomputeCachedShadows(uint nUpdateStrategy = 0);
- void SetShadowsCascadesBias(const float* pCascadeConstBias, const float* pCascadeSlopeBias);
- const float* GetShadowsCascadesConstBias() const { return m_pShadowCascadeConstBias; }
- const float* GetShadowsCascadesSlopeBias() const { return m_pShadowCascadeSlopeBias; }
- int GetShadowsCascadeCount(const CDLight* pLight) const;
-
- virtual uint32 GetObjectsByType(EERType objType, IRenderNode** pObjects);
- uint32 GetObjectsByTypeInBox(EERType objType, const AABB& bbox, IRenderNode** pObjects, ObjectTreeQueryFilterCallback filterCallback = nullptr) override;
- virtual uint32 GetObjectsInBox(const AABB& bbox, IRenderNode** pObjects = 0);
- void GetObjectsByTypeInBox(EERType objType, const AABB& bbox, PodArray* pLstObjects, ObjectTreeQueryFilterCallback filterCallback = nullptr) override;
- virtual uint32 GetObjectsByFlags(uint dwFlags, IRenderNode** pObjects = 0);
- virtual void OnObjectModified(IRenderNode* pRenderNode, uint dwFlags);
-
- virtual void ActivateObjectsLayer(uint16 nLayerId, bool bActivate, bool bPhys, bool bObjects, bool bStaticLights, const char* pLayerName, IGeneralMemoryHeap* pHeap = NULL, bool bCheckLayerActivation = true);
- virtual void GetLayerMemoryUsage(uint16 nLayerId, ICrySizer* pSizer, int* pNumBrushes, int* pNumDecals) const;
- virtual void SkipLayerLoading(uint16 nLayerId, bool bClearList);
- bool IsLayerSkipped(uint16 nLayerId);
-
- //////////////////////////////////////////////////////////////////////////
-
- const char* GetLevelFolder() override { return m_szLevelFolder; }
-
- bool SaveCGF(std::vector& pObjs);
-
- virtual bool IsAreaActivationInUse() { return m_bAreaActivationInUse && GetCVars()->e_ObjectLayersActivation; }
-
- int GetCurrentLightSpec()
- {
- return CONFIG_VERYHIGH_SPEC; // very high spec.
- }
-
- bool CheckMinSpec(uint32 nMinSpec) override;
-
- void UpdateRenderingCamera(const char* szCallerName, const SRenderingPassInfo& passInfo);
- virtual void PrepareOcclusion(const CCamera& rCamera);
- virtual void EndOcclusion();
-#ifndef _RELEASE
- void ProcessStreamingLatencyTest(const CCamera& camIn, CCamera& camOut, const SRenderingPassInfo& passInfo);
-#endif
-
- void ScreenShotHighRes(CStitchedImage* pStitchedImage, const int nRenderFlags, const SRenderingPassInfo& passInfo, uint32 SliceCount, f32 fTransitionSize);
-
- // cylindrical mapping made by multiple slices rendered and distorted
- // Returns:
- // true=mode is active, stop normal rendering, false=mode is not active
- bool ScreenShotPanorama(CStitchedImage* pStitchedImage, const int nRenderFlags, const SRenderingPassInfo& passInfo, uint32 SliceCount, f32 fTransitionSize);
- // Render simple top-down screenshot for map overviews
- bool ScreenShotMap(CStitchedImage* pStitchedImage, const int nRenderFlags, const SRenderingPassInfo& passInfo, uint32 SliceCount, f32 fTransitionSize);
-
- void ScreenshotDispatcher(const int nRenderFlags, const SRenderingPassInfo& passInfo);
-
- virtual void FillDebugFPSInfo(SDebugFPSInfo& info);
-
- void ClearDebugFPSInfo(bool bUnload = false)
- {
- m_fAverageFPS = 0.0f;
- m_fMinFPS = m_fMinFPSDecay = 999.f;
- m_fMaxFPS = m_fMaxFPSDecay = 0.0f;
- ClearPrecacheInfo();
- if (bUnload)
- {
- stl::free_container(arrFPSforSaveLevelStats);
- }
- else
- {
- arrFPSforSaveLevelStats.clear();
- }
- }
-
- void ClearPrecacheInfo()
- {
- m_nFramesSinceLevelStart = 0;
- m_nStreamingFramesSinceLevelStart = 0;
- m_bPreCacheEndEventSent = false;
- m_fTimeStateStarted = 0.0f;
- }
-
- virtual const CCamera& GetRenderingCamera() const { return m_RenderingCamera; }
- virtual float GetZoomFactor() const { return m_fZoomFactor; }
- virtual void Tick();
-
- virtual void UpdateShaderItems();
- void GetCollisionClass(SCollisionClass& collclass, int tableIndex);
-
- C3DEngine(ISystem* pSystem);
- ~C3DEngine();
-
- const float GetGSMRange() override { return m_fGsmRange; }
- const float GetGSMRangeStep() override { return m_fGsmRangeStep; }
-
- void UpdatePreRender(const SRenderingPassInfo& passInfo);
- void UpdatePostRender(const SRenderingPassInfo& passInfo);
-
- virtual void RenderScene(const int nRenderFlags, const SRenderingPassInfo& passInfo);
- virtual void RenderSceneReflection(int nRenderFlags, const SRenderingPassInfo& passInfo);
- virtual void DebugDraw_UpdateDebugNode();
-
- void DebugDraw_Draw();
- bool IsOutdoorVisible();
- void RenderSkyBox(_smart_ptr pMat, const SRenderingPassInfo& passInfo);
-
- int GetStreamingFramesSinceLevelStart() { return m_nStreamingFramesSinceLevelStart; }
- int GetRenderFramesSinceLevelStart() { return m_nFramesSinceLevelStart; }
-
- bool CreateDecalInstance(const CryEngineDecalInfo&DecalInfo, class CDecal* pCallerManagedDecal);
- Vec3 GetTerrainSurfaceNormal(Vec3 vPos);
- void LoadEnvironmentSettingsFromXML(XmlNodeRef pInputNode, int nSID);
-#if defined(FEATURE_SVO_GI)
- void LoadTISettings(XmlNodeRef pInputNode);
-#endif
- void LoadDefaultAssets();
-
- // access to components
- static CVars* GetCVars() { return m_pCVars; }
- ILINE CVisAreaManager* GetVisAreaManager() { return m_pVisAreaManager; }
- ILINE CClipVolumeManager* GetClipVolumeManager() { return m_pClipVolumeManager; }
- ILINE PodArray* GetLightEntities() { return &m_lstStaticLights; }
-
- ILINE IGeneralMemoryHeap* GetBreakableBrushHeap() { return m_pBreakableBrushHeap; }
-
- virtual void OnCameraTeleport();
-
- bool m_bAreaActivationInUse;
-
- // Level info
- float m_fSkyBoxAngle, m_fSkyBoxStretching;
-
- float m_fMaxViewDistScale;
- float m_fMaxViewDistHighSpec;
- float m_fMaxViewDistLowSpec;
-
- float m_volFogGlobalDensity;
- float m_volFogGlobalDensityMultiplierLDR;
- float m_volFogFinalDensityClamp;
-
- float m_fCloudShadingSunLightMultiplier;
- float m_fCloudShadingSkyLightMultiplier;
- Vec3 m_vCloudShadingCustomSunColor;
- Vec3 m_vCloudShadingCustomSkyColor;
-
- Vec3 m_vFogColor;
- Vec3 m_vDefFogColor;
- Vec3 m_vSunDir;
- Vec3 m_vSunDirNormalized;
- float m_fSunDirUpdateTime;
- Vec3 m_vSunDirRealtime;
-
- Vec3 m_volFogRamp;
- Vec3 m_volFogShadowRange;
- Vec3 m_volFogShadowDarkening;
- Vec3 m_volFogShadowEnable;
-
- Vec3 m_volFog2CtrlParams;
- Vec3 m_volFog2ScatteringParams;
- Vec3 m_volFog2Ramp;
- Vec3 m_volFog2Color;
- Vec3 m_volFog2GlobalDensity;
- Vec3 m_volFog2HeightDensity;
- Vec3 m_volFog2HeightDensity2;
- Vec3 m_volFog2Color1;
- Vec3 m_volFog2Color2;
-
- Vec3 m_nightSkyHorizonCol;
- Vec3 m_nightSkyZenithCol;
- float m_nightSkyZenithColShift;
- float m_nightSkyStarIntensity;
- Vec3 m_nightMoonCol;
- float m_nightMoonSize;
- Vec3 m_nightMoonInnerCoronaCol;
- float m_nightMoonInnerCoronaScale;
- Vec3 m_nightMoonOuterCoronaCol;
- float m_nightMoonOuterCoronaScale;
-
- float m_moonRotationLatitude;
- float m_moonRotationLongitude;
- Vec3 m_moonDirection;
- int m_nWaterBottomTexId;
- int m_nNightMoonTexId;
- float m_fSunClipPlaneRange;
- float m_fSunClipPlaneRangeShift;
- bool m_bSunShadows;
-
- int m_nCloudShadowTexId;
-
- float m_fGsmRange;
- float m_fGsmRangeStep;
- float m_fShadowsConstBias;
- float m_fShadowsSlopeBias;
-
- int m_nSunAdditionalCascades;
- int m_nGsmCache;
- Vec3 m_oceanFogColor;
- Vec3 m_oceanFogColorShallow;
- float m_oceanFogDensity;
- float m_skyboxMultiplier;
- float m_dayNightIndicator;
- bool m_bHeightMapAoEnabled;
-
- Vec3 m_fogColor2;
- Vec3 m_fogColorRadial;
- Vec3 m_volFogHeightDensity;
- Vec3 m_volFogHeightDensity2;
- Vec3 m_volFogGradientCtrl;
-
-private:
- float m_oceanWindDirection;
- float m_oceanWindSpeed;
- float m_oceanWavesSpeed;
- float m_oceanWavesAmount;
- float m_oceanWavesSize;
-
-public:
- float m_dawnStart;
- float m_dawnEnd;
- float m_duskStart;
- float m_duskEnd;
-
- float m_fParticlesAmbientMultiplier;
- float m_fParticlesLightMultiplier;
- // film characteristic curve tweakables
- Vec4 m_vHDRFilmCurveParams;
- Vec3 m_vHDREyeAdaptation;
- Vec3 m_vHDREyeAdaptationLegacy;
- float m_fHDRBloomAmount;
-
- // hdr color grading
- Vec3 m_vColorBalance;
- float m_fHDRSaturation;
-
- // default post effect group path
- const char* m_defaultPostEffectGroup = "Libs/PostEffectGroups/Default.xml";
-
-#ifndef _RELEASE
- CDebugDrawListMgr m_DebugDrawListMgr;
-#endif
-
-#define MAX_SHADOW_CASCADES_NUM 20
-
- float m_pShadowCascadeConstBias[MAX_SHADOW_CASCADES_NUM];
- float m_pShadowCascadeSlopeBias[MAX_SHADOW_CASCADES_NUM];
-
- AABB m_CachedShadowsBounds;
- uint m_nCachedShadowsUpdateStrategy;
- float m_fCachedShadowsCascadeScale;
-
- // special case for combat mode adjustments
- float m_fSaturation;
- Vec4 m_pPhotoFilterColor;
- float m_fPhotoFilterColorDensity;
- float m_fGrainAmount;
- float m_fSunSpecMult;
-
- // Level shaders
- _smart_ptr m_pTerrainWaterMat;
- _smart_ptr m_pSkyMat;
- _smart_ptr m_pSkyLowSpecMat;
- _smart_ptr m_pSunMat;
-
- // Fog Materials
- _smart_ptr< IMaterial > m_pMatFogVolEllipsoid;
- _smart_ptr< IMaterial > m_pMatFogVolBox;
-
- void CleanLevelShaders()
- {
- m_pTerrainWaterMat = 0;
- m_pSkyMat = 0;
- m_pSkyLowSpecMat = 0;
- m_pSunMat = 0;
-
- m_pMatFogVolEllipsoid = 0;
- m_pMatFogVolBox = 0;
- }
-
- // Render elements
- CRESky* m_pRESky;
- CREHDRSky* m_pREHDRSky;
-
- int m_nDeferredLightsNum;
-
- mutable Vec3* m_pWindSamplePositions;
- mutable size_t m_nWindSamplePositions;
-
- // functions SRenderingPass
- virtual CCamera* GetRenderingPassCamera(const CCamera& rCamera);
-
- virtual void GetSvoStaticTextures(I3DEngine::SSvoStaticTexInfo& svoInfo, PodArray* pLightsTI_S, PodArray* pLightsTI_D);
- virtual void GetSvoBricksForUpdate(PodArray& arrNodeInfo, bool getDynamic);
-
- bool IsShadersSyncLoad() { return m_bContentPrecacheRequested && GetCVars()->e_AutoPrecacheTexturesAndShaders; }
- bool IsStatObjSyncLoad() { return m_bContentPrecacheRequested && GetCVars()->e_AutoPrecacheCgf; }
- float GetAverageCameraSpeed() { return m_fAverageCameraSpeed; }
- Vec3 GetAverageCameraMoveDir() { return m_vAverageCameraMoveDir; }
-
- typedef std::map ShadowFrustumListsCacheUsers;
- ShadowFrustumListsCacheUsers m_FrustumsCacheUsers[2];
-
- struct ILightSource* GetSunEntity();
-
- void OnCasterDeleted(IShadowCaster* pCaster) override;
-
- CCullBuffer* GetCoverageBuffer() { return m_pCoverageBuffer; }
-
- void InitShadowFrustums(const SRenderingPassInfo& passInfo);
-
- ///////////////////////////////////////////////////////////////////////////////
-
- virtual void GetLightVolumes(threadID nThreadID, SLightVolume*& pLightVols, uint32& nNumVols);
- virtual uint16 RegisterVolumeForLighting(const Vec3& vPos, f32 fRadius, uint8 nClipVolumeRef, const SRenderingPassInfo& passInfo);
-
- CLightVolumesMgr m_LightVolumesMgr;
-
- ///////////////////////////////////////////////////////////////////////////////
-
- void RemoveEntityLightSources(IRenderNode* pEntity);
-
- int GetRealLightsNum() { return m_nRealLightsNum; }
- void SetupClearColor();
- void CheckAddLight(CDLight* pLight, const SRenderingPassInfo& passInfo);
-
- void DrawTextRightAligned(const float x, const float y, const char* format, ...) PRINTF_PARAMS(4, 5);
- void DrawTextRightAligned(const float x, const float y, const float scale, const ColorF& color, const char* format, ...) PRINTF_PARAMS(6, 7);
- void DrawTextLeftAligned(const float x, const float y, const float scale, const ColorF& color, const char* format, ...) PRINTF_PARAMS(6, 7);
- void DrawTextAligned(int flags, const float x, const float y, const float scale, const ColorF& color, const char* format, ...) PRINTF_PARAMS(7, 8);
-
- void DrawBBoxHelper(const Vec3& vMin, const Vec3& vMax, ColorB col = Col_White) override { DrawBBox(vMin, vMax, col); }
- void DrawBBoxHelper(const AABB& box, ColorB col = Col_White) override { DrawBBox(box, col); }
-
- float GetLightAmount(CDLight* pLight, const AABB& objBox);
-
- IStatObj* CreateStatObj();
- virtual IStatObj* CreateStatObjOptionalIndexedMesh(bool createIndexedMesh);
-
- // Creates a new indexed mesh.
- IIndexedMesh* CreateIndexedMesh();
-
- void InitMaterialDefautMappingAxis(_smart_ptr pMat) override;
- _smart_ptr MakeSystemMaterialFromShaderHelper(const char* sShaderName, SInputShaderResources* Res = NULL) override
- {
- return MakeSystemMaterialFromShader(sShaderName, Res);
- }
-
- bool CheckMinSpecHelper(uint32 nMinSpec) override { return CheckMinSpec(nMinSpec); }
-
- virtual IVisAreaManager* GetIVisAreaManager() { return (IVisAreaManager*)m_pVisAreaManager; }
- bool CreateOcean(_smart_ptr pTerrainWaterMat, float waterLevel) override;
- void DeleteOcean() override;
- void ChangeOceanMaterial(_smart_ptr pMat) override;
- void ChangeOceanWaterLevel(float fWaterLevel) override;
-
- bool LoadVisAreas(std::vector** ppStatObjTable, std::vector<_smart_ptr