2025-06-04 05:02:57 +08:00

79 lines
2.4 KiB
Plaintext

autoImport('TextureScale2')
FunctionTextureScale = class('FunctionTextureScale')
FunctionTextureScale.ins = nil
function FunctionTextureScale:ctor()
self.idGenerator = 0
self.queueWillScale = {}
self.nextFlag = true
FunctionTextureScale.ins = self
end
function FunctionTextureScale:Scale(texture2D, coefficient, complete_callback)
local id = self.idGenerator + 1
local scaleParams = {['id'] = id, ['texture2D'] = texture2D, ['coefficient'] = coefficient, ['completeCallback'] = complete_callback}
table.insert(self.queueWillScale, scaleParams)
return id
end
function FunctionTextureScale:CancelScale(id)
for i = 1, #self.queueWillScale do
local scaleParam = self.queueWillScale[i]
if scaleParam['id'] == id then
self.queueWillScale[i] = nil
break
end
end
end
function FunctionTextureScale:Update()
if self.nextFlag and #self.queueWillScale > 0 then
local scaleParam = self.queueWillScale[1]
self:DoScale(scaleParam['texture2D'], scaleParam['coefficient'], scaleParam['completeCallback'])
self.nextFlag = false
end
end
local _goTextureScale = nil
local _camera = nil
local _uiTexture = nil
local _screenShotHelper = nil
function FunctionTextureScale:DoScale(texture2D, coefficient, complete_callback)
if _goTextureScale == nil then
_goTextureScale = GameObject.Find('TextureScale')
_screenShotHelper = _goTextureScale:GetComponent(ScreenShotHelper)
local transCamera = _goTextureScale.transform:Find('Camera')
_camera = transCamera:GetComponent(Camera)
_camera.hideFlags = HideFlags.HideAndDontSave
_camera.enabled = false
local transUITexture = _goTextureScale.transform:Find('Texture')
_uiTexture = transUITexture:GetComponent(UITexture)
end
local texWidth = texture2D.width
local texHeight = texture2D.height
local newTexWidth = texWidth * coefficient
local newTexHeight = texHeight * coefficient
local ratio = newTexWidth / newTexHeight
_camera.aspect = ratio
_uiTexture.mainTexture = texture2D
local size = UIManagerProxy.Instance:GetUIRootSize();
_uiTexture.width = size[1]; --math.floor(_uiTexture.height * ratio)
_uiTexture.height = size[2]; --_camera.pixelHeight * 1280 / _camera.pixelWidth
_screenShotHelper:Setting(newTexWidth, newTexHeight, TextureFormat.RGB24, 24, ScreenShot.AntiAliasing.None)
_screenShotHelper:GetScreenShot(function (x)
_uiTexture.mainTexture = nil
if complete_callback ~= nil then
complete_callback(x)
end
table.remove(self.queueWillScale, 1)
self.nextFlag = true
end, _camera)
end