{"id":"emdomanus/facet","name":"facet","scope":"emdomanus","platform":"roblox","description":"Client-side 3D UI surface primitives for Roblox.","version":"0.1.5","latest":"0.1.5","versions":["0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"ca16f3c2d966182b78d38e0b38eef18289884591320a64863ba479d06146d678","likes":0,"downloads":0,"install":"forest install emdomanus/facet","url":"https://forest.dev/p/roblox/emdomanus/facet","files":"https://api.forest.dev/ai/package/roblox/emdomanus/facet/files","readme":"# Facet\n\nClient-side 3D UI surface primitives for Roblox.\n\nFacet turns screen-space UI regions into camera-aware 3D `SurfaceGui` planes.\nIt is meant to stay small: lifecycle, component surfaces, projection math,\nfacing, pivot rotation, and shadow solving.\n\n## Shape\n\n```text\nsrc/init.luau\nsrc/facet/\n  services/facetClient/client/facetClientClient.luau\n  managers/facetManager/client/facetManagerClient.luau\n  components/component3d/client/component3dClient.luau\n  math/\n  types/\n```\n\nThe public package exposes handle types. Complete/internal shapes are exported\nfor adapters and package internals, but normal callers should hold handles.\n\n## Quick Use\n\n```luau\nlocal Facet = require(Packages.Facet)\n\nlocal component = Facet.createComponent({\n    name = \"BottomHud\",\n    parent = workspace.CurrentCamera,\n    guiParent = game.Players.LocalPlayer.PlayerGui,\n    screenRect = {\n        position = UDim2.fromScale(0.5, 1),\n        size = UDim2.fromScale(0.54, 0.235),\n        anchor = Vector2.new(0.5, 1),\n    },\n    facing = {\n        mode = \"lookAtCamera\",\n        maxYawAngle = 0,\n    },\n    pivot = {\n        point = Vector2.new(0.5, 1),\n        rotation = CFrame.Angles(math.rad(8), 0, 0),\n    },\n})\n\nlocal frame = component:getFrame()\n```\n\n## Build\n\n```powershell\naftman install\nwally install\nrojo build default.project.json -o facet.rbxm\n```\n\n## Dev Harness\n\n`dev.project.json` mounts Facet plus a Rojo-only client demo under\n`StarterPlayerScripts`. It is excluded from the Wally package.\n\n```powershell\nrojo serve dev.project.json\n```\n\nIn Studio, the demo includes a center-right angled control panel with an auto\nstepping toggle, one-step button, and FOV slider. Press `M` to toggle manual\nstepping and `N` to step once while manual stepping is active.\n","readmeTruncated":false}