reepblue Posted December 23, 2022 Share Posted December 23, 2022 Preprocessor needs to be updated. Preprocessor/main.cpp at main · UltraEngine/Preprocessor (github.com) Change: stream->WriteLine(" if (c->" + m.name + " != NULL && c->" + m.name + "->As<Entity>()) j3[\"" + m.name + "\"] = c->" + m.name + "->As<Entity>()->GetGUID();"); To (I think): stream->WriteLine(" if (c->" + m.name + " != NULL && c->" + m.name + "->As<Entity>()) j3[\"" + m.name + "\"] = c->" + m.name + "->As<Entity>()->GetUuid();"); I would do a pull request but I'm going to bed now. The change will make this actor work. #pragma once #include "UltraEngine.h" #include "../ComponentSystem.h" using namespace UltraEngine; class FPSPlayer : public Component { UltraEngine::Vec3 camrotation; UltraEngine::Vec2 mouseaxis; public: std::shared_ptr<UltraEngine::Camera> camera; float lookspeed = 200; float movespeed = 3.5; float maxaccel = 40; float maxdecel = 15; float mousesmoothing = 3; float runspeed = 2; float jumpstrength = 8; float lunge = 1.5; float eyeheight = 1.7f; FPSPlayer::FPSPlayer() { mouseaxis = UltraEngine::Vec2(0); } virtual void Start() { UltraEngine::Assert(camera); camera->SetRotation(UltraEngine::Vec3(0, entity->rotation.y,0)); camera->SetPosition(entity->position.x, entity->position.y + eyeheight, entity->position.z); camrotation = camera->GetRotation(); entity->SetPhysicsMode(PHYSICS_PLAYER); entity->SetMass(10); entity->SetCollisionType(COLLISION_PLAYER); } virtual void Update() { if (ActiveWindow() != NULL) { if (mouseaxis.x == 0 && mouseaxis.y == 0) { ActiveWindow()->GetMouseAxis(); } //Camera look Vec2 newaxis = ActiveWindow()->GetMouseAxis(); Vec2 mousedelta = newaxis - mouseaxis; mouseaxis = newaxis; camrotation.x = Mix(camrotation.x + mousedelta.y * lookspeed, camrotation.x, 1.0f / mousesmoothing); camrotation.x = Clamp(camrotation.x, -90.0f, 90.0f); camrotation.y = Mix(camrotation.y + mousedelta.x * lookspeed, camrotation.y, 1.0f / mousesmoothing); camera->SetRotation(camrotation, true); //Movement float accel = maxaccel; Vec2 movement; movement.y = (ActiveWindow()->KeyDown(KEY_W) - ActiveWindow()->KeyDown(KEY_S)); movement.x = (ActiveWindow()->KeyDown(KEY_D) - ActiveWindow()->KeyDown(KEY_A)); if (movement.x != 0.0f and movement.y != 0.0f) { //Adjust speed on each axis if both are in use movement *= 0.7071f; } movement *= movespeed; float jump = ActiveWindow()->KeyHit(KEY_SPACE) * jumpstrength; bool crouch = ActiveWindow()->KeyDown(KEY_C); if (entity->GetAirborne()) jump = 0; if (crouch == false and ActiveWindow()->KeyDown(KEY_SHIFT) and !entity->GetAirborne()) { movement *= runspeed; } if (jump > 0 and crouch == false) { movement *= lunge; accel *= 100; } //Set input entity->SetInput(camrotation.y, movement.y, movement.x, jump, crouch, accel, maxdecel); } //Adjust camera position static float current_eyehight = eyeheight; if (entity->GetCrouched()) { current_eyehight = 1.8f * 0.5f - 0.1f; } else { current_eyehight = eyeheight; } camera->SetPosition(Mix(camera->position.x, entity->position.x, 0.5f), MoveTowards(camera->position.y, entity->position.y + current_eyehight, 0.1f), Mix(camera->position.z, entity->position.z, 0.5f)); camera->SetPosition(entity->position.x, MoveTowards(camera->position.y, entity->position.y + current_eyehight, 0.1f), camera->position.z); } }; //Create Player Actor auto actor = CreateActor(player); actor->AddComponent<FPSPlayer>(); actor->GetComponent<FPSPlayer>()->camera = camera; // Assign camera actor... Would be nice if this got cleaned up before the big release also... 1>D:\Ultra Engine\Include\Classes\Scripting\DynamicValue.h(114,43): warning C4244: 'return': conversion from 'const double' to 'float', possible loss of data 1>D:\Ultra Engine\Include\Classes\Scripting\DynamicValue.h(115,74): warning C4244: 'return': conversion from 'T' to 'float', possible loss of data 1> with 1> [ 1> T=Tu 1> ] 1>D:\Ultra Engine\Include\Classes\Scripting\DynamicValue.h(120,48): warning C4244: 'return': conversion from 'int64_t' to 'int', possible loss of data 1>D:\Ultra Engine\Include\Classes\Scripting\DynamicValue.h(121,74): warning C4244: 'return': conversion from 'T' to 'int', possible loss of data 1> with 1> [ 1> T=Tu 1> ] 1>D:\Ultra Engine\Include\Classes\Scripting\DynamicValue.h(122,11): warning C4244: 'return': conversion from 'float' to 'int', possible loss of data 1>D:\Ultra Engine\Include\Hub\RegKeys.h(2,10): warning C4067: unexpected tokens following preprocessor directive - expected a newline 1>D:\Ultra Engine\Include\Classes\Loaders\GLTFModelLoader.h(19,2): warning C4099: 'UltraCore::GLTFImage': type name first seen using 'class' now seen using 'struct' 1>D:\Ultra Engine\Include\Classes\Loaders\GLTFModelLoader.h(18): message : see declaration of 'UltraCore::GLTFImage' 1>D:\Ultra Engine\Include\Classes\Loaders\GLTFModelLoader.h(222,25): warning C4099: 'UltraCore::GLTFModelLoader': type name first seen using 'class' now seen using 'struct' 1>D:\Ultra Engine\Include\Classes\Loaders\GLTFModelLoader.h(222): message : see declaration of 'UltraCore::GLTFModelLoader' 1>D:\Ultra Engine\Include\Classes\Pathfinding\NavTile.h(8,24): warning C4099: 'UltraNavigate::NavMeshDebugger': type name first seen using 'class' now seen using 'struct' 1>D:\Ultra Engine\Include\Classes\Graphics\Mesh.h(6): message : see declaration of 'UltraNavigate::NavMeshDebugger' 1>D:\Ultra Engine\Include\Classes\Pathfinding\NavMeshDebugger.h(6,25): warning C4099: 'UltraNavigate::NavMeshDebugger': type name first seen using 'class' now seen using 'struct' 1>D:\Ultra Engine\Include\Classes\Pathfinding\NavMeshDebugger.h(6): message : see declaration of 'UltraNavigate::NavMeshDebugger' 1>D:\Ultra Engine\Include\Classes\Physics\PhysicsWorld.h(78,10): warning C4244: 'initializing': conversion from 'uint64_t' to 'int', possible loss of data 1 1 Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
SpiderPig Posted December 23, 2022 Share Posted December 23, 2022 Also if you can get rid of these too it would be nice - Those errors only show if there is at least one other obvious error somewhere. In this case it's this line; auto = 0; Link to comment Share on other sites More sharing options...
klepto2 Posted December 23, 2022 Share Posted December 23, 2022 Terrain - SetHeight bug: #include "UltraEngine.h" #include "ComponentSystem.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { //Get the display list auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Terrain Paint", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a world auto world = CreateWorld(); world->SetAmbientLight(0); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); camera->SetFov(70); camera->SetPosition(0, 100, -100); camera->SetRotation(45, 0, 0); camera->SetClearColor(0.125); //Sunlight auto light = CreateDirectionalLight(world); light->SetRotation(45, 35, 0); light->SetColor(2); //Create terrain auto terrain = CreateTerrain(world, 512); terrain->SetScale(1, 100, 1); //Create base material auto ground = CreateMaterial(); auto diffusemap = LoadTexture("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Materials/Ground/river_small_rocks_diff_4k.dds"); auto normalmap = LoadTexture("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Materials/Ground/river_small_rocks_nor_gl_4k.dds"); ground->SetTexture(diffusemap, TEXTURE_DIFFUSE); ground->SetTexture(normalmap, TEXTURE_NORMAL); terrain->SetMaterial(ground); //Create paint material auto rocks = CreateMaterial(); diffusemap = LoadTexture("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Materials/Ground/Rocks_Dirt_Ground_2k.dds"); normalmap = LoadTexture("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Materials/Ground/Rocks_Dirt_Ground_2k_dot3.dds"); auto dispmap = LoadTexture("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Materials/Ground/Rocks_Dirt_Ground_2k_disp.dds"); rocks->SetTexture(diffusemap, TEXTURE_DIFFUSE); rocks->SetTexture(normalmap, TEXTURE_NORMAL); rocks->SetTexture(dispmap, TEXTURE_DISPLACEMENT); //Camera controls auto actor = CreateActor(camera); actor->AddComponent<CameraControls>(); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { if (window->MouseDown(MOUSE_LEFT)) { auto mousepos = window->GetMousePosition(); auto pickinfo = camera->Pick(framebuffer, mousepos.x, mousepos.y); if (pickinfo.success) { if (pickinfo.entity == terrain) { iVec2 pos; pos.x = Round(pickinfo.position.x) + terrain->resolution.x / 2; pos.y = Round(pickinfo.position.z) + terrain->resolution.y / 2; int radius = 20; for (int x = pos.x - radius; x < pos.x + radius; ++x) { for (int y = pos.y - radius; y < pos.y + radius; ++y) { float strength = 1.0f - Vec3(x, y, 0).DistanceToPoint(Vec3(pos.x, pos.y, 0)) / float(radius); if (strength <= 0.0f) continue; terrain->SetHeight(x, y, terrain->GetHeight(x,y) + 0.005 * strength); } } } } } world->Update(); world->Render(framebuffer); } return 0; } Terrain_test_d.exe!std::vector<class std::shared_ptr<class UltraEngine::Model>,class std::allocator<class std::shared_ptr<class UltraEngine::Model> > >::operator[](unsigned __int64) Unbekannt Terrain_test_d.exe!UltraEngine::Terrain::UpdatePatchBounds(void) Unbekannt Terrain_test_d.exe!UltraEngine::Terrain::Finalize(void) Unbekannt Terrain_test_d.exe!UltraEngine::World::Render(class std::shared_ptr<class UltraEngine::Framebuffer>,bool,int) Unbekannt > Terrain_test_d.exe!main(int argc, const char * * argv) Zeile 87 C++ [Externer Code] you get this error as soon as you try to modify the terrain with SetHeight: Expression: vector subscript out of range Windows 10 Pro 64-Bit-Version NVIDIA Geforce 1080 TI Link to comment Share on other sites More sharing options...
Josh Posted December 23, 2022 Author Share Posted December 23, 2022 Update Fixed terrain bug when flat terrain's height is modified Updated preprocessor 1 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted December 23, 2022 Author Share Posted December 23, 2022 Update Fixes a texture loading error. The reason for this problem is I got more strict to prevent mipmaps with dimensions less than 4x4 from being used when a compressed format is in use. Lua initialization will no longer be triggered by loading Leadwerks map files. 2 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted December 23, 2022 Author Share Posted December 23, 2022 17 hours ago, SpiderPig said: Also if you can get rid of these too it would be nice - Those errors only show if there is at least one other obvious error somewhere. In this case it's this line; auto = 0; Done, I just had to include the Vulkan memory allocator library as a C++ header, instead of placing it in an extern "C" block. Will include in the next update. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 24, 2022 Share Posted December 24, 2022 I rewrote my premake script and it all works. This adds flexibility to on how to configure more complex projects. Only thing is that you'll have to build your own preprocessor to acuminate any changes as it works based on the location on the project, not the soultion. This example will generate a project and put the executable within the "Game" folder. Run ./premake5.exe vs2022 in PowerShell within the directory.UltraPremakeTest.zip ------------------------------------------------------------------------- -- Example Premake Script for Ultra Engine 1.0 (Early Access) ------------------------------------------------------------------------- UltraEnginePath = "D:/Ultra Engine" ToolsPath = UltraEnginePath.."/Tools" GameDir = "Game" workspace "UltraPremake" location "./" startproject "UltraPremake" configurations { "Debug", "Release"} filter {"system:windows", "configurations:*"} architecture "x86_64" project "UltraPremake" location "./" language "C++" cppdialect "C++17" staticruntime "off" editandcontinue "on" flags { "MultiProcessorCompile" } conformancemode (false) -- Game Location targetdir("%{GameDir}") debugdir ("%{GameDir}") -- OBJ Output Location objdir "%{prj.location}/%{cfg.buildcfg}_%{cfg.architecture}/%{cfg.system}" -- Include Directories includedirs { -- Engine "%{UltraEnginePath}/Include", "%{UltraEnginePath}/Include/Libraries/Box2D", "$(UniversalCRT_LibraryPath)", "%{UltraEnginePath}/Include/Libraries/freetype/include", "%{UltraEnginePath}/Include/Libraries/OpenAL/include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/RecastDemo/Include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/DetourCrowd/Include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/DetourTileCache/Include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/DebugUtils/Include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/Recast/Include", "%{UltraEnginePath}/Include/Libraries/RecastNavigation/Detour/Include", "%{UltraEnginePath}/Include/Libraries/sol3/include", "%{UltraEnginePath}/Include/Libraries/Lua/src", "%{UltraEnginePath}/Include/Libraries/enet/include", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dTinyxml", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dExtensions", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dlkSolver", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dJoints", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dModels/dVehicle", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dModels/dCharacter", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dModels", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dParticles", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dNewton", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dCore", "%{UltraEnginePath}/Include/Libraries/newton/sdk/dCollision", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dVehicle/dMultiBodyVehicle", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dVehicle", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dMath", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dgCore", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dgNewton", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dAnimation", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dgTimeTracker", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dContainers", "%{UltraEnginePath}/Include/Libraries/NewtonDynamics/sdk/dCustomJoints", -- Game "%{prj.location}/Source" } files { "%{prj.location}/Source/**.h", "%{prj.location}/Source/**.hpp", "%{prj.location}/Source/**.cpp", "%{prj.location}/Source/**.ico", "%{prj.location}/Source/**.rc", } -- Global Defines: defines { "_NEWTON_STATIC_LIB", "_CUSTOM_JOINTS_STATIC_LIB", } -- Shared PCH pchheader "UltraEngine.h" --------------------------------------------------------- -- Windows Exclusive --------------------------------------------------------- filter {"system:windows", "configurations:*"} systemversion "latest" entrypoint "mainCRTStartup" pchsource "%{prj.location}/Source/UltraEngine.cpp" libdirs { "%{UltraEnginePath}/Library" } defines { "NOMINMAX", "_HAS_STD_BYTE=0", } -- Preprocessor prebuildcommands { "\"%{ToolsPath}/preprocessor.exe\"" } filter {"system:windows", "configurations:Debug"} links { "UltraEngine_d.lib" } filter {"system:windows", "configurations:Release"} links { "UltraEngine.lib" } filter "configurations:Debug" defines { "DEBUG", "_DEBUG" } kind "ConsoleApp" targetsuffix "_d" runtime "Debug" symbols "on" filter "configurations:Release" defines { "NDEBUG" } -- UPX compression postbuildcommands { "\"%{ToolsPath}/upx.exe\" \"%{GameDir}/%{prj.name}.exe\"" } kind "WindowedApp" runtime "Release" symbols "off" optimize "on" --------------------------------------------------------- --------------------------------------------------------- UltraPremakeTest.zip Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 24, 2022 Author Share Posted December 24, 2022 Update Fixed spotlight culling error Fixed Leadwerks texture cubemap loading error Fixed BC2 texture format loading in Leadwerks TEX format 2 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 24, 2022 Share Posted December 24, 2022 Before I build my source tree to be like how I have everything set up in Cyclone, will the editor allow dynamic search paths for the components? Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 24, 2022 Author Share Posted December 24, 2022 I don't know what that means? My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 24, 2022 Share Posted December 24, 2022 17 minutes ago, Josh said: I don't know what that means? I expect the editor to load all the component .hpp files under "Source/Components". If so, would there be an option to have it look for the component header files elsewhere? It would be disappointing if these things were hardcoded. Sorry for me wanting to break the mold and be a Ultra power user! Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 24, 2022 Author Share Posted December 24, 2022 I do not know yet. In any case, the components are included into the source by the precompiler, so it's not hard to change the location if needed. I think the precompiler will search subfolders of "Components" as well. My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 24, 2022 Share Posted December 24, 2022 Yep, that's on my things to do. I'm going to change the path into a macro and replace all hard paths with that. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
SpiderPig Posted December 24, 2022 Share Posted December 24, 2022 Will test out the latest updates when I get home. Do you have any examples for a basic geometry shader and/or custom fragment shader or are you still ironing out the shaders? Link to comment Share on other sites More sharing options...
reepblue Posted December 26, 2022 Share Posted December 26, 2022 Merry Christmas! 2 Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 26, 2022 Author Share Posted December 26, 2022 On 12/24/2022 at 11:48 PM, SpiderPig said: Will test out the latest updates when I get home. Do you have any examples for a basic geometry shader and/or custom fragment shader or are you still ironing out the shaders? Custom shaders is not something Ultra is good at right now. The shaders are MASSIVE and Vulkan is extremely strict when linking shader modules. Eventually, I envision a node-based shader editor that outputs an entire shader family. 2 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
Josh Posted December 26, 2022 Author Share Posted December 26, 2022 Update Added package support. Zip archive support is built-in. Zlib was alreday included in the engine in FreeImage, and I couldn't figure out any way to pass a password to a DLL plugin without it being easily intercepted, so I made it native. You must add the following search header path to your existing projects: "$(UltraEnginePath)\Include\Libraries\zlib" 2 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 27, 2022 Share Posted December 27, 2022 I was going to write you an example demonstrating the pure agony I've had making text with a drop shadowed but I can't nail it what's causing it. It'll work fine until I change something that has nothing to do with positioning and my shadow text will draw on top the colored text. This is one example of it. With this, it works file if the text is not absolutely white, but if you subtract 0.1 from it, it works as expected. #include "UltraEngine.h" #include "ComponentSystem.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); //Create a world auto world = CreateWorld(); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); camera->SetClearColor(0.125); camera->SetFov(70); camera->SetPosition(0, 0, -3); // 2D auto m_spContextCamera = CreateCamera(world, UltraEngine::PROJECTION_ORTHOGRAPHIC); m_spContextCamera->SetDepthPrepass(false); m_spContextCamera->SetClearMode(UltraEngine::CLEAR_DEPTH); m_spContextCamera->SetRenderLayers(UltraEngine::RENDERLAYER_7); m_spContextCamera->SetPosition((float)framebuffer->size.x * 0.5f, (float)framebuffer->size.y * 0.5f, 0); // Create Text DropShadow; auto font = LoadFont("Fonts/arial.ttf"); auto text_dropshadow = CreateSprite(world, font, "Hello World!", 128); text_dropshadow->SetRenderLayers(UltraEngine::RENDERLAYER_7); // The Z position should push this back. text_dropshadow->SetPosition(4 + 2, 4 - 2, 1.0f); // Color me black text_dropshadow->SetColor(0.0f, 0.0f, 0.0f, 1.0f); // Create Text auto text = text_dropshadow->Instantiate(world)->As<UltraEngine::Sprite>(); text->SetPosition(4, 4, 0.0f); text->SetColor(1.0f, 0.0f, 0.0f, 1.0f); // If the text is ABSOULTE white, the drop shadow renders above this. text->SetColor(1.0f, 1.0f, 1.0f, 1.0f); // Nock it down by 0.1, and it's fixed. //text->SetColor(0.9f, 0.9f, 0.9f, 1.0f); //Create a light auto light = CreateBoxLight(world); light->SetRotation(35, 45, 0); light->SetRange(-10, 10); //Create a box auto box = CreateBox(world); box->SetColor(0, 0, 1); //Entity component system auto actor = CreateActor(box); auto component = actor->AddComponent<Mover>(); component->rotation.y = 45; //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { world->Update(); world->Render(framebuffer); } return 0; } Also noticed text sprites don't render correctly when drawn in 3D and I was having issues getting 3D interface to respond. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
reepblue Posted December 27, 2022 Share Posted December 27, 2022 Gave the package loader a go. I zipped the shaders folder so I can paste in the shader files from Leadwerks to make a hybrid project for testing. Notice this causing errors loading some things. Skipping Plugin Loading... Loading font "Fonts/arial.ttf" Loading package "UltraShaders.zip" Creating World... Loading shader family "Shaders/PBR.json" Loading shader family "Shaders/unlit.json" Loading shader family "/PBR.json" Error: Failed to read file "D:/UltraGame/game/sampleapp//PBR.json" Deleting shader family "/PBR.json" Deleting shader family "Shaders/unlit.json" Loading shader family "Shaders/unlit.json" Loading shader family "/PBR.json" Error: Failed to read file "D:/UltraGame/game/sampleapp//PBR.json" Deleting shader family "/PBR.json" Deleting shader family "Shaders/unlit.json" Loading shader family "Shaders/Sky.json" Loading posteffect "Shaders/PostEffects/Refraction.json" Edit: Doesn't seem to work if you do this. Right now, I have shaders from both engines joined in one folder. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 27, 2022 Author Share Posted December 27, 2022 Update Fixed package stream path error Fixed z-sorting 3 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
reepblue Posted December 27, 2022 Share Posted December 27, 2022 Cool, I'll be sure to try these again when I can get back to my project. Spent Christmas writing (hopefully) production code and I gotta say minus a few bumps along the way, it's been fantastic. I wrote everything I want all my games to do (Load Splash, Create Window, etc) within one class. Cameras not being tied to the world is such a game changer. I create all my cameras at start and point to it if I need it. In Cyclone, I had to consistently recreate a camera every time the world cleared. Only thing still not working for me is the interface drawn in 3D. Last time I checked, it wasn't responsive and after I've I rebuilt the window with repositioning the 2D camera, it's position and size was all messed up and it stopped drawing the children widgets. I'll be sure to isolate the problem asap, but maybe we should retry the examples that are on this thread if we can find them. Finally, something I've noticed is that you can't link static libraries. I ended up having to do some hackory of reconfiguring my premake script to include the files from my core static library and have my PCH file be a public header titled "pch.h". My PCH will only include the engine header if the preprocessor definition _ULTRA_ENGINE is set. Nothing you can do about it as I think the current library loading setting is probably essential to how the engine works. Just thought you'd like to know. I think a nice thing to have is a collection of examples showing how to do certain things. These would be something above a level above raw API examples and would help people to see how they would do X. This should have everything in one cpp file like the API examples. Some ideas include: How to safely destroy and rebuild the window to change displays and modes. (I've written a class that does this already.) Drawing text with a drop shadow (Like I've written above. It's pretty simple, but it should be on the books.) Using ParseCommandLine for loading and saving settings. It can go into how to apply those settings to the world and camera to make it more than an API example. Using a thread to load a scene while displaying a loading screen / loading bar. (I want to know how to do this please! :P) Simple networking. (Thinking of an example where a client and server is created. Then a map is loaded to the scene is loaded with the players being represented by floating boxes which are actually just a camera with the CameraControls Component attached. This can ether with the included enet, Steamworks or both) So far so good. We'll eventually get all these Early Access bumps flattened out. 2 Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted December 27, 2022 Author Share Posted December 27, 2022 Update Adjusted depth settings in transparency pass UTF-8 string conversion back to wide string no longer supported because it's unreliable 2 My job is to make tools you love, with the features you want, and performance you can't live without. Link to comment Share on other sites More sharing options...
SpiderPig Posted December 27, 2022 Share Posted December 27, 2022 I wonder if you should change SetRenderLayers() to SetRenderLayer()? Seeing as we're assigning the object to a specific layer it might make more sense. Link to comment Share on other sites More sharing options...
reepblue Posted December 27, 2022 Share Posted December 27, 2022 31 minutes ago, SpiderPig said: I wonder if you should change SetRenderLayers() to SetRenderLayer()? Seeing as we're assigning the object to a specific layer it might make more sense. I was under the impression that an entity can be set to multiple layers. If the information is false, then yeah it doesn't make sense. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
SpiderPig Posted December 27, 2022 Share Posted December 27, 2022 enum RenderLayer { RENDERLAYER_NONE = 0, RENDERLAYER_0 = 1, RENDERLAYER_1 = 2, RENDERLAYER_2 = 4, RENDERLAYER_3 = 8, RENDERLAYER_4 = 16, RENDERLAYER_5 = 32, RENDERLAYER_6 = 64, RENDERLAYER_7 = 128, RENDERLAYER_ALL = 255 }; I took a look and they are powers of two so it appears you are correct. Link to comment Share on other sites More sharing options...
Recommended Posts