Jump to content

Josh

Staff
  • Posts

    24,629
  • Joined

  • Last visited

Everything posted by Josh

  1. That button should not appear at all. Removing...
  2. Josh

    No MacOS version?

    Back in the day, there was one version of Leadwerks that appeared on MacOS. Because Ultra uses our own GUI (seen in UAK) Ultra is in a much better position for Mac support. I ran an earlier build of it on a Mac and MoltenVK worked perfectly. However, multiplatform support takes an enormous amount of time to make builds for. It takes about half a day to compile and update Windows, Linux, and Mac. Since updates are coming almost every day right now, it makes sense to focus on Windows until a final version is established, and then expand to multiplatform.
  3. Josh

    dev branch

    Sorry about that. 0.9.3 will go onto the stable branch in a week, and at the point some people may wish to switch off the beta.
  4. Josh

    Docs

    Entity::EmitSound and Camera::SetRange are missing
  5. Josh

    AmbientNoise

    Plays a sound continuously or intermittently. AmbientNoise.zip
  6. Full update with lots of fixes. See bug reports forum for recent changes.
  7. Undo / redo seems to be working fine for me, on beta branch
  8. Does this adequately answer your question?
  9. Okay, here is a working example that proves the window and framebuffer reference counting are working correctly. Note you must call PeekEvent / WaitEvent or FlushEvents to clear the event queue each frame. It is also necessary to call World::Render if you create a framebuffer, because otherwise the rendering command buffer never gets cleared and it keeps the old framebuffer in memory. #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { int n = 0; //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow(String(n), 0, 0, 800, 600, displays[0], WINDOW_TITLEBAR); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); auto world = CreateWorld(); auto camera = CreateCamera(world); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { while (PeekEvent()) WaitEvent(); if (window->KeyDown(KEY_SPACE)) { ++n; int count = window.use_count(); window = CreateWindow(String(n), window->position.x + 50, window->position.y + 50, window->size.x, window->size.y, window->display, window->style); framebuffer = CreateFramebuffer(window); } world->Update(); world->Render(framebuffer); } return 0; }
  10. @Lupin In your example above the window gets sent to the rendering thread, which will keep it in memory until a different window is sent to replace it. This example is a variation of @Dreikblack and it shows that the last window is somehow remaining in memory. It always keeps two windows open, but removes the earlier one when I create a new one: #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { int n = 0; //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow(String(n), 0, 0, 800, 600, displays[0], WINDOW_TITLEBAR); //Create a world auto world = CreateWorld(); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); camera->SetClearColor(0.125); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { if (window->KeyDown(KEY_E)) { FlushEvents(); ++n; window = CreateWindow(String(n), window->position.x + 50, window->position.y + 50, window->size.x, window->size.y, window->display, window->style); framebuffer = CreateFramebuffer(window); } //window->SetText(WString(window.use_count())); world->Update(); world->Render(framebuffer); } return 0; }
  11. The simplest case seems to work correctly: #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); Print(uint64_t(window.use_count())); FlushEvents(); Print(uint64_t(window.use_count())); return 0; } Prints: 3 1
  12. Okay, great. Thanks to your detailed instructions I was able to identify the issue and solve it pretty easily. The change I made to the multselect treeview automatically fixed the renaming issue, and the other was easy to fix.
  13. Quake code for light flicker options: https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/qw-qc/world.qc#L338
  14. I think this is fixed. Update will be in the next build that goes up. Also, cool looking props!
  15. Josh

    Thumbs view

    Okay, I added some logic in RealPath that gets rid of double-slashes and it seems to work now. Will be available in the next build that goes up.
  16. Here are some resources to get ideas for general-purpose components we might want to make. https://developer.valvesoftware.com/wiki/List_of_entities https://quakewiki.org/wiki/Entity_guide https://minecraft.fandom.com/wiki/Entity#Types_of_entities
  17. First, I recommend using the beta branch. This has improved object creation. If you are on that, open the drop-down menu that appears under the button on the left that says "Box" and you can select the terrain to create.
  18. Josh

    Thumbs view

    I did. My game's directory, including the game folder, is C:\New Project
  19. Yes, navmeshes update automatically on a separate thread.
  20. Based on our discussion during this week's call, I think we are going to look more at Valve games and their entities / components, as they seem to be more abstract and reusable than the way Unity does things. Minecraft and Roblox might also be worth looking into. I think some of that stuff is also very I/O like Leadwerks and Ultra are. I have no objection to including some ideas inspired by Unity, but I think Valve's games provide a very comprehensive base layer of functionality.
×
×
  • Create New...