update
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { Color, Material, Node, UIRenderer, UITransform, Vec2 } from 'cc'
|
||||
|
||||
import ShaderMaterialPrefab from '../../game/prefab/ShaderMaterialPrefab'
|
||||
|
||||
export default class ShaderHelper {
|
||||
@@ -9,21 +10,15 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static clearAllEffect(
|
||||
showNode: Node,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).default
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).default,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -36,23 +31,18 @@ export default class ShaderHelper {
|
||||
public static setGrayEffect(
|
||||
showNode: Node,
|
||||
grayLevel: number = 1,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).grayMaterial
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab)
|
||||
.grayMaterial,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('grayLevel', grayLevel)
|
||||
renderComponent.setMaterial(material, 0)
|
||||
})
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('grayLevel', grayLevel)
|
||||
renderComponent.setMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('grayLevel', grayLevel)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('grayLevel', grayLevel)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -61,15 +51,13 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static showGrayMv(showNode: Node) {
|
||||
let grayValue: number = 0.5
|
||||
let intervalId = setInterval(() => {
|
||||
const intervalId = setInterval(() => {
|
||||
grayValue += 0.01
|
||||
if (grayValue >= 1) {
|
||||
grayValue = 1
|
||||
clearInterval(intervalId)
|
||||
}
|
||||
if (showNode) {
|
||||
ShaderHelper.setGrayEffect(showNode, grayValue)
|
||||
}
|
||||
if (showNode) ShaderHelper.setGrayEffect(showNode, grayValue)
|
||||
}, 1)
|
||||
}
|
||||
|
||||
@@ -82,23 +70,17 @@ export default class ShaderHelper {
|
||||
public static setOldPhotoEffect(
|
||||
showNode: Node,
|
||||
grayLevel: number = 1,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).oldPhoto
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).oldPhoto,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('oldLevel', grayLevel)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('oldLevel', grayLevel)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('oldLevel', grayLevel)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -107,15 +89,13 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static showOldPhotoMv(showNode: Node) {
|
||||
let grayValue: number = 0
|
||||
let intervalId = setInterval(() => {
|
||||
const intervalId = setInterval(() => {
|
||||
grayValue += 0.01
|
||||
if (grayValue >= 1) {
|
||||
grayValue = 1
|
||||
clearInterval(intervalId)
|
||||
}
|
||||
if (showNode) {
|
||||
ShaderHelper.setOldPhotoEffect(showNode, grayValue)
|
||||
}
|
||||
if (showNode) ShaderHelper.setOldPhotoEffect(showNode, grayValue)
|
||||
}, 1)
|
||||
}
|
||||
|
||||
@@ -131,27 +111,21 @@ export default class ShaderHelper {
|
||||
public static setGlowInner(
|
||||
showNode: Node,
|
||||
materialParam: any,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).glowInner
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).glowInner,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('glowColor', materialParam.glowColor)
|
||||
material.setProperty('glowColorSize', materialParam.glowColorSize)
|
||||
material.setProperty('glowThreshold', materialParam.glowThreshold)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('glowColor', materialParam.glowColor)
|
||||
material.setProperty('glowColorSize', materialParam.glowColorSize)
|
||||
material.setProperty('glowThreshold', materialParam.glowThreshold)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
renderComponent.setMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('glowColor', materialParam.glowColor)
|
||||
material.setProperty('glowColorSize', materialParam.glowColorSize)
|
||||
material.setProperty('glowThreshold', materialParam.glowThreshold)
|
||||
renderComponent.setMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -164,7 +138,7 @@ export default class ShaderHelper {
|
||||
this.setGlowInner(showNode, {
|
||||
glowColor: color,
|
||||
glowColorSize: 0.015,
|
||||
glowThreshold: 0.1
|
||||
glowThreshold: 0.1,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -173,29 +147,27 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static showFlash(showNode: Node, totalFlashTimes: number = 1) {
|
||||
let timeCount: number = 0
|
||||
let color: Color = Color.WHITE
|
||||
const color: Color = Color.WHITE
|
||||
let flashTimes: number = 0
|
||||
let intervalId = setInterval(() => {
|
||||
const intervalId = setInterval(() => {
|
||||
timeCount += 1
|
||||
if (timeCount % 50 == 0) {
|
||||
let tempCount: number = timeCount / 50
|
||||
if (tempCount % 2 == 0) {
|
||||
if (timeCount % 50 === 0) {
|
||||
const tempCount: number = timeCount / 50
|
||||
if (tempCount % 2 === 0) {
|
||||
color.a = 100
|
||||
this.setGlowInner(showNode, {
|
||||
glowColor: color,
|
||||
glowColorSize: 0.1,
|
||||
glowThreshold: 0
|
||||
glowThreshold: 0,
|
||||
})
|
||||
} else {
|
||||
flashTimes++
|
||||
this.setGlowInner(showNode, {
|
||||
glowColor: color,
|
||||
glowColorSize: 0,
|
||||
glowThreshold: 0
|
||||
glowThreshold: 0,
|
||||
})
|
||||
if (flashTimes > totalFlashTimes) {
|
||||
clearInterval(intervalId)
|
||||
}
|
||||
if (flashTimes > totalFlashTimes) clearInterval(intervalId)
|
||||
}
|
||||
}
|
||||
}, 1)
|
||||
@@ -210,25 +182,19 @@ export default class ShaderHelper {
|
||||
public static setMosaic(
|
||||
showNode: Node,
|
||||
materialParam: any,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).mosaic
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).mosaic,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('xBlockCount', materialParam.xBlockCount)
|
||||
material.setProperty('yBlockCount', materialParam.yBlockCount)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('xBlockCount', materialParam.xBlockCount)
|
||||
material.setProperty('yBlockCount', materialParam.yBlockCount)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('xBlockCount', materialParam.xBlockCount)
|
||||
material.setProperty('yBlockCount', materialParam.yBlockCount)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -237,17 +203,15 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static showMosaicMv(showNode: Node, callback: Function = null) {
|
||||
let masaicTimes: number = 500
|
||||
let intervalId = setInterval(() => {
|
||||
const intervalId = setInterval(() => {
|
||||
masaicTimes -= 2
|
||||
this.setMosaic(showNode, {
|
||||
xBlockCount: masaicTimes,
|
||||
yBlockCount: masaicTimes
|
||||
yBlockCount: masaicTimes,
|
||||
})
|
||||
if (masaicTimes <= 30) {
|
||||
clearInterval(intervalId)
|
||||
if (callback) {
|
||||
callback()
|
||||
}
|
||||
if (callback) callback()
|
||||
}
|
||||
}, 1)
|
||||
}
|
||||
@@ -261,27 +225,22 @@ export default class ShaderHelper {
|
||||
public static setRoundCornerCrop(
|
||||
showNode: Node,
|
||||
roundCornerRadius: number = 0.1,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).roundCornerCrop
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab)
|
||||
.roundCornerCrop,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
// material.setProperty("roundCornerRadius", roundCornerRadius);
|
||||
material.setProperty('xRadius', roundCornerRadius)
|
||||
material.setProperty('yRadius', roundCornerRadius)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
// material.setProperty("roundCornerRadius", roundCornerRadius);
|
||||
material.setProperty('xRadius', roundCornerRadius)
|
||||
material.setProperty('yRadius', roundCornerRadius)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
// material.setProperty("roundCornerRadius", roundCornerRadius);
|
||||
material.setProperty('xRadius', roundCornerRadius)
|
||||
material.setProperty('yRadius', roundCornerRadius)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -304,33 +263,49 @@ export default class ShaderHelper {
|
||||
enableGradient: boolean = true,
|
||||
cropAlpha: boolean = true,
|
||||
enableFog: boolean = false,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).flashLight
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab)
|
||||
.flashLight,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
// showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
// material.setProperty('lightColor', lightColor)
|
||||
// material.setProperty('lightWidth', lightWidth)
|
||||
// material.setProperty('lightAngle', lightAngle)
|
||||
// material.setProperty('enableGradient', enableGradient ? 1 : 0)
|
||||
// material.setProperty('cropAlpha', cropAlpha ? 1 : 0)
|
||||
// material.setProperty('enableFog', enableFog ? 1 : 0)
|
||||
// renderComponent.setSharedMaterial(material, 0)
|
||||
// })
|
||||
// showNode.children.forEach((childNode) => {
|
||||
// childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
// material.setProperty('lightColor', lightColor)
|
||||
// material.setProperty('lightWidth', lightWidth)
|
||||
// material.setProperty('lightAngle', lightAngle)
|
||||
// material.setProperty('enableGradient', enableGradient ? 1 : 0)
|
||||
// material.setProperty('cropAlpha', cropAlpha ? 1 : 0)
|
||||
// material.setProperty('enableFog', enableFog ? 1 : 0)
|
||||
// renderComponent.setSharedMaterial(material, 0)
|
||||
// })
|
||||
// })
|
||||
const setMaterialProperties = (renderer: UIRenderer) => {
|
||||
try {
|
||||
material.setProperty('lightColor', lightColor)
|
||||
material.setProperty('lightWidth', lightWidth)
|
||||
material.setProperty('lightAngle', lightAngle)
|
||||
material.setProperty('enableGradient', enableGradient ? 1 : 0)
|
||||
material.setProperty('cropAlpha', cropAlpha ? 1 : 0)
|
||||
material.setProperty('enableFog', enableFog ? 1 : 0)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
material.setProperty('lightColor', lightColor)
|
||||
material.setProperty('lightWidth', lightWidth)
|
||||
material.setProperty('lightAngle', lightAngle)
|
||||
material.setProperty('enableGradient', enableGradient ? 1 : 0)
|
||||
material.setProperty('cropAlpha', cropAlpha ? 1 : 0)
|
||||
material.setProperty('enableFog', enableFog ? 1 : 0)
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
renderer.setSharedMaterial(material, 0)
|
||||
} catch (error) {
|
||||
console.error('Error setting material properties:', error)
|
||||
}
|
||||
}
|
||||
const renderComponents = [
|
||||
...showNode.getComponents(UIRenderer),
|
||||
...showNode.children.flatMap(childNode => childNode.getComponents(UIRenderer)),
|
||||
]
|
||||
|
||||
renderComponents.forEach((renderComponent: UIRenderer) => {
|
||||
setMaterialProperties(renderComponent)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -340,28 +315,23 @@ export default class ShaderHelper {
|
||||
* @param callback
|
||||
*/
|
||||
public static showFlashLightMv(showNode: Node, callback: Function = null) {
|
||||
let nowClor: Color = new Color(0, 0, 0, 255)
|
||||
const nowClor: Color = new Color(0, 0, 0, 255)
|
||||
let colorIndex: number = 0
|
||||
let lightAngle: number = 0
|
||||
let intervalId = setInterval(() => {
|
||||
if (colorIndex == 0) {
|
||||
const intervalId = setInterval(() => {
|
||||
if (colorIndex === 0) {
|
||||
nowClor.r = nowClor.r + 2
|
||||
if (nowClor.r >= 255) {
|
||||
colorIndex += 1
|
||||
}
|
||||
} else if (colorIndex == 1) {
|
||||
if (nowClor.r >= 255) colorIndex += 1
|
||||
} else if (colorIndex === 1) {
|
||||
nowClor.g = nowClor.g + 2
|
||||
if (nowClor.g >= 255) {
|
||||
colorIndex += 1
|
||||
}
|
||||
if (nowClor.g >= 255) colorIndex += 1
|
||||
} else {
|
||||
nowClor.b = nowClor.b + 2
|
||||
if (nowClor.b >= 255) {
|
||||
clearInterval(intervalId)
|
||||
ShaderHelper.clearAllEffect(showNode)
|
||||
if (callback) {
|
||||
callback()
|
||||
}
|
||||
if (callback) callback()
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -372,21 +342,15 @@ export default class ShaderHelper {
|
||||
|
||||
public static setFlag(
|
||||
showNode: Node,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).flag
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).flag,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -397,32 +361,23 @@ export default class ShaderHelper {
|
||||
*/
|
||||
public static setGaussian(
|
||||
showNode: Node,
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(
|
||||
ShaderMaterialPrefab
|
||||
).gaussian
|
||||
material: Material = ShaderMaterialPrefab.instance.getComponent(ShaderMaterialPrefab).gaussian,
|
||||
) {
|
||||
showNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
let tran = renderComponent.node.getComponent(UITransform)
|
||||
showNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
const tran = renderComponent.node.getComponent(UITransform)
|
||||
material.setProperty('textureSize', new Vec2(tran.contentSize.width, tran.contentSize.height))
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode.getComponents(UIRenderer).forEach((renderComponent: UIRenderer) => {
|
||||
const tran = renderComponent.node.getComponent(UITransform)
|
||||
material.setProperty(
|
||||
'textureSize',
|
||||
new Vec2(tran.contentSize.width, tran.contentSize.height)
|
||||
new Vec2(tran.contentSize.width, tran.contentSize.height),
|
||||
)
|
||||
renderComponent.setMaterial(material, 0)
|
||||
// material.setProperty("textureSize", cc.v2(showNode.width, showNode.height));
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
showNode.children.forEach((childNode) => {
|
||||
childNode
|
||||
.getComponents(UIRenderer)
|
||||
.forEach((renderComponent: UIRenderer) => {
|
||||
let tran = renderComponent.node.getComponent(UITransform)
|
||||
material.setProperty(
|
||||
'textureSize',
|
||||
new Vec2(tran.contentSize.width, tran.contentSize.height)
|
||||
)
|
||||
// material.setProperty("textureSize", cc.v2(showNode.width, showNode.height));
|
||||
renderComponent.setSharedMaterial(material, 0)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user