Jump to content

Josh

Staff
  • Posts

    23,339
  • Joined

  • Last visited

Community Answers

  1. Josh's post in Face Offset for brush does not work correctly (U,V) was marked as the answer   
    This change will be in the next build.
  2. Josh's post in My ball doesn't move in its own direction was marked as the answer   
    You are correct. This will be fixed in the next build that is uploaded.
  3. Josh's post in Undo doesn't work for applying materials was marked as the answer   
    Fixed in incoming update...
  4. Josh's post in Problemm with the creation for biger nav meshes was marked as the answer   
    In the process of explaining the problem I think I solved it. Update is incoming later today.
  5. Josh's post in When restarting Ultra Engine values that are true are "false" was marked as the answer   
    This has been fixed in 0.9.2
  6. Josh's post in REndered viewport crashes and needs to be refreshed was marked as the answer   
    I think this is a repeat of this, which is solved
     
  7. Josh's post in Editor Render View Turns White in 3D Perspective was marked as the answer   
    Fixed
  8. Josh's post in After recreation with clearing a widgets thats stores in a vector of custom widgets are now visible was marked as the answer   
    I believe this is fixed. Uploading now...
  9. Josh's post in How to create an UI was marked as the answer   
    You can set the background / root panel's background color to 0,0,0,0 to make is see-through. Then create a smaller panel on it for your visible GUI area.
  10. Josh's post in C++ project won't start was marked as the answer   
    When the project was created, the editor should have asked to create an environment variable. It will create a system environment variable like this, which tells the compiler where to find required files:

  11. Josh's post in Is this engine is built around ECS or OOP? was marked as the answer   
    The short answer to your question is yes. 
    The engine is design as an object-oriented C++ framework. If you wish to use it, you have full control over the program at the very base level. This is also nice for documentation because it allows us to demonstrate how a command works in a very simple program:
    #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { //Get the displays auto displays = GetDisplays(); //Create window auto window = CreateWindow("Ultra Engine", 0, 0, 800, 600, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create world auto world = CreateWorld(); //Create framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); //Main loop while (not window->Closed() and not window->KeyDown(KEY_ESCAPE)) { world->Update(); world->Render(framebuffer); } return 0; } An entity component system is also available, which is particularly useful for setting up object properties in the editor and then accessing them in component code in your game:
    https://www.ultraengine.com/learn/Component
    Someone who is making something like a space game with all procedurally placed content would not need the editor, and might not need the ECS at all. Someone else who is using the editor a lot for level design will probably want to rely on the ECS in order to set up properties in the editor and access them in the game.
    The ECS is also good for user-created modular code that can be reused in many projects.
    You don't have to choose between one or the other. You can use the ECS and you still have access to the main function in case you want to do something special there. I like to use the OOP approach for documentation examples because the user can just copy and paste one block of code into any project, without a lot of complicated setup, but the functionality demonstrated can be implemented in any entity component.
  12. Josh's post in Playing sounds simultaneously causes a crash when last sounds stop playing was marked as the answer   
    Thank you, I found the cause. I think I will wait until Tuesday to upload any more changes.

  13. Josh's post in Adding NavMesh via editor and in code causes it not to show up in the scene was marked as the answer   
    It looks like the error is only in the editor, and not in the engine library itself. I updated the editor and this example works:
    start.zip
    #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { auto cl = ParseCommandLine(argc, argv); //Load FreeImage plugin (optional) auto fiplugin = LoadPlugin("Plugins/FITextureLoader"); //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280 * displays[0]->scale, 720 * displays[0]->scale, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a world auto world = CreateWorld(); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Load the map WString mapname = "Maps/start.ultra"; auto scene = LoadMap(world, mapname); auto navmesh = scene->navmeshes[0]; navmesh->SetDebugging(true); auto agent = CreateNavAgent(navmesh); auto player = CreateBox(world); player->SetColor(0, 1, 0); player->Attach(agent); auto camera = CreateCamera(world); camera->SetPosition(0, 1, -4); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { if (window->KeyHit(KEY_SPACE)) agent->Navigate(1, 0, 0); world->Update(); world->Render(framebuffer); } return 0; }  
  14. Josh's post in this nullptr exception was marked as the answer   
    In MouseMovementController.cpp, GetComponent is returning null:
    else if (!pick.entity->tags.empty()) { for (auto tag : pick.entity->tags) { if (tag == "gather_water_task") { auto task = entity->GetComponent<GatherWaterTask>(); task->OnTaskStart(entity, pick.entity);// set a breakpoint here and look at the task variable break; } } }  
  15. Josh's post in Adding terrain and then sculpting crashed the editor to Windows was marked as the answer   
    Error code -4 is VK_ERROR_DEVICE_LOST. Please see this solution:
     
  16. Josh's post in After changing cursor it just dissapear was marked as the answer   
    Are you sure cursor isn't NULL? AppDir() will return your project's folder, not the editor folder.
  17. Josh's post in error in test code>? sample terrain. says two many arguments fails in vs22. was marked as the answer   
    Thanks for reporting this. I have fixed the code example here:
    https://github.com/UltraEngine/Documentation/blob/master/CPP/Terrain_GetSlope.md
    It will take a few hours for the cached page on our site to refresh.
  18. Josh's post in AppPath() does the / and \ format wrongly was marked as the answer   
    Ultra uses backslashes in file names, for future consistency with Linux and Mac, and because it is easier to type "/" then to always remember to use a double forward slash in your code "\\". This normally works with no issues, but can cause a problem with some Win32 API commands, so you can just switch it to a Windows path like so:
    s = s.Replace("/", "\\")
    The Ultra API commands will treat back and forward slashes the same, so it's okay to mix them and it only matters for aesthetics.
  19. Josh's post in Face Edit Mode doesn't work anymore (again). was marked as the answer   
    I believe this is fixed. It had to do with my changes to the brush picking routine:
    Update is currently on standalone build, I am compiling for Steam now...
  20. Josh's post in When using ActiveWindow(), if you are out of focus from the Ultra Engine window, it will error was marked as the answer   
    In your update function, you need to not execute that code if ActiveWindow returns nil. Something like this will work:
    function Test:Update() local win = ActiveWindow() if win == nil then return end ---rest of your function here... end  
  21. Josh's post in How to hook into the OpenFile menu and get the associated file path? was marked as the answer   
    Check for this:
    EmitEvent(EVENT_OPENASSET, Self(), 0, 0, 0, 0, 0, filepath->package, filepath->path); EVENT_OPENASSET is not currently exposed, but it equals 11011.
    Self() is the asset browser object, but there's only one of those so you can just specify nil for the source in ListenEvent().
  22. Josh's post in Program Crashes when creating CSG blocks was marked as the answer   
    Fixed in build 333+. Standalone is updated now.
  23. Josh's post in Software Download was marked as the answer   
    I will search for this today...
  24. Josh's post in Component of new entity that was created by entity->Instantiate() has a pointer to original entity was marked as the answer   
    Thanks, that was an easy fix. I'll have an update up later today.
  25. Josh's post in Wrong depth render with alphamask was marked as the answer   
    Ultra can handle multiple layers of transparency, each with lighting, because it uses a type of forward renderer. In order to allow the engine to sort the surfaces back to front, each surface should be a separate model or limb in a model.
×
×
  • Create New...