khanat-opennel-code/code/nel/tools/3d/plugin_max/scripts/startup/nel_material.ms.v3
acemtp@users.sourceforge.net d5c601ffa5 initial version
2010-05-06 02:08:41 +02:00

170 lines
5.8 KiB
Text

-- ********************
-- * Developper notes *
-- ********************
-- *
-- * - Increment major version when changing the parameters structure, comment your new attributes
-- * to tell they have been added since version x. Backup the old script file to keep old file format.
-- * - Increment minor version when changing the code or UI
-- * - Manage new field initialisation when changing the parameters structure in the update method
-- * - In your changes, keep in mind the discreet note:
-- * Parameter blocks that were per-instance cannot be made per-class and vice versa.
-- * Parameters cannot change type across redefinitions.
-- * Parameters cannot not move from one parameter block to another across redefinitions
-- *
-- ********************
-- Nel Material properties
plugin material NelMaterial
name:"NeL Material"
classID:#(0x64c75fec, 0x222b9eb9)
extends:standard
replaceUI:false
version:3.0
(
parameters main rollout:NelParams
(
-- 3d part of the material
bLightMap type:#boolean default:false ui:cbLightMap
bUnlighted type:#boolean default:false ui:cbUnlighted
bStainedGlassWindow type:#boolean default:false ui:cbStainedGlassWindow
bAlphaTest type:#boolean default:true ui:cbAlphaTest
bForceZWrite type:#boolean default:false ui:cbForceZWrite
bForceNoZWrite type:#boolean default:false ui:cbForceNoZWrite
bWater type:#boolean default:false ui:cbWater
fBumpUScale type:#float default: 0.01 ui:cfBumpUScale
fBumpVScale type:#float default: 0.01 ui:cfBumpVScale
fBumpUSpeed type:#float default: 0.01 ui:cfBumpUSpeed
fBumpVSpeed type:#float default: 0.01 ui:cfBumpVSpeed
fDisplaceMapUScale type:#float default: 0.005 ui:cfDisplaceMapUScale
fDisplaceMapVScale type:#float default: 0.005 ui:cfDisplaceMapVScale
fDisplaceMapUSpeed type:#float default: 0.005 ui:cfDisplaceMapUSpeed
fDisplaceMapVSpeed type:#float default: 0.005 ui:cfDisplaceMapVSpeed
-- New in version 3
bColorVertex type:#boolean default:false ui:cbColorVertex
bAlphaVertex type:#boolean default:false ui:cbAlphaVertex
iAlphaVertexChannel type:#integer default:0 ui:ciAlphaVertexChannel
)
rollout NelParams "Nel Material"
(
group "Light"
(
CheckBox cbUnlighted "Unlighted"
CheckBox cbLightMap "LightMap"
CheckBox cbStainedGlassWindow "Lightmap stained glass window"
CheckBox cbColorVertex "Color Vertex"
)
group "Alpha"
(
CheckBox cbAlphaTest "Alpha Test"
CheckBox cbAlphaVertex "Alpha Vertex"
Label lAlphaVertexChanelLabel "Alpha Vertex Channel" align:#left
Spinner ciAlphaVertexChannel "" range:[0,99,0] type:#integer scale:1 align:#left width:50
)
group "Z buffer"
(
CheckBox cbForceZWrite "Force ZWrite"
CheckBox cbForceNoZWrite "Force No ZWrite"
)
group "Water"
(
CheckBox cbWater "Enable Water"
Spinner cfBumpUScale "BumpMap U Scale :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfBumpVScale "BumpMap V Scale :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfBumpUSpeed "BumpMap U Speed :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfBumpVSpeed "BumpMap V Speed :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfDisplaceMapUScale "DisplaceMap U Scale :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfDisplaceMapVScale "DisplaceMap V Scale :" range:[-10,10,0.0001] type:#float scale:0.001 align:#left
Spinner cfDisplaceMapUSpeed "DisplaceMap U Speed :" range:[-10,10,0.01] type:#float scale:0.001 align:#left
Spinner cfDisplaceMapVSpeed "DisplaceMap V Speed :" range:[-10,10,0.01] type:#float scale:0.001 align:#left
)
Fn updateUI =
(
cbUnlighted.enabled = not bWater
cbLightMap.enabled = (not bWater) and (not bUnlighted)
cbStainedGlassWindow.enabled = (not bWater) and (not bUnlighted) and bLightMap
cbAlphaTest.enabled = not bWater
cbForceZWrite.enabled = not bWater
cbForceNoZWrite.enabled = not bWater
cbAlphaVertex.enabled = not bWater
ciAlphaVertexChannel.enabled = (not bWater) and bAlphaVertex
cbColorVertex.enabled = not bWater
cbWater.enabled = (not bLightMap)
cfBumpUScale.enabled = bWater and (not bLightMap)
cfBumpVScale.enabled = bWater and (not bLightMap)
cfBumpUSpeed.enabled = bWater and (not bLightMap)
cfBumpVSpeed.enabled = bWater and (not bLightMap)
cfDisplaceMapUScale.enabled = bWater and (not bLightMap)
cfDisplaceMapVScale.enabled = bWater and (not bLightMap)
cfDisplaceMapUSpeed.enabled = bWater and (not bLightMap)
cfDisplaceMapVSpeed.enabled = bWater and (not bLightMap)
if (bWater == true) then
(
cbLightMap.checked = false
cbUnlighted.checked = false
cbStainedGlassWindow.checked = false
cbAlphaTest.checked = false
cbForceZWrite.checked = false
cbForceNoZWrite.checked = false
)
)
on NelParams reload do (print "reload")
on NelParams open do
(
updateUI ()
)
-- Update ui
on cbLightMap changed bNewState do
(
updateUI ()
)
on cbUnlighted changed bNewState do
(
updateUI ()
)
on cbWater changed bNewState do
(
updateUI ()
)
on cbAlphaVertex changed bNewState do
(
updateUI ()
)
)
on update do
(
-- Initialise V3 fields.
if (version < 3) and (version >= 2) then
(
-- No color vertex
bColorVertex = false
if bLightMap == true then
bColorVertex = true
if bUnlighted == true then
bColorVertex = true
-- No alpha vertex
bAlphaVertex = false
iAlphaVertexChannel = 0
)
)
)