Last active
October 26, 2019 17:24
-
-
Save natyusha/7f41cb82f86e50c8457dd8c625b1e27a to your computer and use it in GitHub Desktop.
BBWVR2 Helper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rollout BBWVR2_Rollout "BBWVR2 Helper" width:170 ( -- main rollout | |
/* | |
BBWVR2 Helper maxscript written by natyusha for use with the BBWVR2-Rig. | |
Designed to facilitate fast exports of preset body sizes with automated vertex normal smoothing. | |
With this tool custom body sizes can be created and exported at an extremely rapid pace. | |
*/ | |
group "Prep Modifiers and Smooth" ( -- buttons for calling functions that smooth normals and enable the correct modifiers for a given bodytype | |
button 'btnBody' "Body\nStandard" across:2 width:70 height:30 align:#left tooltip:"average normals and prep modifiers for the nude upper body" | |
button 'btnBodyF' "Body\nFeatureless" width:70 height:30 align:#right tooltip:"average normals and prep modifiers for the featureless upper body" | |
button 'btnLegs' "Legs\nNew Gens" across:2 width:70 height:30 align:#left tooltip:"average normals and prep modifiers for the nude legs, genitals and anus" | |
button 'btnLegsF' "Legs\nFeatureless" width:70 height:30 align:#right tooltip:"average normals and prep modifiers for the featureless legs" | |
button 'btnLegsFB' "Legs\nFemboy" across:2 width:70 height:30 align:#left tooltip:"average normals and prep modifiers for the featureless legs and anus" | |
button 'btnLegsFuta' "Legs\nFutalicious" width:70 height:30 align:#right tooltip:"average normals and prep modifiers for the donger" | |
button 'btnLegsGen2' "Legs\nGen2" across:2 width:70 height:30 align:#left tooltip:"average normals and prep modifiers for gen 2 style legs" | |
button 'btnExport' "EXPORT" width:70 height:30 align:#right tooltip:"quick export button" -- quick export button | |
) | |
group "Primary Layer Selection" ( -- buttons for quickly switching between the parts of the body for export | |
radiobuttons 'rdoLayerSelect' "" labels:#("Body", "Legs", "Feet", "Hands", "All", "None") across:3 default:0 columns:2 align:#left | |
checkbox 'chkBones' "" triState:2 align:#right width:15 offset:[39,17] tooltip:"toggle skeleton display" | |
groupbox 'grpBones' "Bone" width:36 height:40 align:#right | |
) | |
group "Secondary Layer Selection" ( -- check boxes for hiding unwanted parts from the currently selected primary layer | |
checkbox 'chkNude' "Nude" across:2 width:70 triState:2 enabled: false align:#left | |
checkbox 'chkPiercings' "Piercings" width:70 triState:2 enabled: false align:#right | |
checkbox 'chkFeatureless' "Featureless" across:2 width:70 triState:2 enabled: false align:#left | |
checkbox 'chkLingerie' "Lingerie" width:70 triState:2 enabled: false align:#right | |
checkbox 'chkFuta' "Futalicious" across:2 width:70 triState:2 enabled: false align:#left | |
checkbox 'chkAnus' "Anus" width:70 triState:2 enabled: false align:#right | |
) | |
group "BBWVR2 Size Presets" ( -- morpher and modifier presets for the main BBWVR2 Sizes | |
dropdownlist 'ddlMorphBody' "Body Size:" items:#("Large", "Medium", "Small", "XtraLarge") across:2 align:#left | |
dropdownlist 'ddlMorphLegs' "Leg Size:" items:#("Bubble", "Medium", "Small", "XtraBubble") align:#right | |
dropdownlist 'ddlMorphNewGens' "New Gens:" items:#("Base", "Spread", "Insertion", "Gape", "Innie") across:2 align:#left | |
dropdownlist 'ddlMorphAnus' "Anus State:" items:#("Base", "Gape") align:#right | |
dropdownlist 'ddlMorphFuta' "Futalicious:" items:#("Erect Small", "Erect Small Engorged", "Erect Medium", "Erect Medium Engorged", "Erect Large", "Erect Large Engorged", "Erect XtraLarge","Erect XtraLarge Engorged", "Erect Hyper", "Flaccid Small", "Flaccid Medium", "Flaccid Large", "Flaccid XtraLarge", "Flaccid Hyper") across:2 align:#left | |
dropdownlist 'ddlAreola' "Areola Size:" items:#("Base", "Large") align:#right | |
button 'btnDefaults' "Restore Default Sizes" width:144 align:#center tooltip:"enable natyusha's personal size preset" | |
) | |
hyperlink 'discord' "-Join natyusha's Discord-" address:"https://discord.gg/TDmUWpN" align:#center -- discord link for people who need help | |
--######### mesh and modifier name variables #########-- | |
local Body = $'Body0-Torso_0' | |
local BodyF = $'Body0-Torso[Featureless]_0' | |
local BodyL = $'Body-Lingerie_1' | |
local BodyP = $'Body-Piercings_1' | |
local Butt = $'Legs0-Butt_0' | |
local ButtF = $'Legs0-Butt[Featureless]_0' | |
local ButtL = $'Legs-Lingerie_1' | |
local ButtP = $'Legs-Piercings_1' | |
local NewGens = $'Legs3-NewGens_0.3' | |
local Anus = $'Legs4-Anus_0.4' | |
local Futa = $'Legs5-Futalicious_0.5' | |
local Knees = $'Legs2-Knees_0.2' | |
local Shins = $'Legs1-Shins_0.1' | |
local Normal = #Edit_Normals_Main | |
local NormalF = #Edit_Normals_Featureless | |
local NormalL = #Edit_Normals_Lingerie | |
local NormalNG = #Edit_Normals_NewGens | |
local NormalGen2 = #Edit_Normals_Gen2 | |
local NormalFuta = #Edit_Normals_Futalicious | |
local NormalFB = #Edit_Normals_Femboy | |
local MeshFB = #Edit_Mesh_Femboy | |
local MeshHP = #Edit_Mesh_HidePrivates | |
local UnwrapBodyL = #(#Unwrap_UVW_BBWVR2_L, #Unwrap_UVW_BBWVR2_M, #Unwrap_UVW_BBWVR2_S, #Unwrap_UVW_BBWVR2_XL) | |
local UnwrapFB = #Unwrap_UVW_Femboy | |
local UnwrapA = #Unwrap_UVW_LargeAreola | |
local Layers = #("Body*", "Legs*", "Feet*", "Hands*", "*", "Null", "Bones", "Targets", "*Nude*", "*Featureless", "*Lingerie", "*Piercings", "Legs Nude Anus", "Legs Futalicious") | |
local o = 8 -- futa morpher offset | |
local h -- checkbox state scope fix | |
--######### functions below this point #########-- | |
fn emptySelection = ( -- function for deselecting everything and staying in modify mode | |
max modify mode | |
max select none | |
clearSelection() | |
) | |
fn NormalSelectAll x n = ( -- function for selecting all the normals in the edit normals modifier on the defined mesh | |
x.ishidden=false | |
max modify mode | |
modPanel.setCurrentObject x.modifiers[n] | |
subobjectLevel = 1 | |
max select all | |
) | |
fn NormalAvgUni x n = ( -- function for breaking, averaging and unifying selected normals on the defined mesh | |
x.modifiers[n].EditNormalsMod.Break () | |
redrawViews() | |
x.modifiers[n].EditNormalsMod.Average useThresh:on threshold:0.001 | |
max select all | |
x.modifiers[n].EditNormalsMod.Unify toAverage:on | |
max select none | |
) | |
fn setChkProps x t y = ( -- function for setting and activating a checkbox of a given name to a given state when a btn is pressed | |
x.triState = t | |
x.enabled = y | |
x.changed x.triState | |
) | |
fn setChkTri t = ( -- function for setting checkboxes depending on the primary layer | |
chkBones.triState = t | |
chkNude.triState = t | |
chkAnus.triState = t | |
chkFeatureless.triState = t | |
chkLingerie.triState = t | |
chkFuta.triState = t | |
chkPiercings.triState = t | |
) | |
fn setChkEnable t = ( -- function for enabling checkboxes depending on the primary layer | |
chkNude.enabled = t | |
chkAnus.enabled = t | |
chkFeatureless.enabled = t | |
chkLingerie.enabled = t | |
chkFuta.enabled = t | |
chkPiercings.enabled = t | |
) | |
fn layerToggle x = ( -- function for hiding layers that don't match the entered string | |
for n=0 to layerManager.count-1 do ( | |
layer = layerManager.getLayer n | |
if matchPattern layer.name pattern:x do layer.isHidden = h | |
) | |
) | |
fn setMorphs x t = ( -- function for resetting all morphs then setting the defined one to 100 | |
max create mode | |
select x | |
for i = 1 to 25 where x.morpher_variants[i].value != undefined do x.morpher_variants[i].value = 0 | |
if x.morpher_variants[t].value != undefined do x.morpher_variants[t].value = 100 | |
) | |
fn ddlMorphBodySel m = ( -- body size presets | |
setMorphs Body m | |
setMorphs BodyF m | |
setMorphs BodyL m | |
setMorphs BodyP m | |
max modify mode | |
select BodyL -- select the correct uvw modifier for lingerie | |
for i = 1 to UnwrapBodyL.count do ( | |
if i == m then (x = true) else (x = false) | |
BodyL.modifiers[UnwrapBodyL[i]].enabled = x | |
) | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
emptySelection() | |
) | |
fn ddlMorphLegsSel m = ( -- leg size presets | |
setMorphs Butt m | |
setMorphs ButtF m | |
setMorphs ButtL m | |
setMorphs Knees m | |
setMorphs Shins m | |
emptySelection() | |
) | |
fn ddlMorphNewGensSel m = ( -- new gens shape presets | |
setMorphs NewGens m | |
setMorphs ButtP 1 | |
if m == 4 then NewGens.morpher_variants[m].value = 80 -- hardcoded new gens gape slider | |
if m == 5 then ButtP.morpher_variants[1].value = 69 -- hardcoded innie piercing slider | |
emptySelection() | |
) | |
fn ddlMorphAnusSel m = ( -- anus gape shape presets | |
setMorphs Anus m | |
if m == 2 then Anus.morpher_variants[m].value = 80 -- hardcoded anus gape slider | |
emptySelection() | |
) | |
fn ddlMorphFutaSel m = ( -- futalicious size and shape presets | |
setMorphs Futa (m+o) | |
emptySelection() | |
) | |
fn ddlAreolaSel m = ( -- areola size presets | |
max modify mode | |
select Body | |
if m == 1 then ( -- set the correct modifier | |
Body.modifiers[UnwrapA].enabled = false | |
) | |
else ( | |
Body.modifiers[UnwrapA].enabled = true | |
) | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
emptySelection() | |
) | |
--######### assign functions to the ui below this point #########-- | |
on btnBody pressed do ( -- average body normals | |
setChkProps chkNude 1 true | |
setChkProps chkPiercings 1 true | |
setChkProps chkBones 1 true | |
-- select all the normals in the edit normals modifier on the correct mesh | |
NormalSelectAll Body Normal | |
-- deselect waist, arm and neck seam normals [hardcoded] | |
Body.modifiers[Normal].EditNormalsMod.Select #{421..427, 577..581, 583, 585 ,408..416, 467..468, 475, 482, 487, 493, 499, 505, 510, 417..420, 539, 544..545, 550, 857..862} select:off | |
-- break, average and unify selected normals | |
NormalAvgUni Body Normal | |
emptySelection() | |
) | |
on btnBodyF pressed do ( -- average featureless body normals | |
-- set checkboxes | |
setChkProps chkFeatureless 1 true | |
setChkProps chkLingerie 1 true | |
setChkProps chkBones 1 true | |
-- select all the normals in the edit normals modifier on the correct mesh | |
NormalSelectAll BodyF NormalF | |
-- deselect waist, arm and neck seam normals [hardcoded] | |
BodyF.modifiers[NormalF].EditNormalsMod.Select #{313..319, 473..477, 479, 481, 362..363, 370, 377, 382, 388, 394, 400, 405, 299..307, 308..312, 320..321, 434..435, 440..441, 446, 645..646} select:off | |
-- break, average and unify the rest of the normals | |
NormalAvgUni BodyF NormalF | |
-- select all the lingerie normals, break, average and unify them | |
NormalSelectAll BodyL NormalL | |
NormalAvgUni BodyL NormalL | |
emptySelection() | |
) | |
on btnLegs pressed do ( -- convert legs to new gens and average | |
-- enable the correct leg modifiers and set checkboxes | |
setChkProps chkNude 1 true | |
setChkProps chkPiercings 1 true | |
setChkProps chkBones 1 true | |
Butt.ishidden=false | |
NewGens.ishidden=false | |
Anus.ishidden=false | |
max modify mode | |
select Anus | |
Anus.modifiers[NormalFB].enabled = false | |
select Butt | |
Butt.modifiers[MeshHP].enabled = true | |
Butt.modifiers[NormalNG].enabled = true | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
-- select all the normals in the edit normals modifier on the correct meshes | |
selectMore NewGens | |
selectMore Anus | |
subobjectLevel = 1 | |
max select all | |
-- deselect waist and thigh seam normals [hardcoded] | |
Butt.modifiers[NormalNG].EditNormalsMod.Select #{1, 4..5, 7, 9, 11, 13, 15, 17, 297, 300..301, 303, 305, 307, 309, 311, 313, 132, 139..140, 142, 144, 147, 428, 435..436, 438, 440, 443, 138, 434} select:off node:Butt | |
Butt.modifiers[NormalNG].EditNormalsMod.Break node:Butt | |
redrawViews() | |
NewGens.modifiers[NormalNG].EditNormalsMod.Break node:NewGens | |
redrawViews() | |
Anus.modifiers[NormalNG].EditNormalsMod.Break node:Anus | |
redrawViews() | |
-- average butt, new gens and anus normals across multiple meshes with 10 passes incase of seam issues | |
for i = 1 to 10 do ( | |
for i in selection do ( | |
i.modifiers[NormalNG].EditNormalsMod.Average useThresh:on threshold:0.001 node:Butt | |
i.modifiers[NormalNG].EditNormalsMod.Average useThresh:on threshold:0.001 node:NewGens | |
i.modifiers[NormalNG].EditNormalsMod.Average useThresh:on threshold:0.001 node:Anus | |
i.modifiers[NormalNG].EditNormalsMod.AverageGlobal useThresh:on threshold:0.001 | |
) | |
) | |
-- fix butt crack [hardcoded] | |
max select none | |
Butt.modifiers[NormalNG].EditNormalsMod.Select #{27, 323, 622, 704, 709, 1793, 1877, 1881, 25, 321, 610, 612, 1782, 1784, 24, 320, 616, 1787, 29, 325, 615, 806, 809, 1788, 1979, 1981, 119, 415, 1328, 2499, 219, 515, 1169, 1326..1} node:Butt | |
Butt.modifiers[NormalNG].EditNormalsMod.Break node:Butt | |
redrawViews() | |
Butt.modifiers[NormalNG].EditNormalsMod.Average useThresh:on threshold:0 node:Butt | |
-- unify butt, new gens and anus normals | |
max select all | |
for i in selection do ( | |
i.modifiers[NormalNG].EditNormalsMod.Unify node:Butt toAverage:on | |
i.modifiers[NormalNG].EditNormalsMod.Unify node:NewGens toAverage:on | |
i.modifiers[NormalNG].EditNormalsMod.Unify node:Anus toAverage:on | |
) | |
emptySelection() | |
) | |
on btnLegsF pressed do ( -- convert legs to featureless and average | |
-- enable correct modifiers and set checkboxes | |
setChkProps chkFeatureless 1 true | |
setChkProps chkLingerie 1 true | |
setChkProps chkBones 1 true | |
ButtF.ishidden=false | |
max modify mode | |
select ButtF | |
ButtF.modifiers[NormalF].enabled = true | |
ButtF.modifiers[NormalFB].enabled = false | |
ButtF.modifiers[UnwrapFB].enabled = false | |
ButtF.modifiers[MeshFB].enabled = false | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
-- select all the normals in the edit normals modifier on the correct mesh | |
NormalSelectAll ButtF NormalF | |
-- deselect waist and thigh seam normals [hardcoded] | |
ButtF.modifiers[NormalF].EditNormalsMod.Select #{1, 4..5, 7, 9, 11, 13, 15, 17, 257, 259, 261, 263..264, 266, 268, 270, 272, 127, 133..135, 137, 139, 142, 381, 388..390, 392, 394, 397} select:off | |
-- break and average butt normals | |
NormalAvgUni ButtF NormalF | |
-- fix butt crack [hardcoded] | |
ButtF.modifiers[NormalF].EditNormalsMod.Select #{521..522, 1093, 1231..1232, 2108, 2246, 2248, 519..520, 1233, 2247, 517..518, 545, 736, 739, 1561, 1752, 1754, 515..516, 546, 1560, 513..514, 540, 542, 1555, 1557, 511..512, 552, 634, 639, 1566, 1650, 1654} | |
ButtF.modifiers[NormalF].EditNormalsMod.Break node:ButtF | |
redrawViews() | |
ButtF.modifiers[NormalF].EditNormalsMod.Average useThresh:on threshold:0 node:ButtF | |
-- unify butt normals | |
max select all | |
ButtF.modifiers[NormalF].EditNormalsMod.Unify toAverage:on | |
-- select all the lingerie normals, break, average and unify them | |
NormalSelectAll ButtL NormalL | |
NormalAvgUni ButtL NormalL | |
emptySelection() | |
) | |
on btnLegsFB pressed do ( -- convert featureless legs to femboy and average | |
-- enable correct modifiers and set checkboxes | |
setChkProps chkFeatureless 1 true | |
setChkProps chkAnus 1 true | |
setChkProps chkBones 1 true | |
ButtF.ishidden=false | |
Anus.ishidden=false | |
max modify mode | |
select ButtF | |
ButtF.modifiers[MeshFB].enabled = true | |
ButtF.modifiers[UnwrapFB].enabled = true | |
ButtF.modifiers[NormalFB].enabled = true | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
-- select all the normals in the edit normals modifier on the correct meshes | |
selectMore Anus | |
subobjectLevel = 1 | |
max select all | |
-- deselect waist and thigh seam normals and break the rest [hardcoded] | |
ButtF.modifiers[NormalFB].EditNormalsMod.Select #{1, 4..5, 7, 9, 11, 13, 15, 17, 257, 259, 261, 263..264, 266, 268, 270, 272, 127, 133..135, 137, 139, 142, 381, 388..390, 392, 394, 397} select:off node:ButtF | |
ButtF.modifiers[NormalFB].EditNormalsMod.Break node:ButtF | |
redrawViews() | |
ButtF.modifiers[NormalFB].EditNormalsMod.Break node:Anus | |
redrawViews() | |
-- average butt and anus normals across multiple meshes with 10 passes passes incase of seam issues | |
for i = 1 to 10 do ( | |
for i in selection do ( | |
i.modifiers[NormalFB].EditNormalsMod.Average useThresh:on threshold:0.001 node:ButtF | |
i.modifiers[NormalFB].EditNormalsMod.Average useThresh:on threshold:0.001 node:Anus | |
i.modifiers[NormalFB].EditNormalsMod.AverageGlobal useThresh:on threshold:0.001 | |
) | |
) | |
-- fix butt crack [hardcoded] | |
max select none | |
ButtF.modifiers[NormalFB].EditNormalsMod.Select #{521..522, 1093, 1231..1232, 2108, 2246, 2248, 519..520, 1233, 2247, 517..518, 545, 736, 739, 1561, 1752, 1754, 515..516, 546, 1560, 513..514, 540, 542, 1555, 1557, 511..512, 552, 634, 639, 1566, 1650, 1654} | |
ButtF.modifiers[NormalFB].EditNormalsMod.Break node:ButtF | |
redrawViews() | |
ButtF.modifiers[NormalFB].EditNormalsMod.Average useThresh:on threshold:0 node:ButtF | |
-- unify butt, newGens and anus normals | |
max select all | |
for i in selection do ( | |
i.modifiers[NormalFB].EditNormalsMod.Unify node:ButtF toAverage:on | |
i.modifiers[NormalFB].EditNormalsMod.Unify node:Anus toAverage:on | |
) | |
max select none | |
clearSelection() | |
) | |
on btnLegsFuta pressed do ( -- average futalicious normals | |
setChkProps chkFuta 1 true | |
NormalSelectAll Futa NormalFuta -- select all the normals in the edit normals modifier on the correct mesh | |
NormalAvgUni Futa NormalFuta -- break, average and unify selected normals | |
emptySelection() | |
) | |
on btnLegsGen2 pressed do ( -- convert legs to gen2 and average | |
-- enable the correct leg modifiers and set checkboxes | |
setChkProps chkNude 1 true | |
setChkProps chkPiercings 1 true | |
setChkProps chkBones 1 true | |
max modify mode | |
NewGens.ishidden=true | |
Anus.ishidden=true | |
Butt.ishidden=false | |
select Butt | |
Butt.modifiers[MeshHP].enabled = false | |
Butt.modifiers[NormalNG].enabled = false | |
modpanel.setcurrentobject (modpanel.getcurrentobject()) | |
NormalSelectAll Butt NormalGen2 -- select all the normals in the edit normals modifier on the correct mesh | |
-- -- deselect waist, thigh and gen2 seam normals and break the rest [hardcoded] | |
Butt.modifiers[NormalGen2].EditNormalsMod.Select #{1, 4..5, 7, 9, 11, 13, 15, 17, 297, 300..301, 303, 305, 307, 309, 311, 313, 162, 165..166, 172..174, 176, 184..195, 197..199, 203..204, 208, 245, 277, 279, 281..295, 458, 461..462, 468..470, 472, 480..491, 493..495, 499..500, 504, 541, 573, 575, 577..591, 132, 138..140, 142, 144, 147, 428, 434..436, 438, 440, 443} select:off | |
Butt.modifiers[NormalGen2].EditNormalsMod.Break () | |
redrawViews() | |
Butt.modifiers[NormalGen2].EditNormalsMod.Average useThresh:on threshold:0.001 | |
-- fix butt crack [hardcoded] | |
max select none | |
Butt.modifiers[NormalGen2].EditNormalsMod.Select #{219, 515, 1113, 1267..1268, 2106, 2260, 2262, 119, 415, 1269, 2261, 29, 325, 615, 806, 809, 1609, 1800, 1802, 24, 320, 616, 1608, 25, 321, 610, 612, 1603, 1605, 27, 323, 622, 704, 709, 1614, 1698, 1702} | |
Butt.modifiers[NormalGen2].EditNormalsMod.Break () | |
redrawViews() | |
Butt.modifiers[NormalGen2].EditNormalsMod.Average useThresh:on threshold:0 | |
-- unify gen2 butt normals | |
max select all | |
Butt.modifiers[NormalGen2].EditNormalsMod.Unify toAverage:on | |
setMorphs ButtP 2 -- set the gen2 piercing morph as a special case | |
emptySelection() | |
) | |
on btnExport pressed do max file export -- quick export button | |
on rdoLayerSelect changed state do ( -- radio button for primary layer selections | |
for n=0 to layerManager.count-1 do ( | |
layer = layerManager.getLayer n | |
layer.isHidden = not (matchPattern layer.name pattern:Layers[state]) | |
) | |
if state == 1 then ( | |
setChkTri 1 | |
setChkEnable true | |
setChkProps chkFeatureless 0 true | |
setChkProps chkLingerie 0 true | |
setChkProps chkAnus 2 false | |
setChkProps chkFuta 2 false | |
) | |
if state == 2 then ( | |
setChkTri 1 | |
setChkEnable true | |
setChkProps chkFeatureless 0 true | |
setChkProps chkLingerie 0 true | |
setChkProps chkFuta 0 true | |
) | |
if state == 3 or state == 4 then ( | |
setChkTri 2 | |
setChkEnable false | |
setChkProps chkBones 1 true | |
) | |
if state == 5 then ( | |
setChkTri 1 | |
setChkEnable true | |
) | |
if state == 6 then ( | |
setChkTri 2 | |
setChkEnable false | |
setChkProps chkBones 0 true | |
) | |
-- reset bone and target display when picking a primary layer | |
chkBones.changed chkBones.triState | |
layer = layerManager.getLayerFromName Layers[8] | |
layer.ishidden = false | |
) | |
on chkBones changed state do ( -- bones toggle checkbox | |
if state then (h = false) else (h = true) | |
layerToggle Layers[7] | |
) | |
on chkNude changed state do ( -- checkbox to toggle the nude layer and fix anus tri state since it is part of it | |
if state then ( | |
h = false | |
chkAnus.triState = 1 | |
) | |
else ( | |
h = true | |
chkAnus.triState = 0 | |
) | |
layerToggle Layers[9] | |
) | |
on chkFeatureless changed state do ( -- checkbox to toggle the featureless / femboy layer | |
if state then (h = false) else (h = true) | |
layerToggle Layers[10] | |
) | |
on chkLingerie changed state do ( -- checkbox to toggle the lingerie layer | |
if state then (h = false) else (h = true) | |
layerToggle Layers[11] | |
) | |
on chkPiercings changed state do ( -- checkbox to toggle the piercings layer | |
if state then (h = false) else (h = true) | |
layerToggle Layers[12] | |
) | |
on chkAnus changed state do ( -- checkbox to toggle the anus layer | |
if state then (h = false) else (h = true) | |
layerToggle Layers[13] | |
) | |
on chkFuta changed state do ( -- checkbox to toggle the futa layer | |
if state then (h = false) else (h = true) | |
layerToggle Layers[14] | |
) | |
-- asign functions to dropdowns to bypass event handler restrictions | |
on ddlMorphBody selected m do ddlMorphBodySel m | |
on ddlMorphLegs selected m do ddlMorphLegsSel m | |
on ddlMorphNewGens selected m do ddlMorphNewGensSel m | |
on ddlMorphAnus selected m do ddlMorphAnusSel m | |
on ddlMorphFuta selected m do ddlMorphFutaSel m | |
on ddlAreola selected m do ddlAreolaSel m | |
-- set the body and dropdowns to natyusha's personal preset [easy to customize] | |
on btnDefaults pressed do ( | |
ddlMorphBodySel (ddlMorphBody.selection = 1) | |
ddlMorphLegsSel (ddlMorphLegs.selection = 1) | |
ddlMorphNewGensSel (ddlMorphNewGens.selection = 1) | |
ddlMorphAnusSel (ddlMorphAnus.selection = 1) | |
ddlMorphFutaSel (ddlMorphFuta.selection = 12) | |
ddlAreolaSel (ddlAreola.selection = 1) | |
) | |
) | |
createdialog BBWVR2_Rollout |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment