Code Monkey home page Code Monkey logo

flaxengine's Introduction

Flax Engine

Flax Engine is a high quality modern 3D game engine written in C++ and C#. From stunning graphics to powerful scripts, it's designed for fast workflow with many ready-to-use features waiting for you right now. To learn more see the website (www.flaxengine.com).

This repository contains full source code of the Flax Engine (excluding NDA-protected platforms support). Anyone is welcome to contribute or use the modified source in Flax-based games.

Development

Screenshots

pbr-rendering rendering performance

Getting started

Follow the instructions below to compile and run the engine from source.

Windows

  • Install Visual Studio 2022 or newer
  • Install Windows 8.1 SDK or newer (via Visual Studio Installer)
  • Install Microsoft Visual C++ 2015 v140 toolset or newer (via Visual Studio Installer)
  • Install .NET 8 SDK for Windows x64 (via Visual Studio Installer or from web)
  • Install Git with LFS
  • Clone repo (with LFS)
  • Run GenerateProjectFiles.bat
  • Open Flax.sln and set solution configuration to Editor.Development and solution platform to Win64
  • Set Flax (C++) or FlaxEngine (C#) as startup project
  • Compile Flax project (hit F7 or CTRL+Shift+B)
  • Optionally set Debug Type to Managed Only (.NET Core) to debug C#-only, or Mixed (.NET Core) to debug both C++ and C#
  • Run Flax (hit F5 key)

Linux

  • Install Visual Studio Code
  • Install .NET 8 SDK (https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
    • Ubuntu: sudo apt install dotnet-sdk-8.0
  • Install Vulkan SDK (https://vulkan.lunarg.com/)
    • Ubuntu: sudo apt install vulkan-sdk
    • Arch: sudo pacman -S spirv-tools vulkan-headers vulkan-tools vulkan-validation-layers
  • Install Git with LFS
    • Ubuntu: sudo apt-get install git git-lfs
    • Arch: sudo pacman -S git git-lfs
    • git-lfs install
  • Install the required packages:
    • Ubuntu: sudo apt-get install libx11-dev libxcursor-dev libxinerama-dev zlib1g-dev
    • Arch: sudo pacman -S base-devel libx11 libxcursor libxinerama zlib
  • Install Clang compiler (version 6 or later):
    • Ubuntu: sudo apt-get install clang lldb lld
    • Arch: sudo pacman -S clang lldb lld
  • Clone the repository (with LFS)
  • Run ./GenerateProjectFiles.sh
  • Open workspace with Visual Code
  • Build and run (configuration and task named Flax|Editor.Linux.Development|x64)

Mac

Troubleshooting

  • Could not execute because the specified command or file was not found.

Restart PC - ensure DotNet is added to PATH for command line tools execution.

  • Microsoft.NET.TargetFrameworkInference.targets(141,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 5.0 or lower, or use a version of the .NET SDK that supports .NET 8.0

Use Visual Studio 2022, older versions are not supported by .NET SDK 8.

  • Building for Windows without Vulkan rendering backend (Vulkan SDK is missing)

Install the Vulkan SDK then set an environment variable to provide the path to the SDK prior to running GenerateProjectFiles.bat: set VULKAN_SDK=%sdk_path%.

  • The NuGetSdkResolver did not resolve this SDK

Install .NET SDK, NuGet package manager and NuGet targets and build tasks in Visual Studio components.

Workspace directory

  • Binaries/ - executable files
    • Editor/ - Flax Editor binaries
    • Tools/ - tools binaries
  • Cache/ - local data cache folder used by the engine and tools
    • Intermediate/ - intermediate files and cache for engine build
      • ProjectName/ - per-project build cache data
      • Deps/ - Flax.Build dependencies building cache
    • Projects/ - project files location
  • Content/ - assets and binary files used by the engine and editor
  • Development/ - engine development files
    • Scripts/ - utility scripts
  • Source/ - source code location
    • Editor/ - Flax Editor source code
    • Engine/ - Flax Engine source code
    • Platforms/ - per-platform sources and dependency files
      • DotNet/ - C# dependencies
      • Editor/ - Flax Editor binaries
      • PlatformName/ - per-platform files
        • Binaries/ - per-platform binaries
          • Game/ - Flax Game binaries
          • ThirdParty/ - prebuilt 3rd Party binaries
    • Shaders/ - shaders source code
    • ThirdParty/ - 3rd Party source code
    • Tools/ - development tools source code

Licensing and Contributions

Using Flax source code is strictly governed by the Flax Engine End User License Agreement. If you don't agree to those terms, as amended from time to time, you are not permitted to access or use Flax Engine.

We welcome any contributions to Flax Engine development through pull requests on GitHub. Most of our active development is in the master branch, so we prefer to take pull requests there (particularly for new features). We try to make sure that all new code adheres to the Flax coding standards. All contributions are governed by the terms of the EULA.

flaxengine's People

Contributors

andrejstojkovic avatar chikinsupu avatar crawcik avatar envision3d avatar erdroy avatar goalitium avatar honzapatcz avatar hydrogenc avatar iainmckay avatar jb-perrier avatar mafiesto4 avatar menotdan avatar minebill avatar nothingtvatyt avatar plemsoft avatar precisionrender avatar rkrahn avatar ruanlucasgd avatar scottlongley avatar solnem avatar stefnotch avatar swiggies avatar thallard avatar tryibion avatar vizepi avatar vnncc avatar w2wizard avatar wackoisgod avatar withaust avatar zbyl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flaxengine's Issues

Per Monitor DPI Awareness

Issue description:
Flax is currently DPI aware, however, it is possible that different monitors have a different DPI.

To properly and reasonably elegantly implement this, I suppose that we'll need a DPI scale property for each window. And the C++ side has to take care of correctly updating it.

Steps to reproduce:
You need Windows 10 and two monitors

  1. Change the scaling on both monitors
  2. Open Flax
  3. Move the window from one monitor to the other
  4. Maximize the window

Flax version:
Flax 1.0

Handle missing texture at import

Hi,
if I import a FBX model, that has a reference to a not existing texture (a bought model), it will not create the material at all.
I think, it would be better, if the material would be created with appropriate settings but with a warning, that the texture could not be found.

Regards
abgenullt

FlaxEditor keeps crashing after changing code in script with base class "GenericEditor"

Issue description:
FlaxEditor keeps crashing after changing the class with base class GenericEditor
It only occurs when the script is seen on screen and "editor script" has been changed
It giving this error: "Unhandled exception: EXCEPTION_ACCESS_VIOLATION" with address always diffrent

Steps to reproduce:

  1. Create empty class with base class Script
  2. Create empty class with base class GenericEditor and add CustomEditor attribute to it
  3. In initialize method add button to script
  4. Compile script
  5. Change something in script like button text color
  6. Compile script
  7. CRASH!

Screen:
obraz

Flax version:
1.0

Cannot generate project under Windows 10 / VS 2019

Issue description:
Cannot generate Visual Studio Solution

Console output:

Generating Flax Engine project files...

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targe
ts(2123,5): warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load f
ile or assembly 'Ionic.Zip.Reduced.dll' or one of its dependencies. An attempt was made to load a program with an incor
rect format. [C:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targe
ts(2123,5): warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load f
ile or assembly 'Microsoft.VisualStudio.Setup.Configuration.Interop.dll' or one of its dependencies. An attempt was mad
e to load a program with an incorrect format. [C:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targe
ts(2123,5): warning MSB3246: Resolved file has a bad image, no metadata, or is otherwise inaccessible. Could not load f
ile or assembly 'Newtonsoft.Json.dll' or one of its dependencies. An attempt was made to load a program with an incorre
ct format. [C:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(10,7): error CS0246: The type or name
space name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine
-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Deploy\Deployment.Editor.cs(8,7): error CS0246: The type or namespace name
'Ionic' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine-master\Source
Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Deploy\Deployment.Editor.cs(9,7): error CS0246: The type or namespace name
'Ionic' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine-master\Source
Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Deploy\Deployment.Platforms.cs(7,7): error CS0246: The type or namespace n
ame 'Ionic' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine-master\Sour
ce\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Deploy\Deployment.Platforms.cs(8,7): error CS0246: The type or namespace n
ame 'Ionic' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine-master\Sour
ce\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Projects\VisualStudio\VisualStudioInstance.cs(8,17): error CS0234: The typ
e or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)
[C:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\ProjectInfo.cs(7,7): error CS0246: The type or namespace name 'Newtonsoft'
could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEngine-master\Source\Tools\Fl
ax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(43,14): error CS0246: The type or nam
espace name 'JsonPropertyAttribute' could not be found (are you missing a using directive or an assembly reference?) [C
:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(43,14): error CS0246: The type or nam
espace name 'JsonProperty' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEng
ine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(49,14): error CS0246: The type or nam
espace name 'JsonPropertyAttribute' could not be found (are you missing a using directive or an assembly reference?) [C
:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(49,14): error CS0246: The type or nam
espace name 'JsonProperty' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEng
ine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(58,14): error CS0246: The type or nam
espace name 'JsonPropertyAttribute' could not be found (are you missing a using directive or an assembly reference?) [C
:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(58,14): error CS0246: The type or nam
espace name 'JsonProperty' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEng
ine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(64,14): error CS0246: The type or nam
espace name 'JsonPropertyAttribute' could not be found (are you missing a using directive or an assembly reference?) [C
:\FlaxEngine-master\Source\Tools\Flax.Build\Flax.Build.csproj]
C:\FlaxEngine-master\Source\Tools\Flax.Build\Build\NativeCpp\Builder.NativeCpp.cs(64,14): error CS0246: The type or nam
espace name 'JsonProperty' could not be found (are you missing a using directive or an assembly reference?) [C:\FlaxEng
ine-master\Source\Tools\Flax.Build\Flax.Build.csproj]

CallBuildTool ERROR: Failed to compile Flax.Build project.

Flax.Build tool failed.

Steps to reproduce:
Just start GenerateProjectFiles.bat

Flax version:
master branch

Build errors on latest VulkanSDK

Issue description:
Decided to make a ticket for the issue for better tracking, When building with vulkan SDK version 1.2.154.1 i get the following errors

error

Flax version:
1.0 source

Win32 in solution configuration

Issue description:
It's possible to select Win32 from the solution configuration. This causes errors to pop up everywhere.

e.g. BasicTemplate
image

Is Win32 intentionally left in the solution configuration? Would it be better to change Flax.Build so that it's excluded? (And under which circumstances?)

Steps to reproduce:

  1. Open the basic template Flax Sample in Visual Studio
  2. Open a random script
  3. Switch from Win64 or Any CPU to Win32
  4. Wait a bit

Minimal reproduction project:
Flax Samples

Flax version:
Flax 1.0

ScriptingObject::CreateManagedInternal() tries to get Managed class name when there is no managed class assigned

Issue description:
ScriptingObject::CreateManagedInternal() checks for existence of Managed counterpart for given scripting object, if none is found it tries to print Warning message... here is the problem, it uses ToString() which gets it's name from Managed Class.
This results in Access Violation exception

Steps to reproduce:

  • Create Visual Script
  • Add GetKeyboard node
  • Connect it to some node which will use it
  • Hit play

Minimal reproduction project:

  • none, see images
    image
    image

Flax version:
1.0 (Source build Commit #96457a0adc62bb26725ca1b6250b5c29b221f68d)

Generate Project file Build Errors VS2019

Issue description:

  1. MSBuild : Windows/.NET/....
  2. Visual Studio : C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\MSBuild\Current\Bin Visual studio MSBuild PATH
    Issue : Get a 4.0.003 MSBuild path(old version)
    Not VS 2019 MSBuild path

[Issue Image]Check Out

Issue On Disrord #help
(https://discord.com/channels/437989205315158016/438021321134309377/790805024074498049)

Yes i try latest commit repo.

Steps to reproduce:

Minimal reproduction project:
.,

Flax version:
1.0

Build Source GenerateProjectFiles Error

Issue description:
Don't generate Project files
OS = Windows x64

Issue :
Generating Flax Engine project files...

CallBuildTool ERROR: NuGet Package Manager is requried to be installed to use "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe". Please run the Visual Studio Installer and add it from the individual components list (in the 'Code Tools' category).

Flax.Build tool failed.
Screenshot 2020-12-20 083151
Screenshot 2020-12-20 092847

Visual Studio 16.9.0 Latest
Nuget Package Manager Installed Already

Flax version:
1.0

Thai Text issues

Issue description:
Flax doesn't seem to support Thai (or any other non-Latin languages, I assume).

The main problem is the output in the viewport are not correctly shaped. Some glyphs are not correctly placed. This is usally caused by lacking of open type support. AFAIK only a handful of game engine do support this, including Unreal Engine 4, and probably Godot.

From skimming through the code I don't find any open type shaping function, so I assume that text shaping support is currently zero. Probably only truetype layout is supported at the moment.

Also I found that after pressing play and pause, the text somehow changed into something else entirely. Possibly access violation ?

Last but not least, When entering in the GUI textbox, all glyph are displayed as a placeholder (a box with an X inside).

Steps to reproduce:
I create a TextRender object, assign a font into it, input some Thai text ( the phrase "ตะปุ่มตะป่ำ" is used as it is short yet demonstrate this issue very well), and then flip the object upside down to get it right side up.

image

After pressing Play, the input text somehow changed and no longer the original text.

image

Then press the pause button, the input text get changed one more time.

image

Minimal reproduction project:

MyProject.zip

Flax version:

1.0

Are there any plans on serializing type info?

It seems Flax is already more capable in most ways when it comes to serialization compared to Unity - notably properties, most c# objects, etc. However, I'm coming from using Unity w/ Odin Inspector, and one of the strengths of that is being able to serialize type info. As far as I can tell peeking in a prefab, it doesn't do this. Is there any consideration on implementing this?

Feature Proposal : Git integration

Feature :
Git integration to directly keep track of changes in the editor.
Assets would have differents states like Uptodate, Modified, Deleted.
At first the editor would not support the whole git workflow ( just the assets states ), in order to implement other functionnality ( like pull, push , commit, branch ) one after one ( mid-term ).

Lib to use :
Since the git integration is only on the editor part, we can use libgit2sharp.

Feel free to post your opinion here below.

Duplicate Folder Creation

Issue description:

Creating a new folder in the content browser window results in a second folder being created with a "." appended. The folder only shows up in the content window and not in explorer. Creating a folder in explorer results in no duplicate "." folder.

  • Created in content window:
    image
  • Created in explorer:
    image

Steps to reproduce:

  1. Pull latest and compile engine as of right now (last commit 2c6a70b)
  2. Create or open project
  3. Create a new folder using the content browser right click menu

Minimal reproduction project:

  1. Any project using the current build (last 2c6a70b)

Flax version:

1.0.6214

Add support for double precision floats

Double-precision floats are necessary for games that take place on extremely large scales, such as in the vastness of space. There are workarounds, but they all come with issues. If Flax Engine wishes to support extremely large scales, it would make sense to add support for double precision floats.

For further justification on this feature, please see this proposal I made for Godot: godotengine/godot-proposals#892

As for the implementation, it is possible to support compiling with both single and double precision floats at the same time, if done correctly. This can be handled in C# via preprocessor directives by defining an alias, like this:

#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif

The downside is that this alias definition must be repeated in every C# file. For a more detailed example, see this file in Godot: https://github.com/godotengine/godot/blob/master/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs

Cannot Import Blender Model

Issue description:
Tried to import a Blender model to the engine. The dialog disappears after selecting "Import" but the model doesn't appear in the engine for use.

Video: https://youtu.be/f-ioTsAjq5k

Steps to reproduce:

  1. Select the Import function.
  2. Select a Blender file.
  3. Using the default settings, hit the Import button.

Minimal reproduction project:
Used the default starting template.

Flax version:
1.0

Window and Help menu items are unclickable.

Issue description:

Window and help menus in the tool menu become unclickable.

Steps to reproduce:

Just open the editor and try to click help or window.

This seems to be intermittent.

Build on Linux error

Issue description:

After following the steps in the readme, I get this error:

$ sudo bash GenerateProjectFiles.sh
Generating Flax Engine project files...
Missing Android SDK. Cannot build for Android platform.
Missing Linux Toolchain. Cannot build for Linux platform.
Exception: Sequence contains no matching element
Stack trace:
  at System.Linq.Enumerable.First[TSource] (System.Collections.Generic.IEnumerable`1[T] source, System.Func`2[T,TResult] predicate) [0x00011] in <c5bd4c865d5d48d3b3ebe4d522fd6bd7>:0 
  at Flax.Build.Projects.VisualStudioCode.VisualStudioCodeProjectGenerator.GenerateSolution (Flax.Build.Projects.Solution solution) [0x007e5] in <8b8060a6b437416fa560181a47d7f934>:0 
  at Flax.Build.Builder.GenerateProjects () [0x01157] in <8b8060a6b437416fa560181a47d7f934>:0 
  at Flax.Build.Program.Main () [0x00236] in <8b8060a6b437416fa560181a47d7f934>:0 

Steps to reproduce:
Follow steps in the readme.

Flax version:
Latest from GitHub, I'm using Ubuntu 20.10

Nested Editor Rendering Issue

Issue description:

I tried out nested List editors List<List<string>> in the process of trying to improve the current Dictionary editors and stumbled upon a bug where a duplicated label will jump into the child.

Steps to reproduce:

  1. Add a script with a nested list
[ExecuteInEditMode]
public class Script0 : Script
{
	[NoSerialize]
	public List<List<string>> AList = new List<List<string>>();

	private void Start()
	{
		AList.Add(new List<string> { "Flux", "Bear", "Qux" });
		AList.Add(new List<string> { "Press on", "my add", "button" });
	}
}
  1. Click on the add button of a child

2019-05-31_22-43-20

Minimal reproduction project:

NestedEditors.zip

Flax version:

0.4.6181

Cannot put UICanvas from toolbox on Scene or create it in a script

Issue description:

  • Cannot put UI Canvas in scene (dragged from Toolbox)
  • Instantiate this in script

Steps to reproduce:
Just try drag and drop it on scene

Solution can be adding constructor to UICanvas (maybe)

Error

Stack strace:
  at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) [0x0007b] in <ccba8f4931be433d979e22082f9d6862>:0 
  at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean wrapExceptions, System.Boolean skipCheckThis, System.Boolean fillCache, System.Threading.StackCrawlMark& stackMark) [0x00009] in <ccba8f4931be433d979e22082f9d6862>:0 
  at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Boolean wrapExceptions, System.Threading.StackCrawlMark& stackMark) [0x00027] in <ccba8f4931be433d979e22082f9d6862>:0 
  at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic, System.Boolean wrapExceptions) [0x0002c] in <ccba8f4931be433d979e22082f9d6862>:0 
  at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in <ccba8f4931be433d979e22082f9d6862>:0 
  at System.Activator.CreateInstance (System.Type type) [0x00000] in <ccba8f4931be433d979e22082f9d6862>:0 
  at FlaxEditor.Scripting.ScriptType.CreateInstance () [0x0000e] in C:\Flax\FlaxEngine\Source\Editor\Scripting\ScriptType.cs:818 
  at FlaxEditor.SceneGraph.GUI.ActorTreeNode.OnDragDropHeader (FlaxEngine.GUI.DragData data) [0x00665] in C:\Flax\FlaxEngine\Source\Editor\SceneGraph\GUI\ActorTreeNode.cs:680 
  at FlaxEditor.GUI.Tree.TreeNode.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x0001c] in C:\Flax\FlaxEngine\Source\Editor\GUI\Tree\TreeNode.cs:979 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEditor.GUI.Tree.TreeNode.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00000] in C:\Flax\FlaxEngine\Source\Editor\GUI\Tree\TreeNode.cs:969 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.GUI.ContainerControl.OnDragDrop (FlaxEngine.Vector2& location, FlaxEngine.GUI.DragData data) [0x00047] in C:\Flax\FlaxEngine\Source\Engine\UI\GUI\ContainerControl.cs:1134 
  at FlaxEngine.Window.Internal_OnDragDrop (FlaxEngine.Vector2& mousePos, System.Boolean isText, System.String[] data) [0x00027] in C:\Flax\FlaxEngine\Source\Engine\Platform\Window.cs:382

Flax version:
1.0

Is it possible to integrate FlaxEngine into juce?

First , thank you for the amazing project !

I want to integrate flaxEngine into juce : https://github.com/juce-framework/JUCE

It has an opengl demo https://github.com/juce-framework/JUCE/blob/master/examples/GUI/OpenGLAppDemo.h
When you inherit OpenglAppComponent like at line 57, then you can draw your own thing using opengl.
(as at line 100
https://github.com/juce-framework/JUCE/blob/7c797c8105c2d41872e6e8d08972624f0afd335d/examples/GUI/OpenGLAppDemo.h#L100)

Thank you for you time again !

Editor 2D support

Actually 2D game development is not the main goal of FlaxEditor, but with some effort we can greatly improve the "Flax"ibility of the editor in this direction.

For now, the easiest way to create 2D stuff is to use the UI system, but it's like driving a bicycle when you have a car.

The idea would be to adapt the editor, so it can setup a 2D environnement for us :

  • Face the camera to the XY plane.
  • Handling user input correctly for a 2D world.
  • Rotate the grid gizmo.
  • And so on ...

So i'm asking if 2D support can be at least a mini-feature* of FlaxEditor.

  • not a full stack 2D editor

I can work on my own to implement this feature, in order to not add workload on the existing roadmap.

Copied script reference turns into null

Issue description:

I was playing around with copy-pasting actors and stumbled upon a case where a script reference turns into null.
image

Steps to reproduce:

  1. Attach the script to an actor
  2. Manually set the references in the editor
  3. Duplicate the actor
  4. The reference inside the object will end up being null.
public class SerializePlez : Script
{
    public class HoldsAScriptReference
    {
        public SerializePlez ScriptReference { get; set; }
    }

    public HoldsAScriptReference ReferenceHolder { get; set; } = new HoldsAScriptReference();

    public SerializePlez SelfReference { get; set; }
}

Minimal reproduction project:

Flax version:

New "Json Type" does not detect any acceptable types.

Not sure whats going on here yet. However, I've noticed that the lambda attached to _element.CustomControl.CheckValid in
GenericJsonCreateEntry.Options never gets called.

Steps to reproduce:

  1. Create new project.
  2. Follow instructions here to create custom asset type:
    image
  3. Attempt to create new asset type in content window and acknowledge there is no detected acceptable types:
    image
    image

Flax version:
1.0.6214

Augmented Reality

Can I migrate my unity ARCore project to Flax ?

Is there any planning for ARCore and ARkit support coming to this engine ?

Unable To Create New Assets Without Specifying Extension

Issue description:

Trying to create an asset of any type in the content window results in ignoring the enter key or rejecting the creation if clicked off unless the user specifies some sort of extension.

(I am trying to hit enter in the video on the first asset creation)

Steps to reproduce:

  1. Right click in the content window and try to create any new asset without specifying an extension

Minimal reproduction project:

  1. New or existing project

Flax version:

1.0.6214 (last commit pulled: 8198b73)

2020.12.22-18.16-1.mp4

I shouldn't require android ndk to open a scene.

Issue description:

Trying to open a scene fails if android ndk is not installed.
image

Steps to reproduce:

Create a basic project on a system with no android sdk.

Try to open the default scene for editing.

Minimal reproduction project:

Flax version:

Tooltip Flashing

Issue description:

Hovering over items that provide tooltips results in rapidly flashing tooltips.

Steps to reproduce:

  1. Create/open a project
  2. Find an asset or property that will provide a tooltip
  3. Hover over it

Minimal reproduction project:

  1. Basic scene new project

Flax version:

1.0

Extra info:

  • Using a 4k screen, with windows scaling set to 150%.
  • Maximizing the window fixes the issue with asset tooltips, but property tooltips continue to flash.

Video:
https://youtu.be/8jJ_02enIbs

Location of the new Engine Version is not the same as Launcher location

Issue description:
The location of the new Engine Version is not the same as the Launcher location

Steps to reproduce:

  1. Use Launcher to install at D:/ instead of default C:/
  2. Add new Engine Version
    image
    (should be D:/)

I expect this is true for any other change within the path of the Launcher and result new Engine Version will not use it.

Minimal reproduction project:
None

Flax version:
Any

Clicking back into Flax using sub editor title bar makes window disappear until defualt layout restored

Issue description:

Clicking back into Flax on the title bar (with native windows system enabled) of a sub editor window makes the window disappear and unable to get back to it unless you restore default layout.

Steps to reproduce:

  1. Open or create a project using the native window system
  2. Open a sub editor window (material editor/visual script editor)
  3. Click out of the Flax program
  4. Click back into Flax clicking on the title bar of the editor window

Minimal reproduction project:

  1. Open or create a project
  2. Enable "Use Native Window System"

Flax version:

1.0.6214 (last commit pulled: da389ee)

2020.12.25-14.22-1.mp4

UI Coordinate Spaces

Issue description:
Currently those are the most important methods for tranforming from one coordinate system to another:

  • PointToWindow and PointFromWindow
  • ScreenToClient and ClientToScreen (note: there are two sorta different methods with the same name)
  • PointFromParent and PointToParent

So, we have the following coordinate spaces (also see FlaxEngine/FlaxDocs#26 )

  1. Screen space
  2. Window space, also called client space: Should this one be DPI-adjusted?
  3. Local control space, also called client space. Or just "point".

This feels a bit inconsistent. To keep the number of breaking changes down, I'd suggest renaming the C# ScreenToClient and ClientToScreen to PointToScreen and PointFromScreen.

Furthermore, I suppose window space (C# side) should be DPI-adjusted.

Flax version:
Flax 1.0

Scene navigation issues in the editor viewport

While editing a 4km x 4km test terrain with Flax Engine 1.0.6214, I found that the terrain editing tools were very intuitive, but unfortunately I also experienced a few annoying issues with the viewport navigation itself :

1/ [PROPOSAL] I think it would be of great help when editing a big scene if the viewport navigation behaved a bit more like in Unity, so that the cursor keys move the viewport camera :

  • into the direction you are currently facing (fly mode);
  • with progressive acceleration until reaching some maximum speed after a few seconds;
  • with the possibility to use a higher speed factor using the Control key modifier;
  • with the possibility to move vertically relatively to the direction you are facing with the Shift key modifier (or the PageUp/PageDown keys).

2/ [BUG] the values I set for "Default Movement Speed" and "Default Far Plane" in the "Editor Options > Viewport" panel seem to be completely ignored, so I'm left seeing only a very small part of the terrain, and using a much too slow speed while using the cursor keys or the mouse wheel to navigate the scene.

Quaternion.LookAt(...) Reverse axis

Issue description:
Rotation of my actor got reversed on X axis but working fine on the Z axis.

Steps to reproduce:

var position = _Some target position_
Actor.Rotation = Matrix.RotationQuaternion(Quaternion.LookAt(Actor.Position, position, Vector3.Up));

Workaround:

Vector3 CurrentRotation = new Vector3(-Actor.Position.X, Actor.Position.Y, Actor.Position.Z);
Vector3 TargetRotation = new Vector3(-position.X, position.Y, position.Z);
Actor.Rotation = Matrix.RotationQuaternion(Quaternion.LookAt(CurrentRotation, TargetRotation, Vector3.Up));

Flax version:
Flax engine 1.0.6214

Y Gizmo Rotation Reversed

Issue description:

Manually rotating an actor with the Y gizmo handle is reversed, where X and Z are not.

Steps to reproduce:

  1. Open a project
  2. Grab actor and switch to rotation gizmo
  3. Rotate actor along Y axis using handle

Minimal reproduction project:

  1. New or existing project

Flax version:

1.0.6214 (last commit pulled: 2c6a70b)

2020.12.22-15.53_01.mp4

GenerateProjectFiles.bat failed

Run GenerateProjectFiles.bat failed.
Output after adding echo "MSBUILD_PATH" in CallBuildTool.bat

Generating Flax Engine project files...
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
Missing Android SDK. Cannot build for Android platform.
Missing Linux Toolchain. Cannot build for Linux platform.
Missing MSVC toolset v140 (VS 2015 C++ build tools). Cannot build for Windows platform.
Done!

FlaxEditor doesn't remember which monitor it was on

Issue description:

The editor doesn't remember which monitor it was last used on before closing.

It becomes a bit annoying having to drag the editor window to the primary monitor whenever starting flax.

Objects slide off each other if top weight is heavier than the bottom

When I place two objects on top of each other (Bottom 10kg, top 30kg), they seem to stay put, but as soon as I move the top one so that it is slightly off-center, it just starts sliding around until I make it near the center again.

2020-12-19.18-44-36_Trim.2.mp4

Steps to reproduce:

  1. Create 2 cubes, one on top of the other
  2. Make top cube 30kg, and bottom cube 10kg
  3. Move the top cube off-center and watch it magically slide off

Flax version:
Ver 1.0

Plane uses the negated distance

Issue description:

When creating a new plane new Plane(new Vector3(1, 0, 0), 10);, I'd expect it to be 10 away from the origin in the positive X direction.
However, this is not the case, since SharpDX for some unknown reason assumed a negative distance D.
I'd be willing to go through the entire code and fix this.

The related SharpDX issue can be found at: sharpdx/SharpDX#551
Also relevant: https://code.google.com/archive/p/slimmath/issues/11

Steps to reproduce:

There are many ways to verify this:

> normal = new Vector3(1f, 0f, 0f);
> plane = new Plane(normal, 10f);
> plane
[A:1 B:0 C:0 D:10]
> otherPlane = new Plane(normal * plane.D, normal);
> otherPlane
[A:1 B:0 C:0 D:-10]

The following code creates a plane and a ray, with the same direction. Logically speaking, the ray should intersect the plane. But that's not the case. You need a ray with the opposite direction, because of the negated D.

Plane p = new Plane(new Vector3(1, 0, 0), 10);
// [A:1 B:0 C:0 D:10]
Ray r = new Ray(new Vector3(0, 0, 0), new Vector3(1, 0, 0));
// [Position:X:0.00 Y:0.00 Z:0.00 Direction:X:1.00 Y:0.00 Z:0.00]
> bool b = r.Intersects(ref p);
// false

Minimal reproduction project:

Flax version:

0.6.6191

Foliage is unpaintable on highterrain

Issue description:

Hi! Congratulations on your launch! Foliage is unpaintable on high terrain. For some reason, foliage is not being placed on terrain that has some height. Also, already placed foliage doesn't adapt to terrain changes.

Steps to reproduce:

Bug 1: Foliage is unpaintable on high terrain.

1 - Open any project
2 - Create terrain
3 - create basic foliage brush with any model, say, a capsule
4 - make some hills, slopes, and etc in terrain editor using sculpt tools
5 - paint foliage on highground
6 - foliage will not be placed.

Bug 2: Foliage is unpaintable on high terrain.

1 - Enter sculpt mode in terrain
2 - change height values underneath already placed foliage.
3 - see that foliage won't move, it will remain there.

Minimal reproduction project:
None, reproducible in any empty project.

Flax version:

Flax version 1.0

Potential Visject Improvements

Visject Graph Improvements

Implemented Features (Pull Requests)!

PR FlaxEngine/FlaxAPI#21

  • Arrow Keys & Enter to choose an autocomplete suggestion
  • Alternative names for nodes (* for multiply, + for add, ...)
  • Visject Surface keeps it's focus on node creation
  • Smart:tm: node connecting
  • Newly created nodes get added to the selection
  • Node gets removed from selection when you add some connections

PR FlaxEngine/FlaxAPI#25

PR FlaxEngine/FlaxAPI#29

  • 3 → should suggest float and int
  • true → should suggest bool

PR FlaxEngine/FlaxAPI#39

  • Visject Context Menu sorting (e.g. currently selected box is a blue texture box --> type tex --> first suggestion is Sample Texture
  • Paste() now pastes at the position of the cursor
  • Visject CM pops up on mouse release when creating a new connection
  • Visject CM default position is now offset by 5 pixels. This offset was added in case the user doesn't like the CM and wants to quickly get rid of it by clicking.

PR FlaxEngine/FlaxAPI#78

  • Type to create node at cursor (no right clicking required)
  • Boxes can be selected
  • Typing after selecting a box or output-only node results in the primary menu popping up
  • Newly created nodes are selected by default
  • Current box advances after creating a new node
  • Type // to create a comment above a node
  • Brackets!

PR FlaxEngine/FlaxAPI#83

  • if as alternative title for the branch node

PR FlaxEngine/FlaxAPI#91

  • Highlight connections of currently selected box
  • Prioritize context menu matches that start with the search text

PR #107

  • Format graph/selection (reposition nodes)

PR #279

  • Hover over connections
  • Reroute nodes
  • Arrow key navigation

TODO:

  • .xyzMask XYZ
  • .zyyUnpack Vector3 + Pack Vector3
  • And also .color.x, which selects the color input and generates a pack vector3
  • Select Unpack Material Layer Node → Type .color → selects the color output
    • Add check to make sure that you can't create outputs that start with a number
    • Or maybe use the Visject context menu for this?
  • Format graph part, as specified by comment.
  • Bring brackets into view like the context menu
  • Selecting connections with the keyboard
  • Removing connections with the keyboard
    • If you've opened the context menu and delete whats there, the context menu should close
  • Paste number → Visject Node
    • Or in general, if the text is short/can be parsed
  • Visject formatter special cases
    • Comments
    • Nodes that are attached to the main node should also be able to move up
  • Less random _selectedConnectionIndex order
  • Commentception: Nested comments should work
    • Simple but so helpful: need an option to configure the "z-index" of a comment node in graph editors.
  • Word wrapping for the comment title
  • Local variable nodes
    • Set and get nodes (distinguish from parameters)
    • When selecting, subtly show the implicit connections to the getters/setters

Make it way cooler:

  • Evaluating expressions and turning them into nodes
    • *5 should turn into 2 nodes, a multiply and a float node
    • user could type (3 + Param1) * Param2.xyz + Texture or sth similar and the nodes would pop up
  • Realtime (while you are typing) expression-to-node conversion
  • Multi-Node editing
  • Check out other tools for ideas

Random Ideas

  • Double clicking on a node title to edit it and change it's type

  • Show which connections it will get connected to! (So, evaluate it while the user is typing!)

  • Deleting a node with the backspace

  • Editing the values of the currently selected node with the keyboard

    • e.g. Typing bias and scale (0.1, 5)
    • e.g. Selecting a float and typing (3, 5.7)
    • This idea is the reason why the "click on node and start typing" behavior was changed to "click on box and start typing"
  • Clicking on an input box and then typing stuff like = somenodename.x

  • Accessing nodes that are already on the graph

    • Named nodes
    • e.g. Select a node and type shadow bias strength =
    • Named outputs (Color, Mask, Emissive, Normal, etc.)
  • Navigating between nodes that are on the graph with the keyboard

    • Either by position (up → node above, up-left → node above and to the side)
    • Or using the tree (left → parent, right → first child, down/up → previous/next neighbor)
    • If a box is selected, the behaviour is still undefined
  • Only show things that make sense (when you are at an output box, only show things with an input box)

  • Travel along the nodes after creating a new one (Aka which box should be selected after typing 3 * sin 5) (see What if we reached the end (nextBox == null)? Do we travel along the nodes?)

  • Collection as basic type

    • A for loop outputs a number array (what about the impulses?)
    • A foreach loop outputs a something array
    • A while loop outputs an impulse array
    • Some skeleton animation nodes like the blend poses node can take an array
    • e.g. for i in 0..10 --> vector3 --> spawn 3D model
  • Hover over connection

    • Select connections (mouse click)
    • Right click connections
  • Make errors/warnings more visible

    • Unknown type
    • Attached to a disabled box
  • https://forums.unrealengine.com/unreal-engine/marketplace/120671-blueprint-assist-plugin

  • Alt+Drag to drag a node and all of its inputs ("children")

    • Find children by traversing the tree until the comment ends/a comment starts
  • Switch on bool with condition is hard to find

    • if(3<5)
  • local variables or named nodes

    • don't allocate an actual variable
    • just use it to prevent having to drag nodes from paris to berlin
  • expose programmatic ways to add custom nodes? or redesign it?

  • Smarter node positioning on creation (don't position nodes above each other)

  • Collapsible nodes

  • Collapsible comments

  • Material functions for other visject graphs

  • Nodes that are just a title with an output

  • Smaller boxes, potentially outside of the node

  • Grid and align to grid

  • Subtly draw connections over nodes

  • Connecting sibling nodes when deleting a node

  • Fuzzy search: https://jeremymikkola.com/posts/2019_03_19_rules_for_autocomplete.html

  • organizational ports/nodes that can have more than one target/connection coming off of it

  • Auto formatting ideas

    • Straight connections?
    • W2Wizard's formatting improvements
  • https://www.unrealengine.com/marketplace/en-US/product/79b5dec349994783906e4ccc9191452d?sessionInvalidated=true

  • Arrow key navigation: Select box itself by tapping "up"

  • Check out blender nodes

    • Automatically/use a shortcut to hook up node when dragging it on top of a connection
    • Use a shortcut to move existing connections to the nearest spot when hooking up a new connection
  • directly write code into a node, like the custom HSLS node but well for Scripting

  • Paste limited subset of shader code

  • Copy as HLSL

  • Take a few nodes and collapse them into one

    • And make it possible to expand them again
    • And reasonable collapsings should be suggested automatically
  • ideally you'd be able to select a bunch of boxes, group them into a single box, and then see a source text representation of what they calculate (if it's "simple" in some sense)

  • Zoom out: display smaller version of nodes (only title)

  • Some inputs have "implicit" values, like every texture implicitly has the texture coordinate (right?). That could be made more clear or those implicit inputs could be "quickly expanded/added".

  • Language Server Protocol Client: What if Visject were to generate code in the background, and then ask a real language server questions like "what autocomplete suggestions make sense here" and "what are all the data types" and "are there any errors". Of course that'd have a very real overhead, but depending on how complex the language is, it might have some very neat benefits.

Actor goes sicko mode

Issue description:
Sometimes Actors just... i dunno... "Object reference not set to an instance of an object" and also this:

[ 06:04:15.053 ]: [Error] Check failed!
File: c:\flax\flaxengine\source\engine\level\actor.cpp
Line: 481

Expression: type

Steps to reproduce:
Make actor and use transform or whatever property from it

Minimal reproduction project:
https://github.com/Crawcik/ProjectBurgers

Flax version:
1.0

Small window title bar dragging issue

Issue description:
The dockable windows, like the material windows, are a bit odd when dragging. They sometimes jump to a different position when you drag them.

This happens because in the engine core, the mouse position doesn't get updated as soon as the mouse is above a window title bar.

This piece of code doesn't get triggered. I'd gladly fix it, but am unsure how to best proceed.

case WM_MOUSEMOVE:
{
OnMouseMove(mousePos, window);
result = true;
break;
}

Steps to reproduce:

  1. Open a material window
  2. Move your cursor below the title bar, at the very left of the window
  3. Move your cursor onto the title bar
  4. Move your cursor all the way to the right on the title bar. Make sure to stay on top of the title bar while moving.
  5. Start dragging
  6. The window jumps

image
Basically just follow that mouse path ^ and start dragging

Flax version:
Flax 1.0

Better material organization options for import

Hi,

I often use bought model packs for my projects. So, I need to import a lot of models. At the moment, if I decide to import the materials, a subfolder for each model will be created, even if the models use the same material name (e.g. "MyMaterial").

It would save a lot of work, if you have an option to reuse existing materials by name or set an subfolder to locate the desired materials. So, that you have one subfolder "Materials" for the models you choose. With that, you can create logical groups of models and materials like buildings, vehicles, props etc. I hope, you can understand, what I want to achieve :D

A second improvement would be, to assign a material to multiple models at once.

Regards
abgenullt

Debug stack trace

Proposal description:
Debug Log, Error, Warninge etc. should always have stack trace to find stray logs.

Possible resolutions:

  1. Debug should have full stack trace
  • Very nice/Usefull
  • Verbose
  • Slow
  • Use a a lot of memory
  • Make a bloat in log file
  1. Debug should have name of the namespace::Class.Method + line nubmer or File name + line number
  • Clean
  • Fast
  • Usefull
  • Small size
  • Still might be thought to identify in edge cases
  • Doesn't provide context (sometimes required, but one can add it themselves)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.