Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ReplicatedStorage = game:GetService("ReplicatedStorage")
- local Matter = require(ReplicatedStorage.Shared.Libs.Matter)
- local Components = require(ReplicatedStorage.Shared.Components)
- local Constants = require(ReplicatedStorage.Shared.Constants)
- local function updateInstanceUsingFrame(frame, sprite)
- local tileSizeScale = sprite.TileSize / frame.Size
- local tileSize = UDim2.fromScale(tileSizeScale.X, tileSizeScale.Y)
- frame.Instance.ScaleType = sprite.ScaleType
- frame.Instance.SliceCenter = sprite.SliceCenter
- frame.Instance.TileSize = tileSize
- frame.Instance.Image = sprite.Image
- frame.Instance.ImageColor3 = sprite.ImageColor
- frame.Instance.ImageRectOffset = sprite.ImageRectOffset
- frame.Instance.ImageRectSize = sprite.ImageRectSize
- frame.Instance.ImageTransparency = sprite.ImageTransparency
- end
- local function UpdateSprites(world, state)
- for id, frame in world:query(Components.Frame, Components.Sprite) do
- if frame.Instance then
- continue
- end
- local instance = Instance.new("ImageLabel")
- instance.ResampleMode = Enum.ResamplerMode.Pixelated
- instance.AnchorPoint = Vector2.one / 2
- instance.BackgroundTransparency = 1
- world:insert(id, frame:patch({
- Instance = instance,
- }))
- end
- for id, frameRecord in world:queryChanged(Components.Frame) do
- if not frameRecord.new or not frameRecord.new.Instance then
- continue
- end
- local sprite = world:get(id, Components.Sprite)
- if sprite then
- updateInstanceUsingFrame(frameRecord.new, sprite)
- end
- end
- for id, spriteRecord in world:queryChanged(Components.Sprite) do
- if not spriteRecord.new then
- continue
- end
- local frame = world:get(id, Components.Frame)
- if frame and frame.Instance then
- updateInstanceUsingFrame(frame, spriteRecord.new)
- end
- end
- for id, frame, sprite in world:query(Components.Frame, Components.Sprite) do
- if not frame.Instance then
- continue
- end
- local ratio = sprite.SliceScale / Constants.VirtualSize.Magnitude
- frame.Instance.SliceScale = ratio * state.CameraContainer.AbsoluteSize.Magnitude
- end
- end
- return UpdateSprites
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement