Josh Posted August 2 Author Posted August 2 1.0.0 Update to lua executables to fix import command not working 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 4 Author Posted August 4 1.0.0 Updated Lua executables and C++ libs. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 5 Author Posted August 5 1.0.0 Fix is available now for this issue: 2 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 5 Author Posted August 5 1.0.0 Editor updated. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 7 Author Posted August 7 1.0.0 Updated to OpenVR 2.7.1. New DLL is required. Not tested yet. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 11 Author Posted August 11 1.0.0 All Lua scripts are updated to work with the definition file generation system. Added close delay to door scripts (Lua only) 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 11 Author Posted August 11 1.0.0 Updated Lua scripts with some missing in/out declarations on some functions. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 12 Author Posted August 12 1.0.0 Improvements to C++ component header parsing. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 12 Author Posted August 12 1.0.0 Updated C++ components to work with auto-generated definition files. I might have missed some properties, but it is a good first pass. This means if you modify the stock C++ components, your new properties and methods will appear in the editor. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 12 Author Posted August 12 1.0.0 C++ header files must now have the comment "Component" after the class declaration, in order for them to trigger a definition file to be written. This prevents base classes that are not meant to be used in the editor from creating a definition file. class Relay : public BaseComponent//Component 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 13 Author Posted August 13 1.0.0 Classes derived from the Entity class are now declared with virtual inheritance. Library and Lua executables are updated. If you have any problems compiling, update to the latest version of Visual Studio, 17.14.11 (thanks @Dreikblack) 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 13 Author Posted August 13 1.0.0 In previous builds, you had to define a C++ component name in the constructer, like this: Mover::Mover() { name = "Mover"; } Specifying the class name like this is no longer necessary. The system will now use the object type ID to figure out the name. All virtual inheritance in class declarations are now removed, since I don't think this is needed for anything. Fixed a bug in the FPSGun C++ component that could start you with a random amount of loaded ammo in the gun. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 14 Author Posted August 14 1.0.0 In this build of the editor, when a material is generated, if no metalness texture is present then the material metalness value will be set to 0, while the blue channel of the rough / metal texture will still by 255 (full bright). So if no metal texture is present, the material will be assumed to have zero metalness, but still allow you to adjust the material metal value to make it more metallic if you want to. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 14 Author Posted August 14 1.0.0 Added missing Scene:GetEntity definition method to Lua syntax highlighting. Component is now using virtual inheritance from Object class. Corrected the case of one include file. Added Lua utilities file in Scripts/Start with these functions: isnumber(), isstring(), isboolean(), isfunction(), istable(), isuserdata(). 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 15 Author Posted August 15 1.0.0 Replaced File > Load Collider menu item in model editor interface with Load Static Collider and Load Dynamic Collider, for a polygon or multi-convex hull collider. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 15 Author Posted August 15 1.0.0 Fixed a bug that would cause duplicate child limbs to be saved when the Save as Model feature was used in the editor. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 20 Author Posted August 20 1.0.0 Editor now generates thumbnails for prefabs. Delete C:/ProgramData/Leadwerks/Thumbnails if you want to force new thumbnails to be created. Some missing Lua bindings added. Added Entity:HasTag, Lua builds only updated at this time. Spacing between viewports in main window is 50% thicker now. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 21 Author Posted August 21 1.0.0 I thought the slow speed of Lua games in debug mode was due to not using LuaJIT, but it was actually caused by some unoptimized code in the built-in debugger that executes each frame. The speed when the built-in debugger is running is much faster in this build. Yuu sync your project to get the latest Lua executables for the built-in IDE's debugger to work correctly. Games will run a lot faster with the debugger on now. 2 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 25 Author Posted August 25 A new branch is created on Steam called "beta2" for testing. This contains a build that adds the ability to atttach properties and functions directly to an entity itself in Lua. You must opt into the beta2 branch to receive this update: In this branch, in Lua scripts, self refers to the entity itself. Most self-contained scripts will work with no changes because self.entity will just return self (the entity). A typical script looks like this. Notice that the script properties and entity methods are both accessible directly from self, without any sub-object: ---@class Mover : Entity Mover = {} Mover.rotationspeed = Vec3(0,1,0)--"Rotation" Mover.globalcoords = false--"World space" ---@param self Mover function Mover:Update() self:Turn(self.rotationspeed / 60, self.globalcoords) --This will still work, for backwards compatibility: --self.entity:Turn(self.rotationspeed / 60, self.globalcoords) end Defining a "class" on the line before the table is created will allow Lua language server to show autocompletion for all the properties defined in the script, as well as all the entity members and methods. This is very cool! Entity script properties will be displayed in a "fields" group in the debugger, just for visual clarity: This approach greatly simplifies the interactions of objects, and retrieving the state of other entities in the game. For example, instead of this: function MyScript:Collide(entity, position, normal, speed) local h = 0 local k, c for k, c in pairs(entity.components) do if isnumber(c.health) and c.health > 0 then h = c.health break end end if h > 0 then Print("Collided entity has health!") end end You can now just access the property directly on the entity itself: function MyScript:Collide(entity, position, normal, speed) if isnumber(entity.health) and entity.health > 0 then Print("Collided entity has health!") end end You no longer need to call RegisterComponent, set a name field for the table, or return the table from the script. All stock scripts have been updated to work this way, along with the FPS example map. The script template is updated, so it will set everything up for you correctly when a new script is added to the project. There is currently nothing in the editor to prevent you from adding multiple scripts to one entity, but in this build only one of those scripts will get loaded. For the FPS map, I had a few objects that had a relay attached to themselves, and I just replaced this with a new pivot with a multi-replay script that controls the timing of all the objects in the chain. A MultiRelay script has been added that accepts an input signal and outputs 8 functions, with an adjustable delay time for each. The Physics/Impulse script is removed from the stock scripts, since it is no longer needed. You also have the option to specify optional filters with the World:GetEntities and World:GetEntitiesInArea methods. In this example, entities will only be returned if they have a numberic health value greater than zero, and a team value that is not equal to nil or this entitiy's own team value. local players = self.world:GetEntities("health", ">", 0, "team", "~=", self.team, "team", "~=", nil) You can include any number of filters, with three arguments each, for the field name, operator, and value to compare it to. The following operators are supported: ==, ~=, >, <, >=, <= 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 25 Author Posted August 25 Here's another example. This whole block of code in Bullet.lua: local n if type(pickinfo.entity.health) == "number" then pickinfo.entity.health = pickinfo.entity.health - self.damage for n = 1, #pickinfo.entity.components do if type(pickinfo.entity.components[n].Damage) == "function" then pickinfo.entity.components[n]:Damage(self.damage, entity) end if pickinfo.entity.health <= 0 and type(pickinfo.entity.components[n].Kill) == "function" then pickinfo.entity.components[n]:Kill() end end end Can be reduced down to a single line: if isfunction(pickinfo.entity.Damage) then pickinfo.entity:Damage(self.damage, self.owner) end The first example could be further simplified, but I have noticed that with the new system the improvements I can make jump out at me a lot more easily, and it's more obvious what to do to make the code better, whereas with the previous approach I tended to just leave things as-is once they are working. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted August 26 Author Posted August 26 The beta and beta branches are removed. You will need to opt into one of the following: beta-e uses Lua properties attached to entities. This is the same build that was previously called "beta2". beta-s uses Lua properties attached to entity sub-objects / components. This is the same build that was previously called "beta". 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted September 1 Author Posted September 1 0.9.9 (beta-e) Editor updated with some minor fixes. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted September 3 Author Posted September 3 0.9.9 (beta-e) Full update of everything. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted September 3 Author Posted September 3 0.9.9 (beta-e) Tween class removed from Lua API, FPSGun and Bullet scripts are updated. 1 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Josh Posted September 4 Author Posted September 4 Beta Full update of everything In Lua projects, some adjustments have been made to the entity properties UI to better reflect the way entity scripts are working now. Behavior in C++ project is unchanged. 1 My job is to make tools you love, with the features you want, and performance you can't live without.
Recommended Posts