79 lines
2.4 KiB
Plaintext
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 |