Search the Community
Showing results for tags 'LUA'.
-
I don't see in the tutorial how to display a texture on the HUD. Let's say I want to display a red cross icon as a health icon and break the Geneva convention In Leadwerks 4 this was done in PostRender(). But how is it done now in Ultra Engine?
-
Hi It would be really helpful to get this coverted to LUA to assist in development of Steamworks/Multiplayer. It's been tricky to use only the basic documentation to get it done, without an example. https://www.leadwerks.com/learn/Steamworks_GetPacket?lang=cpp Example This example demonstrates lobbies, voice chat, and simple player movement. #include "UltraEngine.h" #include "Steamworks/Steamworks.h" #include "ComponentSystem.h" using namespace UltraEngine; class Player : public Object { public: static inline std::map<uint64_t, shared_ptr<Player> > players; shared_ptr<Entity> entity; WString name; uint64_t userid; static std::shared_ptr<Player> Get(shared_ptr<World> world, const uint64_t userid) { if (players[userid]) return players[userid]; auto player = std::make_shared<Player>(); player->entity = CreatePivot(world); auto model = CreateCylinder(world, 0.25, 1.8); model->SetPosition(0, 0.9, 0); model->SetParent(player->entity); model->SetCollider(nullptr); player->userid = userid; players[userid] = player; return player; } static void Remove(const uint64_t userid) { players[userid] = nullptr; } }; struct PlayerState { Vec3 position; float yaw; }; int main(int argc, const char* argv[]) { // Initialize Steam if (not Steamworks::Initialize()) { RuntimeError("Steamworks failed to initialize."); return 1; } // 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 framebuffer auto framebuffer = CreateFramebuffer(window); // Create world auto world = CreateWorld(); world->SetGravity(0, -18, 0); // Create lobby auto lobbyid = Steamworks::CreateLobby(Steamworks::LOBBY_PUBLIC); Print("Lobby: " + String(lobbyid)); // Spawn local player auto player = Player::Get(world, Steamworks::GetUserId()); player->entity->AddComponent<FirstPersonControls>(); // Add lighting auto light = CreateDirectionalLight(world); light->SetRotation(55, 35, 0); // Add a floor auto floor = CreateBox(world, 50, 1, 50); floor->SetPosition(0, -0.5, 0); auto mtl = CreateMaterial(); mtl->SetTexture(LoadTexture("https://github.com/UltraEngine/Documentation/raw/master/Assets/Materials/Developer/griid_gray.dds")); floor->SetMaterial(mtl); // Main loop while (not window->KeyDown(KEY_ESCAPE) and not window->Closed()) { while (PeekEvent()) { const auto e = WaitEvent(); switch (e.id) { case Steamworks::EVENT_LOBBYINVITEACCEPTED: case Steamworks::EVENT_LOBBYDATACHANGED: case Steamworks::EVENT_LOBBYUSERJOIN: case Steamworks::EVENT_LOBBYUSERLEAVE: case Steamworks::EVENT_LOBBYUSERDISCONNECT: auto info = e.source->As<Steamworks::LobbyEventInfo>(); auto username = Steamworks::GetUserName(info->userid); switch (e.id) { case Steamworks::EVENT_LOBBYINVITEACCEPTED: Print("Invite accepted to lobby " + String(info->lobbyid)); lobbyid = info->lobbyid; if (not Steamworks::JoinLobby(info->lobbyid)) { lobbyid = 0; Print("Failed to join lobby"); } break; case Steamworks::EVENT_LOBBYDATACHANGED: Print("New lobby owner " + username); break; case Steamworks::EVENT_LOBBYUSERJOIN: Print("User " + username + " joined"); if (not Player::players[info->userid]) { // Spawn remote player Player::Get(world, info->userid); } break; case Steamworks::EVENT_LOBBYUSERLEAVE: Print("User " + username + " left"); // Remove remote player Player::Remove(info->userid); break; case Steamworks::EVENT_LOBBYUSERDISCONNECT: Print("User " + username + " disconnected"); // Remove remote player Player::Remove(info->userid); break; } break; } } // Receive player data PlayerState state; while (true) { auto pak = Steamworks::GetPacket(); if (not pak) break; if (pak->data->GetSize() == sizeof(PlayerState)) { auto player = Player::Get(world, pak->userid); if (player) { pak->data->Peek(0, (const char*)&state, pak->data->GetSize()); player->entity->SetPosition(state.position); player->entity->SetRotation(state.yaw); } } } //Receive text messages while (true) { auto pak = Steamworks::GetPacket(1); if (not pak) break; String s = pak->data->PeekString(0); Print(Steamworks::GetUserName(pak->userid) + ": " + WString(s)); } // Send player data auto userid = Steamworks::GetUserId(); auto player = Player::players[userid]; state.position = player->entity->position; state.yaw = player->entity->rotation.y; Steamworks::BroadcastPacket(lobbyid, &state, sizeof(PlayerState), 0, Steamworks::P2PSEND_UNRELIABLENODELAY); // Enable voice chat when the C key is pressed bool record = window->KeyDown(KEY_C); Steamworks::RecordVoice(record); String title = "Ultra Engine"; if (record) title += " (Microphone Enabled)"; window->SetText(title); // Update world world->Update(); // Render world world->Render(framebuffer); // Update Steamworks Steamworks::Update(); } // Close Steam Steamworks::Shutdown(); return 0; }
- 2 replies
-
- lua
- steamworks
-
(and 1 more)
Tagged with:
-
Oddly, I cannot create an interface attached to the camera anymore, I think this was working fine yesterday or day before. This code, silent crashes, in fast debug or full debug. Cam exists and so does the framebuffer. ConsolePadfont = LoadFont("Fonts/arial.ttf") --Create user interface ConsolePadui = CreateInterface(cam, ConsolePadfont, framebuffer.size)
-
LuaExample2.zip 1. Run in Fast debug mode 2. Hit start game btn in menu 3. Just after first frame of map apps closes without error notifications or new errors in debug console btw i have strange errors on map load in any debug mode like: Error: Failed to load scene "Path/ProjectName" Deleting prefab "Path/ProjectName" Loading prefab "Path/ProjectName" Error: Failed to load sound "Sound/Impact/bodypunch3.wav"
-
No error windows or in consoles, just app closing when GetDistance called. Need this working for tutorial local displays = GetDisplays(); --Create a window local window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[1], WINDOW_CENTER | WINDOW_TITLEBAR) --Create a framebuffer local framebuffer = CreateFramebuffer(window) --Create a world local world = CreateWorld() --Create a camera local camera = CreateCamera(world) local distanceToTarget = camera:GetDistance(Vec3(1,1,1)) Print(distanceToTarget) --Main loop while not window:Closed() and not window:KeyDown(KEY_ESCAPE) do world:Update() world:Render(framebuffer) end
-
Need asap it for lua variation of my 3rd tutorial -- Get the displays local displays = GetDisplays() -- Create a window local window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[1], WINDOW_CENTER + WINDOW_TITLEBAR) -- Create a world local world = CreateWorld() -- Create a framebuffer local framebuffer = CreateFramebuffer(window) -- Create light local light = CreateBoxLight(world) light:SetRange(-10, 10) light:SetRotation(15, 15, 0) light:SetColor(2) -- Create camera local camera = CreateCamera(world) camera:SetClearColor(0.125) camera:SetPosition(0, 0, -3) camera:SetFov(70) camera:Project(Vec3(0,0,0), framebuffer) -- Main loop while not window:Closed() and not window:KeyDown(KEY_ESCAPE) do -- Click on an object to change its color world:Update() world:Render(framebuffer) end
-
8 downloads
Component to move an entity to WayPoints: Move Speed - how much velocity entity will have while moving doDeleteAfterMovement - auto remove entity when it's reach final waypoint. Can be used for door, that goes into walls or floor Input "DoMove" - make entity move to next point Output "EndMove" - happens when entity stops after reaching final way point or if this way poiont has enabled doStayOnPointFree -
-
11 downloads
Simple component which can be used to naviage bots or objects nextPoint - null if it's a final onem otherwise add another entity with this component to make a chain doStayOnPoint - can be checked by object that uses WayPoints to find out if it should stay after reaching this point and wait a command before moving to next one Put in Components\Logic folderFree -
If do something like that in lua script: EmitEvent(EVENT_WIDGETACTION, nil, 0, 0, 0, 0, 0, nil, "start.ultra")
-
This uses the Quake light animation presets to add some interesting color modulation to any entity. ColorChanger.zip The following presets are available: Normal Flicker Slow Strong Pulse Candle 1 Fast Strobe Gentle Pulse 1 Flicker 2 Candle 2 Candle 3 Slow Strobe Flourescent Flicker Slow Pulse Todo: The candle presents don't look right to me, but I'm not sure what they are supposed to look like. I remember them as being a gentle flicker. There is no interpolation between the nearest two values, it just grabs one single value, so it's not very smooth. I guess this is appropriate for the strobe effects, but not for others.
-
I've been spending the past few days trying to figure out how to add SDL2 to Leadwerks, as it has an additional Lua binding that would be nice to have. Not to mention the gamepad support (which is the main reason because just adding XInput only would give support for XBox 360 and Dualshock 3 controllers). Not having any experience with an engine like Leadwerks, application building, or libraries has severely impacted my ability to figure out what to do in my current situation. I know I need to include the library and expose it to Lua, but I don't know how to do that, and I don't know how to actually add it to the engine either. I've taken a look at some resources online, such as lazyfoo, and it hasn't really helped me understand. Any help or other resources that could be passed along to me would be greatly appreciated. Thanks!
- 4 replies
-
- programing
- lua
-
(and 2 more)
Tagged with:
-
Here the current Camera Dolly Component i created. It consists of 2 Components. The Camera Dolly Component itself. The Camera Dolly Event Component. Usage Extract and place it into your `Souce/Components` directory. Add a Camera to your Scene. Add a "Empty" Node to your scene that will contain the Camera Spline Path. Add "Empty" Nodes inside this CameraPath node that defines the path the camera will move along. (takes the rotation into account as well as long as no "Point Camera At" node is selected. Name each "Empty" Node path point "p1", "p2", "p3" and so forth. (subject to change) and order the nodes accordingly. At the end this should look something like this in your Scene list: In the Camera itself with the CameraDolly component added, select the CameraPath node and optionally a node where the camera should point at. If you want to do something as soon as the Camera reaches a point along the path, add the CameraDollyEvent Component to one of the path nodes and add it to the Flowgraph. Todo and known issues The order of nodes in the Editor is not always the same as returned by the API (see https://www.ultraengine.com/community/topic/65647-moving-entities-in-editor-looses-order-and-cannot-be-moved-to-top/ ) Its difficult to determine the rotation of points without visualisation. Its difficult to guess the path the camera takes along the spline without visualisation. Movement speed is not yet Update thread independent. (unlikely to be a real issue, but possible. still thanks to Josh for adding `World:GetSpeed()`). Rotation might not work (see https://www.ultraengine.com/community/topic/65628-lua-entitygetrotation-always-returns-vec3-000/ ) Download CameraDolly.zip
-
Tried: GetComponent("Mover") GetComponent(Mover) GetComponent<Mover>() This example also not working https://www.ultraengine.com/learn/Entity_GetComponent?lang=lua require "Components/Motion/Mover" --Get the displays local displays = GetDisplays() --Create a window local window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[1], WINDOW_CENTER | WINDOW_TITLEBAR) --Create a framebuffer local framebuffer = CreateFramebuffer(window) --Create a world local world = CreateWorld() --Create a camera local camera = CreateCamera(world) camera:SetClearColor(0.125) camera:SetPosition(0, 0, -2) --Create a light local light = CreateBoxLight(world) light:SetRotation(45, 35, 0) light:SetColor(2) light:SetRange(-5, 5) --Create a model local box = CreateBox(world) box:SetColor(0,0,1) --Add a component for automatic motion local component = box:AddComponent(Mover) component.rotationspeed.y = -2 box.mover.rotationspeed.x = 2 local componentTest = box:GetComponent("Mover") if (componentTest ~= nil) then Print("Success") end while window:KeyDown(KEY_ESCAPE) == false and window:Closed() == false do --Update the world world:Update() --Render the world to the framebuffer world:Render(framebuffer) end
-
1. New game 2. Esc to call menu 3. Press Main menu 4. Continue game 5. If no app is froze yet do paragraph 2 again. Usually it happens at 2nd continue game but often happen at 1st too, Same approach works for me in main C++ project, game.lua globals.lua main.lua
-
Plays a sound continuously or intermittently. AmbientNoise.zip
-
- 2
-
-
This component will copy the rotation of another entity, with adjustable smoothing. MatchRotation.zip
-
Here's a new lib that i just finished that will allow game controller support for Lua fans! EDIT: Source: https://onedrive.live.com/redir?resid=1653f4923c37f970!278&authkey=!ABW8a3PdvzR_8cE&ithint=file%2czip Binaries (dll & so): https://onedrive.live.com/redir?resid=1653f4923c37f970!284&authkey=!AM0p2lTBH1mMSzk&ithint=file%2czip A lua example is provided, you can simply overwrite your existing App.lua with mine on a new test project. * Note: Lua sandbox must be disabled to use libs. Unfortunately i don't have linux installed so i couldn't compile it for that platform and I was able to compile it under Linux but i didn't get the chance to test it as i don't have the sdl2 binary libs. I included the full source should anyone want to re-compile it. Those that don't want to, simply copy LuaGamePad.dll file where your game executable is. You'll need to copy SDL2.DLL there as well, it's included. Tested with: - Logitech Rumblepad - Xbox 360 controller (XInput) Cheers!
-
Hi there team, time no see... I'm still working on the v4.0 Update for my Steam game. And one of the addons inside this update, was the option of drive an Opel Kadett car... And here is my question about... I have develop the mirror effect with a Camera using RenderTarget option on a Texture, and then the script: Script.TexturaProyecta=""--string "Textura" function Script:Start() local tex=Texture:Load("Materials/MisTexturas/Camaras_Texturas/"..self.TexturaProyecta..".tex") self.entity:SetRenderTarget(tex) end This works fine, but i've got a problem with the final image... Is there a way for make MIRRORED the image on the mirror? I've tried mirroring the texture, or using 2 cameras, but nothing works for me. I've got the same problem on another map: Many thanks in advance for your help.
-
Hello team, I'm going crazy with this bull****-idea... Is there any LUA command that allows us to obtain the name of the map we are on? I want to store the map name we are playing in a String variable, and then execute an IF to validate that value so that: - If I am in the map bull****.map a variable has "OK" text. - If I am in the map bullface.map the previous variable has "NotOK" text. (sight) I am unable to get the map name to save it in the global variable. And I don't know why... I have created a script where I enter manually the name... But that script (despite being assigned to a pivot in the map that is executed when the map is loaded) is not able to modify the value of the global variable defined in main.lua I have tried to use the mapfile variable used in main.lua of the project, but still don't know how to use it to get the name of the map we are on... This question may seem simple, but it's really driving me crazy.
-
Hi everyone, I'm currently encountering an issue with a Pick operation in my Lua code and I'm hoping someone can help me figure out what I'm missing. Here's the context: I have a player controller, which is essentially a pivot that creates a light and a camera. The player controller doesn't involve any movement, the mouse position on the screen simply influences the camera rotation. I also have an enemy that randomly spawns and passes in front of the light, down a corridor. I want to check two things - if the light is on, and if the enemy crosses the light's path. If both conditions are met, I want to call a method from the player script to the enemy script. Here's the relevant part of my player controller code which handles the light being on and the Pick operation: function Script:UpdateWorld() [...] if not self.flashlight:Hidden() then local pickInfo = PickInfo() local i**** = self.entity.world:Pick( self.entity:GetPosition(), self.lightRayEnd:GetPosition(), pickInfo, .25, false, Collision.Character ) if i**** and pickInfo.entity:GetKeyValue("classname") == "npc_nurse" then pickInfo.entity.script:SetPlayerIsShiningLight() end end end The flashlight check works as expected. However, I'm having trouble with the Pick method. It seems to correctly pick up the enemy when it crosses the ray's path. But it also appears to pick up another entity. I've simplified my map to include only a floor for the enemy to walk on and the basic set-up for the player controller. I've confirmed that the KeyValue is being correctly set in the enemy script (in the Start method), and that the collision is set to Character. Through debugging (I've removed all the console debug statements from the code above for clarity), I found that when I test for the pick position, it returns 0,0,0. To make sure I wasn't missing something in my calculations, I created another pivot to mark the end of the raycast (self.lightRayEnd). Does anyone have any idea what I could be doing wrong, or what might be causing this issue? I appreciate any input or suggestions. Thanks!
-
How do I end a Leadwerks program using a script. I would to like to end the program when the quit button is pressed but can't work out how to do this. Also should I release all entities and sounds before closing or doesn't it matter. Thanks in advance.
-
Hello, I would like to take a JSON file and read its content into a normal Lua string. Even better, I would like to put a JSON text into a Lua table directly, if it's possible. So far, I've found this Lua lib for converting a JSON string into a Lua table and vice versa. However, I don't see how to read a whole file as a string. Thank you in advance! P.S. I know how to read an individual line with this function.
-
Just some background: i am making a game for a research project for school. I have no prior experience with coding so I'm a bit dumb Here's my question: How do i code in my animations? there are a lot of little things out there but they don't help me, i would appreciate it if someone were to explain it to me for my specific case. i have all of the animations done, i made them in blender. so far the only code i have is from these two posts, however i've moved the camera so that it is from a third person view: this whole animation thing has really been demotivating as i just dont know what i need so it would be nice to move past this to something equally as painful to find out. btw whilst researching i found there is very little helpful information out there anymore. there are countless posts where there are videos and websites linked however there they are either taken down or private, which is annoying because they could be helpful. either way, thank you for reading, i hope you understand what i mean and hope you might help me. Honestly all i need is a step-by-step (kind of) guide to how i get my animations to show for all my characters.