4,794 Commits over 1,371 Days - 0.15cph!
Various optimizations for performance including use RenderAlpha instead of EnableDrawing (why does this help?)
Use native System.Numerics.Vector3 for fog calculations because it is faster, and only update the fog map once every 100ms
Use Library.GetAttribute instead of using reflection to get the type name
Fixed entity hud anchor elements updating in the wrong place. Added component system for items. Units will take time to move between tunnels.
Merge branch 'master' of sbox-rts
Fixed NetworkEntityList changed callback being called every time even when it isn't dirty
Make SceneObject.All a read only list
Done properly and remove old attempt at wrapping IParticleCollection
Implemented temporary tunnel model
Increase SMG fire rate and half damage
Update the hold type of the SMG
Attempt to map the citizen clothing models to a static class for intellisense and update units to use some clothes for now
Fixed the Entity Hud not showing for buildings
Added a Tunnel building. It has an ability that can connect itself to another Tunnel building, and units that occupy one will vacate the other. Adding the Infrastructure technology and restructured the tech tree.
Added a Status Effect system. Statuses such as Burning can be applied to units or structures for a certain time. Any Flamethrower will apply this to units in range, including your own units!
Give the buggy a smaller node size
Added the Buggy, a vehicle that some units can enter and attack from. Added a system to allow unit definitions to specify a custom entity type (that must extend UnitEntity) for specialized behavior.
Added the Watchtower and Pillbox structures that can have occupant units that can attack from the structure
Added `muzzle` attachment to the Watchtower
Far simpler approach to fetching and interfacing with particle system scene objects
Some extra particle methods
Added all base resistance types and updated to support weaknesses which are just negative resistances. Moved some UI classes into their own thing for simplicity. Added resistances / weaknesses to tooltips.
Use spawns worker not assault
Initial Flamethrower effect implementation (might need some re-thinking.)
Refactored managers to simpler names. Added a Damage Resistance system. Units and buildings can have resistances to different damage types such as Fire, Explosions or Projectiles.
Added APC for transporting units. Added new technologies: Carbines, Armored Plating and Pyrotechnics. Added Pyromaniac flamethrower unit stub. Changed Assault -> Cannonfodder, and Assault is now an SMG unit.
Fixed render entities breaking if you delete any render entity within a tick event callback
Revert back to using Event.Frame for the EntityHudAnchor positional update
Fixed UI issues with EntityHudAnchor and now they fade in and out properly when units become visible through fog
Added Occupiable interface for items and entities so that units can now occupy both units and buildings (transport vehicles.) Fixed unit line of sight so now units properly fade in exactly on the border edge. Temporarily use a little hack for occupants list until we find a proper fix. Refactored target system for units to have multiple types.
Align Entity Hud elements properly (centered) with margins. Units can now fire through other units. Renamed Range to Radius in most cases for clarity.
Units will be automatically evicted when a building is destroyed. Buildings can optionally specify an occupant damage scale, if the building is damaged the units inside will take this percent of damage. Units will now periodically check to see if there are better targets to auto attack.
Added Building Generator system. You can specify whether a building generates resources over time, and whether it needs units occupying the buildings to do so and how many. Multipliers per occupant. Added brewery support to generate Beer per Worker inside over time. Added ResourceHint UI display that shows changes in resources over a position in the world. Re-jigged some technologies to make use of the Research Lab.
Added cooldown support for abilities. Added Client support for ability callbacks for doing any client-side effects. Added use duration support for abilities (some abilities take a while to complete.) Each ability a unit has is now its own instance and can carry additional data.
Merge branch 'master' of sbox-rts
Added a generic ability system. Units can have different abilities that have their own dependencies. Abilities can target an area, a specific unit, or a specific structure. Implemented Heal ability for the medic. Cooldowns pending.
Added fade distances and shadow fade distances to lights (#17)
No longer poll for selection changes in SelectionItem but use callbacks instead. Properly update command list when anything changes that might give different commands.
Added a unit rank system. Each rank gives +1 damage bonus up to a max of 3 ranks.
Make Flow Field Blocker collisions static so that they never update again
Added `flowfield_blocker` a brush entity that can be used to manually add areas that shouldn't be accessible
I finally found it! This fixes agents sometimes moving through collisions exactly on a chunk border. You wouldn't believe the pain this caused me.
Cleared up some ambiguity in flow field property naming, and fixed automatic chunk sizing to support almost any node size. Added a new 200 node size pathfinder specifically for large vehicles.
Removed an old log and temporarily use position ahead instead of destination for flocking
Re-introduced flocking but this time it isn't rubbish - first check if the path we're steering off to is available
Added fade distances and shadow fade distances to lights
But don't make the pan speed super slow
Support ZNear and ZFar
Merge branch 'master' of sbox-rts
Expose ZNear and ZFar on Camera
Merge branch 'master' of sbox-game