Compare commits

...

983 Commits

Author SHA1 Message Date
mafiesto4 128cad49b9 Bump up version number 2021-08-08 21:46:24 +02:00
mafiesto4 65f9e9d0aa Fix error 2021-08-08 20:58:36 +02:00
mafiesto4 36df9757b1 Add creating Scene Graph nodes for actors inheriting from some shared custom types 2021-08-08 20:58:19 +02:00
mafiesto4 a0e1c7c37e Add support for creating custom BoxVolume type in C# 2021-08-08 20:19:43 +02:00
mafiesto4 847641f655 Fix crash when spawning C# object that inherits from abstract C++ class 2021-08-08 19:10:51 +02:00
mafiesto4 cdca5b4a28 Fix undo for missing actor children and scripts when doing Convert action 2021-08-08 18:38:26 +02:00
mafiesto4 6609425880 Fix creating prefab in Editor from selection in Prefab window 2021-08-08 17:25:18 +02:00
mafiesto4 6ac0d5d3f4 Merge branch 'blep-bugfix_crash_2riderinstall' 2021-08-08 16:40:56 +02:00
mafiesto4 bc46259286 Merge branch 'bugfix_crash_2riderinstall' of git://github.com/blep/FlaxEngine into blep-bugfix_crash_2riderinstall 2021-08-08 16:40:41 +02:00
mafiesto4 50bccd52e7 Fix startup failure on older CPUs that don't support invariant TSC
#580
2021-08-08 16:38:28 +02:00
mafiesto4 84cca1ae98 Fix missing mesh collider vertices transformation for navmesh building 2021-08-08 16:20:48 +02:00
mafiesto4 71cf758ccf Fix crash when cooking collision data for multi-mesh models 2021-08-08 16:18:29 +02:00
mafiesto4 edf98acae2 Undo unwanted change 2021-08-08 16:04:07 +02:00
mafiesto4 a085531fda Add build preset and target names to access for Game Cooker extending 2021-08-08 16:02:48 +02:00
mafiesto4 6b532d2fbc Add CookingData for C# editor to extend the cooking process 2021-08-08 16:01:58 +02:00
Baptiste Lepilleur 7862ff4670 Fixed crash on startup when 2 Rider installations are detected 2021-08-07 21:43:58 +02:00
mafiesto4 bc27890818 Merge branch 'marynate-PR-global-local-crash' 2021-08-07 16:52:48 +02:00
mafiesto4 1c5754beff Merge branch 'PR-global-local-crash' of git://github.com/marynate/FlaxEngine into marynate-PR-global-local-crash 2021-08-07 16:52:39 +02:00
mafiesto4 054def3d13 Fix crash in build tool if there is no valid project to pick 2021-08-07 16:46:39 +02:00
mafiesto4 e6d5d5330e Fix CharacterController minimum size checks to prevent crashes if values are too small 2021-08-07 15:52:49 +02:00
mafiesto4 f430803ecc Merge branch 'thallard-dev' 2021-08-07 15:33:12 +02:00
mafiesto4 fc762fdbdb Merge branch 'dev' of git://github.com/thallard/FlaxEngine into thallard-dev 2021-08-07 15:29:01 +02:00
marynate 6908aa4a8a Catch potential runtime error from locale::global 2021-08-07 14:20:38 +08:00
Erdroy 6c70f2e14f Fix editor crash on startup when Rider 2021.1 is installed 2021-08-06 18:58:19 +02:00
thallard 3bc489a7b5 Replace string variable check by an enum 2021-08-06 15:50:30 +02:00
mafiesto4 d22380c7cf Add warnings when cooking collision with empty mesh data 2021-08-06 15:07:50 +02:00
mafiesto4 c4102ba884 Fix compiling C#-only game scripts without native platform tools installed 2021-08-06 13:17:23 +02:00
thallard baee3a60a6 Added tick when a button is selected 2021-08-06 11:47:50 +02:00
thallard 5e2b4adff3 Removed useless static path thanks to @jb-perrier 2021-08-06 00:21:27 +02:00
thallard 78d668c599 Change enum and variable name 2021-08-06 00:07:44 +02:00
thallard e8b867430f Remplace string variable by enum 2021-08-05 23:38:08 +02:00
thallard 1426b4ca49 Removed useless debug logs 2021-08-05 23:05:27 +02:00
thallard 9682ac4643 Merge branch 'master' of https://github.com/FlaxEngine/FlaxEngine into dev 2021-08-05 22:37:22 +02:00
thallard d95cd24b76 Added functionality to order items by name 2021-08-05 22:24:01 +02:00
mafiesto4 25f48a3469 Fix compilation with MSVC 140 tools 2021-08-05 21:01:36 +02:00
mafiesto4 1b3c74c3eb Fix showing context menu in Scene Tree window with scroll used
#576
2021-08-05 19:12:34 +02:00
mafiesto4 425c23fea1 Rename NewWindowMethod to NewWindowLocation and add handling for new asset windows too
#577
2021-08-05 18:56:55 +02:00
mafiesto4 16654fa639 Merge branch 'thallard-dev' 2021-08-05 18:52:41 +02:00
mafiesto4 8c010a8a96 Merge branch 'dev' of git://github.com/thallard/FlaxEngine into thallard-dev 2021-08-05 18:43:57 +02:00
mafiesto4 bf2171ed74 Add support for cooking collision data from model asset on main thread and fix issue if mesh is during streaming 2021-08-05 16:41:55 +02:00
mafiesto4 fae682e406 Implement DownloadDataCPU for Mesh and add result entries count 2021-08-05 16:40:28 +02:00
mafiesto4 c5b9654547 Fix crash when unloading scene that has been already unloaded 2021-08-05 13:14:57 +02:00
thallard a64d23b8ed Some tweaks 2021-08-05 12:46:29 +02:00
thallard b4d879960f Remove unused import 2021-08-05 12:42:46 +02:00
thallard 456a944482 Merge branch 'master' of https://github.com/FlaxEngine/FlaxEngine into dev 2021-08-05 12:40:38 +02:00
HosRa 23e94a259b Create new option for open method window 2021-08-05 12:20:31 +02:00
mafiesto4 cb5c716fdb Add third camera shot preview (in a middle) 2021-08-04 17:42:03 +02:00
mafiesto4 980aa860fc Fix camera preview in scene animation 2021-08-04 17:35:42 +02:00
mafiesto4 080b3b1136 Fix camera previews placement on camera cuts track
#519
2021-08-04 16:58:24 +02:00
mafiesto4 fc8c8b5c25 Tweaks and improvements for curves editing
#519
2021-08-04 16:35:19 +02:00
mafiesto4 41b7897857 Split CurveEditor into separate files for easier navigation 2021-08-04 12:01:23 +02:00
mafiesto4 04c807aea5 Fix scrolling to selected actor in scene tree if parent is collapsed 2021-08-04 11:36:27 +02:00
mafiesto4 1c9abef342 Fix asset cache when loading asset from path with relative parts 2021-08-04 11:26:24 +02:00
mafiesto4 9464c509fa Improve keyframes and curves points moving with a mouse
#519
2021-08-04 10:59:43 +02:00
mafiesto4 6ee6c8e0be Fix arrows in AnimGraph state machine 2021-08-03 17:08:54 +02:00
mafiesto4 c9b87d9b76 Add option to use seconds for timeline/media duration 2021-08-03 12:05:47 +02:00
mafiesto4 b5d2b39c3e Fix Control.GetChildAtRecursive with overlapping controls 2021-08-03 11:14:17 +02:00
mafiesto4 d4817a95d7 Add MapTrack to SceneAnimationPlayer 2021-08-03 10:22:26 +02:00
mafiesto4 37cfe692f6 Add bone icon for Anim Graph connections with local skeleton nodes pose 2021-08-01 23:18:20 +02:00
mafiesto4 0e76bf22ed Fix crash when reading empty string from stream 2021-08-01 23:17:55 +02:00
mafiesto4 f06054bc9d Fix warnings 2021-07-30 16:33:10 +02:00
mafiesto4 9012397593 Add automatic resizing for the timeline track preview values for better readability
#519
2021-07-30 15:59:01 +02:00
mafiesto4 429223c7e3 Fix Label text positioning when using Auto Fit 2021-07-30 15:58:06 +02:00
mafiesto4 16c656cda2 Move member track preview value showing to be shared impl 2021-07-30 15:57:51 +02:00
mafiesto4 e1cac0b779 Add loading info text when opening scene animation window 2021-07-30 15:04:26 +02:00
mafiesto4 25487c17e3 Fix stack overflow when using recursion with nested scene animations
#519
2021-07-30 14:29:40 +02:00
mafiesto4 563eecebda Add support for Pack/Unpack Structure nodes and Enum constant in Anim Graph 2021-07-30 12:37:36 +02:00
mafiesto4 c2de55f005 Add support for Is Null, Is Valid, As, Is and Type Reference nodes in Anim Graph 2021-07-30 10:59:20 +02:00
mafiesto4 22551e9410 Fix crash when loading empty managed object data 2021-07-30 10:58:06 +02:00
mafiesto4 c4a0b1c4d6 Fix false-positive of Surface node value modification 2021-07-30 10:34:40 +02:00
mafiesto4 e970d53787 Fix using C#-only structures as Visual Script properties 2021-07-30 10:34:21 +02:00
mafiesto4 752dc30cc5 Fix error when loading Visject surface with an bug 2021-07-29 23:35:52 +02:00
mafiesto4 d8f555e8dc Add support for using structures as Visual Script and Anim Graph parameters 2021-07-29 23:35:30 +02:00
mafiesto4 24782bdd2f Fix Is Null and Is Valid nodes in Visual Script to handle managed instances comparison 2021-07-29 22:57:39 +02:00
mafiesto4 ee6ef85326 Fix creating reroute nodes in Visject during debugging 2021-07-29 22:56:53 +02:00
mafiesto4 22d547e87b Refactor Variant type ManagedObject serialization to be usable for Visual Scripting 2021-07-29 22:56:11 +02:00
mafiesto4 ad7f5cf720 Add support for object and enum properties in Anim Graph 2021-07-29 19:51:30 +02:00
mafiesto4 19da74f913 Drop byte from VS types 2021-07-29 19:45:33 +02:00
mafiesto4 1f59c43b04 Revert due to crashes (strange) 2021-07-29 19:45:09 +02:00
mafiesto4 f42d2b8a18 Tweaks and improvements 2021-07-29 15:41:58 +02:00
mafiesto4 92b1e067b1 Improve tooltips generation for scripting types 2021-07-29 14:30:13 +02:00
mafiesto4 84f48e4a6f Add full documentation tooltip to Visject new parameter type picker list 2021-07-29 14:06:05 +02:00
mafiesto4 fcd0841bc7 Hide various Editor types from scripting 2021-07-29 14:05:42 +02:00
mafiesto4 38249c362d Optimize memory allocations in Vulkan backend 2021-07-29 12:39:21 +02:00
mafiesto4 5186cec942 Improve animation preview usability for debugging 2021-07-29 10:33:21 +02:00
mafiesto4 d505160444 Optimize UI for complex timelines with many tracks 2021-07-29 10:25:58 +02:00
mafiesto4 3331753bcd Expose TypeUtils.GetType to public 2021-07-29 10:05:20 +02:00
mafiesto4 0d9852be27 Improve timeline frame labels displaying 2021-07-29 10:05:03 +02:00
mafiesto4 4c0435feef Add timeline position synchronization with animation playback in Editor preview 2021-07-29 09:56:33 +02:00
mafiesto4 efe898f151 Merge remote-tracking branch 'origin/master' 2021-07-27 16:38:56 +02:00
mafiesto4 a713899a36 Add support for disabling Vulkan timer queries per-platform via define 2021-07-27 16:38:52 +02:00
mafiesto4 277e31c5dd Add helper FindScript<T> and FindActor<T> to Actor 2021-07-26 21:32:00 +02:00
mafiesto4 2050429d6c Fixes for Vulkan Swapchain on some platforms 2021-07-26 13:39:27 +02:00
mafiesto4 6718b37ca1 Fixes and improvements 2021-07-24 23:38:05 +02:00
mafiesto4 caaae8af78 Add NoUndo attribute for properties without undo usage 2021-07-24 23:37:44 +02:00
mafiesto4 135c0636bf Add GPU profiler events to ProbesRenderer 2021-07-24 16:24:19 +02:00
mafiesto4 f49e20bdb5 Revert unneeded and breaking change from D3D11 context state clearing
Ref: f5a6a18232
2021-07-24 16:23:55 +02:00
mafiesto4 9476a75f40 Merge branch 'stefnotch-patch-11' 2021-07-23 16:26:01 +02:00
mafiesto4 974fb528e9 Merge branch 'patch-11' of git://github.com/stefnotch/FlaxEngine into stefnotch-patch-11 2021-07-23 16:25:57 +02:00
mafiesto4 9cde9b0743 Add tint to timeline navbar buttons 2021-07-23 16:25:29 +02:00
mafiesto4 91be427305 Fix typos 2021-07-23 16:25:12 +02:00
mafiesto4 46a65f99fa Add buttons for play/pause/stop Animation timeline in editor window 2021-07-23 16:18:11 +02:00
mafiesto4 a7a7d816ac Fixes for Vulkan extensions and layers init 2021-07-23 16:08:46 +02:00
stefnotch 970456da91 Update Time.h 2021-07-23 14:27:07 +02:00
mafiesto4 1e6d4026da Change WindowBase to allow for better code sharing for platforms without advanced windowing 2021-07-22 17:02:27 +02:00
mafiesto4 e92bdf164c Fix Mono init on Switch 2021-07-22 13:37:33 +02:00
mafiesto4 0bd41a748f Adjust normals/tangents preview length 2021-07-22 11:24:31 +02:00
mafiesto4 6eea2cc675 Add option to preview model meshes Normals and Tangents in Editor preview 2021-07-22 11:19:54 +02:00
mafiesto4 2bf736e351 Add MeshDataCache utility for async mesh data caching 2021-07-22 11:19:10 +02:00
mafiesto4 3a5c212985 Change CalculateTangents to false as default and calculate normals/tangents by default if missing 2021-07-22 10:25:01 +02:00
mafiesto4 383ea4d603 Fix crash when importing model mesh with multiple materials but no mapping on a Geometry
#572
2021-07-22 10:20:19 +02:00
mafiesto4 b7a7bc891a Minor tweaks 2021-07-21 15:42:04 +02:00
mafiesto4 d26eabe2bf Fix glitches on Android Vulkan 2021-07-21 14:13:44 +02:00
mafiesto4 5a6853ba32 Add optional location for Plugin Icon to be inside plugin project root 2021-07-21 11:49:11 +02:00
mafiesto4 99eb3447ef Fix paths in plugin projects root nodes in Content Database 2021-07-21 11:48:27 +02:00
mafiesto4 36456bfe74 Bump up version to 1.2 2021-07-20 16:50:38 +02:00
mafiesto4 cb21ff359b Fix checking min engine version for referenced projects too 2021-07-20 16:44:02 +02:00
mafiesto4 0794ab4ee5 Add support for bundling custom assets by GamePlugins 2021-07-20 16:32:55 +02:00
mafiesto4 88902bdb5d Add JsonSerializer.ParseID with return value 2021-07-20 16:29:34 +02:00
mafiesto4 669b99f8e4 Add CustomUpscale postFx to replace upscaler with a custom script 2021-07-20 15:33:12 +02:00
mafiesto4 929bd2a8c8 Add support for rendering percentage scale with upscaling to backbuffer 2021-07-20 11:06:25 +02:00
mafiesto4 5cbf091a7a Fix typos 2021-07-19 16:17:10 +02:00
mafiesto4 09c7642819 Add warning log in build tool when target is missing 2021-07-19 15:30:45 +02:00
mafiesto4 f7e47815ae Fix loading game binaries in Editor if they are still missing are recompile 2021-07-19 15:30:06 +02:00
mafiesto4 3207d2a706 Merge branch 'GoaLitiuM-rider_detection_improvements' 2021-07-19 14:21:35 +02:00
mafiesto4 2c68c4f9f2 Merge branch 'rider_detection_improvements' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-rider_detection_improvements 2021-07-19 14:21:31 +02:00
mafiesto4 fc31565f12 Reimplement Temporal AA with less ghosting and better quality 2021-07-19 14:02:46 +02:00
GoaLitiuM 681c45dcbe Support Rider for Unreal Engine 2021-07-17 21:18:09 +03:00
GoaLitiuM ba266f74ed Improve detection of Rider installed via JetBrains Toolbox 2021-07-17 21:17:49 +03:00
mafiesto4 36f6463028 Fix AnimatedModel bounds calculation to use skeleton bones locations 2021-07-16 17:21:04 +02:00
mafiesto4 4d136af7dd Add culling and render mask check for models rendered via Custom Actors list 2021-07-16 17:13:44 +02:00
mafiesto4 dcd4a41f7d Add preview panel with skinned model to the Animation window 2021-07-16 16:18:34 +02:00
mafiesto4 590ef32165 Refactor animated model previews to unify features used by various windows 2021-07-16 15:24:18 +02:00
mafiesto4 cb59f2185c Add memory usage info to Animation details 2021-07-16 13:08:37 +02:00
mafiesto4 5f26fae19b Merge branch 'honzapatCZ-patch-8' 2021-07-16 12:34:33 +02:00
mafiesto4 af1c683917 Merge branch 'patch-8' of git://github.com/honzapatCZ/FlaxEngine into honzapatCZ-patch-8 2021-07-16 12:34:29 +02:00
Nejcraft 52ba7a7a08 I shouldn't code at 4 in the morning :D 2021-07-16 11:40:57 +02:00
mafiesto4 d0eed29f31 Fix rare crash when passing array to managed world with object refs inside structures 2021-07-16 11:02:49 +02:00
mafiesto4 5852887e7d Add option for preview a single mesh UVs 2021-07-16 10:21:22 +02:00
mafiesto4 41a39d5088 Fix range selection in Tree to skip invisible nodes 2021-07-16 10:21:22 +02:00
Nejcraft af8856188d Rectangle distance
Will be usefull for my UI nav
2021-07-16 04:32:47 +02:00
mafiesto4 8ae3c23ec8 Add Actor.RotateAround 2021-07-15 22:07:25 +02:00
mafiesto4 73c283fdd4 Increase items limit for Visject secondary context menu before scroll bar usage 2021-07-15 22:00:24 +02:00
mafiesto4 2354bc9f4d Increase scroll bars size for easier usage 2021-07-15 21:57:34 +02:00
mafiesto4 4f03acb149 Add support for creating virtual Anim Graph at runtime for a single animation playback 2021-07-15 16:58:26 +02:00
mafiesto4 2711bfdc82 Remove unused code 2021-07-15 16:56:39 +02:00
mafiesto4 fe2419cd11 Fix crash when reloading virtual asset 2021-07-15 16:56:11 +02:00
mafiesto4 27deeff079 Add widgets for animation preview play/pause and speed changing 2021-07-15 14:26:42 +02:00
mafiesto4 50ffdcd9ca Add UpdateSpeed to Animated Model for playback speed scaling 2021-07-15 13:50:50 +02:00
mafiesto4 1062c0b3a0 Fix missing Spline Model bounds refresh 2021-07-15 11:45:44 +02:00
mafiesto4 6f8e18f5b3 Add faked lighting to improve Debug Draw solid shapes rendering readability 2021-07-14 14:51:50 +02:00
mafiesto4 42f05a5072 Add Terrain physics collision debug drawing support 2021-07-14 14:51:20 +02:00
mafiesto4 04c6ecc963 Add Physics Colliders debug view mode to display physical world shapes (solid) 2021-07-14 14:49:41 +02:00
mafiesto4 151b478a97 Add more helper methods for batched debug shapes drawing 2021-07-14 13:40:58 +02:00
mafiesto4 4fc55f4849 Add DebugDraw::DrawTube 2021-07-14 13:40:34 +02:00
mafiesto4 5b595eb056 Add styling brush for progress bar 2021-07-14 12:27:14 +02:00
mafiesto4 d7cca59315 Add support for custom background brush to Button 2021-07-14 12:21:38 +02:00
mafiesto4 a7cb12f597 Fix Script deserialization if ParentID is not specified in stream 2021-07-14 11:39:32 +02:00
mafiesto4 8b961f7239 Update Newtonsoft.Json 2021-07-14 11:39:09 +02:00
mafiesto4 8a66bd74cf Tweak 2021-07-14 09:44:55 +02:00
mafiesto4 7c96961e92 Fix build tool clean command execution on Linux 2021-07-13 18:29:34 +02:00
mafiesto4 dc935a1a32 Add support for Tracy profiler on Linux 2021-07-13 18:29:02 +02:00
mafiesto4 caeeae6a32 Fix locale on Linux 2021-07-13 18:28:28 +02:00
mafiesto4 e0be4e202a Fix crash when resizing Dictionary to 0 2021-07-13 18:28:02 +02:00
mafiesto4 1ba84f55ae Fix handling invalid asset in AssetPicker instead of throwing exception 2021-07-13 13:19:51 +02:00
mafiesto4 120ebbb59a Fix handling invalid asset in AssetPicker instead of throwing exception 2021-07-13 13:18:59 +02:00
mafiesto4 0b9f33b4af Disable Tracy profiler on Android 2021-07-13 13:02:16 +02:00
mafiesto4 1c03b21a43 Fix textures converting when cooking 2021-07-13 12:51:28 +02:00
mafiesto4 38e2824415 Fix locale on Android 2021-07-13 12:51:04 +02:00
mafiesto4 16f7194f62 Fix crash when opening project fails 2021-07-13 11:50:01 +02:00
mafiesto4 ef163b80a7 Fix naming native threads on Linux and Android 2021-07-13 11:46:58 +02:00
mafiesto4 121b08801a Fix calling base class of overridden scripting object via vtable entry for method that has multiple parameters 2021-07-12 16:38:39 +02:00
mafiesto4 0a47477290 Add view snapping mode to Directional Light shadows for better stability 2021-07-12 11:25:46 +02:00
mafiesto4 716b726589 Fix loading EnumValue with different int32 2021-07-12 11:10:12 +02:00
mafiesto4 27345e62a7 Fix drawing shadows for particles that use Depth Fade node 2021-07-12 11:09:43 +02:00
mafiesto4 612d586e88 Fix adding particle emitter to a system timeline to have full duration 2021-07-12 10:56:44 +02:00
mafiesto4 a33b76f47f Merge branch 'GoaLitiuM-dialog_work_dir_fix' 2021-07-11 19:12:28 +02:00
mafiesto4 7d86aebf9c Merge branch 'dialog_work_dir_fix' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-dialog_work_dir_fix 2021-07-11 19:12:14 +02:00
mafiesto4 252b37ebfe Fix deprecated assertions from streamable assets (streaming uses job system now) 2021-07-11 12:03:56 +02:00
mafiesto4 1561eba6fb Add support for using library-style includes for build tool includes cache 2021-07-09 22:23:23 +02:00
mafiesto4 2783eb07b2 Add intermediate data folder removing on build tool clean command 2021-07-09 22:22:49 +02:00
mafiesto4 c6e320b4aa Fix missing symbols exposing for fmt data 2021-07-09 22:22:18 +02:00
mafiesto4 e95010b1b2 Add Foliage Density Scale option to Graphics Quality Window in Editor 2021-07-09 21:44:20 +02:00
mafiesto4 91cf85c50e Remove unused DictionaryInitialSize from MAssemblyOptions 2021-07-09 19:50:31 +02:00
GoaLitiuM 8a003fbe99 Prevent file dialogs from changing the working directory 2021-07-09 20:03:37 +03:00
mafiesto4 0da56856e0 Fix drawing transparent foliage when using prebatched draw calls 2021-07-09 17:17:50 +02:00
mafiesto4 7fc3e65849 Fix changing prefab root
#488 #544 #489
2021-07-09 17:17:21 +02:00
mafiesto4 4fee75cf55 Fix linux build (again) 2021-07-09 14:06:27 +02:00
mafiesto4 a59429c954 Fix importing model animations curves with scaled local bone TransformBuffer
#565
2021-07-09 12:06:47 +02:00
mafiesto4 a928032f44 Remove unneeded comments 2021-07-09 11:04:40 +02:00
mafiesto4 0515e41d89 Poorformance improvements for fmt lib compile time 2021-07-09 11:00:08 +02:00
mafiesto4 8da7a17a66 Fix compilation 2021-07-08 19:04:11 +02:00
mafiesto4 f052d788fe Update fmt to version 6.2.1 (9 May 2020) 2021-07-08 17:46:23 +02:00
mafiesto4 1eda04f695 Fix compilation on Linux 2021-07-08 13:30:51 +02:00
mafiesto4 929476a322 Optimize various engine code 2021-07-08 12:59:45 +02:00
mafiesto4 e6ffcfb60d Fix missing operators and constructor in Pair 2021-07-08 11:05:10 +02:00
mafiesto4 d5db9dd00c Optimize physics simulation collisions pair cache 2021-07-08 10:10:19 +02:00
mafiesto4 d86dfbb973 Fix crash when updating object during scene disposing 2021-07-08 00:39:29 +02:00
mafiesto4 38bf3d87ed Optimize renderer memory allocations with RenderListAllocation (mem pooling) 2021-07-08 00:34:51 +02:00
mafiesto4 4765e1af12 Add support for allocator type in Dictionary 2021-07-08 00:34:50 +02:00
mafiesto4 f5e5686853 Optimize includes in ThreadLocal.h 2021-07-08 00:34:49 +02:00
mafiesto4 446458d20c Add PLATFORM_THREADS_LIMIT for maximum concurrency limiting 2021-07-08 00:34:48 +02:00
mafiesto4 29be6b0068 Fix ThreadLocal to use atomic operations and prevent rare race conditions 2021-07-08 00:34:48 +02:00
mafiesto4 254ce569fa Optimize Foliage rendering with manual instanced draw calls batching 2021-07-08 00:34:47 +02:00
mafiesto4 a3b3e6c799 Remove unused HashFunction 2021-07-08 00:34:46 +02:00
Erdroy b149d91c35 Cleanup native NetworkMessage write and read string char size 2021-07-07 18:11:59 +02:00
Erdroy e62c76b0fb Add NetworkMessage Guid write and read methods 2021-07-07 18:11:20 +02:00
Erdroy 7e9f648a05 Fix NetworkMessage UTF-16 string write and read 2021-07-07 18:03:54 +02:00
Erdroy f41e4c5fe1 Allow unsafe code in FlaxEngine.Tests project 2021-07-07 17:27:15 +02:00
mafiesto4 d1b7b2d26d Optimize flushing active transform of physically simulated actors 2021-07-07 16:45:35 +02:00
mafiesto4 d7b47d7d05 Fix Linux build 2021-07-07 15:38:55 +02:00
mafiesto4 6938821467 Add even more profiler events 2021-07-07 15:15:33 +02:00
mafiesto4 afc5bb5731 Add support for C# Profiler events to be visible in Tracy 2021-07-07 15:14:52 +02:00
mafiesto4 ec40a9ba75 Add more profiler events 2021-07-07 13:46:33 +02:00
mafiesto4 3ae4a800cf Optimize Foliage instances serialization by using raw json value write 2021-07-07 13:42:49 +02:00
mafiesto4 ecff38d58d Add preloading initial Editor scene to improve startup performance 2021-07-07 12:25:04 +02:00
mafiesto4 2865cecca9 Fix crash if audio gets disposed before content 2021-07-07 12:02:29 +02:00
mafiesto4 d17a4af72e Tweaks 2021-07-07 10:15:22 +02:00
mafiesto4 3cfdf8871f Add Streaming.Stats for resources streaming statistics 2021-07-07 10:15:21 +02:00
mafiesto4 7985196155 Add Content.Stats for assets statistics (replaces Content.AssetCount) 2021-07-07 10:15:21 +02:00
Erdroy 6471f880ac Fix NetworkMessage.WriteBytes 2021-07-06 20:33:22 +02:00
Erdroy 6a2e833fca Fix NetworkMessage typo 2021-07-06 20:19:25 +02:00
Erdroy e44bca597c Fix NetworkMessage.ReadBytes 2021-07-06 20:14:29 +02:00
mafiesto4 248e35c121 Optimize Foliage::OnFoliageTypeModelLoaded to rebuild only single foliage type clusters 2021-07-06 16:17:56 +02:00
mafiesto4 9f9e5b49cc Add more profile events 2021-07-06 16:17:11 +02:00
mafiesto4 bf67c62311 Add GPUContextVulkan::CopySubresource 2021-07-06 15:47:39 +02:00
mafiesto4 a165b4aa79 Add safety checks to material constants binding code to prevent invalid memory access 2021-07-06 15:41:16 +02:00
mafiesto4 9f9d946d69 Fixes 2021-07-06 15:33:28 +02:00
mafiesto4 1c012a202e Fix buffer overrun crash in ForwardShadingFeature 2021-07-06 15:26:45 +02:00
mafiesto4 43e5805e50 Tweaks 2021-07-06 11:13:43 +02:00
mafiesto4 687fa325fa Merge remote-tracking branch 'origin/master' 2021-07-06 09:29:51 +02:00
mafiesto4 2585c02b68 Tweaks 2021-07-05 21:52:34 +02:00
mafiesto4 a84afc207e Disable tracy mem allocs recording in Editor due to too big impact on profiler buffers usage 2021-07-05 14:59:27 +02:00
mafiesto4 347bd7346a Add automatic Game Settings setup after adding new settings asset for the first time 2021-07-05 10:36:10 +02:00
mafiesto4 a9acf733d9 Update Newtonsoft.Json 2021-07-05 10:05:04 +02:00
mafiesto4 44c4ab6580 Optimize Foliage rendering with manual draw calls submission 2021-07-04 11:25:55 +02:00
mafiesto4 fe2e17e353 Optimize Foliage with quad-tree clustering per foliage type 2021-07-04 11:25:54 +02:00
mafiesto4 c93c811375 Fix error from disabling drawable object 2021-07-04 11:25:54 +02:00
mafiesto4 ba725f5456 Implement missing code in ChunkedArray 2021-07-04 11:25:53 +02:00
mafiesto4 2deac50c53 Various changes 2021-07-04 11:25:52 +02:00
mafiesto4 d7332509f7 Optimize Scene Rendering (cache drawable bounds and layers for culling with less cache misses) 2021-07-04 11:25:52 +02:00
mafiesto4 e61ebaa71b Add SceneNavigation for scene data for navigation system 2021-07-04 11:25:51 +02:00
Erdroy d9fe1b257f Fix monolithic build linking 2021-07-03 19:14:08 +02:00
Erdroy 93838b4f25 Fix Switch runtime setup 2021-07-03 19:13:41 +02:00
Erdroy 98d29ff5dc Fix Switch audio setup 2021-07-03 19:12:40 +02:00
Erdroy 85398cbf3d Add support for separate native and managed code in packaged build 2021-07-03 19:12:23 +02:00
mafiesto4 2556edb8d3 Fix crash wen using Anim Graph debugging with lots of animated models simulated at once in async 2021-07-02 18:15:30 +02:00
mafiesto4 b367be2b12 Optimize DateTime include in StreamableResource 2021-07-02 15:39:48 +02:00
mafiesto4 891961b03b Optimize Streaming service with Task Graph to use async update on a Job System 2021-07-02 14:56:46 +02:00
mafiesto4 22f4137703 Add profiler Sleep event to Editor sleeping phrase when out of focus 2021-07-02 14:48:45 +02:00
mafiesto4 18b35517aa Optimize ContentStorageManager with Task Graph to use async update on a Job System 2021-07-02 14:43:19 +02:00
mafiesto4 57285ee3b5 Fix building for Switch and PS4 2021-07-02 14:07:14 +02:00
mafiesto4 404891fe01 Fix building for Xbox Scarlett 2021-07-02 10:53:38 +02:00
mafiesto4 7e8ebd758b Merge branch 'Erdroy-lowlevel-networking' 2021-07-02 09:53:11 +02:00
mafiesto4 18075bf34a Merge branch 'lowlevel-networking' of git://github.com/Erdroy/FlaxEngine into Erdroy-lowlevel-networking 2021-07-02 09:53:05 +02:00
Erdroy 15b14349f9 Fix linux build 2021-07-01 22:58:45 +02:00
Erdroy 2f9147c36c Fix all merge suggestions/issues 2021-07-01 19:47:04 +02:00
Erdroy bfd50851f8 Move implementation from NetworkMessage source file into header file 2021-07-01 19:46:01 +02:00
Erdroy e41139d1fa Delete NetworkConnection.cpp 2021-07-01 19:45:39 +02:00
Erdroy 73c745b7fe Update enet build license type 2021-07-01 19:37:40 +02:00
mafiesto4 63400247eb Update missing materials 2021-07-01 12:39:40 +02:00
mafiesto4 9e3d7cbbc9 Fix Blend Space 2D to use corrected additive blending
#561
2021-07-01 12:39:26 +02:00
mafiesto4 36367c04af Update engine materials to the latest version 2021-06-30 15:56:04 +02:00
mafiesto4 560d7153ae Fix very rare cases of deadlocks in Asset::WaitForLoaded 2021-06-30 15:52:58 +02:00
mafiesto4 e0a2904dbf Fix terrain normal mapping issue
#562
2021-06-30 14:13:37 +02:00
mafiesto4 419f8db538 Optimize BoundingSphere::FromBox 2021-06-30 13:42:22 +02:00
mafiesto4 c4fc7b7e5d Fix UI Canvas visible in PrefabPreview when using IsActive
#559
2021-06-30 12:02:23 +02:00
mafiesto4 72599b18ce Fix crash with too big blur strength used in Render2D
#558
2021-06-30 11:56:42 +02:00
mafiesto4 ae58de44e3 Fix instance creation UI refresh for FontReference 2021-06-30 11:31:53 +02:00
mafiesto4 bdefa77226 Fix using nested types in Visual Script 2021-06-30 10:34:36 +02:00
mafiesto4 2b891483a5 Code tweaks for Array 2021-06-29 16:17:17 +02:00
mafiesto4 a3dfb1c5d3 Add support for using per-texture group sampler in Materials 2021-06-29 16:16:56 +02:00
mafiesto4 add88a783b Tweaks 2021-06-28 16:18:03 +02:00
mafiesto4 3c1fd427eb Add support for programmable samplers in shaders 2021-06-28 15:56:32 +02:00
mafiesto4 971449bef1 Cleanup some GPU code 2021-06-28 14:08:44 +02:00
mafiesto4 ef831b8559 Merge branch 'stefnotch-patch-10' 2021-06-27 12:49:57 +02:00
mafiesto4 0c0a319499 Merge branch 'patch-10' of git://github.com/stefnotch/FlaxEngine into stefnotch-patch-10 2021-06-27 12:49:53 +02:00
mafiesto4 2e7b1d588e Optimize C# Actor.GetChildren<T>() and Actor.GetScripts<T>() 2021-06-27 12:47:25 +02:00
mafiesto4 fca4f4ba40 Optimize CPU particles sorting with Radix sort 2021-06-27 12:30:49 +02:00
Erdroy 742b73f774 Cleanup NetworkMessage header XML comments 2021-06-27 12:26:11 +02:00
Erdroy 95c86efd31 Improve Write/ReadString implementation and comments 2021-06-27 12:25:45 +02:00
Erdroy a6ccbe3876 Remove NetworkManager and move peer creation/shutdown to NetworkPeer class 2021-06-26 21:30:11 +02:00
Erdroy 6aece4e388 Add note about required message recycle after message-event 2021-06-21 22:00:09 +02:00
Erdroy 25fe03f5a5 Rename NetworkTransportType to NetworkDriverType 2021-06-21 21:40:48 +02:00
Erdroy c6a8488fe1 Add XML comments 2021-06-21 21:40:27 +02:00
Erdroy d9aa9d1832 Remove UTF8 and UTF32 in favor of UTF16 strings to be consistent with C++ API 2021-06-21 21:34:21 +02:00
Erdroy 7692aaf547 Rename *Host functions to *Peer functions 2021-06-21 21:02:48 +02:00
Erdroy 3a722acc62 Cleanup 2021-06-21 20:32:02 +02:00
Erdroy 5234ae7a0d Fix NetworkPeer instance memory leak 2021-06-21 20:10:15 +02:00
Erdroy 6772d447fa Cleanup 2021-06-21 20:10:03 +02:00
stefnotch 0f505f56ad Improve privacy
We don't need the computer name or user name in the log files by default
2021-06-20 19:07:39 +02:00
mafiesto4 bf1a30c5c6 Attempt to fix build tool running on system with different locales
#554
2021-06-18 21:54:31 +02:00
Erdroy bb75ee81d5 Merge remote-tracking branch 'upstream/master' into lowlevel-networking 2021-06-18 20:46:53 +02:00
Erdroy 9d7bba04cb Rename NetworkHost to NetworkPeer as it seems more appropriate 2021-06-18 20:45:30 +02:00
Erdroy 040c024dff Refactor most NetworkManager functionality into NetworkHost 2021-06-18 20:43:17 +02:00
mafiesto4 94f50ce8cb Cleanup some headers in Graphics module 2021-06-18 16:38:44 +02:00
mafiesto4 f5a6a18232 Fix stability on exit or when doing heavy resources streaming stress tests 2021-06-18 15:20:39 +02:00
mafiesto4 4681d8da56 Fix texture streaming minimum mips to load for block compressed textures 2021-06-18 14:42:09 +02:00
mafiesto4 f582ca5051 Add dynamic textures streaming based on visibility 2021-06-18 14:41:44 +02:00
mafiesto4 41f0554484 Add texture groups preview to Graphics Quality window in editor 2021-06-18 11:57:51 +02:00
mafiesto4 dc38a55218 Add option to open all selected assets in content window 2021-06-18 11:57:22 +02:00
mafiesto4 47da355878 Add api to force refresh streaming 2021-06-18 11:57:08 +02:00
mafiesto4 a7f018a4da Fix Linux game build 2021-06-18 11:07:21 +02:00
mafiesto4 3b31fd7c71 Add support for editing texture group in editor (without reimporting) 2021-06-18 10:49:04 +02:00
mafiesto4 2d88ed17d4 Add dedicated editor for Texture Group picking 2021-06-18 09:43:35 +02:00
Erdroy f40bb309d5 Fix host id issue, cleanup 2021-06-17 18:42:42 +02:00
Erdroy e0d41ab683 Fix host shutdown issue 2021-06-17 18:42:27 +02:00
mafiesto4 801e3c26d4 Merge remote-tracking branch 'origin/master' 2021-06-17 16:01:04 +02:00
mafiesto4 289515a78b Add support for stripping texture resolution for target platform when cooking game 2021-06-17 16:01:01 +02:00
mafiesto4 4744fa05ef Refactor Streaming with new settings and textures streaming configuration 2021-06-17 15:33:34 +02:00
mafiesto4 64501a8645 Fix enum deserialization from string 2021-06-17 14:22:08 +02:00
mafiesto4 1fedad5dfe Add missing changes 2021-06-17 14:17:36 +02:00
mafiesto4 b510e3fcc5 Add support for loading C# dictionaries in native json reader 2021-06-17 14:17:04 +02:00
mafiesto4 99012725dc Adjust includes 2021-06-17 14:15:19 +02:00
mafiesto4 aa83af477a Add GetStringAnsiView to json value 2021-06-17 14:14:10 +02:00
mafiesto4 5ca2729a56 Fix UI after editing Dictionary key value 2021-06-17 14:11:25 +02:00
mafiesto4 f0cb979c5e Add Nameof helper utility 2021-06-17 14:09:01 +02:00
mafiesto4 30457d9af6 Merge branch 'master' of https://gitlab.flaxengine.com/flax/flaxengine 2021-06-16 23:41:30 +02:00
mafiesto4 1237946a8d Fix synchronization for dbg symbols on Windows 2021-06-16 23:39:05 +02:00
mafiesto4 c2590fc0d9 Optimize multiple dispatches on JobSystem done via TaskGraph 2021-06-16 19:02:02 +02:00
mafiesto4 4de3d134c9 Fix generating includes list in c++ glue code for script (non-pod and variant wrappers can produce additional includes) 2021-06-16 17:40:00 +02:00
mafiesto4 e8348f2c7a Fix default value generation for numbers and enums in scripting api 2021-06-16 12:06:39 +02:00
mafiesto4 1e08ed177b Fix parsing doc comments in scripting api with inlined summary tag 2021-06-16 12:05:56 +02:00
mafiesto4 2068a58414 Fix using custom allocator on array field in scripting class 2021-06-16 11:23:12 +02:00
mafiesto4 d895789296 Add async particles updating via Task Graph 2021-06-15 23:49:45 +02:00
mafiesto4 1dfcfb8aa9 Fix d3d12 compilation with older Win10 SDK version 2021-06-15 23:49:44 +02:00
mafiesto4 bf70a42d86 Change TaskGraphSystem ordering 2021-06-15 23:49:43 +02:00
mafiesto4 d2d8a83461 Add support for multi-threaded CPU particles simulation 2021-06-15 23:49:43 +02:00
mafiesto4 2a73d18d14 Fix typo 2021-06-15 23:49:42 +02:00
mafiesto4 c91c8b66ce Add Category attribute for types grouping in editor dialogs 2021-06-15 16:39:15 +02:00
mafiesto4 8816e4403d Remove UI Controls from Json Asset picker dialog 2021-06-15 16:38:21 +02:00
mafiesto4 a75e403b35 Fixes 2021-06-15 13:51:16 +02:00
mafiesto4 f5cdb0abfd Add Delay node to Visual Scripting 2021-06-14 16:10:08 +02:00
mafiesto4 90105c421d Fix Visual Script method override node auto-size 2021-06-14 14:30:54 +02:00
mafiesto4 bbbcfb707d Fix crash on null type 2021-06-14 14:28:16 +02:00
mafiesto4 e455ada90a Optimize Debug Draw wireframe sphere to use auto-LOD 2021-06-14 14:22:46 +02:00
mafiesto4 da0c8ffff9 Optimize Debug Draw for large amount of single-frame debug shapes and lines 2021-06-14 13:29:47 +02:00
mafiesto4 428c43e707 Optimize Debug Log window new entries adding (manual placement instead of full layout) 2021-06-14 12:04:49 +02:00
mafiesto4 a8b0612a7f Add new icons and tweaks
#550
2021-06-14 11:08:47 +02:00
mafiesto4 e090d699ef Merge branch 'W2Wizard-IconPatch' 2021-06-14 10:47:26 +02:00
mafiesto4 bb39e1d220 Merge branch 'IconPatch' of git://github.com/W2Wizard/FlaxEngine into W2Wizard-IconPatch 2021-06-14 10:47:20 +02:00
mafiesto4 aec071689a Fix game build 2021-06-14 10:44:46 +02:00
mafiesto4 22c62439ee Fixes and tweaks for profiler window 2021-06-14 10:41:51 +02:00
mafiesto4 5ad222e896 Merge branch 'master' of https://gitlab.flaxengine.com/flax/flaxengine 2021-06-14 09:31:32 +02:00
mafiesto4 b225622eaa Fix typo 2021-06-14 09:31:19 +02:00
W2Wizard 83e6319643 Adjust debug log tab icon 2021-06-13 22:37:47 +02:00
W2Wizard 5408898e15 Increase BoxSize & overhaul debug log icons 2021-06-13 20:16:06 +02:00
W2Wizard 8e781ccf7b Apply asset new icons
Apply the Icons for SwitchSettings, LocalizationSettings and Json Asset.
2021-06-13 17:33:58 +02:00
W2Wizard 7e3b64b328 Adjust track icon size
Go down from 20 to 18 instead.
2021-06-13 16:46:08 +02:00
W2Wizard 96089d5396 Fix timeline track icons 2021-06-13 16:20:23 +02:00
W2Wizard eb6e3a7e8e Replace clickable images with actual buttons
With the new icons the clickable images for adding functions for the Visject surface got too small and unreadable. Instead using more visible buttons should counteract this.
2021-06-13 14:49:10 +02:00
mafiesto4 63ef1e544a Merge branch 'stefnotch-perf-buildtool' 2021-06-12 23:20:30 +02:00
mafiesto4 23709a1b11 Merge branch 'perf-buildtool' of git://github.com/stefnotch/FlaxEngine into stefnotch-perf-buildtool 2021-06-12 23:20:24 +02:00
mafiesto4 4a92850d9a Add async animations updating via Task Graph 2021-06-12 23:20:12 +02:00
mafiesto4 360f498e47 Add Engine::UpdateGraph for async engine/game update 2021-06-12 23:20:11 +02:00
mafiesto4 d7e7dcc823 Add Task Graph 2021-06-12 23:20:10 +02:00
mafiesto4 25c00a0d55 Fix C# profiler events from other threads 2021-06-12 23:20:10 +02:00
mafiesto4 93cdb7ce8f Bump up build number 2021-06-12 23:20:09 +02:00
mafiesto4 47af31a8c4 Tweaks 2021-06-12 23:20:09 +02:00
mafiesto4 41ad835d86 Refactor AnimGraph to support asynchronous execution 2021-06-12 23:20:08 +02:00
mafiesto4 b8ad4bdd2a Refactor AnimGraph debug flows to use scripting API event 2021-06-12 23:20:07 +02:00
mafiesto4 544cb1ff6d Finish job system 2021-06-12 23:20:07 +02:00
mafiesto4 07ad94de13 Optimize Animated Model bones matrices buffer update 2021-06-12 23:20:06 +02:00
mafiesto4 982b22b4b1 Add Job System 2021-06-12 23:20:05 +02:00
mafiesto4 e0b587251a Add RingBuffer template 2021-06-12 23:20:05 +02:00
mafiesto4 cdc85a1961 Add profiler entry for Audio Source update 2021-06-12 23:20:04 +02:00
mafiesto4 4cd31ce2b4 Remove some unsued lines 2021-06-12 23:20:04 +02:00
mafiesto4 7c9e170a40 Tweaks 2021-06-11 16:49:30 +02:00
mafiesto4 8f78ccf414 Add pooling for timeline table row controls in profiler 2021-06-11 16:49:12 +02:00
mafiesto4 81fd026313 Add pooling for timeline event controls in profiler 2021-06-11 16:44:26 +02:00
mafiesto4 9c7378cf5b Optimize Profiler window update to refresh only visible tab UI 2021-06-11 12:03:01 +02:00
mafiesto4 3a51320ea6 Increase profiler samples length to 10s at 60hz 2021-06-11 09:53:43 +02:00
mafiesto4 dfa6f5c75f Fix profiler shutdown issue on end 2021-06-10 17:01:24 +02:00
mafiesto4 3d4309457b Improve stability of Vulkan and D3D12 backends on large worlds 2021-06-10 17:01:07 +02:00
mafiesto4 14bc9501c7 Cleanup some code 2021-06-10 16:59:59 +02:00
mafiesto4 90d9f83f8c Fix crash due to SamplesBuffer::Add bug 2021-06-10 15:59:01 +02:00
mafiesto4 82a39e5d98 Fix Asset::ToString() to not depend on refs count and look simpler 2021-06-10 15:58:32 +02:00
mafiesto4 101e803ca6 Fix WeakAssetReference handling asset unload 2021-06-10 11:07:36 +02:00
mafiesto4 907f289ea7 Cleanup asset references code 2021-06-10 11:01:35 +02:00
mafiesto4 9fd62cf9aa Add support for using references in scripting API events 2021-06-10 10:26:57 +02:00
mafiesto4 05d095b35e Add support for using pointers in scripting API events 2021-06-09 17:15:32 +02:00
mafiesto4 5a710ccd7a Hide GetPxShape impl 2021-06-09 14:49:36 +02:00
mafiesto4 4764ab17bf Merge branch 'GoaLitiuM-uwp_fixes' 2021-06-09 13:31:54 +02:00
mafiesto4 ba7332f55c Merge branch 'uwp_fixes' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-uwp_fixes 2021-06-09 13:31:47 +02:00
mafiesto4 c38b81d682 Fix errors when changing UIControl type in prefab
#548
2021-06-09 13:27:37 +02:00
mafiesto4 384172050d Add missing doc comment 2021-06-09 13:25:04 +02:00
mafiesto4 f237d5d87d Post merge fixes to font reference as class
#420
2021-06-09 12:16:50 +02:00
mafiesto4 3c2b1a232c Merge commit '4bb703e9bfadf44c562f69bab069fd8be26eda97' 2021-06-09 12:04:12 +02:00
mafiesto4 a6ff0c3ed1 Fix selecting multiple different UI controls in Editor
#548
2021-06-09 11:22:13 +02:00
mafiesto4 79b03f6b5c Fix cached font usage to use proper unmanaged object validation check (not only managed object ref)
#546
2021-06-09 11:11:32 +02:00
mafiesto4 9614b7b014 Fix scripts projects opening to support adync open when uisng Editor menu option 2021-06-09 10:59:15 +02:00
mafiesto4 484bc409d4 Add support for NotNullItems option in collections editors
#542
2021-06-09 10:58:54 +02:00
mafiesto4 0ba4a0cabc Merge branch 'Crawcik-fix-collections' 2021-06-09 09:54:32 +02:00
mafiesto4 ebcf584117 Merge branch 'fix-collections' of git://github.com/Crawcik/FlaxEngine into Crawcik-fix-collections 2021-06-09 09:54:28 +02:00
mafiesto4 2bc6ca089f Add HasTypedUAVLoad to GPULimits (use for GPU lightmaps support baking detection)
#526
2021-06-08 16:11:27 +02:00
mafiesto4 39f50726a6 Fix lightmaps bake on D3D12 2021-06-08 15:21:37 +02:00
mafiesto4 4c6fd783e1 Add Bokeh DoF rendering on D3D12 (works fine after fixes) 2021-06-08 15:18:33 +02:00
mafiesto4 b300793009 Add UAV slots dimensions to cache for D3D12 validation 2021-06-08 15:18:04 +02:00
mafiesto4 e0b5558399 Fix spline model visibility after enable if was disabled on start 2021-06-08 14:13:26 +02:00
mafiesto4 cfac2db5d2 Add depth test for point/spot lights rendering to optimize far lights rendering 2021-06-08 14:12:56 +02:00
mafiesto4 9d9ecb3ba8 Fix D3D12 resource state transitions barriers 2021-06-08 14:12:31 +02:00
mafiesto4 ab55c145f1 Add DRED and optional GPU-Based Validation for D3D12 2021-06-07 14:55:08 +02:00
mafiesto4 f7957be3e7 Fix GPU synchronization on D3D12 2021-06-07 14:53:53 +02:00
mafiesto4 4b42e17372 Increase D3D12 resources safe-frames timeout 2021-06-07 13:10:09 +02:00
mafiesto4 36c4c3c86a Fix lightmaps baking on D3D12 2021-06-07 13:09:52 +02:00
mafiesto4 3872d74bd2 Fix missing UAV barriers on D3D12 2021-06-07 13:09:24 +02:00
mafiesto4 39698c7694 Fix descriptors bindings to shaders on D3D12 2021-06-07 13:08:39 +02:00
mafiesto4 f4c8808d19 Add SRV slots isage info for D3D12 shaders cache 2021-06-07 12:19:49 +02:00
mafiesto4 fa1cd56a0d Optimize Vulkan shader compiler memory allocation 2021-06-07 11:56:41 +02:00
mafiesto4 cc47cb85e4 Cleanup renderer code 2021-06-07 11:56:04 +02:00
stefnotch 3c48484870 Use Stopwatch instead of DateTime.Now for increased accuracy
DateTime.Now is decent, but not accurate enough for timings involving only a few milliseconds.
2021-06-06 21:52:29 +02:00
GoaLitiuM 474add9d12 Fix input related compile errors in UWP platform 2021-06-06 17:17:29 +03:00
GoaLitiuM f3652697ae Fix building UWP platform with Visual Studio 2019 2021-06-06 17:17:25 +03:00
mafiesto4 dfee74ad1f Add missing name some for GPU resources 2021-06-04 12:38:44 +02:00
mafiesto4 3a6b7ea80b Add support for Function<> as method parameter in scripting 2021-06-03 15:19:00 +02:00
Crawcik 9b55ffdf6c Adding collections background color in global settings 2021-06-03 14:29:42 +02:00
Crawcik e459707b0d Custom background color for collections 2021-06-03 13:45:07 +02:00
Crawcik a1f985bc7d Adding NotNullItem 2021-06-03 13:44:21 +02:00
mafiesto4 9629c48d99 Revert CSharp only project build optimization to fix game cooking
#539 #529
2021-06-03 12:53:18 +02:00
Crawcik 46e7e6173a Rebuilding parrent collections layout 2021-06-02 18:42:28 +02:00
mafiesto4 33b31f9155 Fix using Keyboard and Mouse in C# scripting 2021-06-02 09:48:02 +02:00
mafiesto4 398fc4be37 Add Keyboard.IsAnyKeyDown 2021-06-02 09:47:37 +02:00
mafiesto4 d111b2ba03 Tweaks 2021-06-01 21:20:00 +02:00
mafiesto4 0aa9c865ca Fix renaming selected actor in scene tree after creation and use editor shortcut 2021-06-01 21:10:57 +02:00
mafiesto4 0f01683c06 Fix build settings limits 2021-06-01 15:49:02 +02:00
mafiesto4 bcca8c9291 Add printing full object path for some warning logs 2021-06-01 14:57:32 +02:00
mafiesto4 c30e338f0a Fix gizmos debug draw shapes 2021-06-01 14:38:24 +02:00
mafiesto4 accbef6841 Fix missing mipIndex when clearing lightmap textures with a buffer on baking start 2021-06-01 13:29:42 +02:00
mafiesto4 c5405183c9 Fix tooltips to be constrained by monitor bounds instead of virtual desktop or parent window bounds
#470 #540
2021-06-01 12:14:04 +02:00
mafiesto4 8a942922fe Merge remote-tracking branch 'origin/master' 2021-06-01 11:55:44 +02:00
mafiesto4 772172ed6b Fix bounding box calculations for Animated Models 2021-06-01 11:55:35 +02:00
mafiesto4 9b0b11f08f Missing change
9618a57432
2021-06-01 11:54:56 +02:00
mafiesto4 9618a57432 Add BoundingBox.MakeScaled 2021-06-01 11:54:41 +02:00
mafiesto4 f701e35c50 Add option to show bounds of the model in Editor preview 2021-06-01 10:45:23 +02:00
mafiesto4 1789e879bf Add option to show bounds of the animated model in Editor preview 2021-06-01 10:36:13 +02:00
mafiesto4 a730c3b1af Add using immediate DebugDraw for animated model skeleton drawing in Editor preview 2021-06-01 10:27:57 +02:00
mafiesto4 623299e59f Add support for AssetPreview to use debug drawing if needed 2021-06-01 10:27:30 +02:00
mafiesto4 6877e14b04 Rename ParticleManager to Particles 2021-05-31 22:40:41 +02:00
mafiesto4 760b687b02 Rename AnimationManager to Animations and expose to public 2021-05-31 19:32:35 +02:00
mafiesto4 2c2c7744eb Add AuxTool to AOT pipeline in Game Cooker 2021-05-31 16:05:35 +02:00
mafiesto4 2c6f0be3cc Merge branch 'GoaLitiuM-toolchain_definitions_fix' 2021-05-31 16:04:13 +02:00
mafiesto4 4ffda55071 Merge branch 'toolchain_definitions_fix' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-toolchain_definitions_fix 2021-05-31 16:04:11 +02:00
GoaLitiuM 5e8da3ba5f Include toolchain preprocessor definitions in binding generation 2021-05-31 16:58:38 +03:00
mafiesto4 d436b71ef5 Fix CharacterController still colliding after being disabled at runtime 2021-05-31 13:30:45 +02:00
mafiesto4 8eadd912f7 Add ClosestPointPointLine for Vector3 to C# 2021-05-31 10:26:15 +02:00
mafiesto4 a74f978f89 Fix lag from single axis gizmo usage on large distance 2021-05-31 10:25:55 +02:00
mafiesto4 d8cb1d15c7 Fix warning 2021-05-31 09:35:52 +02:00
mafiesto4 d2f339dba1 Optimize scripting object data deserialziation 2021-05-30 14:12:41 +02:00
mafiesto4 3c72abad37 Refactor FileSystemWatcher interface to make it simpler 2021-05-30 14:12:17 +02:00
mafiesto4 2a3a15533c Add ignoring memory allocations from profiling tools in Editor Profiler 2021-05-30 14:11:49 +02:00
mafiesto4 9c66ac4656 Add MemoryCompare, MemoryClear and MemoryCopy for direct memory access in C# 2021-05-30 14:11:25 +02:00
mafiesto4 1bd109395a Optimize managed memory allocations 2021-05-30 14:09:24 +02:00
mafiesto4 8a5f50dc49 Merge branch 'GoaLitiuM-cpu_idle_sleep' 2021-05-30 12:11:58 +02:00
mafiesto4 4e65215b57 Merge branch 'cpu_idle_sleep' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-cpu_idle_sleep 2021-05-30 12:11:42 +02:00
mafiesto4 4a08ab11ad Merge branch 'jb-perrier-viewpoint-shortcuts' 2021-05-30 11:57:53 +02:00
mafiesto4 99c1b60493 Merge branch 'viewpoint-shortcuts' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-viewpoint-shortcuts 2021-05-30 11:57:47 +02:00
mafiesto4 97de7a627e Add order for Margin properties 2021-05-30 10:53:34 +02:00
GoaLitiuM e06200926f Sleep between frames to save CPU cycles 2021-05-30 02:01:37 +03:00
GoaLitiuM cc60814334 Increase accuracy of Windows Sleep function
Windows 10 version 1803 (build 17134) and later versions support
high-resolution waitable timer, which offers much better accuracy over
Sleep function without the need of increasing the global timer
resolution. For older versions of Windows, we reduce the timer
resolution to 1ms and use normal waitable timer for sleeping.
2021-05-30 01:48:15 +03:00
GoaLitiuM c01a140077 Refactor Windows version logging, log Windows build number 2021-05-30 01:48:14 +03:00
Erdroy 23794c8875 Add NetworkHost id and comparison operator 2021-05-29 20:19:09 +02:00
Erdroy 97a5daf7e6 Fix NetworkMessage read/write asserts 2021-05-29 20:18:07 +02:00
Erdroy 1e22d8e3f8 Add ENet kick/connection disconnect impl 2021-05-29 19:50:28 +02:00
Erdroy 61af4c94bd Add usage of address specified in config for ENet driver 2021-05-29 19:42:22 +02:00
Erdroy 6719e0b326 Cleanup 2021-05-29 19:41:39 +02:00
jb-perrier ccef5f0d73 Fix viewpoints. 2021-05-29 18:53:30 +02:00
jb-perrier 03014dcf08 Register viewpoint shortcuts binding in EditViewport. 2021-05-29 18:51:03 +02:00
jb-perrier 241238d2d7 Add viewpoint shortcuts options. 2021-05-29 18:49:56 +02:00
mafiesto4 e6074149e5 Fix Margin loading 2021-05-29 13:48:38 +02:00
mafiesto4 2bdebdb2ef Improve Margin editing 2021-05-29 13:48:26 +02:00
mafiesto4 44433bf3b4 Add 9-slicking support for UI to draw sprites and textures
#155
2021-05-29 13:48:00 +02:00
mafiesto4 bf32034d91 Fix Margin serialization 2021-05-29 10:14:17 +02:00
mafiesto4 beb79f6107 Use network for UWP from Win32 impl 2021-05-28 19:43:15 +02:00
mafiesto4 518e248494 Add support for focusing on model when painting its vertices 2021-05-28 15:57:40 +02:00
mafiesto4 b1572ecb91 Add support for focusing on foliage instance bounds when editing it 2021-05-28 15:54:54 +02:00
mafiesto4 845198ebe3 Refactor focusing on selection logic in Editor 2021-05-28 15:51:28 +02:00
mafiesto4 e41dfe738b Add support for moving object with transform gizmo when mouse moves outside the viewport during usage 2021-05-28 14:24:19 +02:00
mafiesto4 94ee82b58d Fix Editor UI tree control click to handle selection update before
#533
2021-05-28 12:09:26 +02:00
mafiesto4 77f9010b06 Fix exception in Editor UI is model has invalid material slot index assigned 2021-05-28 11:54:11 +02:00
mafiesto4 29860b838e Fix camera position when changing Editor view EditorViewport
#531
2021-05-28 11:30:28 +02:00
mafiesto4 969db604e5 Fix gizmo in top down view on Z-axis movement (and other combination of perpendicular views)
Fix gizmo stability when using single axis

#530
2021-05-28 11:01:13 +02:00
mafiesto4 b9321a72b6 Merge branch 'GoaLitiuM-binding_generator_doc_fixes' 2021-05-28 09:54:05 +02:00
mafiesto4 a3f0f8ad8c Merge branch 'binding_generator_doc_fixes' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-binding_generator_doc_fixes 2021-05-28 09:53:59 +02:00
mafiesto4 c327cba735 Merge branch 'GoaLitiuM-rider_2021_support' 2021-05-28 09:49:06 +02:00
mafiesto4 a467c96e00 Merge branch 'rider_2021_support' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-rider_2021_support 2021-05-28 09:49:03 +02:00
mafiesto4 b4860cee69 Merge branch 'herocrab-add_windows_vulkan_to_readme' 2021-05-28 09:48:48 +02:00
mafiesto4 2abaa89907 Merge branch 'add_windows_vulkan_to_readme' of git://github.com/herocrab/FlaxEngine into herocrab-add_windows_vulkan_to_readme 2021-05-28 09:48:45 +02:00
mafiesto4 96e0842d27 Merge branch 'GoaLitiuM-build_csharp_bindings_only' 2021-05-28 09:35:11 +02:00
mafiesto4 2db2d27f12 Merge branch 'build_csharp_bindings_only' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-build_csharp_bindings_only 2021-05-28 09:35:03 +02:00
mafiesto4 a08e1576ce Merge remote-tracking branch 'origin/master' 2021-05-28 09:12:30 +02:00
mafiesto4 d5a129cb1b Add mono building for Switch 2021-05-28 09:12:15 +02:00
mafiesto4 9a9b97998c Fix loading native dependencies for binary modules from other folders than engine binaries or project root 2021-05-28 00:12:54 +02:00
mafiesto4 810623be61 Add automatic namespoace usings collecting when generating scripting bindings glue code for csharp 2021-05-27 23:36:07 +02:00
mafiesto4 b3d9ec687d Refactor base types initialization to be done during API processing 2021-05-27 23:34:55 +02:00
mafiesto4 2a6f1df76e Fix undo errors in editor on Margin property serialization 2021-05-26 23:26:41 +02:00
mafiesto4 42dfc56bae Fix checking paths when opening Visual Studio project items to prevent dummy files creation 2021-05-26 23:24:16 +02:00
mafiesto4 2b7b9e4d5a Fix typo in wheel type name 2021-05-26 22:40:09 +02:00
GoaLitiuM d1fbe42443 Use verbatim strings in tooltip descriptions
Additionally escapes backslashes in the tooltip string. Only character
that needs to be manually escaped is the double quotation marks.
2021-05-26 22:08:55 +03:00
GoaLitiuM a6ed117088 Add support for Rider 2021, use latest detected version of Rider
Handles additional registry location where installation paths are stored
for Rider 2021. The detected installations are now sorted by version, so
the latest detected version is always used when opening the scripts
project.
2021-05-26 20:07:34 +03:00
herocrab 3031e3937c Add how-to context for building Windows + Vulkan. 2021-05-25 10:25:25 -06:00
mafiesto4 64a8408600 Add focus to game window on play 2021-05-24 18:42:15 +02:00
mafiesto4 bdab3b55bc Merge branch 'jb-perrier-game-arg' 2021-05-24 18:35:20 +02:00
mafiesto4 c33d4a9bfb Merge branch 'game-arg' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-game-arg 2021-05-24 18:35:13 +02:00
mafiesto4 2c7d62bb8e Add support for custom drag&drop into level/prefab viewports from custom asset items 2021-05-24 18:34:19 +02:00
GoaLitiuM 327ccec4cb Only build bindings for project references with C#-only projects 2021-05-24 18:57:05 +03:00
Erdroy 3c939bbf40 Merge remote-tracking branch 'origin/master' into lowlevel-networking 2021-05-23 19:40:33 +02:00
jb-perrier 2f12642405 Rename -game to -play & Fix when play not used. 2021-05-23 19:34:16 +02:00
jb-perrier 1f3a86dca9 Fix -play not working with compilation at start. 2021-05-23 19:33:36 +02:00
jb-perrier ce3caede6c Remove skipcompile when -play is used. 2021-05-23 19:32:45 +02:00
jb-perrier 566756ecf2 Remove duplicate IsInitialized. 2021-05-23 19:31:44 +02:00
mafiesto4 c78fb7995e Add more indentation to scene tree items to make it more readable 2021-05-23 12:09:35 +02:00
mafiesto4 198d9d9dd5 Ignore ReSharper warnings in low-level cpu particles code 2021-05-23 11:44:14 +02:00
mafiesto4 1a4277994b Fix crash on Font invalidate 2021-05-22 22:34:35 +02:00
mafiesto4 c1f0fb750d Code style 2021-05-22 22:26:36 +02:00
mafiesto4 4b67a24c66 Merge branch 'GoaLitiuM-csc_compiler_server' 2021-05-22 22:25:00 +02:00
Erdroy ba4979cfc2 Add NetworkConfig::Address validation 2021-05-22 19:45:44 +02:00
Erdroy cd04007a71 Add address string for Listening/Connecting 2021-05-22 19:45:31 +02:00
Erdroy 5355e8c802 Merge branch 'master' into lowlevel-networking 2021-05-22 19:26:34 +02:00
GoaLitiuM d401f57080 Use Roslyn C# compiler server to improve script compilation times 2021-05-22 16:43:40 +03:00
jb-perrier 6eb3bc0577 Tweak. 2021-05-21 18:18:20 +02:00
jb-perrier 3a68e2891e Add null check. 2021-05-21 18:18:11 +02:00
mafiesto4 a9609c7993 Fix typo 2021-05-20 23:13:44 +02:00
mafiesto4 94adc01f35 Use daily builds with option for manual trigger 2021-05-20 23:13:02 +02:00
mafiesto4 b4533211a7 Tweak build for test 2021-05-20 22:53:10 +02:00
jb-perrier 320a1a984e Fix. 2021-05-20 20:08:08 +02:00
jb-perrier 9e2867ed7d Tweak. 2021-05-20 20:07:39 +02:00
jb-perrier 8ac8f9a6d1 Tweaks. 2021-05-20 20:05:44 +02:00
jb-perrier 8eb6fd2b6b Fix. 2021-05-20 20:03:58 +02:00
jb-perrier 316590ec59 Tweak. 2021-05-20 17:37:05 +02:00
jb-perrier 62b47fa65b Comments. 2021-05-20 17:30:43 +02:00
jb-perrier 9fb2952996 Tweaks / Cleanup. 2021-05-20 17:28:55 +02:00
jb-perrier 66c1201786 Load scene specified in -game argument. 2021-05-20 17:21:45 +02:00
jb-perrier d7f03d2c7d Handle game argument. 2021-05-20 17:20:00 +02:00
jb-perrier c01cd78225 RequestStartPlay glue code. 2021-05-20 17:19:24 +02:00
jb-perrier 5601be630e RequestStartPlay glue code. 2021-05-20 17:18:48 +02:00
jb-perrier 2293bd5fe0 Expose Simulation.RequestStartPlay() to cpp. 2021-05-20 17:17:53 +02:00
jb-perrier d3b920dfc1 Prevent Mesh being rendered while uninitialised ( async task not executed yet ). 2021-05-20 17:16:02 +02:00
jb-perrier ec3972d511 Add -game command line argument. 2021-05-20 17:14:01 +02:00
jb-perrier a69fa0b00d Add optional command line argument define. 2021-05-20 17:13:36 +02:00
mafiesto4 91672b55d8 Fix disabling VertexSnapping for 3D UI rendering
#368
2021-05-20 09:36:02 +02:00
mafiesto4 09577d3021 Use custom output for packaged builds in CD 2021-05-19 21:48:34 +02:00
mafiesto4 9215ea4861 Add support for custom build configurations for engine deploy 2021-05-19 21:23:01 +02:00
mafiesto4 b25ba6b229 Add support for custom package output directory for engine deploy 2021-05-19 21:19:27 +02:00
mafiesto4 3540e91cc4 Add preserving package output directory across sequential package builds 2021-05-19 21:18:54 +02:00
mafiesto4 ce6fb185f4 Merge branch 'honzapatCZ-patch-7' 2021-05-19 21:11:27 +02:00
mafiesto4 b925843baa Merge branch 'patch-7' of git://github.com/honzapatCZ/FlaxEngine into honzapatCZ-patch-7 2021-05-19 21:11:20 +02:00
mafiesto4 9c2c401669 Remove empty spaces 2021-05-19 21:11:08 +02:00
mafiesto4 7f6f50cf29 Merge branch 'jb-perrier-scripting-int16-support' 2021-05-19 19:50:11 +02:00
mafiesto4 7edf3e5b36 Merge branch 'scripting-int16-support' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-scripting-int16-support 2021-05-19 19:50:06 +02:00
mafiesto4 62cca0682c Add option to use Point sampling when drawing textures and sprites in UI via Brushes 2021-05-19 19:48:39 +02:00
mafiesto4 1a55e7c734 Fix copying missing dependency files for C#-only binary modules build 2021-05-19 16:55:35 +02:00
mafiesto4 d7e2ee986b Add Network impl for PS4 2021-05-19 14:49:10 +02:00
mafiesto4 3363f6ac0d Add Network impl for Switch 2021-05-19 10:14:19 +02:00
mafiesto4 3e3b0e7951 Fix game plugins initialization order in Editor play mode to mock the standalone game
#458
2021-05-18 23:32:50 +02:00
mafiesto4 19bb7c2293 Fix typo 2021-05-18 21:45:41 +02:00
mafiesto4 2eeefebcb2 Bump up build number 2021-05-18 21:18:49 +02:00
GoaLitiuM 4bb703e9bf Change FontReference to reference type
FontReference is mutating itself by storing the cached font for later
reuse, but this is not working as intended because FontReference is
returned as a value type in UIControls so the cached font is actually
stored in a copy of the FontReference and not in the original property.
2021-05-18 18:29:09 +03:00
mafiesto4 1ec55ee088 Add missing shader file change 2021-05-18 11:56:39 +02:00
mafiesto4 ead65f01ff Optimize Vulkan Framebuffer when not using color blending 2021-05-18 11:56:21 +02:00
mafiesto4 7f6a6f9fff Fix showing Game Plugins in editor plugins window 2021-05-18 11:41:49 +02:00
mafiesto4 2e93a7fd08 Add support for Geometry Shaders on Vulkan
#136
2021-05-18 11:41:18 +02:00
mafiesto4 9cba6bad6d Add support for rendering into 3d textures on Vulkan
#136
2021-05-18 11:40:38 +02:00
mafiesto4 5a7efe9019 Fix Volumetric Fog particle material CB0 binding issue 2021-05-17 13:51:14 +02:00
Nejcraft d0a75375f7 xd oh those path namings 2021-05-17 13:47:31 +02:00
mafiesto4 0a25b71437 Fix GPU particles on Vulkan
#478
2021-05-17 13:41:08 +02:00
Nejcraft 267c5566d8 Possibly Linux 2021-05-17 13:33:22 +02:00
Nejcraft 988d8bc2c5 Update cd_windows.yml 2021-05-17 12:19:51 +02:00
Nejcraft 33a53bd510 cd 2021-05-17 10:51:07 +02:00
mafiesto4 ec806a2009 Update shaders 2021-05-17 10:22:40 +02:00
mafiesto4 ae970cf2c8 Merge branch 'jb-perrier-indirect-vulkan' 2021-05-17 10:19:35 +02:00
mafiesto4 fb7d2831cb Merge branch 'indirect-vulkan' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-indirect-vulkan 2021-05-17 10:19:23 +02:00
mafiesto4 224de66c49 Add missing attributes for AlphaPanel panel
#430
2021-05-17 10:15:57 +02:00
Nejcraft 7956ee1e2c revert the viewed types back 2021-05-17 10:15:57 +02:00
honzapatCZ bd2af64a7e moving back 2021-05-17 10:15:56 +02:00
honzapatCZ 388ec655bf alpha+showcont 2021-05-17 10:15:56 +02:00
mafiesto4 4392e07cd6 Fix error when actor from unloaded scene is selected
#486
2021-05-17 10:15:55 +02:00
mafiesto4 4b0967b45e Fix Linux executable file renaming check 2021-05-17 10:15:54 +02:00
jb-perrier fd3d6abd61 Fix docs. 2021-05-16 21:39:30 +02:00
mafiesto4 3553d2f16b Fix Linux build error 2021-05-16 19:15:12 +02:00
mafiesto4 9a617c630b Fix api error 2021-05-16 18:54:40 +02:00
jb-perrier 95a951a453 Merge branch 'master' of https://github.com/FlaxEngine/FlaxEngine into indirect-vulkan 2021-05-16 17:41:10 +02:00
jb-perrier 3599de7eb8 Fix revert indirect draw count. 2021-05-16 17:30:15 +02:00
jb-perrier b4a870933a Revert IndirectDrawCount. 2021-05-16 17:23:52 +02:00
mafiesto4 5e401b6a78 Refactor Network api, add more dcos, expose it to scripting 2021-05-16 14:28:54 +02:00
mafiesto4 a89d5d1817 Add skipping generating structure fields accessors for private fields in scripting 2021-05-15 23:21:16 +02:00
mafiesto4 506df8c516 Fix using fixed array initializers in scripting API field 2021-05-15 23:20:34 +02:00
mafiesto4 d1b142db08 Fix error in context menu search on fail 2021-05-15 16:34:38 +02:00
mafiesto4 c32add161b Add option to copy/paste value from Visject box via context menu 2021-05-15 16:33:32 +02:00
mafiesto4 dbb42e9805 Fix minor warnings in shaders 2021-05-15 14:19:40 +02:00
mafiesto4 def45ce8bb Add monolog info 2021-05-15 13:40:23 +02:00
mafiesto4 82c9586846 Merge branch 'GoaLitiuM-richtextboxbase_oobfix' 2021-05-15 13:02:29 +02:00
mafiesto4 6c93643f19 Merge branch 'richtextboxbase_oobfix' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-richtextboxbase_oobfix 2021-05-15 13:02:24 +02:00
mafiesto4 1adf14ca2b Fix auto-focus for dock window on right-click to prevent Game Window mouse steal when using context menu 2021-05-15 13:00:25 +02:00
mafiesto4 6232b8d557 Add option to show Debug Draw shapes in Game Viewport 2021-05-15 12:58:39 +02:00
mafiesto4 cc8e098183 Fix duplicated Debug Draw inoke for actors 2021-05-15 12:53:54 +02:00
GoaLitiuM 78ee671607 Fix out of bound access to RichTextBoxBase internal buffer 2021-05-15 13:39:19 +03:00
mafiesto4 46b1fd944e Fix catching mouse focus in Editor play mode with game is paused 2021-05-15 11:01:11 +02:00
mafiesto4 fb7ef90fce Add option to hide GUI in Game Viewport 2021-05-15 11:00:42 +02:00
mafiesto4 8e31c49f1c Add automatic tooltip for ComboBox baed on selected item tooltip 2021-05-15 10:42:28 +02:00
mafiesto4 8f1f88b3ba Fix running Flax on Windows with STD console output 2021-05-14 21:44:13 +02:00
mafiesto4 16e67780ad Add -debugwait cmd line arg to wait for C# debugger attach on engine start 2021-05-14 19:25:31 +02:00
mafiesto4 5745e4e522 Refactor settings assets proxies 2021-05-14 18:48:35 +02:00
mafiesto4 67aa41afb1 Fix base method calls handling in scripting vtable overrides
#507
2021-05-14 16:07:46 +02:00
mafiesto4 12aa5f0b65 Fix bindings code issue 2021-05-14 15:37:05 +02:00
mafiesto4 5f851d2433 Fix reparenting actors in editor to preserve world position
#500
2021-05-14 13:01:25 +02:00
mafiesto4 fbb9fa065a Add more profile events to assets data loading 2021-05-14 13:00:03 +02:00
mafiesto4 401bd1c125 Add incremental actors naming when spawning them in viewport
#501
2021-05-14 12:37:20 +02:00
mafiesto4 2dff188eac Add automatic slider speed for float value input fields with limits specified
#499
2021-05-14 12:24:43 +02:00
mafiesto4 303b9da684 Fix Linxu build 2021-05-14 11:23:05 +02:00
mafiesto4 42461f1b4a Fix crash when drawing 2d sprite with invalid atlas specified 2021-05-14 11:02:42 +02:00
mafiesto4 f9b979f1c6 Add new icons atlas
#456
2021-05-14 11:02:22 +02:00
mafiesto4 26dd1afd32 Merge branch 'W2Wizard-IconOverhaul' 2021-05-14 10:48:24 +02:00
mafiesto4 11704740fe Merge branch 'IconOverhaul' of git://github.com/W2Wizard/FlaxEngine into W2Wizard-IconOverhaul 2021-05-14 10:48:18 +02:00
mafiesto4 443bd83b6f Merge branch 'jb-perrier-script-name' 2021-05-14 10:42:31 +02:00
mafiesto4 255255e45c Merge branch 'script-name' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-script-name 2021-05-14 10:42:28 +02:00
mafiesto4 fdf6306060 Fix asset paths lookup in build 2021-05-14 10:33:08 +02:00
mafiesto4 c95e5b0611 Fix assets load error regression 2021-05-14 10:32:55 +02:00
mafiesto4 8dc9834f48 Fix compilation for Linux 2021-05-14 09:31:10 +02:00
jb-perrier 465cdae564 Comments. 2021-05-13 17:58:44 +02:00
jb-perrier 41447d4ba0 Add name restriction for scripts, no digits at start. 2021-05-13 17:55:15 +02:00
jb-perrier 41905f9810 Add name restrictions based on proxy. 2021-05-13 17:54:52 +02:00
jb-perrier 2065b949b0 Add IsFileNameValid in ContentProxy. 2021-05-13 17:54:23 +02:00
mafiesto4 fd3553f668 Add support for Tracy on Android 2021-05-13 16:24:35 +02:00
mafiesto4 13a6de8645 Fix Linux build 2021-05-13 16:23:24 +02:00
W2.Wizard 887b52c18a Merge branch '1.2' into IconOverhaul 2021-05-13 15:21:36 +02:00
W2Wizard d54efc73f1 Adapt to new spritehandle names
Lots of files! However only change was renaming the icons overall.
2021-05-13 15:16:45 +02:00
mafiesto4 b2ecceab44 Fix text processing with wrapping enabled if layout bounds width equals the line width
#518
2021-05-13 15:00:40 +02:00
mafiesto4 fb5c45f474 Add SetMasterPoseModel to Animated Model for modular characters 2021-05-13 14:41:43 +02:00
mafiesto4 899e749d2d Fix missing call to OnAnimationUpdated when using custom skeleton pose 2021-05-13 13:15:09 +02:00
mafiesto4 e00e9d1552 Add SetCurrentPose to Animated Model 2021-05-13 13:09:06 +02:00
mafiesto4 9a3884636b Add AnimationUpdated event to Animated Model 2021-05-13 13:00:57 +02:00
mafiesto4 e267583bad Add FindClosestNode to Animated Model 2021-05-13 12:34:42 +02:00
mafiesto4 32806e8f4e Remove unused transient param from profile events 2021-05-13 12:04:10 +02:00
mafiesto4 389eee22e3 Add support for using animated model with anim graph using different skinned model 2021-05-13 11:59:47 +02:00
mafiesto4 9fcac44faf Merge branch 'GoaLitiuM-convex_mesh_queries' 2021-05-12 21:35:37 +02:00
jb-perrier 03c95b5597 Add , to enum. 2021-05-12 18:38:17 +02:00
GoaLitiuM 1f6fc02c24 Add physics queries for convex meshes 2021-05-12 17:51:28 +03:00
mafiesto4 94e0b3a747 Fix includes type in scripts templates 2021-05-12 16:21:04 +02:00
mafiesto4 94476783da Add option to Delete Sprite in Editor 2021-05-12 16:20:44 +02:00
mafiesto4 480947e0a9 Fix sprite atlas serialization after editing 2021-05-12 16:19:59 +02:00
mafiesto4 a4a3074bb6 Fix naming new sprites in Editor 2021-05-12 14:06:05 +02:00
mafiesto4 36d06ccaa3 Fix crash when reimporting sprite atlas
#494
2021-05-12 13:58:23 +02:00
mafiesto4 0509f9710f Fix crashes during deserialization of invalid data
#514
2021-05-12 13:42:07 +02:00
mafiesto4 f71d58a081 Merge branch 'Vizepi-master' 2021-05-12 13:14:55 +02:00
mafiesto4 ba95ae5191 Merge branch 'master' of git://github.com/Vizepi/FlaxEngine into Vizepi-master 2021-05-12 13:14:51 +02:00
mafiesto4 4c2465466c Merge branch 'stefnotch-patch-9' 2021-05-12 13:13:01 +02:00
mafiesto4 6db156513c Merge branch 'patch-9' of git://github.com/stefnotch/FlaxEngine into stefnotch-patch-9 2021-05-12 13:12:59 +02:00
mafiesto4 6f55e01846 Merge branch 'W2Wizard-patch-2' 2021-05-12 13:12:20 +02:00
mafiesto4 6343922b16 Merge branch 'patch-2' of git://github.com/W2Wizard/FlaxEngine into W2Wizard-patch-2 2021-05-12 13:12:16 +02:00
mafiesto4 7d7ad06b80 Merge branch 'GoaLitiuM-rigidbody_addforceatposition' 2021-05-12 13:06:10 +02:00
mafiesto4 90f06e74a8 Merge branch 'rigidbody_addforceatposition' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-rigidbody_addforceatposition 2021-05-12 13:06:05 +02:00
mafiesto4 d302675d7e Fix TypeSearchPopup showing types that base type is hidden 2021-05-12 12:42:48 +02:00
mafiesto4 9195e37a23 Refactor cpp script templates after new features 2021-05-12 12:42:24 +02:00
mafiesto4 b6f33d1d45 Merge branch 'LCRW-master' 2021-05-12 12:22:59 +02:00
mafiesto4 0950ef1a20 Merge branch 'master' of git://github.com/LCRW/FlaxEngine into LCRW-master 2021-05-12 12:22:23 +02:00
mafiesto4 ac2e9cbcff Use custom sources for GH Actions build on Ubuntu 2021-05-12 12:15:15 +02:00
mafiesto4 d8d514cec7 Use custom sources for GH Actions build on Ubuntu 2021-05-12 12:08:37 +02:00
mafiesto4 c222838325 Use custom sources for GH Actions build on Ubuntu 2021-05-12 11:52:51 +02:00
mafiesto4 9a28e02fc6 Merge branch 'jb-perrier-no-setter-show' 2021-05-12 11:07:40 +02:00
mafiesto4 4cb47251b3 Merge branch 'no-setter-show' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-no-setter-show 2021-05-12 11:07:33 +02:00
mafiesto4 a8f0035b8b Fix regression in win32 filesystem api using potential substring of StringView
#516 #510
2021-05-12 10:19:31 +02:00
jb-perrier 03cd86b4d7 Fix. 2021-05-11 16:16:37 +02:00
jb-perrier 166f7c2728 Refactor. 2021-05-11 16:09:27 +02:00
jb-perrier 31a446cfab Fix getter only properties not showing. 2021-05-11 14:57:07 +02:00
jb-perrier 95c4004ad8 Uint16 & Int16 Mono glue code. 2021-05-10 22:59:10 +02:00
jb-perrier 7506142dbb Uint16 & Int16 CPP serialization. 2021-05-10 22:57:49 +02:00
jb-perrier 4764e7914d Int16 & Uint16 NearEqual, Lerp, Hash. 2021-05-10 22:57:26 +02:00
jb-perrier 97338d61d2 Uint16 & Int16 Variant Cast. 2021-05-10 22:56:48 +02:00
jb-perrier 78ed675eda Uint16 & Int16 Variant CanCast. 2021-05-10 22:55:43 +02:00
jb-perrier 954a11a1b0 Uint16 & Int16 Variant CanCast. 2021-05-10 22:55:17 +02:00
jb-perrier a5ec9d749b Uint16 & Int16 Variant CanCast. 2021-05-10 22:54:52 +02:00
jb-perrier ab3de4777c Uint16 & Int16 Variant ToString. 2021-05-10 22:53:40 +02:00
jb-perrier 08ca326571 Uint16 & Int16 more cast. 2021-05-10 22:52:48 +02:00
jb-perrier ab5d789732 Uint16 & Int16 Variant cast. 2021-05-10 22:52:13 +02:00
jb-perrier cff8c57dba Uint16 & int16 op overload. 2021-05-10 22:51:18 +02:00
jb-perrier 7ed39ef375 Uint16 & Int16 ToString, Typename. 2021-05-10 22:50:35 +02:00
jb-perrier c59b617106 Int16 & Uint16 Variant ctor. 2021-05-10 22:50:07 +02:00
jb-perrier 98ca916197 Int16 & Uint16 C# serialization. 2021-05-10 22:48:33 +02:00
jb-perrier 74916dddfd Add Uint16 & Int16 names. 2021-05-10 22:47:02 +02:00
jb-perrier 0d6f81904d Uint16 & Int16 ScriptType ToString. 2021-05-10 22:46:24 +02:00
LcrW 62394b4b1d Update CppStaticClassTemplate.h 2021-05-10 21:37:01 +01:00
jb-perrier 9eaa6e622b Uint16 & Int16 Scripting support. 2021-05-10 22:24:35 +02:00
LcrW f9e1dc3ffb New Features 2021-05-10 21:04:52 +01:00
LcrW 08a9a00330 Update ScriptTemplate.cs 2021-05-10 18:30:46 +01:00
LcrW 62b095dde6 Merge remote-tracking branch 'upstream/master' 2021-05-10 18:25:07 +01:00
jb-perrier 0a32e6bf7d Add digit check at asset creation. 2021-05-10 18:20:58 +02:00
GoaLitiuM c8f8b33bd9 Implement AddForceAtPosition for Rigidbodies 2021-05-09 17:40:43 +03:00
LcrW 30624e7320 Merge branch 'master' of https://github.com/LCRW/FlaxEngine 2021-05-05 20:28:04 +01:00
mafiesto4 2c51f79c0a Add automatic profiler events for Visual Script methods invocation 2021-05-04 00:30:49 +02:00
mafiesto4 e4de83f2ed Add automatic profiler events for C# methods invocation 2021-05-04 00:17:27 +02:00
mafiesto4 17e3625e5d Add support for ANSI name and variable name for named profiler events 2021-05-04 00:17:01 +02:00
mafiesto4 aa7c467679 Fix some profile event names 2021-05-04 00:16:01 +02:00
mafiesto4 f6137831ee Fix POD structure check in scripting api if contains array field 2021-05-04 00:15:22 +02:00
mafiesto4 b57c0a9db1 Fix String::Resize to support buffer growing 2021-05-03 21:04:40 +02:00
mafiesto4 c4c1655f76 Fixes and tweaks 2021-05-03 19:25:03 +02:00
mafiesto4 4e94c7c88c Optimize C# method invoke in bindings via direct Mono invoke 2021-05-03 19:24:48 +02:00
mafiesto4 c36d1a5680 Add automatic profile events for engine services events 2021-05-03 19:23:16 +02:00
mafiesto4 b984276bc6 Fix compile error 2021-05-02 12:30:34 +02:00
mafiesto4 28969a7de4 Fix EnumComboBox to support negative items as a cost of lack of uint64 support 2021-05-02 12:04:14 +02:00
mafiesto4 05c6a2214b Cleanup concurrentqueue.h 2021-05-02 11:57:18 +02:00
mafiesto4 71fc8c63fe Fix compiler errors and warnings 2021-05-02 11:39:24 +02:00
mafiesto4 543d1a3c0e Add Tracy profiler support 2021-05-02 11:27:10 +02:00
mafiesto4 1a261597c5 Cleanup DataContainer 2021-05-02 11:27:04 +02:00
mafiesto4 09671823e4 Optimize String usage with StringView for basic file paths operations 2021-05-02 11:25:42 +02:00
mafiesto4 fd595863dc Fix asset paths to be from project rather than packages 2021-05-02 11:25:41 +02:00
mafiesto4 05f919c50f Optimization and tweaks 2021-05-02 11:25:33 +02:00
mafiesto4 e2789214ae Refactor Editor Utils into separate VariantUtils 2021-05-02 11:24:51 +02:00
mafiesto4 51e5dc0c00 Add SceneTicking to engine API 2021-05-02 11:24:50 +02:00
mafiesto4 7d9d6eb272 Fix compiler warnings for UWP 2021-05-02 11:24:50 +02:00
mafiesto4 167f7e268d Fix Linux build 2021-04-30 17:03:40 +02:00
mafiesto4 c785f9106b Fix Linux build 2021-04-30 16:42:13 +02:00
mafiesto4 0e75dba142 Optimize C++ compilation time 2021-04-30 16:27:57 +02:00
Vizepi 2f07b11bb6 [CLEAN] Add missing include and undef redefined macro
The missing include defined the inline macro used in the class
2021-04-30 10:16:58 +02:00
stefnotch 346d0e3111 Improve quotes? 2021-04-29 21:28:36 +02:00
Mr L Watson 288bde7925 Merge pull request #1 from FlaxEngine/master
Update
2021-04-29 18:52:01 +01:00
W2.Wizard f35902ed85 Add missing '/' to XML docs 2021-04-29 17:23:18 +02:00
mafiesto4 05ba9b8d45 Fix models uvs preview drawing 2021-04-29 16:39:26 +02:00
mafiesto4 c996476a28 Fix ScreenSpace UICanvas order in Prefab preview (move back to prevent editor widgets occlusion) 2021-04-29 16:21:29 +02:00
mafiesto4 eaa5716d6a Fix editor viewport input when using ScreenSpace canvas in a prefab 2021-04-29 16:17:40 +02:00
mafiesto4 2e5b89aa84 Fix ScreenSpace UICanvas prefab preview activate/deactivate 2021-04-29 15:49:57 +02:00
mafiesto4 d2ac0429d3 Fix order when pasting UI Controls
#487
2021-04-29 15:22:36 +02:00
mafiesto4 c2afe0b6b2 Fix synchronizing ActorTreeNode order after actor duplicate
#487
2021-04-29 15:22:10 +02:00
mafiesto4 a9b5c5d32d Fix initial label ands button text values 2021-04-29 11:33:13 +02:00
mafiesto4 238d0f42b1 Merge branch 'GoaLitiuM-capsule_trace_fix' 2021-04-29 10:15:45 +02:00
mafiesto4 4f97ae35bb Merge branch 'capsule_trace_fix' of git://github.com/GoaLitiuM/FlaxEngine into GoaLitiuM-capsule_trace_fix 2021-04-29 10:15:43 +02:00
mafiesto4 4479035595 Merge branch 'W2Wizard-MathStuff' 2021-04-29 10:14:32 +02:00
mafiesto4 c745e6f29b Merge branch 'MathStuff' of git://github.com/W2Wizard/FlaxEngine into W2Wizard-MathStuff 2021-04-29 10:14:31 +02:00
mafiesto4 f63849ed56 Fix panels filenames 2021-04-29 10:12:56 +02:00
mafiesto4 23d5a5e238 Merge branch 'honzapatCZ-patch-2' 2021-04-29 10:12:38 +02:00
mafiesto4 9b226926ed Merge branch 'patch-2' of git://github.com/honzapatCZ/FlaxEngine into honzapatCZ-patch-2 2021-04-29 10:12:33 +02:00
mafiesto4 4ad8b8bb19 Add support for VisibleIf on value editors using group panel
#484
2021-04-28 16:49:15 +02:00
mafiesto4 cbea62ceb9 Fix structured uav/srv buffer usage on Vulkan 2021-04-28 15:53:17 +02:00
mafiesto4 cf799c2198 Fix BitonicSort constant buffer size error on Vulkan due to structure padding 2021-04-28 15:53:12 +02:00
mafiesto4 f3be30a55e Merge branch 'MiheevN-master' 2021-04-28 11:41:52 +02:00
mafiesto4 c4fa30d39c Add sorting for used namespaces in bindings and include nested types checks
#477
2021-04-28 11:41:46 +02:00
mafiesto4 a02b5b8b57 Merge branch 'master' of git://github.com/MiheevN/FlaxEngine into MiheevN-master
# Conflicts:
#	Source/Tools/Flax.Build/Bindings/BindingsGenerator.CSharp.cs
2021-04-28 11:21:30 +02:00
mafiesto4 6988333a8e Merge branch 'stefnotch-fix-textbox-bugs' 2021-04-28 10:40:29 +02:00
mafiesto4 3eef855c31 Merge branch 'fix-textbox-bugs' of git://github.com/stefnotch/FlaxEngine into stefnotch-fix-textbox-bugs 2021-04-28 10:40:27 +02:00
mafiesto4 d9f3915186 Merge branch 'Vizepi-master' 2021-04-28 10:28:42 +02:00
mafiesto4 19941c3e88 Merge branch 'master' of git://github.com/Vizepi/FlaxEngine into Vizepi-master 2021-04-28 10:28:36 +02:00
mafiesto4 877a6e6913 Merge branch 'Crawcik-master' 2021-04-28 10:26:09 +02:00
mafiesto4 2051a724ae Merge branch 'master' of git://github.com/Crawcik/FlaxEngine into Crawcik-master 2021-04-28 10:26:05 +02:00
mafiesto4 774c4b65fe Fix error when platform culture is invalid 2021-04-28 10:01:33 +02:00
mafiesto4 3ef41e1e23 Merge branch 'master' into localization 2021-04-27 16:54:49 +02:00
mafiesto4 b96f0efd9c Fix using Delegate<> in API event
(cherry picked from commit 7b2c034fba)
2021-04-27 16:52:48 +02:00
mafiesto4 801587ab6c Fix case sensitivity check for StartsWith and EndsWith in StringView
(cherry picked from commit 752e7e73bc)
2021-04-27 16:52:26 +02:00
mafiesto4 df1dfbec36 Add support for object reference wrappers usage in hash maps and dictionaries
(cherry picked from commit eab3631c33)
2021-04-27 16:51:50 +02:00
mafiesto4 59af92bfc4 Fix format string errors assertions into soft checks
(cherry picked from commit c01e5efe43)
2021-04-27 16:50:55 +02:00
mafiesto4 35f06bbf6e Fix using TextBoxBase with child controls
(cherry picked from commit 2b41c8d24f)
2021-04-27 16:50:34 +02:00
mafiesto4 766a79af12 Remove unused include 2021-04-27 14:29:01 +02:00
mafiesto4 17467c81a4 Add LocalizedString support for UI 2021-04-27 14:28:42 +02:00
mafiesto4 5fc2f12139 Add helper method for CultureInfo to change language in VS 2021-04-27 12:58:16 +02:00
mafiesto4 ae846debd4 Add C++ current culture sync with localization system 2021-04-27 12:21:01 +02:00
mafiesto4 c01e5efe43 Fix format string errors assertions into soft checks 2021-04-27 10:57:07 +02:00
mafiesto4 06be726a6f Add C# current culture sync with localization system 2021-04-27 10:22:29 +02:00
mafiesto4 bdde0af771 Fix typos 2021-04-27 10:22:06 +02:00
mafiesto4 c76f1f2432 Add profile events to LocalizationSettingsEditor 2021-04-27 10:14:37 +02:00
mafiesto4 ed4eeee647 Fix undo for custom serialized objects (eg. LocalizedString) 2021-04-27 10:14:19 +02:00
mafiesto4 8c79c21e61 Add custom editor for LocalizedString 2021-04-27 10:13:48 +02:00
mafiesto4 ca56c5f9d0 Add formatting of localized plural string 2021-04-26 15:15:44 +02:00
mafiesto4 a22d5887bb Add LocalizedString.Empty 2021-04-26 15:15:30 +02:00
mafiesto4 2b41c8d24f Fix using TextBoxBase with child controls 2021-04-26 15:15:17 +02:00
mafiesto4 c519c00678 Add CreateSearchPopup to editor utils 2021-04-26 15:14:46 +02:00
jb-perrier 4c130bcba1 Merge branch '1.2' of https://github.com/FlaxEngine/FlaxEngine into indirect-vulkan 2021-04-24 14:29:51 +02:00
jb-perrier 3fc7073046 DrawInstancedIndirect & DrawIndexedInstanceIndirect impl. 2021-04-24 14:29:38 +02:00
mafiesto4 b73ff9aaf6 Merge branch '1.1' into 1.2
# Conflicts:
#	Source/Platforms/DotNet/Newtonsoft.Json.dll
#	Source/Platforms/DotNet/Newtonsoft.Json.pdb
#	Source/Platforms/UWP/Binaries/Newtonsoft.Json.dll
#	Source/Platforms/XboxOne/Binaries/Newtonsoft.Json.dll
2021-04-24 12:32:17 +02:00
stefnotch 3c2c95d670 Fix textbox selection when deleting
See https://forum.flaxengine.com/t/renaming-items-in-the-content-area-problem/334
2021-04-24 10:31:00 +02:00
stefnotch 37ed8afb30 Fix selecting and then pasting text
Now the caret isn't off by 1 character anymore
2021-04-24 10:30:52 +02:00
Николай Михеев 51a90dcd28 Adding the namespace of a field from another module. 2021-04-24 14:13:07 +07:00
Erdroy 0b16490719 Add full C# NetworkMessage API 2021-04-23 21:09:15 +02:00
mafiesto4 d36a36d439 Fix Win32 stack traces issue due to invalid search path for debug symbols
#457
2021-04-23 16:35:18 +02:00
Crawcik ac33ba432d Adding private protected access modifier 2021-04-23 14:02:16 +02:00
Vizepi 6e885ece34 [CLEAN] Added missing includes in headers 2021-04-23 13:59:02 +02:00
mafiesto4 826581cb77 Add support for searching for localization strings in scenes and prefabs 2021-04-23 13:57:16 +02:00
mafiesto4 d533dc5f5e Skip empty Value in LocalizedString serialization 2021-04-23 12:57:45 +02:00
mafiesto4 66fac52905 Add tooltips 2021-04-23 12:50:38 +02:00
mafiesto4 c28215b93e Fix UTF-8 encoding read in 2 places 2021-04-23 12:47:17 +02:00
mafiesto4 bbfd80dcb1 Add support for searching for localization strings in C#/C++ code 2021-04-23 12:46:32 +02:00
mafiesto4 81efa49951 Add button to update localization dashboard 2021-04-23 10:58:43 +02:00
mafiesto4 dc62586314 Fix missing asset register for new json resources 2021-04-23 10:53:27 +02:00
mafiesto4 6a1b4e547c Add support for exporting localized strings for translation 2021-04-23 10:52:51 +02:00
Crawcik d3c974a838 Access modifier detection fix 2021-04-23 08:31:00 +02:00
GoaLitiuM 8409f9d2d4 Fix missing rotation parameters in capsule physics queries 2021-04-22 20:53:24 +03:00
mafiesto4 d4a27f38ff Add support for adding new culture to game localization 2021-04-22 17:09:27 +02:00
mafiesto4 ace8295ab7 Merge remote-tracking branch 'origin/master' into localization
# Conflicts:
#	Source/Platforms/DotNet/Newtonsoft.Json.dll
#	Source/Platforms/DotNet/Newtonsoft.Json.pdb
#	Source/Platforms/UWP/Binaries/Newtonsoft.Json.dll
#	Source/Platforms/XboxOne/Binaries/Newtonsoft.Json.dll
2021-04-22 16:10:36 +02:00
mafiesto4 c23d2ad2c4 Improve LocalizationSettings editor 2021-04-22 16:10:20 +02:00
mafiesto4 b5e19d95bd Add undo support for Json Asset editor window 2021-04-22 14:21:07 +02:00
mafiesto4 af34bafc5a Improve LocalizedStringTable editor 2021-04-22 13:28:52 +02:00
mafiesto4 aa07d3b2fa Add CultureInfo editor with picker 2021-04-22 13:28:28 +02:00
mafiesto4 f7837f99c2 Fix handling spacing in collection editors to align label in a proper way with margin 2021-04-22 10:59:35 +02:00
mafiesto4 04836f037d Fix json proxy regression for Generic json assets 2021-04-22 10:58:52 +02:00
mafiesto4 64b6b4ebc9 Fix byte array deserialization from base64 encoded string 2021-04-22 10:58:25 +02:00
mafiesto4 2f1aeb6897 Fix API_AUTO_SERIALZIATION usage if base type is not serializable 2021-04-22 10:58:01 +02:00
W2Wizard 7cfcacf0cd Remove Unit Direction method 2021-04-20 18:21:27 +02:00
mafiesto4 221c4f0648 Merge branch 'W2Wizard-initlist' into 1.2 2021-04-20 09:46:09 +02:00
jb-perrier 52815a4ab0 Refactor using GPUDrawIndirectArgs. 2021-04-19 22:02:59 +02:00
jb-perrier 203d1d79dc Add drawCount to GPU indirect draw cmds. 2021-04-19 21:41:34 +02:00
mafiesto4 480783b7fa Add LocalizedString to TextRender 2021-04-19 16:25:44 +02:00
mafiesto4 3781228dd2 Add support for using generic class value types in scripting API bindings code 2021-04-19 16:24:51 +02:00
mafiesto4 983190b9a0 Add LocalizedString 2021-04-19 16:24:14 +02:00
W2Wizard 4e01d110a1 Add UnitDirection & Goldenratio
Additional simplification
2021-04-19 15:37:39 +02:00
W2.Wizard b1ad70b6b2 Add include 2021-04-17 20:29:48 +02:00
W2Wizard 6e9b5225d2 Add init functions 2021-04-17 20:08:10 +02:00
Erdroy e7f899309c Add simple SendMessage with single target 2021-04-16 22:08:59 +02:00
Erdroy ed82787093 Fix compilation issues & cleanup 2021-04-16 22:03:35 +02:00
Erdroy acb4a10fd5 Add IsServer checks for message sending 2021-04-16 21:18:12 +02:00
Erdroy 9927209293 Add message sending to clients 2021-04-16 21:17:43 +02:00
Erdroy d5bc9b5e46 Add NetworkConnection to ENetPeer map 2021-04-16 21:16:26 +02:00
Erdroy 8aaa0a2d6b Add Timeout event 2021-04-16 21:15:20 +02:00
Erdroy ba8d506c14 Add explicit ctor to NetworkConnection 2021-04-16 21:14:54 +02:00
mafiesto4 f1b82b788b Add string localization API 2021-04-16 15:58:31 +02:00
mafiesto4 029566b2ff Add localization string tables caching for current language 2021-04-16 15:48:27 +02:00
mafiesto4 35aaacd61b Add support for importing .po files with strings localization 2021-04-16 15:47:59 +02:00
mafiesto4 eab3631c33 Add support for object reference wrappers usage in hash maps and dictionaries 2021-04-16 15:47:26 +02:00
mafiesto4 cca8200794 Fix JsonAssetProxy.IsProxyFor 2021-04-16 15:47:01 +02:00
mafiesto4 0fb02a5aff Add LocalizationSettings 2021-04-16 15:46:42 +02:00
mafiesto4 7448383079 Add LocalizedStringTable 2021-04-16 15:39:31 +02:00
mafiesto4 e9215c1a9e Tweaks 2021-04-16 11:34:10 +02:00
mafiesto4 69d3cb5b2b Add support for nesting Array inside Dictionary in scripting API 2021-04-16 10:13:15 +02:00
mafiesto4 e4d3989b71 Add support for nesting Array inside Dictionary in scripting API 2021-04-16 10:12:40 +02:00
mafiesto4 f9c6166b46 Minor tweak 2021-04-15 16:57:16 +02:00
mafiesto4 ee691469b4 Fix natvis display for string views 2021-04-15 16:56:49 +02:00
mafiesto4 752e7e73bc Fix case sensitivity check for StartsWith and EndsWith in StringView 2021-04-15 16:56:07 +02:00
mafiesto4 a9ec4566e7 Add support for custom asset type factory in game code 2021-04-15 16:55:03 +02:00
mafiesto4 653cdd8654 Add support for importing assets into custom formats with AssetsImportingManager 2021-04-15 16:48:01 +02:00
mafiesto4 18901ba66f Rename event 2021-04-14 13:13:35 +02:00
mafiesto4 7bc0e3c14d Fix dummy locale on Linux 2021-04-14 12:27:48 +02:00
mafiesto4 7b2c034fba Fix using Delegate<> in API event 2021-04-14 12:23:50 +02:00
mafiesto4 7dd2a8fac9 Add Localization 2021-04-14 12:22:48 +02:00
W2.Wizard 00cb802363 Add missing doc 2021-04-14 11:34:43 +02:00
W2.Wizard 325433aaf8 Add GameSettings icon 2021-04-13 16:09:35 +02:00
W2.Wizard 7877f77242 Add Scalar Icon, PS & XBox
A separate scalar icon for the value box
2021-04-13 10:41:04 +02:00
mafiesto4 ac1eb8d58d Merge branch 'master' into 1.2 2021-04-13 09:52:03 +02:00
mafiesto4 b2ae91e3b9 Fix warnings 2021-04-13 09:51:55 +02:00
mafiesto4 898a7002eb Merge branch 'jb-perrier-intx' into 1.2 2021-04-13 09:38:51 +02:00
mafiesto4 5d0da2c8c2 Merge branch 'intx' of git://github.com/jb-perrier/FlaxEngine into jb-perrier-intx 2021-04-13 09:38:43 +02:00
W2.Wizard 1e2a15d6c1 Initial Setup
Expose all settings as individual items and overhaul all icons.

Sorted all SpriteHandle fields alphabetically.
2021-04-12 20:07:47 +02:00
mafiesto4 c572d75d1d Format code 2021-04-12 15:45:58 +02:00
mafiesto4 f1bc3f58e2 Merge branch 'stefnotch-tweak-quaternion-editing' into 1.2 2021-04-12 15:44:05 +02:00
mafiesto4 d774cb496a Merge branch 'tweak-quaternion-editing' of git://github.com/stefnotch/FlaxEngine into stefnotch-tweak-quaternion-editing 2021-04-12 15:44:03 +02:00
mafiesto4 ed1f0b8881 Merge branch 'jb-perrier-this-node' into 1.2 2021-04-12 15:43:05 +02:00
jb-perrier cd707eb5a4 Fix "This" node output type. 2021-04-11 12:16:03 +02:00
stefnotch c4af8ce0ca Super smooth quaternion editing
Downside: I have no idea if this is a good implementation
2021-04-09 14:28:02 +02:00
jb-perrier 992f4b2303 Add IntX write stream support. 2021-04-08 19:00:40 +02:00
jb-perrier 8e7ff6f657 Add IntX stream read support. 2021-04-08 19:00:25 +02:00
jb-perrier 4e86f1c776 Add WriteVariant support. 2021-04-08 19:00:03 +02:00
jb-perrier 4b78551765 Add WriteVariant support. 2021-04-08 18:59:38 +02:00
jb-perrier 3579b86980 Add WriteCommonValue support. 2021-04-08 18:59:19 +02:00
jb-perrier 3f39212b7b Add ReadVariant support. 2021-04-08 18:59:05 +02:00
jb-perrier b0b6aeccd8 Add ReadVariantType support. 2021-04-08 18:58:45 +02:00
jb-perrier 5b6a0a8d7f Add ReadVariantScriptType support. 2021-04-08 18:58:29 +02:00
jb-perrier 3bbeae15f2 Add ReadCommonValue support. 2021-04-08 18:58:13 +02:00
jb-perrier f6a6e298e0 Add ToVariantType support. 2021-04-08 18:57:47 +02:00
jb-perrier b4b41d6773 Add IntX to VairantType. 2021-04-08 18:57:28 +02:00
jb-perrier 274dde0a7e Add IntX support De/Serialize. 2021-04-08 18:57:05 +02:00
jb-perrier 7a5e5a63e1 Add IntX support Deserialize. 2021-04-08 18:56:36 +02:00
jb-perrier e55dd16b72 Add IntX support Serialize. 2021-04-08 18:56:20 +02:00
jb-perrier 054b2cb9c7 Add C++ Serialization IntX support. Header. 2021-04-08 18:55:48 +02:00
jb-perrier fed5805fcc Add Int4 Min/Max. 2021-04-08 18:55:07 +02:00
jb-perrier e9c5ffa736 Add Int3 Min/Max. 2021-04-08 18:54:55 +02:00
jb-perrier e912590bc6 Add Int2 Min/Max. 2021-04-08 18:54:35 +02:00
jb-perrier 9d3861ace2 Add Int2 funcs. 2021-04-08 18:54:20 +02:00
jb-perrier 0b1c1b3a8d Refactor Int2 operation. 2021-04-08 18:54:09 +02:00
jb-perrier 4b22503ea2 Add Int3 operators + funcs. 2021-04-08 18:53:39 +02:00
jb-perrier 54786a001a Add Int4 operators + funcs. 2021-04-08 18:53:20 +02:00
jb-perrier 9cf6120b39 Add Int2 constructors. 2021-04-08 18:52:42 +02:00
jb-perrier 21f1930c2d Add Int3 constructors. 2021-04-08 18:52:34 +02:00
jb-perrier 053d55bf81 Add Int4 constructors. 2021-04-08 18:52:21 +02:00
jb-perrier 563ec32f06 Add Int4 Min/Max support. 2021-04-08 18:52:01 +02:00
jb-perrier f8bc124752 Add Int3 Min/Max support. 2021-04-08 18:51:54 +02:00
jb-perrier 529beaad08 Add Int2 Min/Max support. 2021-04-08 18:51:46 +02:00
jb-perrier efbc7976b0 Add Int3.cpp. 2021-04-08 18:51:17 +02:00
jb-perrier 048612c65c Add Int3.cpp. 2021-04-08 18:51:09 +02:00
jb-perrier 866105631e Add Int4.cpp. 2021-04-08 18:50:59 +02:00
jb-perrier 6c4ca6c01a Delete unused pre-decl. 2021-04-08 18:50:16 +02:00
jb-perrier a04d19d9f7 Delete unused pre-decl. 2021-04-08 18:50:09 +02:00
jb-perrier f470a9aaf4 Delete unused pre-decl. 2021-04-08 18:50:04 +02:00
jb-perrier 0bb1982bcd Delete VectorInt.h. 2021-04-08 18:49:18 +02:00
jb-perrier d2cc4051ad Convert Int2 to generated type. 2021-04-08 18:47:14 +02:00
jb-perrier 224937cd09 Convert Int3 to generated type. 2021-04-08 18:46:56 +02:00
jb-perrier 8661c2af18 Convert Int4 to generated type. 2021-04-08 18:46:28 +02:00
jb-perrier 854b2492dd Add Variant "As" support for IntX. 2021-04-08 18:45:02 +02:00
jb-perrier 0f6e204c76 Add Variant operator support for IntX. 2021-04-08 18:44:26 +02:00
jb-perrier 1e4c07f94c Add Variant constructors for IntX. 2021-04-08 18:43:39 +02:00
jb-perrier 3185691077 Add IntX to VariantType. 2021-04-08 18:42:40 +02:00
jb-perrier 42075f7b2a Add Vector2 constructors for IntX. 2021-04-08 18:42:04 +02:00
jb-perrier a746e0c995 Add Vector3 constructor for IntX. 2021-04-08 18:41:38 +02:00
jb-perrier ca0135724c Add Vector4 constructors for IntX. 2021-04-08 18:41:11 +02:00
jb-perrier fa82555149 Add IntX support for JsonWriter. 2021-04-08 18:39:08 +02:00
mafiesto4 9a90b2fa42 Add check for null ref 2021-04-08 13:10:03 +02:00
mafiesto4 a3012d0b27 Add warning when using Triangle Mesh collider under RigidBody 2021-04-08 11:21:12 +02:00
mafiesto4 7f482330ca Add support for Vector2/3/4 and Quaternion constants for default value attribute in C# scripting api 2021-04-08 10:43:51 +02:00
mafiesto4 810691d540 Add support for string constants as defaults in scripting API 2021-04-08 10:03:01 +02:00
mafiesto4 eb24c29f7e Add support for OnSerializing, OnSerialized, OnDeserializing and OnDeserialized callbacks for C# types serialization with Json 2021-04-08 10:02:08 +02:00
mafiesto4 438135975f Add DefaultQueryExtent to navmesh properties 2021-04-07 17:17:41 +02:00
mafiesto4 25a9dcad8a Move JsonConverters to a separate file 2021-04-07 14:46:49 +02:00
mafiesto4 1243927ad0 Fix typo 2021-04-07 14:00:15 +02:00
mafiesto4 fee47a99b3 Add additional info text and pivot location preview to anchors editor 2021-04-07 13:47:31 +02:00
mafiesto4 7c54bb0155 Add support for reusing UIControlControlEditor and AnchorPresetsEditorPopup in Editor plugins 2021-04-07 12:53:07 +02:00
mafiesto4 9a0e3a7b6c Merge branch 'honzapatCZ-ui-achorpopup-shiftctrl-modes' into 1.2 2021-04-07 12:05:25 +02:00
honzapatCZ ff4f1277e7 invert preserveBounds back 2021-04-07 11:45:12 +02:00
Nejcraft 6fba1a4ab9 Delete Control.Bounds.cs.rej 2021-04-07 11:22:45 +02:00
Nejcraft f24cb34e3f Merge branch '1.2' into ui-achorpopup-shiftctrl-modes 2021-04-07 11:20:20 +02:00
mafiesto4 772af752d2 Fix regression from dff1374378 2021-04-07 11:10:51 +02:00
mafiesto4 dff1374378 Post-merge tweaks
#417
2021-04-07 10:57:17 +02:00
mafiesto4 7e5fd8e384 Merge branch 'honzapatCZ-ui-localPosition' into 1.2 2021-04-07 10:31:43 +02:00
mafiesto4 95ba2e9bab Merge branch 'ui-localPosition' of git://github.com/honzapatCZ/FlaxEngine into honzapatCZ-ui-localPosition 2021-04-07 10:31:41 +02:00
honzapatCZ 41a873450e should work now 2021-04-06 16:54:22 +02:00
honzapatCZ 7f5869e257 Merge remote-tracking branch 'origin/1.2' into ui-achorpopup-shiftctrl-modes 2021-04-06 16:44:45 +02:00
mafiesto4 c8c215abfd Add support for custom value propagation in CustomEditor 2021-04-06 15:47:00 +02:00
mafiesto4 2d6f8cc406 Change default Update FPS in time settings to 60
#414
2021-04-06 10:42:11 +02:00
mafiesto4 80fc3d82b0 Merge branch 'honzapatCZ-patch-4' into 1.2 2021-04-06 09:51:37 +02:00
mafiesto4 1bb64fdf5d Merge branch 'patch-4' of git://github.com/honzapatCZ/FlaxEngine into honzapatCZ-patch-4 2021-04-06 09:51:34 +02:00
honzapatCZ c4dd5ef5c8 anchor preset popup shift + ctrl 2021-04-02 17:47:39 +02:00
honzapatCZ 73e92e33fd local positions 2021-04-02 17:38:30 +02:00
mafiesto4 3a5c3cabba Add missing doc comment 2021-04-02 16:51:12 +02:00
mafiesto4 0b4408bc78 Fix Transform Node/Bone in replace mode when transform is identity 2021-04-01 14:16:16 +02:00
Nejcraft df6dc6b21f Bump up default Update FPS
This cant possibly do any harm as if it is too much it will get skipped and work like it is on these FPSs while remaining to work consistantly, while if it is possible to get to the 60 fps, things like scripted camera, ChracterController etc. will move more better.
2021-03-31 16:51:11 +02:00
mafiesto4 df10d6560b Fix dead-lock 2021-03-31 15:42:10 +02:00
mafiesto4 a2825eac87 Add support uint64 values in EnumComboBox 2021-03-31 12:15:57 +02:00
mafiesto4 51926f517e Add support for masking Material Slots when cooking Collision Data 2021-03-31 12:15:38 +02:00
mafiesto4 382a35aabf Fix regression in adding model material slots 2021-03-31 10:12:05 +02:00
Nejcraft 4f690c17fa mario went missing 2021-03-30 20:36:39 +02:00
Nejcraft 7af125b453 Added some qutoes
As by discord
2021-03-30 20:35:13 +02:00
mafiesto4 b0fe4e9945 Merge remote-tracking branch 'origin/master' into 1.2 2021-03-30 17:58:29 +02:00
mafiesto4 a6d488c4ef Add support for generating Collision Data from Skinned Models 2021-03-30 17:58:24 +02:00
mafiesto4 e01a0585a8 Add MeshBase as shared impl part for Mesh and SkinnedMesh 2021-03-30 17:57:53 +02:00
mafiesto4 3e1356ba2d Remove unused LimitAttribute into simple Limit 2021-03-30 12:28:33 +02:00
mafiesto4 a83ee4014e Expose more wheel settings in vehicle 2021-03-29 17:07:17 +02:00
mafiesto4 4264a36dd0 Fix tooltip attribute generation for multi line xml doc comments 2021-03-29 16:49:26 +02:00
mafiesto4 dd00c83f74 Add clutch strength option 2021-03-29 16:48:59 +02:00
mafiesto4 6ad8e8b133 Expose Setup on WheeledVehicle 2021-03-29 16:40:06 +02:00
mafiesto4 f17e347a15 Add differential settings to WheeledVehicle 2021-03-29 16:25:25 +02:00
mafiesto4 d95d3efe33 Fix 2021-03-29 15:38:04 +02:00
mafiesto4 d21ccac63e Add engine settings to WheeledVehicle 2021-03-29 15:36:55 +02:00
mafiesto4 427541b488 Fix using cross-module references inside C++ game project 2021-03-29 14:41:29 +02:00
mafiesto4 b27c832cb7 Add error log when trying to load bytes from file data that is too big 2021-03-29 13:49:49 +02:00
mafiesto4 3162d4e770 Add option for WheeledVehicle drive type 2021-03-29 13:41:25 +02:00
mafiesto4 e21c9d24de Add proper vehicle setup after editing wheel colliders 2021-03-26 17:11:26 +01:00
mafiesto4 2ce14b5e9c Increase physics solver iterations counts for vehicles to have more stability and quality 2021-03-26 16:14:06 +01:00
mafiesto4 3f68a0576d Reorder properties and add center of mass debug drawing 2021-03-26 15:47:00 +01:00
mafiesto4 f216528f40 Tweak comment 2021-03-26 15:14:12 +01:00
mafiesto4 4562dde31f Add Vehicles support 2021-03-26 15:11:07 +01:00
mafiesto4 5ca717a231 Merge remote-tracking branch 'origin/master' into 1.2 2021-03-23 12:32:04 +01:00
mafiesto4 e2f9646b8f Fix using nested types in scripting api 2021-03-23 12:31:30 +01:00
mafiesto4 b5e324673e Fixes for serialization problems with custom structures 2021-03-23 12:29:25 +01:00
mafiesto4 20b65a08d9 Add DrawCylinder and DrawWireCylinder to DebugDraw 2021-03-23 12:21:07 +01:00
mafiesto4 40c537d114 Merge branch 'master' into 1.2
# Conflicts:
#	Source/Engine/Platform/Network.h
2021-03-22 11:26:36 +01:00
mafiesto4 de02131d0a Update 2021-03-16 16:07:08 +01:00
mafiesto4 b3887c0874 Add support for separate data and code output directories in Game Cooker 2021-03-16 16:06:59 +01:00
Erdroy d99aa3ef46 Finish ReadBytes/WriteBytes C# API 2021-03-15 20:37:31 +01:00
Erdroy a90b3bd7f6 Add message sending to server 2021-03-15 20:28:41 +01:00
Erdroy 77461e45c0 Remove fragmented channel type 2021-03-15 20:07:52 +01:00
Erdroy 99135759e3 Use only one channel for ENet 2021-03-15 20:00:30 +01:00
mafiesto4 3fb0b56c10 Add Vulkan support on Switch 2021-03-15 15:47:54 +01:00
mafiesto4 c930d32b2b Add support for cooking game for Switch 2021-03-15 14:32:10 +01:00
mafiesto4 c7c339957b Merge remote-tracking branch 'origin/1.1' into 1.2
# Conflicts:
#	Source/Editor/Editor.Build.cs
2021-03-15 09:38:58 +01:00
Erdroy 5afe51d1b4 Add NetworkMessage read/write functions (WIP) 2021-03-12 20:01:03 +01:00
Erdroy 082d56f89a Add multi-host support 2021-03-12 19:29:20 +01:00
Erdroy 6b7ca47f26 Add basic ENet driver implementation (WIP) 2021-03-11 20:30:37 +01:00
Erdroy 00d5a40443 Fix PopEvent API signature 2021-03-11 20:30:03 +01:00
Erdroy 87754f12ff Add proper NetworkEvent data 2021-03-11 20:04:25 +01:00
Erdroy e7d99057ba Expose CreateMessage/RecycleMessage to the API 2021-03-11 20:04:10 +01:00
Erdroy 339e5a5d91 Add ENet thirdparty 2021-03-11 19:23:10 +01:00
Erdroy 2db1438ef4 Add note about end points 2021-03-11 19:11:40 +01:00
Erdroy 42d31c0c65 Fix warning about double to float conversion 2021-03-11 19:11:23 +01:00
Erdroy 64a5b01bd9 Add logs 2021-03-11 19:11:04 +01:00
Erdroy ea7cdd00bd Add ENet stubs 2021-03-11 18:47:15 +01:00
Erdroy 43e8a54e57 Use enum instead interface reference for now 2021-03-11 18:47:05 +01:00
Erdroy 393595ea2d Fix message index pool 2021-03-11 18:46:28 +01:00
Erdroy b9f13804e0 Add Networking namespace 2021-03-11 18:08:12 +01:00
Erdroy 1c511d112d Fix compilation & APIGen issues 2021-03-11 18:08:12 +01:00
Erdroy f86e22ba87 Add networking build script 2021-03-11 18:08:12 +01:00
Erdroy c87feb69c4 Add INetworDriver full API 2021-03-11 18:08:12 +01:00
Erdroy 75a02beda0 Cleanup 2021-03-11 18:08:12 +01:00
Erdroy 7106dc738b Add proper ctor to NetworkMessage 2021-03-11 18:08:12 +01:00
Erdroy 7525bf6435 Add network message recycle implementation 2021-03-11 18:08:12 +01:00
Erdroy 8f653fa699 Add basic network classes and message pooling 2021-03-11 18:08:11 +01:00
mafiesto4 4072796e54 Switch impl progress 2021-03-11 17:22:06 +01:00
mafiesto4 e09f4eb6dc Switch impl progress 2021-03-09 19:18:40 +01:00
mafiesto4 f82117c6fb Remove unused WindowsManager::CalcCenteredWinPos 2021-03-09 14:32:53 +01:00
mafiesto4 48ae338fb2 Move default AllocatePages/FreePages impl from Unix to PlatformBase 2021-03-09 14:32:24 +01:00
mafiesto4 cc201e198d Add Switch platform 2021-03-09 14:26:30 +01:00
1195 changed files with 71124 additions and 42519 deletions
+6 -3
View File
@@ -8,15 +8,18 @@ jobs:
name: Editor (Linux, Development x64)
runs-on: "ubuntu-20.04"
steps:
- name: Install dependencies
run: |
sudo apt-get install libx11-dev libxcursor-dev libxinerama-dev build-essential gettext libtool libtool-bin libpulse-dev libasound2-dev libjack-dev portaudio19-dev
- name: Checkout repo
uses: actions/checkout@v2
- name: Checkout LFS
run: |
git lfs version
git lfs pull
- name: Install dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f .github/workflows/build_linux_sources.list /etc/apt/sources.list
sudo apt-get update
sudo apt-get install libx11-dev libxcursor-dev libxinerama-dev build-essential gettext libtool libtool-bin libpulse-dev libasound2-dev libjack-dev portaudio19-dev
- name: Build
run: |
./Development/Scripts/Linux/CallBuildTool.sh -build -log -arch=x64 -platform=Linux -configuration=Development -buildtargets=FlaxEditor
@@ -0,0 +1,4 @@
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
+100
View File
@@ -0,0 +1,100 @@
name: Continuous Deployment
on:
schedule:
- cron: '15 4 * * *'
workflow_dispatch:
jobs:
# Windows
package-windows-editor:
name: Editor (Windows)
runs-on: "windows-latest"
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Checkout LFS
run: |
git lfs version
git lfs pull
- name: Build
run: |
.\PackageEditor.bat -arch=x64 -platform=Windows -deployOutput=Output
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Windows-Editor
path: Output/Editor.zip
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Windows-EditorDebugSymbols
path: Output/EditorDebugSymbols.zip
package-windows-game:
name: Game (Windows)
runs-on: "windows-latest"
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Checkout LFS
run: |
git lfs version
git lfs pull
- name: Build
run: |
.\PackagePlatforms.bat -arch=x64 -platform=Windows -deployOutput=Output
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Windows-Game
path: Output/Windows.zip
# Linux
package-linux-editor:
name: Editor (Linux)
runs-on: "ubuntu-20.04"
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Checkout LFS
run: |
git lfs version
git lfs pull
- name: Install dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f .github/workflows/build_linux_sources.list /etc/apt/sources.list
sudo apt-get update
sudo apt-get install libx11-dev libxcursor-dev libxinerama-dev build-essential gettext libtool libtool-bin libpulse-dev libasound2-dev libjack-dev portaudio19-dev
- name: Build
run: |
./PackageEditor.sh -arch=x64 -platform=Linux -deployOutput=Output
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Linux-Editor
path: Output/FlaxEditorLinux.zip
package-linux-game:
name: Game (Linux)
runs-on: "ubuntu-20.04"
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Checkout LFS
run: |
git lfs version
git lfs pull
- name: Install dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/*
sudo cp -f .github/workflows/build_linux_sources.list /etc/apt/sources.list
sudo apt-get update
sudo apt-get install libx11-dev libxcursor-dev libxinerama-dev build-essential gettext libtool libtool-bin libpulse-dev libasound2-dev libjack-dev portaudio19-dev
- name: Build
run: |
./PackagePlatforms.sh -arch=x64 -platform=Linux -deployOutput=Output
- name: Upload
uses: actions/upload-artifact@v2
with:
name: Linux-Game
path: Output/Linux.zip
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -112,7 +112,7 @@ MaterialInput GetGeometryMaterialInput(GeometryData geometry)
#if USE_LIGHTMAP
output.LightmapUV = geometry.LightmapUV;
#endif
output.TBN = CalcTangentBasisFromWorldNormal(geometry.WorldNormal);
output.TBN = CalcTangentBasis(geometry.WorldNormal, geometry.WorldPosition, geometry.TexCoord);
output.HolesMask = geometry.HolesMask;
#if USE_TERRAIN_LAYERS
output.Layers = geometry.Layers;
@@ -415,7 +415,7 @@ VertexOutput VS(TerrainVertexInput input)
#if USE_LIGHTMAP
materialInput.LightmapUV = output.Geometry.LightmapUV;
#endif
materialInput.TBN = CalcTangentBasisFromWorldNormal(output.Geometry.WorldNormal);
materialInput.TBN = tangentToWorld;
materialInput.TwoSidedSign = WorldDeterminantSign;
materialInput.SvPosition = output.Position;
materialInput.PreSkinnedPosition = position;
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
%copyright%
#pragma once
#include "Engine/Core/ISerializable.h"
#include "Engine/Core/Types/BaseTypes.h"
#include "Engine/Content/Assets/Model.h"
#include "Engine/Scripting/ScriptingType.h"
/// <summary>
/// %class% Json Asset.
/// </summary>
API_CLASS() class %module%%class% : public ISerializable
{
API_AUTO_SERIALIZATION();
DECLARE_SCRIPTING_TYPE_NO_SPAWN(%class%);
public:
// Custom float value.
API_FIELD(Attributes = "Range(0, 20), EditorOrder(0), EditorDisplay(\"Data\")")
float FloatValue = 20.0f;
// Custom vector data.
API_FIELD(Attributes = "EditorOrder(1), EditorDisplay(\"Data\")")
Vector3 Vector3Value = Vector3(0.1f);
};
@@ -0,0 +1,8 @@
%copyright%
#include "%filename%.h"
#include "Engine/Core/Log.h"
void %class%::RunNativeAction(Vector4 data)
{
LOG(Warning, "Data in RunNativeAction: {0}", data);
}
@@ -0,0 +1,20 @@
%copyright%
#pragma once
#include "Engine/Scripting/Script.h"
#include "Engine/Core/Math/Vector4.h"
/// <summary>
/// %class% Function Library
/// </summary>
API_CLASS(Static) class %module%%class%
{
DECLARE_SCRIPTING_TYPE_MINIMAL(%class%);
public:
/// <summary>
/// Logs the function parameter natively.
/// </summary>
/// <param name="data">Data to pass to native code</param>
API_FUNCTION() static void RunNativeAction(Vector4 data);
};
+8 -1
View File
@@ -4,23 +4,30 @@ using FlaxEngine;
namespace %namespace%
{
/// <summary>
/// %class% Script.
/// </summary>
public class %class% : Script
{
/// <inheritdoc/>
public override void OnStart()
{
// Here you can add code that needs to be called when script is created, just before the first game update
}
/// <inheritdoc/>
public override void OnEnable()
{
// Here you can add code that needs to be called when script is enabled (eg. register for events)
}
/// <inheritdoc/>
public override void OnDisable()
{
// Here you can add code that needs to be called when script is disabled (eg. unregister from events)
}
/// <inheritdoc/>
public override void OnUpdate()
{
// Here you can add code that needs to be called every frame
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
View File
@@ -5,6 +5,7 @@ Custom fork: [https://github.com/FlaxEngine/mono](https://github.com/FlaxEngine/
### Notes
Some useful notes and tips for devs:
* Use `-monolog` to print Mono logs to Flax logs
* When working with mono fork set `localRepoPath` to local repo location in `Source\Tools\Flax.Build\Deps\Dependencies\mono.cs`
* To update mono deps when developing/updating use `.\Development\Scripts\Windows\CallBuildTool.bat -log -ReBuildDeps -verbose -depsToBuild=mono -platform=Windows`, then build engine and run it
* `MONO_GC_DEBUG=check-remset-consistency` - it will do additional checks at each collection to see if there are any missing write barriers
+2 -2
View File
@@ -2,8 +2,8 @@
"Name": "Flax",
"Version": {
"Major": 1,
"Minor": 1,
"Build": 6218
"Minor": 2,
"Build": 6223
},
"Company": "Flax",
"Copyright": "Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.",
+1
View File
@@ -234,6 +234,7 @@
<s:String x:Key="/Default/PatternsAndTemplates/Todo/TodoPatterns/=EEA05B0ED8200E4BA9D2D3F1052EBFFD/Name/@EntryValue">Deprecated</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/Todo/TodoPatterns/=EEA05B0ED8200E4BA9D2D3F1052EBFFD/Pattern/@EntryValue">(?&lt;=\W|^)(?&lt;TAG&gt;\[Deprecated)(\W|$)(.*)</s:String>
<s:String x:Key="/Default/PatternsAndTemplates/Todo/TodoPatterns/=EEA05B0ED8200E4BA9D2D3F1052EBFFD/TodoIconStyle/@EntryValue">Normal</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Ackermann/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=analytics/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Antialiasing/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=backbuffer/@EntryIndexedValue">True</s:Boolean>
+10
View File
@@ -42,6 +42,16 @@ Flax Visual Studio extension provides better programming workflow, C# scripts de
* Compile Flax project (hit F7 or CTRL+Shift+B)
* Run Flax (hit F5 key)
---
**Note**
If building on Windows to support Vulkan rendering, first install the Vulkan SDK then set an environment variable to provide the path to the SDK prior to running GenerateProjectFiles.bat:
    set VULKAN_SDK=C:\VulkanSDK\version\
---
## Linux
* Install Visual Studio Code
@@ -10,6 +10,7 @@
#include "Editor/Editor.h"
#include "Editor/ProjectInfo.h"
#include "Engine/Engine/EngineService.h"
#include "Engine/Engine/Globals.h"
#include "Engine/Graphics/GPUDevice.h"
#include "Engine/Utilities/StringConverter.h"
#include "FlaxEngine.Gen.h"
@@ -7,7 +7,8 @@
void RegisterGameCookingStart(GameCooker::EventType type)
{
auto platform = ToString(GameCooker::GetCurrentData().Platform);
auto& data = *GameCooker::GetCurrentData();
auto platform = ToString(data.Platform);
if (type == GameCooker::EventType::BuildStarted)
{
EditorAnalytics::SendEvent("Actions", "GameCooker.Start", platform);
@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Content.Settings;
using FlaxEditor.Scripting;
using FlaxEditor.Windows.Assets;
using FlaxEngine;
namespace FlaxEditor.Content.Create
@@ -11,87 +12,31 @@ namespace FlaxEditor.Content.Create
/// Engine settings asset creating handler. Allows to specify type of the settings to create (e.g. <see cref="GameSettings"/>, <see cref="TimeSettings"/>, etc.).
/// </summary>
/// <seealso cref="FlaxEditor.Content.Create.CreateFileEntry" />
public class SettingsCreateEntry : CreateFileEntry
internal class SettingsCreateEntry : CreateFileEntry
{
/// <summary>
/// Types of the settings assets that can be created.
/// </summary>
public enum SettingsTypes
internal enum SettingsTypes
{
/// <summary>
/// The game settings.
/// </summary>
GameSettings,
/// <summary>
/// The audio settings.
/// </summary>
AudioSettings,
/// <summary>
/// The time settings.
/// </summary>
TimeSettings,
/// <summary>
/// The layers and tags settings.
/// </summary>
LayersAndTagsSettings,
/// <summary>
/// The physics settings.
/// </summary>
PhysicsSettings,
/// <summary>
/// The graphics settings.
/// </summary>
GraphicsSettings,
/// <summary>
/// The navigation settings.
/// </summary>
NavigationSettings,
/// <summary>
/// The build settings.
/// </summary>
LocalizationSettings,
BuildSettings,
/// <summary>
/// The input settings.
/// </summary>
InputSettings,
/// <summary>
/// The Windows settings.
/// </summary>
StreamingSettings,
WindowsPlatformSettings,
/// <summary>
/// The UWP settings.
/// </summary>
UWPPlatformSettings,
/// <summary>
/// The Linux settings.
/// </summary>
LinuxPlatformSettings,
/// <summary>
/// The PS4 settings
/// </summary>
PS4PlatformSettings,
/// <summary>
/// The Xbox Scarlett settings
/// </summary>
XboxScarlettPlatformSettings,
/// <summary>
/// The Android settings
/// </summary>
AndroidPlatformSettings,
SwitchPlatformSettings,
}
private static readonly Type[] _types =
@@ -103,20 +48,20 @@ namespace FlaxEditor.Content.Create
typeof(PhysicsSettings),
typeof(GraphicsSettings),
typeof(NavigationSettings),
typeof(LocalizationSettings),
typeof(BuildSettings),
typeof(InputSettings),
typeof(StreamingSettings),
typeof(WindowsPlatformSettings),
typeof(UWPPlatformSettings),
typeof(LinuxPlatformSettings),
TypeUtils.GetManagedType(GameSettings.PS4PlatformSettingsTypename),
TypeUtils.GetManagedType(GameSettings.XboxScarlettPlatformSettingsTypename),
typeof(AndroidPlatformSettings),
TypeUtils.GetManagedType(GameSettings.SwitchPlatformSettingsTypename),
};
/// <summary>
/// The create options.
/// </summary>
public class Options
internal class Options
{
/// <summary>
/// The type.
@@ -150,7 +95,134 @@ namespace FlaxEditor.Content.Create
return true;
}
var data = Activator.CreateInstance(type);
return Editor.SaveJsonAsset(ResultUrl, data);
if (Editor.SaveJsonAsset(ResultUrl, data))
return true;
// Automatic settings linking to game settings for easier usage
var gameSettingsItem = Editor.Instance.ContentDatabase.Game.Content.Folder.FindChild(GameSettings.GameSettingsAssetPath) as JsonAssetItem;
if (gameSettingsItem != null)
{
var gameSettingsWindow = Editor.Instance.Windows.FindEditor(gameSettingsItem) as JsonAssetWindow;
if (gameSettingsWindow?.Instance is GameSettings)
{
if (TrySet(gameSettingsWindow.Instance as GameSettings, ResultUrl, _options.Type))
gameSettingsWindow.MarkAsEdited();
}
else
{
var gameSettingsAsset = FlaxEngine.Content.LoadAsync<JsonAsset>(gameSettingsItem.ID);
if (gameSettingsAsset && !gameSettingsAsset.WaitForLoaded())
{
if (gameSettingsAsset.CreateInstance() is GameSettings settings)
{
if (TrySet(settings, ResultUrl, _options.Type))
{
Editor.SaveJsonAsset(GameSettings.GameSettingsAssetPath, settings);
}
}
}
}
}
return false;
}
private static bool TrySet(GameSettings instance, string resultUrl, SettingsTypes type)
{
var asset = FlaxEngine.Content.LoadAsync<JsonAsset>(resultUrl);
if (instance != null && asset != null)
{
switch (type)
{
case SettingsTypes.AudioSettings:
if (instance.Audio != null)
return false;
instance.Audio = asset;
break;
case SettingsTypes.TimeSettings:
if (instance.Time != null)
return false;
instance.Time = asset;
break;
case SettingsTypes.LayersAndTagsSettings:
if (instance.LayersAndTags != null)
return false;
instance.LayersAndTags = asset;
break;
case SettingsTypes.PhysicsSettings:
if (instance.Physics != null)
return false;
instance.Physics = asset;
break;
case SettingsTypes.GraphicsSettings:
if (instance.Graphics != null)
return false;
instance.Graphics = asset;
break;
case SettingsTypes.NavigationSettings:
if (instance.Navigation != null)
return false;
instance.Navigation = asset;
break;
case SettingsTypes.LocalizationSettings:
if (instance.Localization != null)
return false;
instance.Localization = asset;
break;
case SettingsTypes.BuildSettings:
if (instance.GameCooking != null)
return false;
instance.GameCooking = asset;
break;
case SettingsTypes.InputSettings:
if (instance.Input != null)
return false;
instance.Input = asset;
break;
case SettingsTypes.StreamingSettings:
if (instance.Streaming != null)
return false;
instance.Streaming = asset;
break;
case SettingsTypes.WindowsPlatformSettings:
if (instance.WindowsPlatform != null)
return false;
instance.WindowsPlatform = asset;
break;
case SettingsTypes.UWPPlatformSettings:
if (instance.UWPPlatform != null)
return false;
instance.UWPPlatform = asset;
break;
case SettingsTypes.LinuxPlatformSettings:
if (instance.LinuxPlatform != null)
return false;
instance.LinuxPlatform = asset;
break;
case SettingsTypes.PS4PlatformSettings:
if (instance.PS4Platform != null)
return false;
instance.PS4Platform = asset;
break;
case SettingsTypes.XboxScarlettPlatformSettings:
if (instance.XboxScarlettPlatform != null)
return false;
instance.XboxScarlettPlatform = asset;
break;
case SettingsTypes.AndroidPlatformSettings:
if (instance.AndroidPlatform != null)
return false;
instance.AndroidPlatform = asset;
break;
case SettingsTypes.SwitchPlatformSettings:
if (instance.SwitchPlatform != null)
return false;
instance.SwitchPlatform = asset;
break;
}
return true;
}
return false;
}
}
}
@@ -25,7 +25,7 @@ namespace FlaxEditor.Content.Create
private static bool IsValid(Type type)
{
return type.IsPublic && !type.IsSealed && !type.IsGenericType;
return (type.IsPublic || type.IsNestedPublic) && !type.IsSealed && !type.IsGenericType;
}
}
+36 -4
View File
@@ -27,6 +27,22 @@ namespace FlaxEditor.Content.GUI
List,
}
/// <summary>
/// The method sort for items.
/// </summary>
public enum SortType
{
/// <summary>
/// The classic alphabetic sort method (A-Z).
/// </summary>
AlphabeticOrder,
/// <summary>
/// The reverse alphabetic sort method (Z-A).
/// </summary>
AlphabeticReverse
}
/// <summary>
/// Main control for <see cref="ContentWindow"/> used to present collection of <see cref="ContentItem"/>.
/// </summary>
@@ -218,8 +234,9 @@ namespace FlaxEditor.Content.GUI
/// Shows the items collection in the view.
/// </summary>
/// <param name="items">The items to show.</param>
/// <param name="sortType">The sort method for items.</param>
/// <param name="additive">If set to <c>true</c> items will be added to the current selection. Otherwise selection will be cleared before.</param>
public void ShowItems(List<ContentItem> items, bool additive = false)
public void ShowItems(List<ContentItem> items, SortType sortType, bool additive = false)
{
if (items == null)
throw new ArgumentNullException();
@@ -249,9 +266,24 @@ namespace FlaxEditor.Content.GUI
items[i].AddReference(this);
}
// Sort items
_children.Sort();
// Sort items depending on sortMethod parameter
_children.Sort(((control, control1) =>
{
if (sortType == SortType.AlphabeticReverse)
{
if (control.CompareTo(control1) > 0)
{
return -1;
}
if (control.CompareTo(control1) == 0)
{
return 0;
}
return 1;
}
return control.CompareTo(control1);
}));
// Unload and perform UI layout
IsLayoutLocked = wasLayoutLocked;
PerformLayout();
@@ -116,8 +116,7 @@ namespace FlaxEditor.Content.Import
if (FileTypes.TryGetValue(extension, out ImportFileEntryHandler createDelegate))
return createDelegate(ref request);
// Use default type
return request.IsBinaryAsset ? new AssetImportEntry(ref request) : new ImportFileEntry(ref request);
return request.IsInBuilt ? new AssetImportEntry(ref request) : new ImportFileEntry(ref request);
}
internal static void RegisterDefaultTypes()
@@ -117,8 +117,8 @@ namespace FlaxEditor.Content.Import
/// <summary>
/// True if calculate model tangents, otherwise will import them.
/// </summary>
[EditorOrder(40), DefaultValue(true), EditorDisplay("Geometry"), Tooltip("Enable model tangent vectors recalculating")]
public bool CalculateTangents { get; set; } = true;
[EditorOrder(40), DefaultValue(false), EditorDisplay("Geometry"), Tooltip("Enable model tangent vectors recalculating")]
public bool CalculateTangents { get; set; } = false;
/// <summary>
/// Calculated normals smoothing angle.
+2 -2
View File
@@ -21,9 +21,9 @@ namespace FlaxEditor.Content.Import
public string OutputPath;
/// <summary>
/// Flag set to true for binary assets handled by the engine internally.
/// Flag set to true for the assets handled by the engine internally.
/// </summary>
public bool IsBinaryAsset;
public bool IsInBuilt;
/// <summary>
/// Flag used to skip showing import settings dialog to used. Can be used for importing assets from code by plugins.
@@ -283,6 +283,13 @@ namespace FlaxEditor.Content.Import
[EditorOrder(250), VisibleIf("PreserveAlphaCoverage"), DefaultValue(0.5f), Tooltip("The reference value for the alpha coverage preserving.")]
public float PreserveAlphaCoverageReference { get; set; } = 0.5f;
/// <summary>
/// Texture group for streaming (negative if unused). See Streaming Settings.
/// </summary>
[CustomEditor(typeof(CustomEditors.Dedicated.TextureGroupEditor))]
[EditorOrder(300), Tooltip("Texture group for streaming (negative if unused). See Streaming Settings.")]
public int TextureGroup = -1;
/// <summary>
/// The sprites. Used to keep created sprites on sprite atlas reimport.
/// </summary>
@@ -305,6 +312,7 @@ namespace FlaxEditor.Content.Import
public float PreserveAlphaCoverageReference;
public float Scale;
public int MaxSize;
public int TextureGroup;
public Int2 Size;
public Rectangle[] SpriteAreas;
public string[] SpriteNames;
@@ -327,7 +335,8 @@ namespace FlaxEditor.Content.Import
PreserveAlphaCoverageReference = PreserveAlphaCoverageReference,
Scale = Scale,
Size = Size,
MaxSize = (int)MaxSize
MaxSize = (int)MaxSize,
TextureGroup = TextureGroup,
};
if (Sprites != null && Sprites.Count > 0)
{
@@ -362,6 +371,7 @@ namespace FlaxEditor.Content.Import
PreserveAlphaCoverageReference = options.PreserveAlphaCoverageReference;
Scale = options.Scale;
MaxSize = ConvertMaxSize(options.MaxSize);
TextureGroup = options.TextureGroup;
Size = options.Size;
if (options.SpriteAreas != null)
{
@@ -483,7 +493,9 @@ namespace FlaxEditor.Content.Import
{
if (settings is TextureImportSettings o)
{
var sprites = o.Sprites ?? _settings.Sprites; // Preserve sprites if not specified to override
_settings = o;
_settings.Sprites = sprites;
return true;
}
return false;
+20
View File
@@ -108,6 +108,26 @@ namespace FlaxEditor.Content
return false;
}
/// <summary>
/// Called when user dags this item into editor viewport or scene tree node.
/// </summary>
/// <param name="context">The editor context (eg. editor viewport or scene tree node).</param>
/// <returns>True if item can be dropped in, otherwise false.</returns>
public virtual bool OnEditorDrag(object context)
{
return false;
}
/// <summary>
/// Called when user drops the item into editor viewport or scene tree node.
/// </summary>
/// <param name="context">The editor context (eg. editor viewport or scene tree node).</param>
/// <returns>The spawned object.</returns>
public virtual Actor OnEditorDrop(object context)
{
throw new NotSupportedException($"Asset {GetType()} doesn't support dropping into viewport.");
}
/// <inheritdoc />
protected override bool DrawShadow => true;
+28 -4
View File
@@ -103,14 +103,26 @@ namespace FlaxEditor.Content
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="Model"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
public class ModelAssetItem : BinaryAssetItem
public class ModelItem : BinaryAssetItem
{
/// <inheritdoc />
public ModelAssetItem(string path, ref Guid id, string typeName, Type type)
public ModelItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Model)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new StaticModel { Model = FlaxEngine.Content.LoadAsync<Model>(ID) };
}
/// <inheritdoc />
protected override void OnBuildTooltipText(StringBuilder sb)
{
@@ -142,14 +154,26 @@ namespace FlaxEditor.Content
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="SkinnedModel"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
public class SkinnedModelAssetItem : BinaryAssetItem
public class SkinnedModeItem : BinaryAssetItem
{
/// <inheritdoc />
public SkinnedModelAssetItem(string path, ref Guid id, string typeName, Type type)
public SkinnedModeItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Model)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new AnimatedModel { SkinnedModel = FlaxEngine.Content.LoadAsync<SkinnedModel>(ID) };
}
/// <inheritdoc />
protected override void OnBuildTooltipText(StringBuilder sb)
{
@@ -20,6 +20,6 @@ namespace FlaxEditor.Content
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.CSharpScript64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.CSharpScript128;
}
}
+1 -1
View File
@@ -121,7 +121,7 @@ namespace FlaxEditor.Content
public override bool Exists => Directory.Exists(Path);
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Folder64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Folder128;
/// <inheritdoc />
internal override void UpdatePath(string value)
+1 -1
View File
@@ -455,7 +455,7 @@ namespace FlaxEditor.Content
const float thumbnailInShadowSize = 50.0f;
var shadowRect = rectangle.MakeExpanded((DefaultThumbnailSize - thumbnailInShadowSize) * rectangle.Width / DefaultThumbnailSize * 1.3f);
if (!_shadowIcon.IsValid)
_shadowIcon = Editor.Instance.Icons.AssetShadow;
_shadowIcon = Editor.Instance.Icons.AssetShadow128;
Render2D.DrawSprite(_shadowIcon, shadowRect);
}
+1 -1
View File
@@ -20,6 +20,6 @@ namespace FlaxEditor.Content
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.CppScript64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.CPPScript128;
}
}
+1 -1
View File
@@ -26,6 +26,6 @@ namespace FlaxEditor.Content
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Other;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document128;
}
}
+17 -1
View File
@@ -11,6 +11,8 @@ namespace FlaxEditor.Content
/// <seealso cref="FlaxEditor.Content.AssetItem" />
public class JsonAssetItem : AssetItem
{
private readonly SpriteHandle _thumbnail;
/// <summary>
/// Initializes a new instance of the <see cref="JsonAssetItem"/> class.
/// </summary>
@@ -20,13 +22,27 @@ namespace FlaxEditor.Content
public JsonAssetItem(string path, Guid id, string typeName)
: base(path, typeName, ref id)
{
_thumbnail = Editor.Instance.Icons.Json128;
}
/// <summary>
/// Initializes a new instance of the <see cref="JsonAssetItem"/> class.
/// </summary>
/// <param name="path">The path.</param>
/// <param name="id">The identifier.</param>
/// <param name="typeName">Name of the resource type.</param>
/// <param name="thumbnail">Asset icon.</param>
public JsonAssetItem(string path, Guid id, string typeName, SpriteHandle thumbnail)
: base(path, typeName, ref id)
{
_thumbnail = thumbnail;
}
/// <inheritdoc />
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Json;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
public override SpriteHandle DefaultThumbnail => _thumbnail;
/// <inheritdoc />
protected override bool DrawShadow => false;
+1 -1
View File
@@ -40,7 +40,7 @@ namespace FlaxEditor.Content
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Other;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document128;
/// <inheritdoc />
protected override bool DrawShadow => true;
+12
View File
@@ -21,6 +21,18 @@ namespace FlaxEditor.Content
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return PrefabManager.SpawnPrefab(FlaxEngine.Content.LoadAsync<Prefab>(ID), null);
}
/// <inheritdoc />
public override ContentItemType ItemType => ContentItemType.Asset;
+1 -1
View File
@@ -28,7 +28,7 @@ namespace FlaxEditor.Content
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Scene;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Scene64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Scene128;
/// <inheritdoc />
public override bool IsOfType(Type type)
@@ -27,6 +27,6 @@ namespace FlaxEditor.Content
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Shader;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document128;
}
}
@@ -75,6 +75,7 @@ namespace FlaxEditor.Content
}
}
/// <inheritdoc />
public int MetadataToken => 0;
/// <inheritdoc />
@@ -538,7 +539,19 @@ namespace FlaxEditor.Content
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.CodeScript64;
public override bool OnEditorDrag(object context)
{
return new ScriptType(typeof(Actor)).IsAssignableFrom(ScriptType) && ScriptType.CanCreateInstance;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return (Actor)ScriptType.CreateInstance();
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.VisualScript128;
/// <inheritdoc />
protected override bool DrawShadow => false;
+8 -11
View File
@@ -76,7 +76,7 @@ void PreviewsCache::FlushTask::OnEnd()
ThreadPoolTask::OnEnd();
}
REGISTER_BINARY_ASSET(PreviewsCache, "FlaxEditor.PreviewsCache", ::New<TextureAssetUpgrader>(), false);
REGISTER_BINARY_ASSET_WITH_UPGRADER(PreviewsCache, "FlaxEditor.PreviewsCache", TextureAssetUpgrader, false);
PreviewsCache::PreviewsCache(const SpawnParams& params, const AssetInfo* info)
: SpriteAtlas(params, info)
@@ -241,16 +241,13 @@ CreateAssetResult PreviewsCache::create(CreateAssetContext& context)
IMPORT_SETUP(PreviewsCache, 4);
// Create texture header (custom data)
TextureHeader header;
header.Width = ASSETS_ICONS_ATLAS_SIZE;
header.Height = ASSETS_ICONS_ATLAS_SIZE;
header.Format = ASSETS_ICONS_ATLAS_FORMAT;
header.IsSRGB = false;
header.IsCubeMap = false;
header.MipLevels = 1;
header.NeverStream = true;
header.Type = TextureFormatType::Unknown;
context.Data.CustomData.Copy(&header);
TextureHeader textureHeader;
textureHeader.Width = ASSETS_ICONS_ATLAS_SIZE;
textureHeader.Height = ASSETS_ICONS_ATLAS_SIZE;
textureHeader.Format = ASSETS_ICONS_ATLAS_FORMAT;
textureHeader.MipLevels = 1;
textureHeader.NeverStream = true;
context.Data.CustomData.Copy(&textureHeader);
// Create blank image (chunk 0)
uint64 imageSize = CalculateTextureMemoryUsage(ASSETS_ICONS_ATLAS_FORMAT, ASSETS_ICONS_ATLAS_SIZE, ASSETS_ICONS_ATLAS_SIZE, 1);
+48 -1
View File
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using FlaxEditor.Content.Thumbnails;
using FlaxEditor.Viewport.Previews;
using FlaxEditor.Windows;
@@ -11,11 +12,51 @@ using FlaxEngine.GUI;
namespace FlaxEditor.Content
{
/// <summary>
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="AudioClip"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
class AudioClipItem : BinaryAssetItem
{
/// <inheritdoc />
public AudioClipItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Audio)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new AudioSource { Clip = FlaxEngine.Content.LoadAsync<AudioClip>(ID) };
}
/// <inheritdoc />
protected override void OnBuildTooltipText(StringBuilder sb)
{
base.OnBuildTooltipText(sb);
var asset = FlaxEngine.Content.Load<AudioClip>(ID, 100);
if (asset)
{
var info = asset.Info;
sb.Append("Duration: ").Append(asset.Length).AppendLine();
sb.Append("Channels: ").Append(info.NumChannels).AppendLine();
sb.Append("Bit Depth: ").Append(info.BitDepth).AppendLine();
}
}
}
/// <summary>
/// A <see cref="AudioClip"/> asset proxy object.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetProxy" />
public class AudioClipProxy : BinaryAssetProxy
class AudioClipProxy : BinaryAssetProxy
{
private List<AudioClipPreview> _previews;
@@ -34,6 +75,12 @@ namespace FlaxEditor.Content
return new AudioClipWindow(editor, (AssetItem)item);
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
return new AudioClipItem(path, ref id, typeName, AssetType);
}
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0xB3452B);
@@ -47,9 +47,9 @@ namespace FlaxEditor.Content
if (typeof(TextureBase).IsAssignableFrom(type))
return new TextureAssetItem(path, ref id, typeName, type);
if (typeof(Model).IsAssignableFrom(type))
return new ModelAssetItem(path, ref id, typeName, type);
return new ModelItem(path, ref id, typeName, type);
if (typeof(SkinnedModel).IsAssignableFrom(type))
return new SkinnedModelAssetItem(path, ref id, typeName, type);
return new SkinnedModeItem(path, ref id, typeName, type);
ContentItemSearchFilter searchFilter;
if (typeof(MaterialBase).IsAssignableFrom(type))
@@ -58,11 +58,9 @@ namespace FlaxEditor.Content
searchFilter = ContentItemSearchFilter.Prefab;
else if (typeof(SceneAsset).IsAssignableFrom(type))
searchFilter = ContentItemSearchFilter.Scene;
else if (typeof(AudioClip).IsAssignableFrom(type))
searchFilter = ContentItemSearchFilter.Audio;
else if (typeof(Animation).IsAssignableFrom(type))
searchFilter = ContentItemSearchFilter.Animation;
else if (typeof(ParticleEmitter).IsAssignableFrom(type) || typeof(ParticleSystem).IsAssignableFrom(type))
else if (typeof(ParticleEmitter).IsAssignableFrom(type))
searchFilter = ContentItemSearchFilter.Particles;
else
searchFilter = ContentItemSearchFilter.Other;
@@ -8,11 +8,36 @@ using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="CollisionData"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
class CollisionDataItem : BinaryAssetItem
{
/// <inheritdoc />
public CollisionDataItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Other)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new MeshCollider { CollisionData = FlaxEngine.Content.LoadAsync<CollisionData>(ID) };
}
}
/// <summary>
/// A <see cref="CollisionData"/> asset proxy object.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetProxy" />
public class CollisionDataProxy : BinaryAssetProxy
class CollisionDataProxy : BinaryAssetProxy
{
/// <inheritdoc />
public override string Name => "Collision Data";
@@ -23,6 +48,12 @@ namespace FlaxEditor.Content
return new CollisionDataWindow(editor, item as AssetItem);
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
return new CollisionDataItem(path, ref id, typeName, AssetType);
}
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0x2c3e50);
@@ -73,6 +73,16 @@ namespace FlaxEditor.Content
throw new NotImplementedException();
}
/// <summary>
/// Determines whether the specified filename is valid for this proxy.
/// </summary>
/// <param name="filename">The filename.</param>
/// <returns><c>true</c> if the filename is valid, otherwise <c>false</c>.</returns>
public virtual bool IsFileNameValid(string filename)
{
return true;
}
/// <summary>
/// Determines whether this proxy can create items in the specified target location.
/// </summary>
+134
View File
@@ -0,0 +1,134 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using System.IO;
using System.Text;
using FlaxEditor.Content.Settings;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Context proxy object for C++ files.
/// </summary>
/// <seealso cref="FlaxEditor.Content.CSharpScriptProxy" />
public abstract class CppProxy : ScriptProxy
{
/// <summary>
/// Gets the paths for header and source files to format.
/// </summary>
/// <param name="headerTemplate">The header template path.</param>
/// <param name="sourceTemplate">The source template path.</param>
protected abstract void GetTemplatePaths(out string headerTemplate, out string sourceTemplate);
/// <inheritdoc />
public override bool IsProxyFor(ContentItem item)
{
return false;
}
/// <inheritdoc />
public override void Create(string outputPath, object arg)
{
// Find the module that this script is being added (based on the path)
var module = string.Empty;
var project = TryGetProjectAtFolder(outputPath, out var moduleName);
if (project != null)
{
module = moduleName.ToUpperInvariant() + "_API ";
}
var gameSettings = GameSettings.Load();
var scriptName = ScriptItem.CreateScriptName(outputPath);
var filename = Path.GetFileNameWithoutExtension(outputPath);
var copyrightComment = string.IsNullOrEmpty(gameSettings.CopyrightNotice) ? string.Empty : string.Format("// {0}{1}{1}", gameSettings.CopyrightNotice, Environment.NewLine);
GetTemplatePaths(out var headerTemplatePath, out var sourceTemplatePath);
if (headerTemplatePath != null)
{
var headerTemplate = File.ReadAllText(headerTemplatePath);
headerTemplate = headerTemplate.Replace("%copyright%", copyrightComment);
headerTemplate = headerTemplate.Replace("%class%", scriptName);
headerTemplate = headerTemplate.Replace("%module%", module);
headerTemplate = headerTemplate.Replace("%filename%", filename);
File.WriteAllText(Path.ChangeExtension(outputPath, ".h"), headerTemplate, Encoding.UTF8);
}
if (sourceTemplatePath != null)
{
var sourceTemplate = File.ReadAllText(sourceTemplatePath);
sourceTemplate = sourceTemplate.Replace("%copyright%", copyrightComment);
sourceTemplate = sourceTemplate.Replace("%class%", scriptName);
sourceTemplate = sourceTemplate.Replace("%module%", module);
sourceTemplate = sourceTemplate.Replace("%filename%", filename);
File.WriteAllText(outputPath, sourceTemplate, Encoding.UTF8);
}
}
/// <inheritdoc />
public override string FileExtension => "cpp";
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0x9c1c9c);
}
/// <summary>
/// Context proxy object for C++ script files.
/// </summary>
/// <seealso cref="FlaxEditor.Content.CSharpScriptProxy" />
public class CppScriptProxy : CppProxy
{
/// <inheritdoc />
public override string Name => "C++ Script";
/// <inheritdoc />
public override bool IsProxyFor(ContentItem item)
{
return item is CppScriptItem;
}
/// <inheritdoc />
protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate)
{
headerTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.h");
sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.cpp");
}
}
/// <summary>
/// Context proxy object for C++ Json Asset files.
/// </summary>
/// <seealso cref="FlaxEditor.Content.CSharpScriptProxy" />
public class CppStaticClassProxy : CppProxy
{
/// <inheritdoc />
public override string Name => "C++ Function Library";
/// <inheritdoc />
protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate)
{
headerTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CppStaticClassTemplate.h");
sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CppStaticClassTemplate.cpp");
}
}
/// <summary>
/// Context proxy object for C++ Json Asset files.
/// </summary>
/// <seealso cref="FlaxEditor.Content.CSharpScriptProxy" />
public class CppAssetProxy : CppProxy
{
/// <inheritdoc />
public override string Name => "C++ Json Asset";
/// <inheritdoc />
protected override void GetTemplatePaths(out string headerTemplate, out string sourceTemplate)
{
headerTemplate = null;
sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CppAssetTemplate.h");
//sourceTemplate = StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/CppAssetTemplate.cpp");
}
/// <inheritdoc />
public override string FileExtension => "h";
}
}
@@ -1,65 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using System.IO;
using System.Text;
using FlaxEditor.Content.Settings;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Context proxy object for C++ script files.
/// </summary>
/// <seealso cref="FlaxEditor.Content.CSharpScriptProxy" />
public class CppScriptProxy : ScriptProxy
{
/// <inheritdoc />
public override string Name => "C++ Script";
/// <inheritdoc />
public override bool IsProxyFor(ContentItem item)
{
return item is CppScriptItem;
}
/// <inheritdoc />
public override void Create(string outputPath, object arg)
{
// Load templates
var headerTemplate = File.ReadAllText(StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.h"));
var sourceTemplate = File.ReadAllText(StringUtils.CombinePaths(Globals.EngineContentFolder, "Editor/Scripting/ScriptTemplate.cpp"));
// Find the module that this script is being added (based on the path)
var module = string.Empty;
var project = TryGetProjectAtFolder(outputPath, out var moduleName);
if (project != null)
{
module = moduleName.ToUpperInvariant() + "_API ";
}
// Format
var gameSettings = GameSettings.Load();
var scriptName = ScriptItem.CreateScriptName(outputPath);
var filename = Path.GetFileNameWithoutExtension(outputPath);
var copyrightComment = string.IsNullOrEmpty(gameSettings.CopyrightNotice) ? string.Empty : string.Format("// {0}{1}{1}", gameSettings.CopyrightNotice, Environment.NewLine);
headerTemplate = headerTemplate.Replace("%copyright%", copyrightComment);
headerTemplate = headerTemplate.Replace("%class%", scriptName);
headerTemplate = headerTemplate.Replace("%module%", module);
sourceTemplate = sourceTemplate.Replace("%filename%", filename);
sourceTemplate = sourceTemplate.Replace("%copyright%", copyrightComment);
sourceTemplate = sourceTemplate.Replace("%class%", scriptName);
sourceTemplate = sourceTemplate.Replace("%filename%", filename);
// Save
File.WriteAllText(Path.ChangeExtension(outputPath, ".h"), headerTemplate, Encoding.UTF8);
File.WriteAllText(outputPath, sourceTemplate, Encoding.UTF8);
}
/// <inheritdoc />
public override string FileExtension => "cpp";
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0x9c1c9c);
}
}
@@ -2,7 +2,6 @@
using System;
using FlaxEditor.Content.Create;
using FlaxEditor.Content.Settings;
using FlaxEditor.CustomEditors;
using FlaxEditor.CustomEditors.Editors;
using FlaxEditor.Windows;
@@ -45,18 +44,12 @@ namespace FlaxEditor.Content
/// <inheritdoc />
public override bool IsProxyFor(ContentItem item)
{
return item is JsonAssetItem;
return item is JsonAssetItem json && json.TypeName == TypeName;
}
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0xd14f67);
/// <inheritdoc />
public override bool AcceptsAsset(string typeName, string path)
{
return typeName == TypeName && base.AcceptsAsset(typeName, path);
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
@@ -99,6 +92,7 @@ namespace FlaxEditor.Content
!type.IsAbstract &&
!type.IsGenericType &&
type.Type.GetConstructor(Type.EmptyTypes) != null &&
!typeof(FlaxEngine.GUI.Control).IsAssignableFrom(type.Type) &&
!typeof(FlaxEngine.Object).IsAssignableFrom(type.Type);
}
}
@@ -143,6 +137,12 @@ namespace FlaxEditor.Content
return path.EndsWith(FileExtension, StringComparison.OrdinalIgnoreCase);
}
/// <inheritdoc />
public override bool IsProxyFor(ContentItem item)
{
return item is JsonAssetItem;
}
/// <inheritdoc />
public override bool CanCreate(ContentFolder targetLocation)
{
@@ -0,0 +1,24 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using FlaxEditor.Windows;
using FlaxEditor.Windows.Assets;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// <see cref="LocalizedStringTable"/> proxy.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetProxy" />
public class LocalizedStringTableProxy : JsonAssetProxy
{
/// <inheritdoc />
public override EditorWindow Open(Editor editor, ContentItem item)
{
return new LocalizedStringTableWindow(editor, (JsonAssetItem)item);
}
/// <inheritdoc />
public override string TypeName => "FlaxEngine.LocalizedStringTable";
}
}
+1 -1
View File
@@ -47,7 +47,7 @@ namespace FlaxEditor.Content
menu.AddButton("Create collision data", () =>
{
var model = FlaxEngine.Content.LoadAsync<Model>(((ModelAssetItem)item).ID);
var model = FlaxEngine.Content.LoadAsync<Model>(((ModelItem)item).ID);
var collisionDataProxy = (CollisionDataProxy)Editor.Instance.ContentDatabase.GetProxy<CollisionData>();
collisionDataProxy.CreateCollisionDataFromModel(model);
});
@@ -10,6 +10,31 @@ using FlaxEngine.GUI;
namespace FlaxEditor.Content
{
/// <summary>
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="ParticleSystem"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
class ParticleSystemItem : BinaryAssetItem
{
/// <inheritdoc />
public ParticleSystemItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Particles)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new ParticleEffect { ParticleSystem = FlaxEngine.Content.LoadAsync<ParticleSystem>(ID) };
}
}
/// <summary>
/// A <see cref="ParticleSystem"/> asset proxy object.
/// </summary>
@@ -28,6 +53,12 @@ namespace FlaxEditor.Content
return new ParticleSystemWindow(editor, item as AssetItem);
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
return new ParticleSystemItem(path, ref id, typeName, AssetType);
}
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0xFF790200);
@@ -7,6 +7,31 @@ using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Implementation of <see cref="BinaryAssetItem"/> for <see cref="SceneAnimation"/> assets.
/// </summary>
/// <seealso cref="FlaxEditor.Content.BinaryAssetItem" />
class SceneAnimationItem : BinaryAssetItem
{
/// <inheritdoc />
public SceneAnimationItem(string path, ref Guid id, string typeName, Type type)
: base(path, ref id, typeName, type, ContentItemSearchFilter.Other)
{
}
/// <inheritdoc />
public override bool OnEditorDrag(object context)
{
return true;
}
/// <inheritdoc />
public override Actor OnEditorDrop(object context)
{
return new SceneAnimationPlayer { Animation = FlaxEngine.Content.LoadAsync<SceneAnimation>(ID) };
}
}
/// <summary>
/// A <see cref="SceneAnimation"/> asset proxy object.
/// </summary>
@@ -22,6 +47,12 @@ namespace FlaxEditor.Content
return new SceneAnimationWindow(editor, item as AssetItem);
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
return new SceneAnimationItem(path, ref id, typeName, AssetType);
}
/// <inheritdoc />
public override Color AccentColor => Color.FromRGB(0xff5c4a87);
@@ -66,6 +66,15 @@ namespace FlaxEditor.Content
return false;
}
/// <inheritdoc />
public override bool IsFileNameValid(string filename)
{
// Scripts cannot start with digit.
if (Char.IsDigit(filename[0]))
return false;
return true;
}
/// <inheritdoc />
public override void Create(string outputPath, object arg)
{
+11 -1
View File
@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Content.Create;
using FlaxEditor.Content.Settings;
using FlaxEngine;
namespace FlaxEditor.Content
{
@@ -13,15 +14,18 @@ namespace FlaxEditor.Content
public sealed class SettingsProxy : JsonAssetProxy
{
private readonly Type _type;
private readonly SpriteHandle _thumbnail;
/// <summary>
/// Initializes a new instance of the <see cref="SettingsProxy"/> class.
/// </summary>
/// <param name="type">The settings asset type (must be subclass of SettingsBase type).</param>
public SettingsProxy(Type type)
/// <param name="thumbnail">Asset icon.</param>
public SettingsProxy(Type type, SpriteHandle thumbnail)
{
_type = type;
TypeName = type.FullName;
_thumbnail = thumbnail;
}
/// <inheritdoc />
@@ -44,6 +48,12 @@ namespace FlaxEditor.Content
Editor.Instance.ContentImporting.Create(new SettingsCreateEntry(outputPath));
}
/// <inheritdoc />
public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
{
return new JsonAssetItem(path, id, typeName, _thumbnail);
}
/// <inheritdoc />
public override bool IsProxyFor<T>()
{
@@ -77,7 +77,7 @@ namespace FlaxEditor.Content
/// <param name="type">The folder type.</param>
/// <param name="path">The folder path.</param>
protected ContentTreeNode(ContentTreeNode parent, ContentFolderType type, string path)
: base(false, Editor.Instance.Icons.FolderClosed12, Editor.Instance.Icons.FolderOpened12)
: base(false, Editor.Instance.Icons.FolderClosed32, Editor.Instance.Icons.FolderOpen32)
{
_folder = new ContentFolder(type, path, this);
Text = _folder.ShortName;
+42 -58
View File
@@ -3,10 +3,11 @@
#pragma once
#include "Engine/Core/Log.h"
#include "Engine/Core/Enums.h"
#include "Engine/Core/Types/Guid.h"
#include "Engine/Core/Collections/Array.h"
#include "Engine/Core/Collections/HashSet.h"
#include "Engine/Core/Collections/Dictionary.h"
#include "Engine/Scripting/ScriptingObject.h"
class GameCooker;
class PlatformTools;
@@ -87,34 +88,14 @@ API_ENUM() enum class BuildPlatform
/// </summary>
API_ENUM(Attributes="EditorDisplay(null, \"Android ARM64 (arm64-v8a)\")")
AndroidARM64 = 9,
/// <summary>
/// Switch.
/// </summary>
Switch = 10,
};
inline const Char* ToString(const BuildPlatform platform)
{
switch (platform)
{
case BuildPlatform::Windows32:
return TEXT("Windows x86");
case BuildPlatform::Windows64:
return TEXT("Windows x64");
case BuildPlatform::UWPx86:
return TEXT("Windows Store x86");
case BuildPlatform::UWPx64:
return TEXT("Windows Store x64");
case BuildPlatform::XboxOne:
return TEXT("Xbox One");
case BuildPlatform::LinuxX64:
return TEXT("Linux x64");
case BuildPlatform::PS4:
return TEXT("PlayStation 4");
case BuildPlatform::XboxScarlett:
return TEXT("Xbox Scarlett");
case BuildPlatform::AndroidARM64:
return TEXT("Android ARM64");
default:
return TEXT("?");
}
}
extern FLAXENGINE_API const Char* ToString(const BuildPlatform platform);
/// <summary>
/// Game build configuration modes.
@@ -137,57 +118,67 @@ API_ENUM() enum class BuildConfiguration
Release = 2,
};
inline const Char* ToString(const BuildConfiguration configuration)
{
switch (configuration)
{
case BuildConfiguration::Debug:
return TEXT("Debug");
case BuildConfiguration::Development:
return TEXT("Development");
case BuildConfiguration::Release:
return TEXT("Release");
default:
return TEXT("?");
}
}
extern FLAXENGINE_API const Char* ToString(const BuildConfiguration configuration);
#define BUILD_STEP_CANCEL_CHECK if (GameCooker::IsCancelRequested()) return true
/// <summary>
/// Game cooking temporary data.
/// </summary>
struct FLAXENGINE_API CookingData
API_CLASS(Sealed, Namespace="FlaxEditor") class FLAXENGINE_API CookingData : public PersistentScriptingObject
{
DECLARE_SCRIPTING_TYPE(CookingData);
public:
/// <summary>
/// The platform.
/// </summary>
BuildPlatform Platform;
API_FIELD(ReadOnly) BuildPlatform Platform;
/// <summary>
/// The configuration.
/// </summary>
BuildConfiguration Configuration;
API_FIELD(ReadOnly) BuildConfiguration Configuration;
/// <summary>
/// The options.
/// </summary>
BuildOptions Options;
API_FIELD(ReadOnly) BuildOptions Options;
/// <summary>
/// The name of build preset used for cooking (can be used by editor and game plugins).
/// </summary>
API_FIELD(ReadOnly) String Preset;
/// <summary>
/// The name of build preset target used for cooking (can be used by editor and game plugins).
/// </summary>
API_FIELD(ReadOnly) String PresetTarget;
/// <summary>
/// The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines).
/// </summary>
Array<String> CustomDefines;
API_FIELD(ReadOnly) Array<String> CustomDefines;
/// <summary>
/// The original output path (actual OutputPath could be modified by the Platform Tools or a plugin for additional layout customizations or packaging). This path is preserved.
/// </summary>
String OriginalOutputPath;
API_FIELD(ReadOnly) String OriginalOutputPath;
/// <summary>
/// The output path.
/// The output path for data files (Content, Mono, etc.).
/// </summary>
String OutputPath;
API_FIELD(ReadOnly) String DataOutputPath;
/// <summary>
/// The output path for binaries (native executable and native code libraries).
/// </summary>
API_FIELD(ReadOnly) String NativeCodeOutputPath;
/// <summary>
/// The output path for binaries (C# code libraries).
/// </summary>
API_FIELD(ReadOnly) String ManagedCodeOutputPath;
/// <summary>
/// The platform tools.
@@ -270,7 +261,7 @@ public:
/// </summary>
HashSet<Guid> Assets;
struct BinaryModule
struct BinaryModuleInfo
{
String Name;
String NativePath;
@@ -280,17 +271,10 @@ public:
/// <summary>
/// The binary modules used in the build. Valid after scripts compilation step. This list includes game, all plugins modules and engine module.
/// </summary>
Array<BinaryModule, InlinedAllocation<64>> BinaryModules;
Array<BinaryModuleInfo, InlinedAllocation<64>> BinaryModules;
public:
void Init()
{
RootAssets.Clear();
Assets.Clear();
Stats = Statistics();
}
/// <summary>
/// Gets the absolute path to the Platform Data folder that contains the binary files used by the current build configuration.
/// </summary>
+109 -15
View File
@@ -10,6 +10,7 @@
#include "Engine/Serialization/JsonTools.h"
#include "Engine/Content/Content.h"
#include "Engine/Engine/EngineService.h"
#include "Engine/Engine/Globals.h"
#include "Engine/Threading/ThreadSpawner.h"
#include "Engine/Platform/FileSystem.h"
#include "Steps/ValidateStep.h"
@@ -25,6 +26,7 @@
#include "Engine/Scripting/ManagedCLR/MAssembly.h"
#include "Engine/Content/JsonAsset.h"
#include "Engine/Content/AssetReference.h"
#include "Engine/Scripting/MException.h"
#if PLATFORM_TOOLS_WINDOWS
#include "Platform/Windows/WindowsPlatformTools.h"
#include "Engine/Platform/Windows/WindowsPlatformSettings.h"
@@ -39,7 +41,6 @@
#endif
#if PLATFORM_TOOLS_PS4
#include "Platforms/PS4/Editor/PlatformTools/PS4PlatformTools.h"
#include "Platforms/PS4/Engine/Platform/PS4PlatformSettings.h"
#endif
#if PLATFORM_TOOLS_XBOX_SCARLETT
#include "Platforms/XboxScarlett/Editor/PlatformTools/XboxScarlettPlatformTools.h"
@@ -47,12 +48,15 @@
#if PLATFORM_TOOLS_ANDROID
#include "Platform/Android/AndroidPlatformTools.h"
#endif
#if PLATFORM_TOOLS_SWITCH
#include "Platforms/Switch/Editor/PlatformTools/SwitchPlatformTools.h"
#endif
namespace GameCookerImpl
{
MMethod* Internal_OnEvent = nullptr;
MMethod* Internal_OnProgress = nullptr;
MMethod* Internal_CanDeployPlugin = nullptr;
MMethod* Internal_OnCollectAssets = nullptr;
bool IsRunning = false;
bool IsThreadRunning = false;
@@ -64,7 +68,7 @@ namespace GameCookerImpl
String ProgressMsg;
float ProgressValue;
CookingData Data;
CookingData* Data = nullptr;
Array<GameCooker::BuildStep*> Steps;
Dictionary<BuildPlatform, PlatformTools*> Tools;
@@ -74,6 +78,7 @@ namespace GameCookerImpl
void CallEvent(GameCooker::EventType type);
void ReportProgress(const String& info, float totalProgress);
void OnCollectAssets(HashSet<Guid>& assets);
bool Build();
int32 ThreadFunction();
@@ -81,6 +86,7 @@ namespace GameCookerImpl
{
Internal_OnEvent = nullptr;
Internal_OnProgress = nullptr;
Internal_OnCollectAssets = nullptr;
}
}
@@ -88,6 +94,51 @@ using namespace GameCookerImpl;
Delegate<GameCooker::EventType> GameCooker::OnEvent;
Delegate<const String&, float> GameCooker::OnProgress;
Delegate<HashSet<Guid>&> GameCooker::OnCollectAssets;
const Char* ToString(const BuildPlatform platform)
{
switch (platform)
{
case BuildPlatform::Windows32:
return TEXT("Windows x86");
case BuildPlatform::Windows64:
return TEXT("Windows x64");
case BuildPlatform::UWPx86:
return TEXT("Windows Store x86");
case BuildPlatform::UWPx64:
return TEXT("Windows Store x64");
case BuildPlatform::XboxOne:
return TEXT("Xbox One");
case BuildPlatform::LinuxX64:
return TEXT("Linux x64");
case BuildPlatform::PS4:
return TEXT("PlayStation 4");
case BuildPlatform::XboxScarlett:
return TEXT("Xbox Scarlett");
case BuildPlatform::AndroidARM64:
return TEXT("Android ARM64");
case BuildPlatform::Switch:
return TEXT("Switch");
default:
return TEXT("?");
}
}
const Char* ToString(const BuildConfiguration configuration)
{
switch (configuration)
{
case BuildConfiguration::Debug:
return TEXT("Debug");
case BuildConfiguration::Development:
return TEXT("Development");
case BuildConfiguration::Release:
return TEXT("Release");
default:
return TEXT("?");
}
}
bool CookingData::AssetTypeStatistics::operator<(const AssetTypeStatistics& other) const
{
@@ -103,6 +154,11 @@ CookingData::Statistics::Statistics()
ContentSizeMB = 0;
}
CookingData::CookingData(const SpawnParams& params)
: PersistentScriptingObject(params)
{
}
String CookingData::GetGameBinariesPath() const
{
const Char* archDir;
@@ -128,7 +184,7 @@ String CookingData::GetGameBinariesPath() const
return String::Empty;
}
return GetPlatformBinariesRoot() / TEXT("Game") / archDir / ToString(Configuration);
return GetPlatformBinariesRoot() / TEXT("Game") / archDir / ::ToString(Configuration);
}
String CookingData::GetPlatformBinariesRoot() const
@@ -188,7 +244,7 @@ public:
GameCookerService GameCookerServiceInstance;
const CookingData& GameCooker::GetCurrentData()
CookingData* GameCooker::GetCurrentData()
{
return Data;
}
@@ -250,6 +306,11 @@ PlatformTools* GameCooker::GetTools(BuildPlatform platform)
case BuildPlatform::AndroidARM64:
result = New<AndroidPlatformTools>(ArchitectureType::ARM64);
break;
#endif
#if PLATFORM_TOOLS_SWITCH
case BuildPlatform::Switch:
result = New<SwitchPlatformTools>();
break;
#endif
}
Tools.Add(platform, result);
@@ -257,7 +318,7 @@ PlatformTools* GameCooker::GetTools(BuildPlatform platform)
return result;
}
void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array<String>& customDefines)
void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array<String>& customDefines, const StringView& preset, const StringView& presetTarget)
{
if (IsRunning())
{
@@ -275,16 +336,19 @@ void GameCooker::Build(BuildPlatform platform, BuildConfiguration configuration,
CancelFlag = 0;
ProgressMsg.Clear();
ProgressValue = 1.0f;
CookingData& data = Data;
data.Init();
Data = New<CookingData>();
CookingData& data = *Data;
data.Tools = tools;
data.Platform = platform;
data.Configuration = configuration;
data.Options = options;
data.Preset = preset;
data.PresetTarget = presetTarget;
data.CustomDefines = customDefines;
data.OutputPath = outputPath;
FileSystem::NormalizePath(data.OutputPath);
data.OutputPath = data.OriginalOutputPath = FileSystem::ConvertRelativePathToAbsolute(Globals::ProjectFolder, data.OutputPath);
data.OriginalOutputPath = outputPath;
FileSystem::NormalizePath(data.OriginalOutputPath);
data.OriginalOutputPath = FileSystem::ConvertRelativePathToAbsolute(Globals::ProjectFolder, data.OriginalOutputPath);
data.NativeCodeOutputPath = data.ManagedCodeOutputPath = data.DataOutputPath = data.OriginalOutputPath;
data.CacheDirectory = Globals::ProjectCacheFolder / TEXT("Cooker") / tools->GetName();
if (!FileSystem::DirectoryExists(data.CacheDirectory))
{
@@ -362,12 +426,39 @@ void GameCookerImpl::ReportProgress(const String& info, float totalProgress)
ProgressValue = totalProgress;
}
void GameCookerImpl::OnCollectAssets(HashSet<Guid>& assets)
{
if (Internal_OnCollectAssets == nullptr)
{
auto c = GameCooker::GetStaticClass();
if (c)
Internal_OnCollectAssets = c->GetMethod("Internal_OnCollectAssets", 0);
ASSERT(GameCookerImpl::Internal_OnCollectAssets);
}
MCore::AttachThread();
MonoObject* exception = nullptr;
auto list = (MonoArray*)Internal_OnCollectAssets->Invoke(nullptr, nullptr, &exception);
if (exception)
{
MException ex(exception);
ex.Log(LogType::Error, TEXT("OnCollectAssets"));
}
if (list)
{
auto ids = MUtils::ToSpan<Guid>(list);
for (int32 i = 0; i < ids.Length(); i++)
assets.Add(ids[i]);
}
}
bool GameCookerImpl::Build()
{
CookingData& data = Data;
CookingData& data = *Data;
LOG(Info, "Starting Game Cooker...");
LOG(Info, "Platform: {0}, Configuration: {2}, Options: {1}", ::ToString(data.Platform), (int32)data.Options, ::ToString(data.Configuration));
LOG(Info, "Output Path: {0}", data.OutputPath);
LOG(Info, "Output Path: {0}", data.OriginalOutputPath);
// Late init feature
if (Steps.IsEmpty())
@@ -388,7 +479,7 @@ bool GameCookerImpl::Build()
CallEvent(GameCooker::EventType::BuildStarted);
for (int32 stepIndex = 0; stepIndex < Steps.Count(); stepIndex++)
Steps[stepIndex]->OnBuildStarted(data);
Data.Tools->OnBuildStarted(data);
data.Tools->OnBuildStarted(data);
data.InitProgress(Steps.Count());
// Execute all steps in a sequence
@@ -427,10 +518,12 @@ bool GameCookerImpl::Build()
}
IsRunning = false;
CancelFlag = 0;
Data.Tools->OnBuildEnded(data, failed);
data.Tools->OnBuildEnded(data, failed);
for (int32 stepIndex = 0; stepIndex < Steps.Count(); stepIndex++)
Steps[stepIndex]->OnBuildEnded(data, failed);
CallEvent(failed ? GameCooker::EventType::BuildFailed : GameCooker::EventType::BuildDone);
Delete(Data);
Data = nullptr;
return failed;
}
@@ -458,6 +551,7 @@ bool GameCookerService::Init()
{
auto editorAssembly = ((NativeBinaryModule*)GetBinaryModuleFlaxEngine())->Assembly;
editorAssembly->Unloading.Bind(OnEditorAssemblyUnloading);
GameCooker::OnCollectAssets.Bind(OnCollectAssets);
return false;
}
+27 -3
View File
@@ -1,9 +1,7 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Collections.Generic;
using FlaxEngine;
namespace FlaxEditor
@@ -80,6 +78,11 @@ namespace FlaxEditor
/// </summary>
public static event BuildProgressDelegate Progress;
/// <summary>
/// Occurs when building collects assets to cook.
/// </summary>
public static event Action<List<Guid>> CollectAssets;
/// <summary>
/// Gets the type of the platform from the game build platform type.
/// </summary>
@@ -96,6 +99,9 @@ namespace FlaxEditor
case BuildPlatform.XboxOne: return PlatformType.XboxOne;
case BuildPlatform.LinuxX64: return PlatformType.Linux;
case BuildPlatform.PS4: return PlatformType.PS4;
case BuildPlatform.AndroidARM64: return PlatformType.Android;
case BuildPlatform.XboxScarlett: return PlatformType.XboxScarlett;
case BuildPlatform.Switch: return PlatformType.Switch;
default: throw new ArgumentOutOfRangeException(nameof(buildPlatform), buildPlatform, null);
}
}
@@ -109,5 +115,23 @@ namespace FlaxEditor
{
Progress?.Invoke(info, totalProgress);
}
internal static Guid[] Internal_OnCollectAssets()
{
var list = new List<Guid>();
// Custom assets
CollectAssets?.Invoke(list);
// Plugin assets
foreach (var plugin in PluginManager.GamePlugins)
{
plugin.OnCollectAssets(list);
}
if (list.Count == 0)
return null;
return list.ToArray();
}
}
}
+9 -4
View File
@@ -56,18 +56,16 @@ public:
/// <summary>
/// Gets the current build data. Valid only during active build process.
/// </summary>
static const CookingData& GetCurrentData();
API_PROPERTY() static CookingData* GetCurrentData();
/// <summary>
/// Determines whether game building is running.
/// </summary>
/// <returns><c>true</c> if game building is running; otherwise, <c>false</c>.</returns>
API_PROPERTY() static bool IsRunning();
/// <summary>
/// Determines whether building cancel has been requested.
/// </summary>
/// <returns><c>true</c> if building cancel has been requested; otherwise, <c>false</c>.</returns>
API_PROPERTY() static bool IsCancelRequested();
/// <summary>
@@ -85,7 +83,9 @@ public:
/// <param name="outputPath">The output path (output directory).</param>
/// <param name="options">The build options.</param>
/// <param name="customDefines">The list of custom defines passed to the build tool when compiling project scripts. Can be used in build scripts for configuration (Configuration.CustomDefines).</param>
API_FUNCTION() static void Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array<String>& customDefines);
/// <param name="preset">The name of build preset used for cooking (can be used by editor and game plugins).</param>
/// <param name="presetTarget">The name of build preset target used for cooking (can be used by editor and game plugins).</param>
API_FUNCTION() static void Build(BuildPlatform platform, BuildConfiguration configuration, const StringView& outputPath, BuildOptions options, const Array<String>& customDefines, const StringView& preset = StringView::Empty, const StringView& presetTarget = StringView::Empty);
/// <summary>
/// Sends a cancel event to the game building service.
@@ -123,4 +123,9 @@ public:
/// Occurs when building game progress fires.
/// </summary>
static Delegate<const String&, float> OnProgress;
/// <summary>
/// Occurs when building collects assets to cook.
/// </summary>
static Delegate<HashSet<Guid>&> OnCollectAssets;
};
@@ -104,7 +104,9 @@ PixelFormat AndroidPlatformTools::GetTextureFormat(CookingData& data, TextureBas
void AndroidPlatformTools::OnBuildStarted(CookingData& data)
{
// Adjust the cooking output folder to be located inside the Gradle assets directory
data.OutputPath /= TEXT("app/assets");
data.DataOutputPath /= TEXT("app/assets");
data.NativeCodeOutputPath /= TEXT("app/assets");
data.ManagedCodeOutputPath /= TEXT("app/assets");
PlatformTools::OnBuildStarted(data);
}
@@ -114,7 +116,7 @@ bool AndroidPlatformTools::OnPostProcess(CookingData& data)
const auto gameSettings = GameSettings::Get();
const auto platformSettings = AndroidPlatformSettings::Get();
const auto platformDataPath = data.GetPlatformBinariesRoot();
const auto assetsPath = data.OutputPath;
const auto assetsPath = data.DataOutputPath;
const auto jniLibsPath = data.OriginalOutputPath / TEXT("app/jniLibs");
const auto projectVersion = Editor::Project->Version.ToString();
const Char* abi;
@@ -38,7 +38,7 @@ bool LinuxPlatformTools::OnDeployBinaries(CookingData& data)
{
const auto gameSettings = GameSettings::Get();
const auto platformSettings = LinuxPlatformSettings::Get();
const auto outputPath = data.OutputPath;
const auto outputPath = data.DataOutputPath;
// Copy binaries
{
@@ -66,7 +66,7 @@ bool LinuxPlatformTools::OnDeployBinaries(CookingData& data)
#if !BUILD_DEBUG
const String outputExePath = outputPath / TEXT("FlaxGame");
const String gameExePath = outputPath / gameSettings->ProductName;
if (FileSystem::FileExists(outputExePath) && gameExePath.Compare(outputExePath, StringSearchCase::IgnoreCase) == 0)
if (FileSystem::FileExists(outputExePath) && gameExePath.Compare(outputExePath, StringSearchCase::IgnoreCase) != 0)
{
if (FileSystem::MoveFile(gameExePath, outputExePath, true))
{
@@ -25,7 +25,7 @@ bool UWPPlatformTools::OnScriptsStepDone(CookingData& data)
{
// Override Newtonsoft.Json.dll for some platforms (that don't support runtime code generation)
const String customBinPath = data.GetPlatformBinariesRoot() / TEXT("Newtonsoft.Json.dll");
const String assembliesPath = data.OutputPath;
const String assembliesPath = data.ManagedCodeOutputPath;
if (FileSystem::CopyFile(assembliesPath / TEXT("Newtonsoft.Json.dll"), customBinPath))
{
data.Error(TEXT("Failed to copy deploy custom assembly."));
@@ -64,7 +64,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
return true;
}
if (FileSystem::CopyFile(data.OutputPath / StringUtils::GetFileName(files[i]), files[i]))
if (FileSystem::CopyFile(data.DataOutputPath / StringUtils::GetFileName(files[i]), files[i]))
{
data.Error(TEXT("Failed to setup output directory."));
return true;
@@ -92,7 +92,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
// Prepare certificate
const auto srcCertificatePath = Globals::ProjectFolder / platformSettings->CertificateLocation;
const auto dstCertificatePath = data.OutputPath / TEXT("WSACertificate.pfx");
const auto dstCertificatePath = data.DataOutputPath / TEXT("WSACertificate.pfx");
if (platformSettings->CertificateLocation.HasChars() && FileSystem::FileExists(srcCertificatePath))
{
// Use cert from settings
@@ -115,7 +115,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
}
// Copy assets
const auto dstAssetsPath = data.OutputPath / TEXT("Assets");
const auto dstAssetsPath = data.DataOutputPath / TEXT("Assets");
const auto srcAssetsPath = uwpDataPath / TEXT("Assets");
if (!FileSystem::DirectoryExists(dstAssetsPath))
{
@@ -125,7 +125,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
return true;
}
}
const auto dstPropertiesPath = data.OutputPath / TEXT("Properties");
const auto dstPropertiesPath = data.DataOutputPath / TEXT("Properties");
if (!FileSystem::DirectoryExists(dstPropertiesPath))
{
if (FileSystem::CreateDirectory(dstPropertiesPath))
@@ -176,7 +176,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
return true;
}
}
const auto dstAppPath = data.OutputPath / TEXT("App.cs");
const auto dstAppPath = data.DataOutputPath / TEXT("App.cs");
const auto srcAppPath = uwpDataPath / TEXT("App.cs");
if (!FileSystem::FileExists(dstAppPath))
{
@@ -205,7 +205,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
return true;
}
}
const auto dstFlaxGeneratedPath = data.OutputPath / TEXT("FlaxGenerated.cs");
const auto dstFlaxGeneratedPath = data.DataOutputPath / TEXT("FlaxGenerated.cs");
const auto srcFlaxGeneratedPath = uwpDataPath / TEXT("FlaxGenerated.cs");
{
// Get template
@@ -264,7 +264,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
}
// Create solution
const auto dstSolutionPath = data.OutputPath / projectName + TEXT(".sln");
const auto dstSolutionPath = data.DataOutputPath / projectName + TEXT(".sln");
const auto srcSolutionPath = uwpDataPath / TEXT("Solution.sln");
if (!FileSystem::FileExists(dstSolutionPath))
{
@@ -297,7 +297,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
}
// Create project
const auto dstProjectPath = data.OutputPath / projectName + TEXT(".csproj");
const auto dstProjectPath = data.DataOutputPath / projectName + TEXT(".csproj");
const auto srcProjectPath = uwpDataPath / TEXT("Project.csproj");
{
// Get template
@@ -347,7 +347,7 @@ bool UWPPlatformTools::OnDeployBinaries(CookingData& data)
}
// Create manifest
const auto dstManifestPath = data.OutputPath / TEXT("Package.appxmanifest");
const auto dstManifestPath = data.DataOutputPath / TEXT("Package.appxmanifest");
const auto srcManifestPath = uwpDataPath / TEXT("Package.appxmanifest");
if (!FileSystem::FileExists(dstManifestPath))
{
@@ -484,8 +484,8 @@ bool UWPPlatformTools::OnPostProcess(CookingData& data)
// Special case for UWP
// FlaxEngine.dll cannot be added to the solution as `Content` item (due to conflicts with C++ /CX FlaxEngine.dll)
// Use special directory for it (generated UWP project handles this case and copies lib to the output)
const String assembliesPath = data.OutputPath;
const auto dstPath1 = data.OutputPath / TEXT("DataSecondary");
const String assembliesPath = data.DataOutputPath;
const auto dstPath1 = data.DataOutputPath / TEXT("DataSecondary");
if (!FileSystem::DirectoryExists(dstPath1))
{
if (FileSystem::CreateDirectory(dstPath1))
@@ -36,7 +36,7 @@ ArchitectureType WindowsPlatformTools::GetArchitecture() const
bool WindowsPlatformTools::OnDeployBinaries(CookingData& data)
{
const auto platformSettings = WindowsPlatformSettings::Get();
const auto& outputPath = data.OutputPath;
const auto& outputPath = data.NativeCodeOutputPath;
// Apply executable icon
Array<String> files;
+15 -2
View File
@@ -66,6 +66,17 @@ public:
return format;
}
/// <summary>
/// Checks if the given file is a native code.
/// </summary>
/// <param name="data">The cooking data.</param>
/// <param name="file">The file path.</param>
/// <returns>True if it's a native file, otherwise false.<returns>
virtual bool IsNativeCodeFile(CookingData& data, const String& file)
{
return false;
}
public:
/// <summary>
@@ -136,6 +147,8 @@ public:
String AssemblerArgs;
String ArchiverPath;
String ArchiverArgs;
String AuxToolPath;
String AuxToolArgs;
String AotCachePath;
Dictionary<String, String> EnvVars;
Array<String> AssembliesSearchDirs;
@@ -144,8 +157,8 @@ public:
AotConfig(CookingData& data)
{
Platform::GetEnvironmentVariables(EnvVars);
EnvVars[TEXT("MONO_PATH")] = data.OutputPath / TEXT("Mono/lib/mono/4.5");
AssembliesSearchDirs.Add(data.OutputPath / TEXT("Mono/lib/mono/4.5"));
EnvVars[TEXT("MONO_PATH")] = data.DataOutputPath / TEXT("Mono/lib/mono/4.5");
AssembliesSearchDirs.Add(data.DataOutputPath / TEXT("Mono/lib/mono/4.5"));
}
};
@@ -119,7 +119,8 @@ bool CompileScriptsStep::DeployBinaries(CookingData& data, const String& path, c
}
for (auto& file : files)
{
const String dst = data.OutputPath / StringUtils::GetFileName(file);
const String& dstPath = data.Tools->IsNativeCodeFile(data, file) ? data.NativeCodeOutputPath : data.ManagedCodeOutputPath;
const String dst = dstPath / StringUtils::GetFileName(file);
if (dst != file && FileSystem::CopyFile(dst, file))
{
data.Error(TEXT("Failed to copy file from {0} to {1}."), file, dst);
@@ -180,7 +181,12 @@ bool CompileScriptsStep::Perform(CookingData& data)
platform = TEXT("Android");
architecture = TEXT("ARM64");
break;
case BuildPlatform::Switch:
platform = TEXT("Switch");
architecture = TEXT("ARM64");
break;
default:
LOG(Error, "Unknown or unsupported build platform.");
return true;
}
_extensionsToSkip.Clear();
@@ -289,7 +295,7 @@ bool CompileScriptsStep::Perform(CookingData& data)
}
writer.EndObject();
const String outputBuildInfo = data.OutputPath / TEXT("Game.Build.json");
const String outputBuildInfo = data.DataOutputPath / TEXT("Game.Build.json");
if (File::WriteAllBytes(outputBuildInfo, (byte*)buffer.GetString(), (int32)buffer.GetSize()))
{
LOG(Error, "Failed to save binary modules info file {0}.", outputBuildInfo);
+183 -83
View File
@@ -25,10 +25,12 @@
#include "Engine/Core/Config/PlatformSettings.h"
#include "Engine/Core/Config/GameSettings.h"
#include "Engine/Core/Config/BuildSettings.h"
#include "Engine/Streaming/StreamingSettings.h"
#include "Engine/ShadersCompilation/ShadersCompilation.h"
#include "Engine/Graphics/RenderTools.h"
#include "Engine/Graphics/Textures/TextureData.h"
#include "Engine/Engine/Base/GameBase.h"
#include "Engine/Engine/Globals.h"
#include "Engine/Tools/TextureTool/TextureTool.h"
#if PLATFORM_TOOLS_WINDOWS
#include "Engine/Platform/Windows/WindowsPlatformSettings.h"
@@ -43,6 +45,35 @@
Dictionary<String, CookAssetsStep::ProcessAssetFunc> CookAssetsStep::AssetProcessors;
bool CookAssetsStep::CacheEntry::IsValid(bool withDependencies)
{
AssetInfo assetInfo;
if (Content::GetAssetInfo(ID, assetInfo))
{
if (TypeName == assetInfo.TypeName)
{
if (FileSystem::GetFileLastEditTime(assetInfo.Path) <= FileModified)
{
bool isValid = true;
if (withDependencies)
{
for (auto& f : FileDependencies)
{
if (FileSystem::GetFileLastEditTime(f.First) > f.Second)
{
isValid = false;
break;
}
}
}
if (isValid)
return true;
}
}
}
return false;
}
CookAssetsStep::CacheEntry& CookAssetsStep::CacheData::CreateEntry(const JsonAssetBase* asset, String& cachedFilePath)
{
ASSERT(asset->DataTypeName.HasChars());
@@ -67,7 +98,6 @@ CookAssetsStep::CacheEntry& CookAssetsStep::CacheData::CreateEntry(const Asset*
void CookAssetsStep::CacheData::InvalidateShaders()
{
LOG(Info, "Invalidating cached shader assets.");
for (auto e = Entries.Begin(); e.IsNotEnd(); ++e)
{
auto& typeName = e->Value.TypeName;
@@ -82,6 +112,23 @@ void CookAssetsStep::CacheData::InvalidateShaders()
}
}
void CookAssetsStep::CacheData::InvalidateTextures()
{
LOG(Info, "Invalidating cached texture assets.");
for (auto e = Entries.Begin(); e.IsNotEnd(); ++e)
{
auto& typeName = e->Value.TypeName;
if (
typeName == Texture::TypeName ||
typeName == CubeTexture::TypeName ||
typeName == SpriteAtlas::TypeName
)
{
Entries.Remove(e);
}
}
}
void CookAssetsStep::CacheData::Load(CookingData& data)
{
HeaderFilePath = data.CacheDirectory / String::Format(TEXT("CookedHeader_{0}.bin"), FLAXENGINE_VERSION_BUILD);
@@ -158,17 +205,17 @@ void CookAssetsStep::CacheData::Load(CookingData& data)
Entries.Clear();
}
const auto buildSettings = BuildSettings::Get();
const auto gameSettings = GameSettings::Get();
// Invalidate shaders and assets with shaders if need to rebuild them
bool invalidateShaders = false;
const auto buildSettings = BuildSettings::Get();
const bool shadersNoOptimize = buildSettings->ShadersNoOptimize;
const bool shadersGenerateDebugData = buildSettings->ShadersGenerateDebugData;
if (shadersNoOptimize != Settings.Global.ShadersNoOptimize)
if (buildSettings->ShadersNoOptimize != Settings.Global.ShadersNoOptimize)
{
LOG(Info, "ShadersNoOptimize option has been modified.");
invalidateShaders = true;
}
if (shadersGenerateDebugData != Settings.Global.ShadersGenerateDebugData)
if (buildSettings->ShadersGenerateDebugData != Settings.Global.ShadersGenerateDebugData)
{
LOG(Info, "ShadersGenerateDebugData option has been modified.");
invalidateShaders = true;
@@ -217,6 +264,12 @@ void CookAssetsStep::CacheData::Load(CookingData& data)
#endif
if (invalidateShaders)
InvalidateShaders();
// Invalidate textures if streaming settings gets modified
if (Settings.Global.StreamingSettingsAssetId != gameSettings->Streaming || (Entries.ContainsKey(gameSettings->Streaming) && !Entries[gameSettings->Streaming].IsValid()))
{
InvalidateTextures();
}
}
void CookAssetsStep::CacheData::Save()
@@ -453,6 +506,14 @@ bool ProcessShaderBase(CookAssetsStep::AssetCookData& data, ShaderAssetBase* ass
COMPILE_PROFILE(Vulkan_SM5, SHADER_FILE_CHUNK_INTERNAL_VULKAN_SM5_CACHE);
break;
}
#endif
#if PLATFORM_TOOLS_SWITCH
case BuildPlatform::Switch:
{
const char* platformDefineName = "PLATFORM_SWITCH";
COMPILE_PROFILE(Vulkan_SM5, SHADER_FILE_CHUNK_INTERNAL_VULKAN_SM5_CACHE);
break;
}
#endif
default:
{
@@ -532,91 +593,129 @@ bool ProcessParticleEmitter(CookAssetsStep::AssetCookData& data)
bool ProcessTextureBase(CookAssetsStep::AssetCookData& data)
{
const auto asset = static_cast<TextureBase*>(data.Asset);
// Check if target platform doesn't support the texture format
const auto& assetHeader = asset->StreamingTexture()->GetHeader();
const auto format = asset->Format();
const auto targetFormat = data.Data.Tools->GetTextureFormat(data.Data, asset, format);
const auto streamingSettings = StreamingSettings::Get();
int32 mipLevelsMax = GPU_MAX_TEXTURE_MIP_LEVELS;
if (assetHeader->TextureGroup >= 0 && assetHeader->TextureGroup < streamingSettings->TextureGroups.Count())
{
auto& group = streamingSettings->TextureGroups[assetHeader->TextureGroup];
mipLevelsMax = group.MipLevelsMax;
group.MipLevelsMaxPerPlatform.TryGet(data.Data.Tools->GetPlatform(), mipLevelsMax);
}
// Faster path if don't need to modify texture for the target platform
if (format == targetFormat && assetHeader->MipLevels <= mipLevelsMax)
{
return CookAssetsStep::ProcessDefaultAsset(data);
}
// Extract texture data from the asset
TextureData textureDataSrc;
auto assetLock = asset->LockData();
if (asset->GetTextureData(textureDataSrc, false))
{
LOG(Error, "Failed to load data from texture {0}", asset->ToString());
return true;
}
TextureData* textureData = &textureDataSrc;
TextureData textureDataTmp1;
if (format != targetFormat)
{
// Extract texture data from the asset
TextureData textureData;
auto assetLock = asset->LockData();
if (asset->GetTextureData(textureData, false))
{
LOG(Error, "Failed to load data from texture {0}", asset->ToString());
return true;
}
// Convert texture data to the target format
TextureData targetTextureData;
if (TextureTool::Convert(targetTextureData, textureData, targetFormat))
if (TextureTool::Convert(textureDataTmp1, *textureData, targetFormat))
{
LOG(Error, "Failed to convert texture {0} from format {1} to {2}", asset->ToString(), (int32)format, (int32)targetFormat);
return true;
}
// Adjust texture header
auto& header = *(TextureHeader*)data.InitData.CustomData.Get();
header.Width = targetTextureData.Width;
header.Height = targetTextureData.Height;
header.Format = targetTextureData.Format;
header.MipLevels = targetTextureData.GetMipLevels();
// Serialize texture data into the asset chunks
for (int32 mipIndex = 0; mipIndex < targetTextureData.GetMipLevels(); mipIndex++)
{
auto chunk = New<FlaxChunk>();
data.InitData.Header.Chunks[mipIndex] = chunk;
// Calculate the texture data storage layout
uint32 rowPitch, slicePitch;
const int32 mipWidth = Math::Max(1, targetTextureData.Width >> mipIndex);
const int32 mipHeight = Math::Max(1, targetTextureData.Height >> mipIndex);
RenderTools::ComputePitch(targetTextureData.Format, mipWidth, mipHeight, rowPitch, slicePitch);
chunk->Data.Allocate(slicePitch * targetTextureData.GetArraySize());
// Copy array slices into mip data (sequential)
for (int32 arrayIndex = 0; arrayIndex < targetTextureData.Items.Count(); arrayIndex++)
{
auto& mipData = targetTextureData.Items[arrayIndex].Mips[mipIndex];
byte* src = mipData.Data.Get();
byte* dst = chunk->Data.Get() + (slicePitch * arrayIndex);
// Faster path if source and destination data layout matches
if (rowPitch == mipData.RowPitch && slicePitch == mipData.DepthPitch)
{
Platform::MemoryCopy(dst, src, slicePitch);
}
else
{
const auto copyRowSize = Math::Min(mipData.RowPitch, rowPitch);
for (uint32 line = 0; line < mipData.Lines; line++)
{
Platform::MemoryCopy(dst, src, copyRowSize);
src += mipData.RowPitch;
dst += rowPitch;
}
}
}
}
// Clone any custom asset chunks (eg. sprite atlas data, mips are in 0-13 chunks)
for (int32 i = 14; i < ASSET_FILE_DATA_CHUNKS; i++)
{
const auto chunk = asset->GetChunk(i);
if (chunk != nullptr && chunk->IsMissing() && chunk->ExistsInFile())
{
if (asset->Storage->LoadAssetChunk(chunk))
return true;
data.InitData.Header.Chunks[i] = chunk->Clone();
}
}
return false;
textureData = &textureDataTmp1;
}
// Fallback to the default asset processing
return CookAssetsStep::ProcessDefaultAsset(data);
if (assetHeader->MipLevels > mipLevelsMax)
{
// Reduce texture quality
const int32 mipLevelsToStrip = assetHeader->MipLevels - mipLevelsMax;
textureData->Width = Math::Max(1, textureData->Width >> mipLevelsToStrip);
textureData->Height = Math::Max(1, textureData->Height >> mipLevelsToStrip);
textureData->Depth = Math::Max(1, textureData->Depth >> mipLevelsToStrip);
for (int32 arrayIndex = 0; arrayIndex < textureData->Items.Count(); arrayIndex++)
{
auto& item = textureData->Items[arrayIndex];
Array<TextureMipData, FixedAllocation<GPU_MAX_TEXTURE_MIP_LEVELS>> oldMips(MoveTemp(item.Mips));
item.Mips.Resize(mipLevelsMax);
for (int32 mipIndex = 0; mipIndex < mipLevelsMax; mipIndex++)
{
auto& dstMip = item.Mips[mipIndex];
auto& srcMip = oldMips[mipIndex + mipLevelsToStrip];
dstMip = MoveTemp(srcMip);
}
}
}
// Adjust texture header
data.InitData.CustomData.Allocate(sizeof(TextureHeader));
auto& header = *(TextureHeader*)data.InitData.CustomData.Get();
header = *assetHeader;
header.Width = textureData->Width;
header.Height = textureData->Height;
header.Depth = textureData->Depth;
header.Format = textureData->Format;
header.MipLevels = textureData->GetMipLevels();
// Serialize texture data into the asset chunks
for (int32 mipIndex = 0; mipIndex < header.MipLevels; mipIndex++)
{
auto chunk = New<FlaxChunk>();
data.InitData.Header.Chunks[mipIndex] = chunk;
// Calculate the texture data storage layout
uint32 rowPitch, slicePitch;
const int32 mipWidth = Math::Max(1, textureData->Width >> mipIndex);
const int32 mipHeight = Math::Max(1, textureData->Height >> mipIndex);
RenderTools::ComputePitch(textureData->Format, mipWidth, mipHeight, rowPitch, slicePitch);
chunk->Data.Allocate(slicePitch * textureData->GetArraySize());
// Copy array slices into mip data (sequential)
for (int32 arrayIndex = 0; arrayIndex < textureData->Items.Count(); arrayIndex++)
{
auto& mipData = textureData->Items[arrayIndex].Mips[mipIndex];
byte* src = mipData.Data.Get();
byte* dst = chunk->Data.Get() + (slicePitch * arrayIndex);
// Faster path if source and destination data layout matches
if (rowPitch == mipData.RowPitch && slicePitch == mipData.DepthPitch)
{
Platform::MemoryCopy(dst, src, slicePitch);
}
else
{
const auto copyRowSize = Math::Min(mipData.RowPitch, rowPitch);
for (uint32 line = 0; line < mipData.Lines; line++)
{
Platform::MemoryCopy(dst, src, copyRowSize);
src += mipData.RowPitch;
dst += rowPitch;
}
}
}
}
// Clone any custom asset chunks (eg. sprite atlas data, mips are in 0-13 chunks)
for (int32 i = 14; i < ASSET_FILE_DATA_CHUNKS; i++)
{
const auto chunk = asset->GetChunk(i);
if (chunk != nullptr && chunk->IsMissing() && chunk->ExistsInFile())
{
if (asset->Storage->LoadAssetChunk(chunk))
return true;
data.InitData.Header.Chunks[i] = chunk->Clone();
}
}
return false;
}
CookAssetsStep::CookAssetsStep()
@@ -861,7 +960,7 @@ public:
// Create package
// Note: FlaxStorage::Create overrides chunks locations in file so don't use files anymore (only readonly)
const String localPath = String::Format(TEXT("Content/Data_{0}.{1}"), _packageIndex, PACKAGE_FILES_EXTENSION);
const String path = data.OutputPath / localPath;
const String path = data.DataOutputPath / localPath;
if (FlaxStorage::Create(path, assetsData, false, &CustomData))
{
data.Error(TEXT("Failed to create assets package."));
@@ -929,6 +1028,7 @@ bool CookAssetsStep::Perform(CookingData& data)
{
cache.Settings.Global.ShadersNoOptimize = buildSettings->ShadersNoOptimize;
cache.Settings.Global.ShadersGenerateDebugData = buildSettings->ShadersGenerateDebugData;
cache.Settings.Global.StreamingSettingsAssetId = gameSettings->Streaming;
}
// Note: this step converts all the assets (even the json) into the binary files (FlaxStorage format).
@@ -1027,7 +1127,7 @@ bool CookAssetsStep::Perform(CookingData& data)
gameFlags |= GameHeaderFlags::ShowSplashScreen;
// Open file
auto stream = FileWriteStream::Open(data.OutputPath / TEXT("Content/head"));
auto stream = FileWriteStream::Open(data.DataOutputPath / TEXT("Content/head"));
if (stream == nullptr)
{
data.Error(TEXT("Failed to create game data file."));
@@ -1121,7 +1221,7 @@ bool CookAssetsStep::Perform(CookingData& data)
BUILD_STEP_CANCEL_CHECK;
// Save assets cache
if (AssetsCache::Save(data.OutputPath / TEXT("Content/AssetsCache.dat"), AssetsRegistry, AssetPathsMapping, AssetsCacheFlags::RelativePaths))
if (AssetsCache::Save(data.DataOutputPath / TEXT("Content/AssetsCache.dat"), AssetsRegistry, AssetPathsMapping, AssetsCacheFlags::RelativePaths))
{
data.Error(TEXT("Failed to create assets registry."));
return true;
@@ -49,6 +49,8 @@ public:
/// The list of files on which this entry depends on. Cached date is the last edit time used to discard cache result on modification.
/// </summary>
FileDependenciesList FileDependencies;
bool IsValid(bool withDependencies = false);
};
/// <summary>
@@ -93,6 +95,7 @@ public:
{
bool ShadersNoOptimize;
bool ShadersGenerateDebugData;
Guid StreamingSettingsAssetId;
} Global;
} Settings;
@@ -134,6 +137,11 @@ public:
/// </summary>
void InvalidateShaders();
/// <summary>
/// Removes all cached entries for assets that contain a texture. This forces rebuild for them.
/// </summary>
void InvalidateTextures();
/// <summary>
/// Loads the cache for the given cooking data.
/// </summary>
@@ -7,6 +7,7 @@
#include "Engine/Core/Config/GameSettings.h"
#include "Engine/Renderer/ReflectionsPass.h"
#include "Engine/Renderer/AntiAliasing/SMAA.h"
#include "Engine/Engine/Globals.h"
bool DeployDataStep::Perform(CookingData& data)
{
@@ -15,7 +16,7 @@ bool DeployDataStep::Perform(CookingData& data)
const auto gameSettings = GameSettings::Get();
// Setup output folders and copy required data
const auto contentDir = data.OutputPath / TEXT("Content");
const auto contentDir = data.DataOutputPath / TEXT("Content");
if (FileSystem::DirectoryExists(contentDir))
{
// Remove old content files
@@ -26,7 +27,7 @@ bool DeployDataStep::Perform(CookingData& data)
}
FileSystem::CreateDirectory(contentDir);
const auto srcMono = depsRoot / TEXT("Mono");
const auto dstMono = data.OutputPath / TEXT("Mono");
const auto dstMono = data.DataOutputPath / TEXT("Mono");
if (!FileSystem::DirectoryExists(dstMono))
{
if (!FileSystem::DirectoryExists(srcMono))
@@ -100,6 +101,10 @@ bool DeployDataStep::Perform(CookingData& data)
if (data.Configuration != BuildConfiguration::Release)
data.AddRootEngineAsset(TEXT("Editor/Fonts/Roboto-Regular"));
// Register custom assets (eg. plugins)
data.StepProgress(TEXT("Deploying custom data"), 30);
GameCooker::OnCollectAssets(data.RootAssets);
// Register game assets
data.StepProgress(TEXT("Deploying game data"), 50);
auto& buildSettings = *BuildSettings::Get();
@@ -24,7 +24,7 @@ bool PrecompileAssembliesStep::Perform(CookingData& data)
data.Tools->OnConfigureAOT(data, config);
// Prepare output directory
config.AotCachePath = data.OutputPath / TEXT("Mono/lib/mono/aot-cache");
config.AotCachePath = data.DataOutputPath / TEXT("Mono/lib/mono/aot-cache");
switch (data.Tools->GetArchitecture())
{
case ArchitectureType::x86:
@@ -52,9 +52,9 @@ bool PrecompileAssembliesStep::Perform(CookingData& data)
FileSystem::DirectoryGetFiles(config.Assemblies, dir, TEXT("*.dll"), DirectorySearchOption::TopDirectoryOnly);
for (auto& binaryModule : data.BinaryModules)
if (binaryModule.ManagedPath.HasChars())
config.Assemblies.Add(data.OutputPath / binaryModule.ManagedPath);
config.Assemblies.Add(data.ManagedCodeOutputPath / binaryModule.ManagedPath);
// TODO: move AOT to Flax.Build and perform it on all C# assemblies used in target build
config.Assemblies.Add(data.OutputPath / TEXT("Newtonsoft.Json.dll"));
config.Assemblies.Add(data.ManagedCodeOutputPath / TEXT("Newtonsoft.Json.dll"));
// Perform AOT for the assemblies
for (int32 i = 0; i < config.Assemblies.Count(); i++)
+16 -12
View File
@@ -11,21 +11,25 @@ bool ValidateStep::Perform(CookingData& data)
data.StepProgress(TEXT("Performing validation"), 0);
// Ensure output and cache directories exist
if (!FileSystem::DirectoryExists(data.OutputPath))
if (!FileSystem::DirectoryExists(data.NativeCodeOutputPath) && FileSystem::CreateDirectory(data.NativeCodeOutputPath))
{
if (FileSystem::CreateDirectory(data.OutputPath))
{
data.Error(TEXT("Failed to create build output directory."));
return true;
}
data.Error(TEXT("Failed to create build output directory."));
return true;
}
if (!FileSystem::DirectoryExists(data.CacheDirectory))
if (!FileSystem::DirectoryExists(data.ManagedCodeOutputPath) && FileSystem::CreateDirectory(data.ManagedCodeOutputPath))
{
if (FileSystem::CreateDirectory(data.CacheDirectory))
{
data.Error(TEXT("Failed to create build cache directory."));
return true;
}
data.Error(TEXT("Failed to create build output directory."));
return true;
}
if (!FileSystem::DirectoryExists(data.DataOutputPath) && FileSystem::CreateDirectory(data.DataOutputPath))
{
data.Error(TEXT("Failed to create build output directory."));
return true;
}
if (!FileSystem::DirectoryExists(data.CacheDirectory) && FileSystem::CreateDirectory(data.CacheDirectory))
{
data.Error(TEXT("Failed to create build cache directory."));
return true;
}
#if OFFICIAL_BUILD
+16 -4
View File
@@ -142,6 +142,10 @@ namespace FlaxEditor.CustomEditors
/// </summary>
public void RebuildLayout()
{
// Skip rebuilding during init
if (CurrentCustomEditor == this)
return;
// Special case for root objects to run normal layout build
if (_presenter.Selection == Values)
{
@@ -250,6 +254,15 @@ namespace FlaxEditor.CustomEditors
_children[i].RefreshInternal();
}
/// <summary>
/// Synchronizes the value of the <see cref="Values"/> container. Called during Refresh to flush property after editing it in UI.
/// </summary>
/// <param name="value">The value to set.</param>
protected virtual void SynchronizeValue(object value)
{
_values.Set(_parent.Values, value);
}
internal virtual void RefreshInternal()
{
if (_values == null)
@@ -264,7 +277,7 @@ namespace FlaxEditor.CustomEditors
_valueToSet = null;
// Assign value
_values.Set(_parent.Values, val);
SynchronizeValue(val);
// Propagate values up (eg. when member of structure gets modified, also structure should be updated as a part of the other object)
var obj = _parent;
@@ -780,12 +793,11 @@ namespace FlaxEditor.CustomEditors
/// <returns>True if allow to handle this event, otherwise false.</returns>
protected virtual bool OnDirty(CustomEditor editor, object value, object token = null)
{
ParentEditor.OnDirty(editor, value, token);
return true;
return ParentEditor.OnDirty(editor, value, token);
}
/// <summary>
/// Called when custom editor sets the value to the object and resets the dirty state. Can be sued to perform custom work after editing the target object.
/// Called when custom editor sets the value to the object and resets the dirty state. Can be used to perform custom work after editing the target object.
/// </summary>
protected virtual void OnUnDirty()
{
@@ -139,7 +139,7 @@ namespace FlaxEditor.CustomEditors
/// <inheritdoc />
protected override void OnModified()
{
Presenter.Modified?.Invoke();
Presenter.OnModified();
base.OnModified();
}
@@ -354,6 +354,14 @@ namespace FlaxEditor.CustomEditors
ExpandGroups(this, false);
}
/// <summary>
/// Invokes <see cref="Modified"/> event.
/// </summary>
public void OnModified()
{
Modified?.Invoke();
}
/// <summary>
/// Called when selection gets changed.
/// </summary>

Some files were not shown because too many files have changed in this diff Show More