212 lines
7.9 KiB
Plaintext
Executable File
212 lines
7.9 KiB
Plaintext
Executable File
--
|
|
-- File:: rockstar/helpers/VertAnglePaint.ms
|
|
-- Description:: Paints verts by angle
|
|
-- Removed blending for now as Max is a dick with multiplying colour values
|
|
--
|
|
-- Author:: Stuart Macdonald <stuart.macdonald@rockstarnorth.com>
|
|
-- Date:: 04-01-09
|
|
--
|
|
-----------------------------------------------------------------------------
|
|
|
|
-----------------------------------------------------------------------------
|
|
-- Rollout
|
|
-----------------------------------------------------------------------------
|
|
rollout VertAnglePaint_roll "Vert Angle Paint"
|
|
(
|
|
--////////////////////////////////////////////////////////////
|
|
-- globals
|
|
--////////////////////////////////////////////////////////////
|
|
global selset
|
|
|
|
|
|
--////////////////////////////////////////////////////////////
|
|
-- interface
|
|
--////////////////////////////////////////////////////////////
|
|
hyperlink lnkHelp "Help?" address:"https://devstar.rockstargames.com/wiki/index.php/Vert_Angle_Painter" align:#right color:(color 0 0 255) hoverColor:(color 0 0 255) visitedColor:(color 0 0 255)
|
|
|
|
label Lcolour "Colour" pos:[80,28] width:40 height:16
|
|
label lAngle "Angle min/max" pos:[144,28] width:80 height:16
|
|
--label lBlend "Blend " pos:[240,28] width:48 height:16
|
|
|
|
checkbutton bLayer1 "Layer 1" pos:[8,52] width:56 height:24 enabled:true
|
|
colorPicker cLayer1 "" pos:[72,52] width:48 height:24 color:(color 0 0 0)
|
|
label Llayer "Layer" pos:[16,28] width:32 height:16
|
|
spinner sMin1 "" pos:[136,54] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax1 "" pos:[184,54] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend1 "" pos:[240,54] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer2 "Layer 2" pos:[8,84] width:56 height:24 enabled:true
|
|
colorPicker cLayer2 "" pos:[72,84] width:48 height:24 color:(color 0 0 255)
|
|
spinner sMin2 "" pos:[136,86] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax2 "" pos:[184,86] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend2 "" pos:[240,86] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer3 "Layer 3" pos:[8,116] width:56 height:24 enabled:true
|
|
colorPicker cLayer3 "" pos:[72,116] width:48 height:24 color:(color 0 255 0)
|
|
spinner sMin3 "" pos:[136,118] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax3 "" pos:[184,118] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend3 "" pos:[240,118] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer4 "Layer 4" pos:[8,148] width:56 height:24 enabled:true
|
|
colorPicker cLayer4 "" pos:[72,148] width:48 height:24 color:(color 0 255 255)
|
|
spinner sMin4 "" pos:[136,150] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax4 "" pos:[184,150] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend4 "" pos:[240,150] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer5 "Layer 5" pos:[8,180] width:56 height:24 enabled:true
|
|
colorPicker cLayer5 "" pos:[72,180] width:48 height:24 color:(color 255 0 0)
|
|
spinner sMin5 "" pos:[136,182] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax5 "" pos:[184,182] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend5 "" pos:[240,181] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer6 "Layer 6" pos:[8,212] width:56 height:24 enabled:true
|
|
colorPicker cLayer6 "" pos:[72,212] width:48 height:24 color:(color 255 0 255)
|
|
spinner sMin6 "" pos:[136,214] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax6 "" pos:[184,214] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend6 "" pos:[240,214] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer7 "Layer 7" pos:[8,244] width:56 height:24 enabled:true
|
|
colorPicker cLayer7 "" pos:[72,244] width:48 height:24 color:(color 255 255 0)
|
|
spinner sMin7 "" pos:[136,246] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax7 "" pos:[184,246] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend7 "" pos:[240,246] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
checkbutton bLayer8 "Layer 8" pos:[8,276] width:56 height:24 enabled:true
|
|
colorPicker cLayer8 "" pos:[72,276] width:48 height:24 color:(color 255 255 255)
|
|
spinner sMin8 "" pos:[136,278] width:40 height:16 range:[0,100,0] type:#integer scale:1
|
|
spinner sMax8 "" pos:[184,278] width:40 height:16 range:[0,100,90] type:#integer scale:1
|
|
--spinner sBlend8 "" pos:[240,278] width:48 height:16 range:[0,100,0] type:#integer scale:1
|
|
|
|
button Paint_it "Paint it" pos:[90,308] width:64 height:32
|
|
|
|
|
|
--////////////////////////////////////////////////////////////
|
|
-- events
|
|
--////////////////////////////////////////////////////////////
|
|
on Paint_it pressed do
|
|
(
|
|
gc()
|
|
selset = getCurrentSelection()
|
|
|
|
for n = 1 to selset.count do
|
|
(
|
|
if classOf selSet[n] == editable_Poly then
|
|
(
|
|
--make copy to find vert normals as it's a mesh function
|
|
numVerts = selSet[n].GetNumVertices()
|
|
|
|
vObjCheck = copy selset[n]
|
|
convertToMesh vObjCheck
|
|
|
|
for p = 1 to numVerts do
|
|
(
|
|
vNorm1 = getNormal vObjCheck p
|
|
vnorm2 = normalize [vNorm1.x, vNorm1.y, 0]
|
|
vAngle = asin ( dot vNorm1 vNorm2 )
|
|
|
|
format "vert % angle %\n" p vAngle
|
|
|
|
--vColour = polyOp.setVertColor selSet[n] 9
|
|
vColour = black
|
|
--Layer 1
|
|
if bLayer1.checked then
|
|
(
|
|
if (sMin1.value <= vAngle ) and (sMax1.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer1.color
|
|
)
|
|
)
|
|
|
|
--Layer 2
|
|
if bLayer2.checked then
|
|
(
|
|
if (sMin2.value <= vAngle ) and (sMax2.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer2.color
|
|
)
|
|
)
|
|
|
|
--Layer 3
|
|
if bLayer3.checked then
|
|
(
|
|
if (sMin3.value <= vAngle ) and (sMax3.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer3.color
|
|
)
|
|
)
|
|
|
|
--Layer 4
|
|
if bLayer4.checked then
|
|
(
|
|
if (sMin4.value <= vAngle ) and (sMax4.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer4.color
|
|
)
|
|
)
|
|
|
|
--Layer 5
|
|
if bLayer5.checked then
|
|
(
|
|
if (sMin5.value <= vAngle ) and (sMax5.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer5.color
|
|
)
|
|
)
|
|
|
|
--Layer 6
|
|
if bLayer6.checked then
|
|
(
|
|
if (sMin6.value <= vAngle ) and (sMax6.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer6.color
|
|
)
|
|
)
|
|
|
|
--Layer 7
|
|
if bLayer7.checked then
|
|
(
|
|
if (sMin7.value <= vAngle ) and (sMax7.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer7.color
|
|
)
|
|
)
|
|
|
|
--Layer 8
|
|
if bLayer8.checked then
|
|
(
|
|
if (sMin8.value <= vAngle ) and (sMax8.value >= vAngle ) then
|
|
(
|
|
|
|
polyOp.setVertColor selSet[n] 9 p cLayer8.color
|
|
)
|
|
)
|
|
|
|
|
|
)
|
|
|
|
delete vObjCheck
|
|
|
|
-- now update vert color display, odd way to do it but update doesn't work
|
|
selSet[n].vertexColorType = 0
|
|
completeRedraw()
|
|
selSet[n].vertexColorType = 5
|
|
selSet[n].vertexColorMapChannel = 9
|
|
completeRedraw()
|
|
)
|
|
|
|
)
|
|
)
|
|
)
|
|
|
|
if VertAnglePaint_float != undefined then closerolloutfloater VertAnglePaint_float
|
|
VertAnglePaint_float = newrolloutfloater "Vert Angle Paint" 260 380 100 100
|
|
addrollout VertAnglePaint_roll VertAnglePaint_float
|
|
|