diff --git a/lua/acf/menu/items_cl/fun_entities.lua b/lua/acf/menu/items_cl/fun_entities.lua index 2e5c903d..188e8928 100644 --- a/lua/acf/menu/items_cl/fun_entities.lua +++ b/lua/acf/menu/items_cl/fun_entities.lua @@ -122,11 +122,15 @@ end do -- Procedural Armor local DensityText = "Density: %sg/cm³ (%skg/in³)" local ArmorTypes = Classes.ArmorTypes + local PreviewSettings = { + FOV = 120, + Height = 160, + } local function CreateMenu(Menu) local Entries = ArmorTypes.GetEntries() - ACF.SetToolMode("acf_menu", "Spawner", "Component") + ACF.SetToolMode("acf_menu", "Spawner", "Armor") ACF.SetClientData("PrimaryClass", "acf_armor") ACF.SetClientData("SecondaryClass", "N/A") @@ -139,10 +143,11 @@ do -- Procedural Armor local SizeY = Menu:AddSlider("Plate Width (gmu)", 0.25, 420, 2) local SizeZ = Menu:AddSlider("Plate Thickness (mm)", 5, 1000) - local ClassBase = Menu:AddCollapsible("Material Information") - local ClassName = ClassBase:AddTitle() - local ClassDesc = ClassBase:AddLabel() - local ClassDens = ClassBase:AddLabel() + local ClassBase = Menu:AddCollapsible("Material Information") + local ClassName = ClassBase:AddTitle() + local ClassDesc = ClassBase:AddLabel() + local ClassPreview = ClassBase:AddModelPreview("models/holograms/hq_rcube_thin.mdl", true) + local ClassDens = ClassBase:AddLabel() function ClassList:OnSelect(Index, _, Data) if self.Selected == Data then return end @@ -154,6 +159,8 @@ do -- Procedural Armor ClassName:SetText(Data.Name) ClassDesc:SetText(Data.Description) + ClassPreview:UpdateModel("models/holograms/hq_rcube_thin.mdl", "phoenix_storms/metalfloor_2-3") + ClassPreview:UpdateSettings(PreviewSettings) ClassDens:SetText(DensityText:format(Density, math.Round(Density * ACF.gCmToKgIn, 2))) ACF.SetClientData("ArmorType", Data.ID) diff --git a/lua/acf/menu/operations/acf_menu.lua b/lua/acf/menu/operations/acf_menu.lua index 2e771423..43a88f7f 100644 --- a/lua/acf/menu/operations/acf_menu.lua +++ b/lua/acf/menu/operations/acf_menu.lua @@ -328,6 +328,7 @@ ACF.CreateMenuOperation("Engine", "engine", "fuel tank") ACF.CreateMenuOperation("Component", "component") ACF.CreateMenuOperation("Gearbox", "gearbox") ACF.CreateMenuOperation("Sensor", "sensor") +ACF.CreateMenuOperation("Armor", "armor plate") ACF.CreateMenuOperation("1-Turret", "turret") ACF.CreateMenuOperation("2-Motor", "turret motor") diff --git a/lua/entities/acf_armor/init.lua b/lua/entities/acf_armor/init.lua index 73c68c35..b7df3604 100644 --- a/lua/entities/acf_armor/init.lua +++ b/lua/entities/acf_armor/init.lua @@ -95,8 +95,8 @@ do -- Spawning and Updating Player:AddCount("_acf_armor", Plate) Player:AddCleanup("_acf_armor", Plate) - Plate:SetScaledModel("models/holograms/cube.mdl") - Plate:SetMaterial("sprops/textures/sprops_metal1") + Plate:SetScaledModel("models/holograms/hq_rcube_thin.mdl") + Plate:SetMaterial("phoenix_storms/metalfloor_2-3") Plate:SetPlayer(Player) Plate:SetAngles(Angle) Plate:SetPos(Pos) @@ -241,5 +241,15 @@ function ENT:OnRemove() Armor.OnLast(self, Armor) end + hook.Run("ACF_OnEntityLast", "acf_armor", self, Armor) + WireLib.Remove(self) +end + +do -- Wire overlay text + local OverlayText = "Armor Type: %s\nPlate Size: %.1f x %.1f x %.1f" + + function ENT:UpdateOverlayText() + return OverlayText:format(self.ArmorClass.Name, self.Size[1], self.Size[2], self.Size[3]) + end end \ No newline at end of file