3845 lines
279 KiB
Plaintext
Executable File
3845 lines
279 KiB
Plaintext
Executable File
------------------------------------------------------------------------------------
|
|
--
|
|
-- File:: RsTinyRAG.ms
|
|
-- Description:: Scene Analysis Tool - gets memory dump and displays info on the loaded entities (mostly texture info so far)
|
|
--
|
|
-- Author:: Martin Good <martin.good@rockstarnorth.com>
|
|
-- Date:: 13/11/2019
|
|
--
|
|
------------------------------------------------------------------------------------
|
|
|
|
|
|
-- TODOs --
|
|
|
|
-- Max Viewport -> RAG Camera in coord source ddl
|
|
|
|
-- EXTRA GROUPS TO ADD --
|
|
/*
|
|
(Virtual Map) :
|
|
( +, -, all the elements...)
|
|
*/
|
|
|
|
RSTA_LoadCommonFunction #("FN_RSTA_XML.ms")
|
|
fileIn "pipeline/util/RAG_funcs.ms"
|
|
filein "pipeline/util/assert.ms"
|
|
|
|
global RsTinyRAG
|
|
global RsTinyRAGPos = try (GetDialogPos RsTinyRAG) catch( [4,64] )
|
|
|
|
try (DestroyDialog RsTinyRAG) catch()
|
|
|
|
rollout RsTinyRAG "RAG Button Assist Tool"
|
|
(
|
|
struct sRsColourValues (orphan, hd, lod, slod1, slod2, slod3, slod4, opaque, alpha, decal, cutout, shadow, water, txd1, txd2, txd3, txd4,
|
|
isHD, usingHD, sharedHD, capableHD, switchingHD, notHD,
|
|
priRequired, priHigh, priMedium, priLow, priStatic, priNotAProp, priInvalid,
|
|
densityXMin, densityMin, densityMid, densityMax, densityXMax,
|
|
default, picker, IMAP, txd, texture, shader, attribute )
|
|
|
|
-- Dialog Sizes
|
|
local TR_WIDTH = 465
|
|
local TR_HEIGHT = 500
|
|
|
|
local DEBUG_ADD_WIDGET_LABELS = false -- DEBUG flag to add widget.name to Tooltips by AddLabelsToTooltips() <-- call this in listener to add them if not on by default
|
|
local TRACE = 0 -- DEBUG Trace Messages : 0 = DISABLED, 1 = ENABLED
|
|
|
|
--local DARK_SCHEME_MULTIPLIER = if ( (colorman.getcolor #text )*255 )[1] > 128 then ( 0.65 ) else ( 1.0 )
|
|
local DARK_SCHEME_MULTIPLIER = try( if (colorMan.getColorTheme() == #dark) then ( 0.70 ) else ( 1.0 ) ) catch(0.70) -- Broken in 2012... so a try defaulting to dark
|
|
|
|
local RAINBOW_UI = true
|
|
|
|
local DEFAULT_COLOUR = ( (colorMan.getColor #pressedButton) * 255 ) -- if RAINBOW_UI then ( (color 110 182 230) * DARK_SCHEME_MULTIPLIER ) else
|
|
local CONNECT_COLOUR = if RAINBOW_UI then ( (color 80 210 90) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR )
|
|
|
|
local BLOCK_COLOUR = if RAINBOW_UI then ( (color 135 170 205) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- LIGHT BLUE
|
|
local TIME_COLOUR = if RAINBOW_UI then ( (color 135 205 205) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- CYAN
|
|
local WIRE_COLOUR = if RAINBOW_UI then ( (color 140 210 135) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- LIGHT GREEN
|
|
local LIGHT_COLOUR = if RAINBOW_UI then ( (color 205 190 135) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- YELLOW
|
|
|
|
local LOD_COLOUR = if RAINBOW_UI then ( (color 135 135 206) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- PURPLISH
|
|
local OCCL_COLOUR = if RAINBOW_UI then ( (color 205 135 200) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- MAGENTA
|
|
local TOGGLE_COLOUR = if RAINBOW_UI then ( (color 205 175 135) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- ORANGE
|
|
|
|
local CONTROL_COLOUR = if RAINBOW_UI then ( (color 205 145 135) * DARK_SCHEME_MULTIPLIER ) else ( DEFAULT_COLOUR ) -- RED
|
|
|
|
local OBJECT_HELPER_COLOUR = color 70 250 40
|
|
local CAMERA_HELPER_COLOUR = color 60 190 255
|
|
|
|
local buttonColours = if (RAINBOW_UI) then
|
|
(
|
|
sRsColourValues orphan:( color 210 90 86 255 ) hd:( color 210 138 86 255 ) lod:( color 210 190 90 255 ) \
|
|
slod1:( color 90 180 80 255 ) slod2:( color 90 170 180 255 ) slod3:( color 90 100 190 255 ) slod4:( color 140 90 180 ) \
|
|
opaque:( color 90 180 80 255 ) alpha:( color 210 90 86 255 ) decal:( color 90 100 190 255 ) cutout:( color 210 190 90 255 ) \
|
|
shadow:( DEFAULT_COLOUR * 0.8 )
|
|
)
|
|
else
|
|
(
|
|
sRsColourValues orphan:DEFAULT_COLOUR hd:DEFAULT_COLOUR lod:DEFAULT_COLOUR \
|
|
slod1:DEFAULT_COLOUR slod2:DEFAULT_COLOUR slod3:DEFAULT_COLOUR slod4:DEFAULT_COLOUR \
|
|
opaque:DEFAULT_COLOUR alpha:DEFAULT_COLOUR decal:DEFAULT_COLOUR cutout:DEFAULT_COLOUR \
|
|
shadow:DEFAULT_COLOUR
|
|
)
|
|
|
|
local RAGcolours = sRsColourValues orphan:( color 255 0 0 255 ) hd:( color 255 110 0 255 ) lod:( color 255 255 0 255 ) \
|
|
slod1:( color 110 255 0 255 ) slod2:( color 0 255 220 255 ) slod3:( color 0 100 255 255 ) slod4:( color 130 0 255 255 ) \
|
|
opaque:( color 0 255 0 255 ) alpha:( color 255 0 0 255 ) decal:( color 0 0 255 255 ) cutout:( color 255 255 0 255 ) water:( color 0 255 255 255 ) \
|
|
txd1:(color 255 70 0 255) txd2:(color 0 210 255 255) txd3:(color 255 210 0 255) txd4:(color 210 0 255 255) \
|
|
isHD:(color 0 0 255 255) usingHD:(color 0 255 0 255) sharedHD:(color 0 220 255 255) capableHD:(color 255 250 0 255) switchingHD:(color 255 135 0 255) notHD:(color 180 0 0 255) \
|
|
priRequired:(color 120 255 0 255) priHigh:(color 255 255 0 255) priMedium:(color 255 120 0 255) priLow:(color 255 0 0 255) \
|
|
priStatic:(color 80 0 255 255) priNotAProp:(color 0 0 50 255) priInvalid:(color 255 0 255 255) \
|
|
densityXMin:(color 0 0 255 255) densityMin:(color 80 120 255 255) densityMid:(color 80 255 0 255) densityMax:(color 255 160 0 255) densityXMax:(color 255 0 0 255) \
|
|
default:( color 120 255 0 255 ) picker:( color 40 255 0 255 ) IMAP:( color 0 240 255 255 ) txd:( color 0 255 80 255 ) texture:( color 220 255 0 255 ) shader:( color 255 180 0 255 ) attribute:( color 200 255 0 255 )
|
|
|
|
local initialWidgetOffsets = #()
|
|
|
|
local FP_PRECISION = "#.2f"
|
|
--local LODLevels = #("", "OHD", "HD", "LOD", "SLOD1", "SLOD2", "SLOD3", "SLOD4")
|
|
--local weatherItems = #("DISABLED","Neu","HiPr","Sun","Mst","Fog","Clr","Ovc","OvcD","Drz","Rai","Thu","ThSt","Hur","Shw","Hai","Sle","SnwClr","Snl","Snw","Bliz","GrndBliz","WiOt","Sand","rain_test")
|
|
local weatherItems = #("DISABLED","EXS","CLR","CLS","SMG","FOGGY","OVC","RAI","THU","CLG","NEU","SNW","BLI","SNL","XMAS","HALLOWEEN")
|
|
|
|
local wireFrameItems = #()
|
|
|
|
struct sRswireMode (item, optionMode, groupLabel, RAGvalue)
|
|
local SEPARATOR = stringStream "" -- Will be filled with "-" to cover the ddlWireMode width
|
|
local PREVIOUS_WIREMODE = 1 -- Used for skipping over SEPARATORs in ddlWireMode
|
|
|
|
-- !!!! IMPORTANT INFO FOR ADDING NEW GROUPS !!!!
|
|
--
|
|
-- For IsolateGroup to work (right-click function for isolating individual checkbuttons in a group), the grouped widgets need to be in an array with a dummy groupbox in the first index
|
|
-- eg. WIDGET_CONTROLS = #( gbxWidgetGroup, chkWidget1, chkWidget2 .. chkWidgetN )
|
|
-- Will then need an event with the following template :
|
|
-- on widget rightclick do ( IsolateGroup widget WIDGET_CONTROLS ; GroupUpdateFunction )
|
|
--
|
|
-- Wire Mode Drop Down Items
|
|
-- SEPARATOR are skipped over automatically
|
|
-- If adding new ones, update SetRAGWireframeMode function if any non-standard options are needed
|
|
-- For any new option widgets : add widget names to a new WIREOPTION_XXXXX_WIDGETS array + add same to WIREOPTION_ALL_WIDGETS,
|
|
-- (First is used for showing/hiding when ddlWireMode changes, second for storing/using offsets for showing/hiding rows)
|
|
-- Add the new WIREOPTION group to WIREOPTION_WIDGETS,
|
|
-- + add/duplicate & modify events that call SetRAGWireframeWidgets()
|
|
-- dotNetTrackBars need initialised in the open event (value tooltips set up automatically by TrackbarMouseEvent function)
|
|
|
|
-- Need to think of a way to remove optionMode... it needs tied in to the order of WIREOPTION_WIDGETS (if they're out of synch, update problems will occur when the ddlWireMode changes)
|
|
-- Most likely findItem optionRow gbxWidget in the open event !!!
|
|
local wireModes = #(
|
|
sRsWireMode item:"Picker" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Picker",
|
|
sRsWireMode item:"IMAP" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Model Path Contains ...",
|
|
sRsWireMode item:"Name" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Model Name Is ...",
|
|
sRsWireMode item:"TXD Name" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Model Uses Parent Txd ...",
|
|
sRsWireMode item:"Texture" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Shader Uses Texture ...",
|
|
sRsWireMode item:SEPARATOR optionMode:0 groupLabel:"YOU SHOULDN'T SEE THIS TEXT!" RAGvalue:"SEPARATOR_NON_MODE",
|
|
sRsWireMode item:"Shaders..." optionMode:5 groupLabel:"OPTIONS - (Shaders)" RAGvalue:"Shader Name Is ...",
|
|
sRsWireMode item:"Attributes..." optionMode:6 groupLabel:"OPTIONS - (Object Attributes)" RAGvalue:"Is Prop",
|
|
sRsWireMode item:"Color Per..." optionMode:8 groupLabel:"OPTIONS - (Color by Something)" RAGValue:"Random Colour Per Entity",
|
|
sRsWireMode item:SEPARATOR optionMode:0 groupLabel:"YOU SHOULDN'T SEE THIS TEXT!" RAGvalue:"SEPARATOR_NON_MODE",
|
|
sRsWireMode item:"BLOCK ID" optionMode:1 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"Model Path Contains ...",
|
|
sRsWireMode item:SEPARATOR optionMode:0 groupLabel:"YOU SHOULDN'T SEE THIS TEXT!" RAGvalue:"SEPARATOR_NON_MODE",
|
|
sRsWireMode item:"LOD Level" optionMode:2 groupLabel:"OPTIONS - (LOD Levels)" RAGvalue:"LOD Type",
|
|
sRsWireMode item:"Buckets" optionMode:3 groupLabel:"OPTIONS - (Render Buckets)" RAGvalue:"Render Buckets",
|
|
sRsWireMode item:"HD State" optionMode:4 groupLabel:"OPTIONS - (HD State)" RAGvalue:"Model HD State",
|
|
sRsWireMode item:"Priority Level" optionMode:10 groupLabel:"OPTIONS - (Priority Level)" RAGValue:"Prop Priority Level",
|
|
sRsWireMode item:SEPARATOR optionMode:0 groupLabel:"YOU SHOULDN'T SEE THIS TEXT!" RAGvalue:"SEPARATOR_NON_MODE",
|
|
sRsWireMode item:"Overdraw" optionMode:9 groupLabel:"OPTIONS - (Extra TXD Names)" RAGvalue:"OverDraw",
|
|
sRsWireMode item:"Tex Density" optionMode:7 groupLabel:"OPTIONS - (Tex Density)" RAGvalue:"Tex Density",
|
|
sRSWireMode item:"Light Costs" optionmode:11 groupLabel:"OPTIONS - (Light Costs)" RAGValue:"LIGHT_COST_NON_MODE"
|
|
)
|
|
|
|
local collisionHash = #(
|
|
datapair item:"OFF" RAGvalue:undefined,
|
|
datapair item:"MOVER" RAGvalue:"Optimization/Draw map collision (MOVER)",
|
|
datapair item:"WEAPON" RAGvalue:"Optimization/Draw map collision (WEAPON)",
|
|
datapair item:"COVER" RAGvalue:"Optimization/Draw map collision (COVER)",
|
|
datapair item:"HORSE" RAGvalue:"Optimization/Draw map collision (HORSE)",
|
|
datapair item:"Hrs AVOID" RAGvalue:"Optimization/Draw map collision (HORSE AVOIDANCE)",
|
|
datapair item:"STAIR" RAGvalue:"Optimization/Draw map collision (STAIRS SLOPE)",
|
|
datapair item:"NO NAV" RAGvalue:"Optimization/Draw map collision (NO NAVMESH)"
|
|
)
|
|
local otherCollisionHash = #(
|
|
datapair item:"OFF" RAGvalue:undefined,
|
|
datapair item:"Pavement" RAGvalue:"Optimization/Draw pavement",
|
|
datapair item:"Deep Snow" RAGvalue:"Optimization/Draw deep snow",
|
|
datapair item:"Mud" RAGvalue:"Optimization/Draw mud",
|
|
datapair item:"PedDensity" RAGvalue:"Optimization/Draw ped density",
|
|
datapair item:"Slide" RAGvalue:"Optimization/Draw quadruped slide map"
|
|
)
|
|
|
|
|
|
-- Notable Warp Coordinates by Project
|
|
local warpPoints = case of
|
|
(
|
|
( matchPattern ( ::RsConfigGetAssetsDir() ) pattern:"*/rdr3/*" ):
|
|
(
|
|
#(
|
|
datapair label:"Valentine (l_09j)" location:[-295,790,117],
|
|
datapair label:"New France (p_15c)" location:[2665,-1213,52],
|
|
datapair label:"New France2 (p_15)" location:[2726,-1284,50],
|
|
datapair label:"New Slum (p_14)" location:[2706,-1137,51],
|
|
datapair label:"New France 06 (p_15j)" location:[2709,-1213,52],
|
|
datapair label:"New Slum (p_15g)" location:[2804,-1104,45],
|
|
datapair label:"New Market (p_15p)" location:[2781,-1339,45],
|
|
datapair label:"New Market (p_15an)" location:[2872, -1219, 46],
|
|
datapair label:"Marsh (o_15j)" location:[2234,-734,42]
|
|
)
|
|
)
|
|
( matchPattern ( ::RsConfigGetAssetsDir() ) pattern:"*/americas/*" ):
|
|
(
|
|
#(
|
|
datapair label:"Hottest Spottest (ds23a)" location:[-1206,-1778,2]
|
|
)
|
|
)
|
|
default:
|
|
(
|
|
#()
|
|
)
|
|
)
|
|
|
|
-- Gaps between Dialog edges and Groups
|
|
local TR_GROUP_GAP = 4
|
|
local TR_GROUP_HGAP = TR_GROUP_GAP + 4
|
|
|
|
-- Gaps between Border edge and Widgets
|
|
local TR_GROUP_HBORDERS = 18
|
|
local TR_GROUP_BORDERS = TR_GROUP_HBORDERS + 10
|
|
|
|
-- Gaps between 2 Widgets
|
|
local TR_SMALL_GAP = 3
|
|
local TR_LARGE_GAP = TR_SMALL_GAP + 8
|
|
|
|
local TR_SMALL_BUTTON_HEIGHT = 20 -- 90% of Button Heights
|
|
local TR_LARGE_BUTTON_HEIGHT = (2*TR_SMALL_BUTTON_HEIGHT) + TR_SMALL_GAP -- Large height equivalent to 2 Small Buttons + small gap between
|
|
local TR_WIRE_BUTTON_HEIGHT = TR_SMALL_BUTTON_HEIGHT - 1
|
|
local TR_TRACKBAR_HEIGHT = (TR_WIRE_BUTTON_HEIGHT-2)
|
|
|
|
local TR_GROUP_POS = [(TR_GROUP_HGAP/2),(TR_GROUP_GAP/2) + 34] -- Position for first group in every row (row y offsets are calculated later)
|
|
local TR_FIRST_OFFSET = [TR_GROUP_HBORDERS/2,(TR_GROUP_BORDERS/2)+4] -- Offset from TL Corner of Group to first Widget
|
|
|
|
|
|
|
|
-- Group Dimensions
|
|
-- Slightly haphazard way of doing things... useful for precise layout with tightly packed widgets, but a bit of an organisational nightmare
|
|
-- Allows for evertything to be controlled by the values above, but have to synch up dialog width if the generic widths change, since widget text may be clipped
|
|
-- Probably also need to revise the integer values for widths to include TR_GROUP_HBORDERS and TR_GROUP_HGAP at some point (in case they're changed) !!!!
|
|
local TR_BANK_WIDTH = TR_WIDTH
|
|
local TR_BANK_BUTTON_HEIGHT = TR_SMALL_BUTTON_HEIGHT + 3
|
|
local TR_BANK_HEIGHT = (2*TR_BANK_BUTTON_HEIGHT) + TR_SMALL_GAP - 2
|
|
|
|
local TR_BLOCK_WIDTH = 204
|
|
local TR_PICKER_WIDTH = TR_WIDTH - TR_BLOCK_WIDTH - TR_GROUP_HGAP
|
|
local TR_PICKER_HEIGHT = (3*TR_SMALL_BUTTON_HEIGHT)+(2*TR_SMALL_GAP) + TR_GROUP_BORDERS
|
|
|
|
local TR_WIREMODE_WIDTH = 94
|
|
local TR_WIREEXACT_WIDTH = 78
|
|
local TR_WIRE_WIDTH = TR_LARGE_BUTTON_HEIGHT + TR_WIREMODE_WIDTH + TR_WIREEXACT_WIDTH + (2*TR_SMALL_GAP) + TR_GROUP_HBORDERS
|
|
local TR_WIRE_HEIGHT = TR_LARGE_BUTTON_HEIGHT + (2*TR_WIRE_BUTTON_HEIGHT) + (2*TR_SMALL_GAP) - 1 + TR_GROUP_BORDERS
|
|
local TR_WIREOPTIONS_WIDTH = TR_WIDTH - TR_WIRE_WIDTH - TR_GROUP_HGAP
|
|
|
|
local TR_OCCL_WIDTH = 118
|
|
local TR_CULLBOX_WIDTH = 110
|
|
local TR_GBUF_WIDTH = TR_WIDTH - TR_OCCL_WIDTH - TR_CULLBOX_WIDTH - (2*TR_GROUP_HGAP)
|
|
local TR_OCCL_HEIGHT = (2*TR_SMALL_BUTTON_HEIGHT) + (1*TR_SMALL_GAP) + TR_GROUP_BORDERS
|
|
|
|
local TR_WEATHER_WIDTH = 76
|
|
local TR_TIMESPINNER_WIDTH = 32
|
|
local TR_TIME_WIDTH = (2*TR_WEATHER_WIDTH) + (2*TR_TIMESPINNER_WIDTH) + TR_TRACKBAR_HEIGHT + (3*TR_SMALL_GAP) + TR_LARGE_GAP + TR_GROUP_HBORDERS
|
|
local TR_TIME_HEIGHT = (2*TR_SMALL_BUTTON_HEIGHT) + TR_SMALL_GAP - 1 + TR_GROUP_BORDERS
|
|
local TR_TEXVIEWER_WIDTH = TR_WIDTH - TR_TIME_WIDTH - TR_GROUP_HGAP
|
|
local TR_TEXVIEWER_TEXT_WIDTH = TR_TEXVIEWER_WIDTH - TR_LARGE_BUTTON_HEIGHT - TR_SMALL_GAP + 4 - TR_GROUP_HBORDERS
|
|
|
|
local TR_PREVIEW_WIDTH = 80
|
|
|
|
local TR_LIGHT_BUTTON_WIDTH = 48
|
|
local TR_LIGHT_TYPE_WIDTH = 32
|
|
local TR_LIGHT_INFO_WIDTH = TR_LIGHT_TYPE_WIDTH + TR_SMALL_GAP + TR_SMALL_BUTTON_HEIGHT + TR_GROUP_HBORDERS
|
|
|
|
local TR_LOCALLIGHTS_WIDTH = (2*TR_LIGHT_BUTTON_WIDTH) + TR_SMALL_GAP + TR_GROUP_HBORDERS
|
|
local TR_LIGHTING_TOGGLES_WIDTH = TR_WIDTH - TR_PREVIEW_WIDTH - TR_LIGHT_INFO_WIDTH - TR_LOCALLIGHTS_WIDTH - TR_GROUP_HGAP - 2
|
|
local TR_LIGHTING_HEIGHT = (2*(TR_SMALL_BUTTON_HEIGHT+4)) + TR_SMALL_GAP - 2 + TR_GROUP_BORDERS
|
|
local TR_LIGHT_GLOBAL_WIDTH = TR_LIGHTING_TOGGLES_WIDTH - TR_GROUP_HBORDERS - TR_LIGHT_TYPE_WIDTH - TR_LIGHT_BUTTON_WIDTH - TR_LARGE_GAP
|
|
|
|
|
|
local TR_OTHER_WIDTH = TR_WIDTH
|
|
local TR_OTHER_HEIGHT = (2*TR_LARGE_BUTTON_HEIGHT) + TR_SMALL_GAP + TR_GROUP_BORDERS
|
|
|
|
local TR_PASS_WIDTH = 130
|
|
local TR_COLLISION_WIDTH = 100
|
|
local TR_PASS_HEIGHT = ((TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP)*3) + TR_GROUP_BORDERS
|
|
local TR_GEO_WIDTH = TR_WIDTH - TR_PASS_WIDTH - TR_COLLISION_WIDTH - (2*TR_GROUP_HGAP)
|
|
local TR_GEO_HEIGHT = ((TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP)*3) - 2 + TR_GROUP_BORDERS
|
|
|
|
|
|
-- Button Dimensions (mostly) by Widget Group
|
|
local TR_CONNECT_WIDTH = 110
|
|
local TR_BANK_BUTTON_WIDTH = (TR_WIDTH - TR_CONNECT_WIDTH - TR_SMALL_GAP) / 4
|
|
|
|
local TR_PICKER_BUTTON_HEIGHT = (2*TR_SMALL_BUTTON_HEIGHT) + TR_SMALL_GAP
|
|
local TR_PICKEROPTIONS_BUTTON_WIDTH = 48
|
|
local TR_PICKERIMAP_BUTTON_WIDTH = 72
|
|
local TR_PICKERALL_BUTTON_WIDTH = (TR_PICKERIMAP_BUTTON_WIDTH - 28) + TR_SMALL_GAP
|
|
local TR_PICKER_BUTTON_WIDTH = TR_PICKER_WIDTH - TR_PICKEROPTIONS_BUTTON_WIDTH - TR_PICKERIMAP_BUTTON_WIDTH - TR_PICKERALL_BUTTON_WIDTH - (2*TR_SMALL_GAP) - TR_LARGE_GAP - TR_GROUP_HBORDERS -- 60
|
|
local TR_SELECTION_BUTTON_WIDTH = 56
|
|
local TR_PICKER_TEXT_WIDTH = TR_PICKER_WIDTH - TR_SELECTION_BUTTON_WIDTH - TR_SMALL_BUTTON_HEIGHT - (2*TR_SMALL_GAP) - 4 - TR_GROUP_HBORDERS + 2
|
|
local TR_PICKERHIGHLIGHT_WIDTH = (TR_PICKERALL_BUTTON_WIDTH + TR_PICKERIMAP_BUTTON_WIDTH) - 20
|
|
|
|
|
|
local TR_WARP_BUTTON_WIDTH = 60 + 8 - TR_SMALL_BUTTON_HEIGHT - TR_SMALL_GAP -- subtract debug cam button width
|
|
local TR_ISOLATEBLOCK_WIDTH = TR_BLOCK_WIDTH - (2*TR_WARP_BUTTON_WIDTH + TR_SMALL_GAP) - TR_SMALL_BUTTON_HEIGHT - TR_SMALL_GAP - TR_GROUP_HBORDERS
|
|
local TR_WARPSOURCE_WIDTH = TR_BLOCK_WIDTH - TR_ISOLATEBLOCK_WIDTH - (2*TR_SMALL_BUTTON_HEIGHT - TR_SMALL_GAP) - 9 - TR_GROUP_HBORDERS
|
|
local TR_WARPCOORDS_WIDTH = TR_BLOCK_WIDTH - 20 - TR_SMALL_GAP - TR_GROUP_HBORDERS
|
|
|
|
|
|
local TR_WIRE_BUTTON_WIDTH = 45
|
|
local TR_WIRE_LABEL_WIDTH = 34
|
|
local TR_WIRE_OVERRIDE_WIDTH = 16
|
|
|
|
local TR_WIRE_OPTIONSLIDER_WIDTH = 60
|
|
local TR_WIRE_TINYOPTIONTEXT_WIDTH = ((TR_WIREOPTIONS_WIDTH - (2*TR_SMALL_GAP) - TR_GROUP_HBORDERS)/3) - TR_WIRE_BUTTON_HEIGHT - TR_SMALL_GAP + 4
|
|
local TR_WIRE_OPTIONTEXT_WIDTH = TR_WIREOPTIONS_WIDTH + 3 - TR_WIRE_OPTIONSLIDER_WIDTH - TR_SMALL_GAP - TR_WIRE_BUTTON_HEIGHT - TR_GROUP_HBORDERS
|
|
local TR_WIRE_HALFOPTION_WIDTH = ( (TR_WIREOPTIONS_WIDTH - TR_SMALL_GAP - TR_GROUP_HBORDERS) / 2 ) - TR_WIRE_BUTTON_HEIGHT
|
|
local TR_WIREOPTION_BUTTON_WIDTH = TR_WIREOPTIONS_WIDTH - TR_GROUP_HBORDERS
|
|
local TR_WIREOPTION_HALFBUTTON_WIDTH = (TR_WIREOPTION_BUTTON_WIDTH - TR_SMALL_GAP) / 2
|
|
local TR_WIREOPTION_THIRDBUTTON_WIDTH = ( TR_WIREOPTION_BUTTON_WIDTH - (2*TR_SMALL_GAP)) / 3
|
|
local TR_WIREOPTION_DENSITY_WIDTH = TR_WIREOPTIONS_WIDTH - 30 - (5*TR_WIRE_BUTTON_HEIGHT) - TR_LARGE_GAP - TR_GROUP_BORDERS
|
|
|
|
local TR_WIRENAME_WIDTH = TR_WIREMODE_WIDTH + TR_WIREEXACT_WIDTH + 2 + TR_SMALL_GAP
|
|
local TR_WIRE_BAR_WIDTH = ( TR_WIRE_WIDTH - (2*TR_WIRE_LABEL_WIDTH) - TR_LARGE_GAP - TR_GROUP_HBORDERS - 2 ) / 2
|
|
|
|
|
|
local TR_DIFFUSE_OVERRIDE_WIDTH = TR_WIRE_HEIGHT - TR_GROUP_BORDERS - 1
|
|
|
|
|
|
local TR_TWEAK_WIDTH = 180
|
|
local TR_TWEAKTYPE_WIDTH = 80
|
|
local TR_LODTREE_WIDTH = 76
|
|
|
|
|
|
local TR_LOD_BUTTON_HEIGHT = TR_LARGE_BUTTON_HEIGHT - 8
|
|
local TR_LODTYPE_WIDTH = 80
|
|
local TR_LODLEVELS_WIDTH = TR_LODTYPE_WIDTH + TR_GROUP_HBORDERS
|
|
local TR_LODINFO_WIDTH = TR_LODTREE_WIDTH + TR_GROUP_HBORDERS
|
|
local TR_LODEDIT_WIDTH = TR_TWEAKTYPE_WIDTH + TR_GROUP_HBORDERS
|
|
local TR_LODHIERARCHY_WIDTH = TR_WIDTH - TR_LODLEVELS_WIDTH - TR_LODINFO_WIDTH - TR_LODEDIT_WIDTH - 1 - (2*TR_GROUP_HGAP)
|
|
local TR_LOD_BUTTON_WIDTH = (TR_LODHIERARCHY_WIDTH - TR_GROUP_HBORDERS - TR_SMALL_GAP) / 2
|
|
local TR_LOD_BUTTONTHREE_WIDTH = (TR_LODHIERARCHY_WIDTH - TR_GROUP_HBORDERS - (2*TR_SMALL_GAP)) / 3
|
|
local TR_LOD_HEIGHT = ((3*TR_LOD_BUTTON_HEIGHT) - 20) + TR_SMALL_GAP + TR_LARGE_GAP + TR_GROUP_BORDERS
|
|
|
|
|
|
local TR_OCCL_BUTTON_WIDTH = TR_OCCL_WIDTH - TR_GROUP_HBORDERS
|
|
local TR_OCCLMODE_WIDTH = 66
|
|
local TR_OCCLFLIP_BUTTON_WIDTH = TR_OCCL_BUTTON_WIDTH - TR_OCCLMODE_WIDTH - TR_SMALL_GAP
|
|
local TR_CULLBOX_EDITOR_WIDTH = 34
|
|
local TR_CULLBOX_ON_WIDTH = TR_CULLBOX_WIDTH - TR_CULLBOX_EDITOR_WIDTH - TR_SMALL_GAP-TR_GROUP_HBORDERS
|
|
local TR_CULL_BUTTON_WIDTH = ( TR_CULLBOX_WIDTH - TR_SMALL_GAP - TR_GROUP_HBORDERS ) / 2
|
|
local TR_GBUF_MODE_WIDTH = TR_GBUF_WIDTH - 60 - (2*TR_SMALL_GAP) - TR_TRACKBAR_HEIGHT - 4 - TR_GROUP_HBORDERS
|
|
local TR_GBUF_TRACKBAR_WIDTH = (60 + TR_GBUF_MODE_WIDTH) - ( 32 + 40 + 40 + 1 ) - (2*TR_SMALL_GAP)
|
|
|
|
|
|
local TR_TIMELOCK_WIDTH = 40
|
|
local TR_TIMEBAR_WIDTH = TR_TIME_WIDTH - TR_TIMELOCK_WIDTH - (2*TR_SMALL_GAP) - TR_TRACKBAR_HEIGHT - 5 - TR_GROUP_HBORDERS
|
|
|
|
|
|
local TR_GEOTYPE_BUTTON_WIDTH = (TR_GEO_WIDTH - TR_GROUP_HBORDERS - (2*TR_SMALL_GAP)) / 3
|
|
local TR_GEOPROP_BUTTON_WIDTH = (TR_GEO_WIDTH - TR_GROUP_HBORDERS - (2*TR_SMALL_GAP) - TR_LARGE_GAP) / 4
|
|
local TR_GEOOTHER_BUTTON_WIDTH = (TR_GEO_WIDTH - TR_LARGE_GAP - TR_SMALL_GAP - TR_GROUP_HBORDERS) / 3
|
|
|
|
local TR_PASS_BUTTON_WIDTH = (TR_PASS_WIDTH - TR_SMALL_GAP - TR_GROUP_HBORDERS) / 2
|
|
|
|
|
|
|
|
-- Banner Setup
|
|
dotNetControl rsBannerPanel "System.Windows.Forms.Panel" height:32 pos:[0,0] width:RsTinyRAG.width
|
|
local banner = makeRsBanner dn_Panel:rsBannerPanel versionNum:1.04 versionName:"Toothsome Lizards" filename:( getThisScriptFilename() )
|
|
|
|
-- Tooltip to show dotNet Trackbar Value when mouse is hovering-over
|
|
local ttpTrackbarTooltip = dotNetObject "System.Windows.Forms.Tooltip"
|
|
|
|
-- CONNECTION + TOP CONTROL ROW --
|
|
groupBox gbxBankTogglesGroupBox "SHOW/HIDE" visible:false width:TR_BANK_WIDTH height:TR_BANK_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkCONNECT "CONNECT TO RAG" width:TR_CONNECT_WIDTH height:(2*TR_BANK_BUTTON_HEIGHT) highlightColor:CONNECT_COLOUR checked:false \
|
|
pos:(gbxBankTogglesGroupBox.pos)
|
|
tooltip:"Connect to RAG"
|
|
|
|
checkButton chkPickerBank "Block / Picker" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkCONNECT.pos+[TR_CONNECT_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide Block Warp and Picker groups\n\nIncludes:\n Pick by name, Block Isolation,\n Debug Camera warp\n\nRight-click to Show/Hide all other rows"
|
|
checkButton chkTimeBank "Time / TexViewer" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:TIME_COLOUR checked:false
|
|
pos:(chkPickerBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide Weather, Time, VFX, and Texture Viewer groups\n\nIncludes:\n Time / Weather controls,\n Search by TXD / Texture name\n\nRight-click to Show/Hide all other rows"
|
|
checkButton chkWireframeBank "Wireframe" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:false
|
|
pos:(chkTimeBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide Wireframe groups\n\nIncludes:\n Wireframe Mode selection + Options,\n Wireframe alpha controls\n Overdraw / Texture Density Modes\n\nRight-click to Show/Hide all other rows"
|
|
checkButton chkLightingBank "Preview / Lights" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:LIGHT_COLOUR checked:false
|
|
pos:(chkWireframeBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide Lighting groups\n\nIncludes:\n Light Info & Budgets,\n Link to Light Cost wire mode\n Light Toggles\n\nRight-click to Show/Hide all other rows"
|
|
|
|
checkButton chkLODBank "LOD" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:LOD_COLOUR checked:false
|
|
pos:(chkPickerBank.pos+[0,TR_BANK_BUTTON_HEIGHT])
|
|
tooltip:"Show/Hide LOD Hierarchy group\n\nIncludes:\n LOD Toggles, LOD Multiplier,\n Info Display, LOD Distance Tweaking\n\nRight-click to Show/Hide all other rows"
|
|
checkButton chkOcclCullBank "Occlusion / GBuff" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:OCCL_COLOUR checked:false
|
|
pos:(chkLODBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide Occlusion, CullBoxes and GBuffer groups\n\nIncludes:\n Occlusion / Cullbox toggles,\n GBuffer Display and Overrides\n\nRight-click to Show/Hide all other rows"
|
|
checkBUtton chkToggleBank "Toggles" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:TOGGLE_COLOUR checked:false
|
|
pos:(chkOcclCullBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide Geo Type and Render Pass Toggle groups\n\nIncludes:\n Entity Type Toggles,\n Render Pass / VFX Toggles\n\nRight-click to Show/Hide all other rows"
|
|
checkButton chkOtherBank "Misc / Diagnostic" width:TR_BANK_BUTTON_WIDTH height:TR_BANK_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR checked:false
|
|
pos:(chkToggleBank.pos+[TR_BANK_BUTTON_WIDTH,0])
|
|
tooltip:"Show/Hide (Placeholder) Other groups\n\nIncludes so far:\n Floating Object, Object Density, Light Entities\n POM Toggles,\n DrawList, GBuf Budget, HD Texture List\n\nRight-click to Show/Hide all other rows"
|
|
local BANK_WIDGETS = #( gbxBankTogglesGroupBox, chkPickerBank, chkLightingBank, chkWireframeBank, chkTimeBank, chkOcclCullBank, chkLODBank, chkToggleBank ) -- , chkOtherBank ) DISCONNECTING OTHER BANK FROM RIGHT-CLICK AS IT'S NOT FINALISED YET !!!!
|
|
local ALLBANK_WIDGETS = #( gbxBankTogglesGroupBox, chkCONNECT, chkPickerBank, chkLightingBank, chkWireframeBank, chkTimeBank, chkOcclCullBank, chkLODBank, chkToggleBank, chkOtherBank )
|
|
|
|
|
|
|
|
-- BLOCK / WARP + PICKER ROW --
|
|
groupBox gbxBlockGroupBox "BLOCK / WARP" width:TR_BLOCK_WIDTH height:TR_PICKER_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkIsolateBlock "ISOLATE" width:TR_ISOLATEBLOCK_WIDTH height:(TR_LARGE_BUTTON_HEIGHT-17) highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(gbxBlockGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Isolate a Block if a valid blockID is entered in text box below."
|
|
|
|
checkButton chkDebugCamera "C" width:TR_SMALL_BUTTON_HEIGHT height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkIsolateBlock.pos+[TR_ISOLATEBLOCK_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Enable debug pad and switch to Free Cam"
|
|
checkButton chkWarpCamera "WARP" width:TR_WARP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkDebugCamera.pos+[TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP,0])
|
|
tooltip:"Attempts to Auto-Warp the RAG Debug Camera to whatever\nis selected in the drop down below when the Dialog changes it.\n(Not Max Selection, since there's no callback)\n\nRight-click to Warp without waiting for an update."
|
|
checkButton chkFindObjects "FIND" width:TR_WARP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkWarpCamera.pos+[TR_WARP_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Attempts to point the RAG Debug Camera vaguely towards whatever\nis selected in the drop down below when the Dialog changes it.\n(Not Max Selection, since there's no callback)\n\nRight-click to change camera focus without waiting for an update."
|
|
dropdownList ddlWarpSource items:#("BlockID", "Coords", "Selection", "Picker", "Viewport") width:TR_WARPSOURCE_WIDTH height:6
|
|
pos:(chkDebugCamera.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Change the source of coordinates to Find/Warp To"
|
|
|
|
checkButton chkStreamFromCamera "S" width:TR_SMALL_BUTTON_HEIGHT height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR
|
|
pos:(ddlWarpSource.pos+[TR_WARPSOURCE_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"If active, Streaming is from RAG Camera position.\nOtherwise stream from Player's position (the default RAG option)."
|
|
checkButton chkCamPosHelper "+" width:TR_SMALL_BUTTON_HEIGHT height:TR_SMALL_BUTTON_HEIGHT highlightColor:CAMERA_HELPER_COLOUR
|
|
pos:(chkStreamFromCamera.pos+[TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP,0])
|
|
tooltip:"Get Camera Position from RAG whenever Dialog updates it.\nRight-click to get current RAG Debug Camera Position"
|
|
|
|
editText txtBlockID "" width:(TR_ISOLATEBLOCK_WIDTH+2) enabled:true visible:true
|
|
pos:(chkIsolateBlock.pos+[-3,TR_LARGE_BUTTON_HEIGHT-17])
|
|
tooltip:"Enter BlockID to ISOLATE/WARP to/FIND." -- pos:(chkIsolateBlock.pos+[-3,TR_LARGE_BUTTON_HEIGHT-17])
|
|
label lblWarpCoords "Coords" width:40 height:16 pos:(chkIsolateBlock.pos+[1,TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP+5])
|
|
editText txtWarpCoords "" width:(TR_WARPCOORDS_WIDTH-30) enabled:true visible:true
|
|
pos:(lblWarpCoords.pos+[31,-2]) -- (chkIsolateBlock.pos+[0,TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP+3])
|
|
toolTip:"Enter set of coordinates to WARP to/FIND."
|
|
dropdownList ddlWarpToLocation "" items:(for location in warpPoints collect location.label) width:22 height:(warpPoints.count+1) enabled:(warpPoints.count > 0)
|
|
pos:(txtWarpCoords.pos+[TR_WARPCOORDS_WIDTH-32,-2])
|
|
tooltip:"Preset coordinates to Warp to.\n(Will mainly contain MJT junction points." --pos:(chkIsolateBlock.pos+[0,TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP+2])
|
|
local BLOCK_WIDGETS = #( gbxBlockGroupBox, chkIsolateBlock, txtBlockID, chkWarpCamera, chkFindObjects, chkDebugCamera, ddlWarpSource,
|
|
ddlWarpToLocation, lblWarpCoords, txtWarpCoords, chkStreamFromCamera, chkCamPosHelper
|
|
)
|
|
|
|
groupBox gbxPickerGroupBox "PICKER OPTIONS" width:TR_PICKER_WIDTH height:TR_PICKER_HEIGHT pos:(gbxBlockGroupBox.pos+[TR_BLOCK_WIDTH+TR_GROUP_HGAP,0]) --offset:[-2,-7]
|
|
checkButton chkPickerToggle "PICKER" width:TR_PICKER_BUTTON_WIDTH height:TR_PICKER_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(gbxPickerGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide Picker"
|
|
label lblPickerFilter "Names" width:32 height:16 pos:(chkPickerToggle.pos+[1,TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP+5])
|
|
editText txtPickerFilter "" width:(TR_PICKER_TEXT_WIDTH-32)
|
|
pos:(lblPickerFilter.pos+[29,-2])
|
|
tooltip:"Enter string to select matching object names in RAG Picker"
|
|
button btnPickSelection "Selection" width:TR_SELECTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(txtPickerFilter.pos+[TR_PICKER_TEXT_WIDTH-30,-2])
|
|
tooltip:"Select by names from current Max object selection\n\nThere's no exact match option in RAG>Picker\n(so \"area_object\" matches \"area_object_lod\" as well)"
|
|
checkButton chkObjectPosHelper "+" width:TR_SMALL_BUTTON_HEIGHT height:TR_SMALL_BUTTON_HEIGHT highlightColor:OBJECT_HELPER_COLOUR
|
|
pos:(btnPickSelection.pos+[TR_SELECTION_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Create a helper at average object position\nwhen Dialog changes RAG Picker selection\nRight-click to update WARP Coordinates."
|
|
checkButton chkPickerIsolate "Isolate" width:TR_PICKEROPTIONS_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkPickerToggle.pos+[TR_PICKER_BUTTON_WIDTH+TR_SMALL_GAP,0]) tooltip:"Isolate object(s) in picker list"
|
|
checkButton chkPickerHide "Hide" width:TR_PICKEROPTIONS_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkPickerIsolate.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Hide object(s) in picker list"
|
|
|
|
dropDownList ddlPickerScope "" items:#("Sphere","Frustrum") width:TR_PICKERIMAP_BUTTON_WIDTH height:3
|
|
pos:(chkPickerIsolate.pos+[TR_PICKEROPTIONS_BUTTON_WIDTH+TR_LARGE_GAP,0])
|
|
tooltip:"Switch between spherical\nand view frustrum searches."
|
|
dropDownList ddlPickerHighlight "" items:#("All", "One") selection:1 width:TR_PICKERALL_BUTTON_WIDTH height:3
|
|
pos:(ddlPickerScope.pos+[TR_PICKERIMAP_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Draw boxes, isolate and hide ALL objects in Picker list\nor just the selected ONE."
|
|
|
|
checkButton chkIMAPBounds "Imap" checked:false width:TR_PICKERALL_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:BLOCK_COLOUR
|
|
pos:(chkPickerHide.pos+[TR_PICKEROPTIONS_BUTTON_WIDTH+TR_LARGE_GAP,0])
|
|
tooltip:"Show IMAP bounds around selected objects."
|
|
checkButton chkPickerAddToSelection "Add" width:TR_PICKERIMAP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:BLOCK_COLOUR checked:false
|
|
pos:(chkIMAPBounds.pos+[TR_PICKERALL_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Add to existing Picker selection\ninstead of clearing it first.\nDefault is OFF."
|
|
local PICKER_WIDGETS = #( gbxPickerGroupBox, chkPickerToggle, lblPickerFilter, txtPickerFilter, btnPickSelection, chkObjectPosHelper, chkPickerIsolate, chkPickerHide,
|
|
chkPickerAddToSelection, chkIMAPBounds, ddlPickerScope, ddlPickerHighlight
|
|
)
|
|
|
|
|
|
-- WIREFRAME / WIREFRAME OPTIONS ROW --
|
|
groupBox gbxWireframeGroupBox "WIREFRAME" width:TR_WIRE_WIDTH height:TR_WIRE_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkWireToggle "WIRE" width:TR_WIRE_BUTTON_WIDTH height:TR_LARGE_BUTTON_HEIGHT highlightcolor:WIRE_COLOUR
|
|
pos:(gbxWireframeGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle in-game wire on/off"
|
|
|
|
dropdownList ddlWireMode "" items:#() width:TR_WIREMODE_WIDTH height:1
|
|
pos:(chkWireToggle.pos+[TR_WIRE_BUTTON_WIDTH+TR_SMALL_GAP,0]) tooltip:"Change RAG wire mode.\neg.Picker, LOD Level, etc."
|
|
checkButton chkWireMatchExact "Exact Match" width:TR_WIREEXACT_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:true highlightcolor:WIRE_COLOUR
|
|
pos:(ddlWireMode.pos+[TR_WIREMODE_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"If active, matches exact name from the text box."
|
|
editText txtWireframeFilterName "" width:(TR_WIRENAME_WIDTH-25)
|
|
pos:(ddlWireMode.pos+[22,TR_SMALL_BUTtON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Text filter for Wireframe Modes"
|
|
label lblWireframeFiltername "Filter" pos:(txtWireframeFilterName.pos+[-25,2])
|
|
|
|
checkButton chkWireLabel "Wire" width:TR_WIRE_LABEL_WIDTH height:TR_WIRE_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(chkWireToggle.pos+[0,TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Wire opacity slider.\n(Right-click might do something if I get round to it."
|
|
checkButton chkFillLabel "Fill" width:TR_WIRE_LABEL_WIDTH height:TR_WIRE_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(chkWireLabel.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Fill opacity slider.\n(Right-click might do something if I get round to it."
|
|
dotnetcontrol trkWireOpacity "system.windows.forms.trackbar" enabled:true pos:(chkWireLabel.pos+[TR_WIRE_LABEL_WIDTH+1,1])
|
|
dotnetcontrol trkFillOpacity "system.windows.forms.trackbar" enabled:true pos:(chkFillLabel.pos+[TR_WIRE_LABEL_WIDTH+1,1])
|
|
|
|
checkButton chkOpacityLabel "Mult." width:TR_WIRE_LABEL_WIDTH height:TR_WIRE_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(trkWireOpacity.pos+[TR_WIRE_BAR_WIDTH+TR_LARGE_GAP,-1])
|
|
tooltip:"Overall wireframe opacity slider.\nUsually doesn't have to be a very large value.\n(Right-click might do something if I get round to it."
|
|
checkButton chkHiddenLabel "Hidn." width:TR_WIRE_LABEL_WIDTH height:TR_WIRE_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(chkOpacityLabel.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Hidden line/fill opacity slider (only really works for near objects).\n(Right-click might do something if I get round to it."
|
|
dotnetcontrol trkOpacityMultiplier "system.windows.forms.trackbar" enabled:true pos:(chkOpacityLabel.pos+[TR_WIRE_LABEL_WIDTH+1,1])
|
|
dotnetcontrol trkWireHidden "system.windows.forms.trackbar" enabled:true pos:(chkHiddenLabel.pos+[TR_WIRE_LABEL_WIDTH+1,1])
|
|
local WIREFRAME_WIDGETS = #( gbxWireframeGroupBox, chkWireToggle, ddlWireMode, lblWireframeFiltername, txtWireframeFilterName, chkWireMatchExact,
|
|
chkWireLabel, trkWireOpacity, chkHiddenLabel, trkWireHidden, chkFillLabel, trkFillOpacity, chkOpacityLabel, trkOpacityMultiplier
|
|
)
|
|
|
|
-- WIRE OPTIONS : TXD NAMES --
|
|
groupBox gbxWireOptionsGroupBox "OPTIONS" width:TR_WIREOPTIONS_WIDTH height:TR_WIRE_HEIGHT pos:(gbxWireframeGroupBox.pos+[TR_WIRE_WIDTH+TR_GROUP_HGAP,0])
|
|
-- WIRE OPTIONS : TXD WIDGETS
|
|
checkButton chkTXD1Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.txd1 checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[24,0])
|
|
tooltip:"Toggle wireframe for first TXD"
|
|
checkButton chkTXD2Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.txd2 checked:true
|
|
pos:(chkTXD1Colour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for second TXD"
|
|
checkButton chkTXD3Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.txd3 checked:true
|
|
pos:(chkTXD2Colour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for third TXD"
|
|
checkButton chkTXD4Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.txd4 checked:true
|
|
pos:(chkTXD3Colour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for fourth TXD"
|
|
label lblTxd1 "Txd1" pos:(chkTXD1Colour.pos+[-25,2])
|
|
label lblTxd2 "Txd2" pos:(chkTXD2Colour.pos+[-26,2])
|
|
label lblTxd3 "Txd3" pos:(chkTXD3Colour.pos+[-26,2])
|
|
label lblTxd4 "Txd4" pos:(chkTXD4Colour.pos+[-26,2])
|
|
editText txtTXD1Name "" width:(TR_WIRE_OPTIONTEXT_WIDTH-22)
|
|
pos:(chkTXD1Colour.pos+[TR_WIRE_BUTTON_HEIGHT-4,1])
|
|
tooltip:"Enter Text to colour wireframe by TXD Name."
|
|
editText txtTXD2Name "" width:(TR_WIRE_OPTIONTEXT_WIDTH-22)
|
|
pos:(chkTXD2Colour.pos+[TR_WIRE_BUTTON_HEIGHT-4,1])
|
|
tooltip:"Enter Text to colour wireframe by TXD Name."
|
|
editText txtTXD3Name "" width:(TR_WIRE_OPTIONTEXT_WIDTH-22)
|
|
pos:(chkTXD3Colour.pos+[TR_WIRE_BUTTON_HEIGHT-4,1])
|
|
tooltip:"Enter Text to colour wireframe by TXD Name."
|
|
editText txtTXD4Name "" width:(TR_WIRE_OPTIONTEXT_WIDTH-22)
|
|
pos:(chkTXD4Colour.pos+[TR_WIRE_BUTTON_HEIGHT-4,1])
|
|
tooltip:"Enter Text to colour wireframe by TXD Name."
|
|
dotnetcontrol trkTXD1Multiplier "system.windows.forms.trackbar" enabled:true pos:(txtTXD1Name.pos+[TR_WIRE_OPTIONTEXT_WIDTH-23,0])
|
|
dotnetcontrol trkTXD2Multiplier "system.windows.forms.trackbar" enabled:true pos:(txtTXD2Name.pos+[TR_WIRE_OPTIONTEXT_WIDTH-23,0])
|
|
dotnetcontrol trkTXD3Multiplier "system.windows.forms.trackbar" enabled:true pos:(txtTXD3Name.pos+[TR_WIRE_OPTIONTEXT_WIDTH-23,0])
|
|
dotnetcontrol trkTXD4Multiplier "system.windows.forms.trackbar" enabled:true pos:(txtTXD4Name.pos+[TR_WIRE_OPTIONTEXT_WIDTH-23,0])
|
|
local WIRE_TXD_CONTROLS = #( gbxWireOptionsGroupBox, chkTXD1Colour, chkTXD2Colour, chkTXD3Colour, chkTXD4Colour )
|
|
|
|
-- WIRE OPTIONS : LOD LEVEL WIDGETS
|
|
checkButton chkOrphanColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.orphan checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[33,0])
|
|
tooltip:"Toggle wireframe for Orphan HD objects"
|
|
checkButton chkHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.hd checked:true
|
|
pos:(chkOrphanColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for HD objects"
|
|
checkButton chkLODColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.lod checked:true
|
|
pos:(chkHDColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for LOD objects"
|
|
checkButton chkSLOD1Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.slod1 checked:true
|
|
pos:(chkLODColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for SLOD1 objects"
|
|
label lblOrphanLabel "Orphan" pos:(chkOrphanColour.pos+[-36,2])
|
|
label lblHDLabel "HD" pos:(chkHDColour.pos+[-36,2])
|
|
label lblLODLabel "LOD" pos:(chkLODColour.pos+[-36,2])
|
|
label lblSLOD1Label "SLOD1" pos:(chkSLOD1Colour.pos+[-36,2])
|
|
dotnetcontrol trkOrphanMultiplier "system.windows.forms.trackbar" pos:(chkOrphanColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])-- pos:(txtOrphanLabel.pos+[TR_WIRE_HALFOPTION_WIDTH-28,0])
|
|
dotnetcontrol trkHDMultiplier "system.windows.forms.trackbar" pos:(chkHDColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])-- pos:(txtHDLabel.pos+[TR_WIRE_HALFOPTION_WIDTH-28,0])
|
|
dotnetcontrol trkLODMultiplier "system.windows.forms.trackbar" pos:(chkLODColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
dotnetcontrol trkSLOD1Multiplier "system.windows.forms.trackbar" pos:(chkSLOD1Colour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
|
|
groupBox gbxLODContainerWidgets "" width:(((TR_WIREOPTIONS_WIDTH-TR_LARGE_GAP)/2) - TR_GROUP_HBORDERS + 2) height:(TR_WIRE_HEIGHT+8-TR_GROUP_BORDERS)
|
|
pos:(trkOrphanMultiplier.pos+[TR_WIRE_OPTIONSLIDER_WIDTH,-7]) -- [(TR_WIREOPTIONS_WIDTH-TR_LARGE_GAP)/2),8])
|
|
checkButton chkSLOD2Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.slod2 checked:true
|
|
pos:(gbxLODContainerWidgets.pos+TR_FIRST_OFFSET+[32,0])
|
|
tooltip:"Toggle wireframe for SLOD2 objects" -- [TR_WIRE_HALFOPTION_WIDTH+TR_SMALL_GAP+TR_WIRE_BUTTON_HEIGHT+30,0])
|
|
checkButton chkSLOD3Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.slod3 checked:true
|
|
pos:(chkSLOD2Colour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for SLOD3 objects"
|
|
checkButton chkSLOD4Colour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.slod4 checked:true
|
|
pos:(chkSLOD3Colour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for SLOD4 objects"
|
|
label lblSLOD2Label "SLOD2" pos:(chkSLOD2Colour.pos+[-33,2])
|
|
label lblSLOD3Label "SLOD3" pos:(chkSLOD3Colour.pos+[-33,2])
|
|
label lblSLOD4Label "SLOD4" pos:(chkSLOD4Colour.pos+[-33,2])
|
|
|
|
dotnetcontrol trkLOSLODsMultiplier "system.windows.forms.trackbar" pos:(chkSLOD2Colour.pos+[TR_WIRE_BUTTON_HEIGHT+2,0]) -- pos:(txtSLOD4Label.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+2])
|
|
local WIRE_LOD_CONTROLS = #( gbxWireOptionsGroupBox, chkOrphanColour, chkHDColour, chkLODColour, chkSLOD1Colour, chkSLOD2Colour, chkSLOD3Colour, chkSLOD4Colour )
|
|
|
|
-- WIRE OPTION : RENDER BUCKET WIDGETS
|
|
checkButton chkOpaqueColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.opaque checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[36,0])
|
|
tooltip:"Toggle wireframe for Opaque materials"
|
|
checkButton chkAlphaColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.alpha checked:true
|
|
pos:(chkOpaqueColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for Alpha materials"
|
|
checkButton chkDecalColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.decal checked:true
|
|
pos:(chkAlphaColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for Decal materials"
|
|
label lblOpaqueLabel "Opaque" pos:(chkOpaqueColour.pos+[-39,2])
|
|
label lblAlphaLabel "Alpha" pos:(chkAlphaColour.pos+[-39,2])
|
|
label lblDecalLabel "Decal" pos:(chkDecalColour.pos+[-39,2])
|
|
dotnetcontrol trkOpaqueMultiplier "system.windows.forms.trackbar" pos:(chkOpaqueColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
dotnetcontrol trkAlphaMultiplier "system.windows.forms.trackbar" pos:(chkAlphaColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
dotnetcontrol trkDecalMultiplier "system.windows.forms.trackbar" pos:(chkDecalColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
|
|
checkButton chkCutoutColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.cutout checked:true
|
|
pos:(chkDecalColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for Cutout materials"
|
|
checkButton chkWaterColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.water checked:true
|
|
pos:(chkCutoutColour.pos+[TR_WIREOPTIONS_WIDTH-31-TR_WIRE_BUTTON_WIDTH,0])
|
|
tooltip:"Toggle wireframe for Water materials"
|
|
label lblCutoutLabel "Cutout" pos:(chkCutoutColour.pos+[-39,2])
|
|
label lblWaterLabel "Water" pos:(chkWaterColour.pos+[-30,2])
|
|
dotnetcontrol trkCutoutMultiplier "system.windows.forms.trackbar" pos:(chkCutoutColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,1])
|
|
dotnetcontrol trkWaterMultiplier "system.windows.forms.trackbar" pos:(chkWaterColour.pos+[1,(TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1)*-3]) -- pos:(chkWaterColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,0])
|
|
local WIRE_BUCKET_CONTROLS = #( gbxWireOptionsGroupBox, chkOpaqueColour, chkAlphaColour, chkDecalColour, chkCutoutColour, chkWaterColour )
|
|
|
|
-- WIRE OPTIONS : HD STATE WIDGETS
|
|
checkButton chkUsingHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.usingHD checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[TR_WIRE_OPTIONTEXT_WIDTH-32,0])
|
|
tooltip:"Toggle wireframe for objects Using HD texture\n(ignoring GTXD +HI textures)"
|
|
checkButton chkSharedHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.sharedHD checked:true
|
|
pos:(chkUsingHDColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for objects using Shared HD textures\n(Using GTXD +HI, but not using object's +HI)"
|
|
checkButton chkCapableHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.capableHD checked:true
|
|
pos:(chkSharedHDColour.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle wireframe for objects with HD textures,\nbut not using them yet\n(including GTXD +HI textures)"
|
|
label lblUsingHDLabel "Using +HI TXD" pos:(chkUsingHDColour.pos+[32-TR_WIRE_OPTIONTEXT_WIDTH,2])
|
|
label lblSharedHDLabel "Using Shared +HI" pos:(chkSharedHDColour.pos+[32-TR_WIRE_OPTIONTEXT_WIDTH,2])
|
|
label lblCapableHDLabel "Has +HI TXD" pos:(chkCapableHDColour.pos+[32-TR_WIRE_OPTIONTEXT_WIDTH,2])
|
|
dotnetcontrol trkUsingHDMultiplier "system.windows.forms.trackbar" pos:(chkUsingHDColour.pos+[TR_SMALL_BUTTON_HEIGHT+1,0])
|
|
dotnetcontrol trkSharedHDMultiplier "system.windows.forms.trackbar" pos:(chkSharedHDColour.pos+[TR_SMALL_BUTTON_HEIGHT+1,0])
|
|
dotnetcontrol trkCapableHDMultiplier "system.windows.forms.trackbar" pos:(chkCapableHDColour.pos+[TR_SMALL_BUTTON_HEIGHT+1,0])
|
|
|
|
checkButton chkIsHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.isHD checked:true
|
|
pos:(lblCapableHDLabel.pos+[TR_WIRE_TINYOPTIONTEXT_WIDTH-15,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Toggle wireframe for HD Entities"
|
|
checkButton chkSwitchingHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.switchingHD checked:true
|
|
pos:(chkIsHDColour.pos+[TR_WIRE_BUTTON_HEIGHT+TR_WIRE_TINYOPTIONTEXT_WIDTH+TR_SMALL_GAP+8,0])
|
|
tooltip:"Toggle wireframe for objects switching to HD textures"
|
|
checkButton chkNotHDColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.notHD checked:true
|
|
pos:(chkSwitchingHDColour.pos+[TR_WIRE_BUTTON_HEIGHT+TR_WIRE_TINYOPTIONTEXT_WIDTH+TR_SMALL_GAP+8,0])
|
|
tooltip:"Toggle wireframe for objects with no HD textures"
|
|
label lblIsHDLabel "Entity" pos:(chkIsHDColour.pos+[15-TR_WIRE_TINYOPTIONTEXT_WIDTH,2])
|
|
label lblSwitchingHDLabel "Switch" pos:(chkSwitchingHDColour.pos+[15-TR_WIRE_TINYOPTIONTEXT_WIDTH,2])
|
|
label lblNotHDLabel "No HD" pos:(chkNotHDColour.pos+[15-TR_WIRE_TINYOPTIONTEXT_WIDTH,2])
|
|
local WIRE_HDSTATE_CONTROLS = #( gbxWireOptionsGroupBox, chkUsingHDColour, chkSharedHDColour, chkCapableHDColour, chkIsHDColour, chkSwitchingHDColour, chkNotHDColour )
|
|
|
|
-- WIRE OPTIONS : SHADER
|
|
checkButton chkUseShaderFilter "Filter Text" width:TR_WIREOPTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:true highlightColor:WIRE_COLOUR
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Highlight shaders matching Filter Text\nto the left."
|
|
checkButton chkDefaultShader "Default" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkUseShaderFilter.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight Default shaders"
|
|
checkButton chkStandard2lyrShader "Standard 2lyr" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkDefaultShader.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight Standard 2 Layer shaders"
|
|
|
|
checkButton chkPXMShader "PXM" width:TR_WIREOPTION_THIRDBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkDefaultShader.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight shaders with PXM in their name"
|
|
checkButton chkWaterShader "Water" width:TR_WIREOPTION_THIRDBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkPXMShader.pos+[TR_WIREOPTION_THIRDBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight Shaders with Water in their name"
|
|
checkButton chkMudShader "Mud" width:TR_WIREOPTION_THIRDBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkWaterShader.pos+[TR_WIREOPTION_THIRDBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight Mud Shaders"
|
|
|
|
checkButton chkUberShader "Uber" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkPXMShader.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight Uber Shaders"
|
|
dotnetControl trkUberLookup "system.windows.forms.trackbar" pos:(chkUberShader.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+1,1])
|
|
|
|
-- WIRE OPTIONS : OBJECT PROPERTIES
|
|
checkButton chkIsProp "Is Prop" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:true highlightColor:WIRE_COLOUR
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Highlight objects flagged as PROP"
|
|
checkButton chkIsFrag "Is Frag" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkIsProp.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight objects flagged as FRAG"
|
|
checkButton chkLowPriority "Low Priority" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkIsProp.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight objects with the Low Priority flag set.\n(NOTE: Not Priority Level)"
|
|
checkButton chkIsDoor "Is Door" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkLowPriority.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight Objects flagged as DOOR"
|
|
checkButton chkNoShadow "No Shadow" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkLowPriority.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight objects with Don't Render in Shadow flag set."
|
|
checkButton chkNoReflect "No Reflect" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkNoShadow.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight Objects with Don't Render in Reflection flag set."
|
|
checkButton chkIsDynamic "Is Dynamic" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkNoShadow.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Highlight objects with Is Dynamic flag set."
|
|
checkButton chkAlphaFading "Alpha < 255" width:TR_WIREOPTION_HALFBUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR
|
|
pos:(chkIsDynamic.pos+[TR_WIREOPTION_HALFBUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Highlight fading objects\n(Usually objects that are switching between LODs)."
|
|
|
|
-- WIRE OPTIONS : PRIORITY LEVEL
|
|
checkButton chkPriorityRequired "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT checked:true highlightColor:RAGColours.priRequired
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[54,0])
|
|
tooltip:"Wireframe colour for Props with\nPriority Level set to Required."
|
|
checkButton chkPriorityHigh "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT checked:true highlightColor:RAGColours.priHigh
|
|
pos:(chkPriorityRequired.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Wireframe colour for Props with\nPriority Level set to High."
|
|
checkButton chkPriorityMedium "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT checked:true highlightColor:RAGColours.priMedium
|
|
pos:(chkPriorityHigh.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Wireframe colour for Props with\nPriority Level set to Medium."
|
|
checkButton chkPriorityLow "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT checked:true highlightColor:RAGColours.priLow
|
|
pos:(chkPriorityMedium.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Wireframe colour for Props with\nPriority Level set to Low."
|
|
label lblPriorityRequired "Required" pos:(chkPriorityRequired.pos+[-48,1])
|
|
label lblPriorityHigh "High" pos:(chkPriorityHigh.pos+[-48,1])
|
|
label lblPriorityMedium "Medium" pos:(chkPriorityMedium.pos+[-48,1])
|
|
label lblPriorityLow "Low" pos:(chkPriorityLow.pos+[-48,1])
|
|
dotnetControl trkPriorityRequired "system.windows.forms.trackbar" pos:(chkPriorityRequired.pos+[TR_WIRE_BUTTON_HEIGHT+2,0])
|
|
dotnetControl trkPriorityHigh "system.windows.forms.trackbar" pos:(chkPriorityHigh.pos+[TR_WIRE_BUTTON_HEIGHT+2,0])
|
|
dotnetControl trkPriorityMedium "system.windows.forms.trackbar" pos:(chkPriorityMedium.pos+[TR_WIRE_BUTTON_HEIGHT+2,0])
|
|
dotnetControl trkPriorityLow "system.windows.forms.trackbar" pos:(chkPriorityLow.pos+[TR_WIRE_BUTTON_HEIGHT+2,0])
|
|
--dotnetControl trkPriorityStatic "system.windows.forms.trackbar" pos:(chkPriorityStatic.pos+[51,1])
|
|
--dotnetControl trkPriorityNotAProp "system.windows.forms.trackbar" pos:(chkPriorityNotAProp.pos+[51,1])
|
|
--dotnetControl trkPriorityInvalid "system.windows.forms.trackbar" pos:(chkPriorityInvalid.pos+[51,1])
|
|
local WIREOPTION_PRIORITY_CONTROLS = #( gbxWireOptionsGroupBox, chkPriorityRequired, chkPriorityHigh, chkPriorityMedium, chkPriorityLow )
|
|
|
|
-- WIRE OPTIONS : TEX DENSITY
|
|
checkButton chkTexDensityXMinColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.densityXmin checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle wireframe for Extreme Min Texture Density"
|
|
checkButton chkTexDensityMinColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.densityMin checked:true
|
|
pos:(chkTexDensityXMinColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,0])
|
|
tooltip:"Toggle wireframe for Min Texture Density"
|
|
checkButton chkTexDensityMidColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.densityMid checked:true
|
|
pos:(chkTexDensityMinColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,0])
|
|
tooltip:"Toggle wireframe for Mid Texture Density"
|
|
checkButton chkTexDensityMaxColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.densityMax checked:true
|
|
pos:(chkTexDensityMidColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,0])
|
|
tooltip:"Toggle wireframe for Max Texture Density"
|
|
checkButton chkTexDensityXMaxColour "" width:TR_WIRE_BUTTON_HEIGHT height:TR_WIRE_BUTTON_HEIGHT highlightColor:RAGcolours.densityXMax checked:true
|
|
pos:(chkTexDensityMaxColour.pos+[TR_WIRE_BUTTON_HEIGHT+1,0])
|
|
tooltip:"Toggle wireframe for Water materials"
|
|
dotnetcontrol trkTexDensityXMinMultiplier "system.windows.forms.trackbar" pos:(chkTexDensityXMinColour.pos+[1,TR_WIRE_BUTTON_HEIGHT+1])
|
|
dotnetcontrol trkTexDensityMinMultiplier "system.windows.forms.trackbar" pos:(chkTexDensityMinColour.pos+[1,TR_WIRE_BUTTON_HEIGHT+1])
|
|
dotnetcontrol trkTexDensityMidMultiplier "system.windows.forms.trackbar" pos:(chkTexDensityMidColour.pos+[1,TR_WIRE_BUTTON_HEIGHT+1])
|
|
dotnetcontrol trkTexDensityMaxMultiplier "system.windows.forms.trackbar" pos:(chkTexDensityMaxColour.pos+[1,TR_WIRE_BUTTON_HEIGHT+1])
|
|
dotnetcontrol trkTexDensityXMaxMultiplier "system.windows.forms.trackbar" pos:(chkTexDensityXMaxColour.pos+[1,TR_WIRE_BUTTON_HEIGHT+1])
|
|
|
|
editText txtTextureMinSize "" width:40
|
|
pos:(chkTexDensityXMaxColour.pos+[TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+2,1])
|
|
tooltip:"Value for Minimum Texture resolution.\nPower of 2, range is between 1 and 4096 (default is 32).\nLinked to trackbar to the right."
|
|
editText txtTextureDensityMin "" width:40
|
|
pos:(txtTextureMinSize.pos+[-4,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+3])
|
|
tooltip:"Value for Minimum Texture Density.\nRange is from 0 to 4096 (default is 64).\nLinked to trackbar to the right."
|
|
editText txtTextureDensityMax "" width:40
|
|
pos:(txtTextureDensityMin.pos+[-4,17+TR_SMALL_GAP])
|
|
tooltip:"Value for Maximum Texture Density.\nRange is from 0 to 4096 (default is 1024)).\nLinked to trackbar to the right."
|
|
dotnetControl trkTextureMinSize "system.windows.forms.trackbar" pos:(txtTextureMinSize.pos+[39,0])
|
|
dotnetControl trkTextureDensityMin "system.windows.forms.trackbar" pos:(txtTextureDensityMin.pos+[39,0])
|
|
dotnetControl trkTextureDensityMax "system.windows.forms.trackbar" pos:(txtTextureDensityMax.pos+[39,0])
|
|
|
|
checkButton chkUseLogScale "Log" width:38 height:TR_WIRE_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true \
|
|
pos:(txtTextureDensityMax.pos+[-1,17+TR_SMALL_GAP])
|
|
tooltip:"Use Logarithmic scale for wireframe colour interpolation."
|
|
dotnetControl trkDensityShift "system.windows.forms.trackbar" pos:(chkUseLogScale.pos+[41,0])
|
|
local WIREOPTION_TEXDENSITY_CONTROLS = #( gbxWireOptionsGroupBox, chkTexDensityXMinColour, chkTexDensityMinColour, chkTexDensityMidColour, chkTexDensityMaxColour, chkTexDensityXMaxColour )
|
|
|
|
-- WIRE OPTIONS : COLOUR PER...
|
|
checkButton chkColourPerEntity "Color Per Entity" width:TR_WIREOPTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:true highlightColor:WIRE_COLOUR \
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Draw wireframe on everything visible\nwith a unique colour per object."
|
|
checkButton chkColourPerTXD "Color Per TXD" width:TR_WIREOPTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR \
|
|
pos:(chkColourPerEntity.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Draw wireframe on everything visible with a unique colour per TXD Name."
|
|
checkButton chkColourPerShader "Color Per Shader" width:TR_WIREOPTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR \
|
|
pos:(chkColourPerTXD.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Draw wireframe on everything visible, with a unique colour per Shader."
|
|
checkButton chkColourPerDrawCall "Color Per Draw Calls" width:TR_WIREOPTION_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT checked:false highlightColor:WIRE_COLOUR \
|
|
pos:(chkColourPerShader.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Draw wireframe on everything visible, with a unique colour per Draw Call."
|
|
|
|
-- WIRE OPTIONS : OVERDRAW
|
|
checkButton chkOverdraw "Overdraw" width:100 height:TR_SMALL_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[0,8])
|
|
tooltip:"If OFF, sets the Overdraw wireframe Opacity to 0\n(ignoring the value of the Opacity trackbar to the right)."
|
|
button btnOverdrawMin "Minimum" width:60 height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(chkOverdraw.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_LARGE_GAP])
|
|
tooltip:"Reset the Minimum Value spinner to the default ( 0 ). "
|
|
button btnOverdrawMax "Maximum" width:60 height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(btnOverdrawMin.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Reset the Maimum Value spinner to the default ( 20 )"
|
|
|
|
dotnetControl trkOverdrawOpacity "system.windows.forms.trackbar" pos:(chkOverdraw.pos+[100+TR_SMALL_GAP,1])
|
|
spinner spnOverdrawMin "" range:[0,200,0] type:#Integer width:(TR_WIREOPTION_BUTTON_WIDTH-60-TR_SMALL_GAP)
|
|
pos:(btnOverdrawMin.pos+[60+TR_SMALL_GAP,1])
|
|
tooltip:"Value for the Minimum number of overlapping \ndrawcalls in screen-space (blue).\nRange from 0 to 200 (default is 0)."
|
|
spinner spnOverdrawMax "" range:[0,200,20] type:#Integer width:(TR_WIREOPTION_BUTTON_WIDTH-60-TR_SMALL_GAP)
|
|
pos:(btnOverdrawMax.pos+[60+TR_SMALL_GAP,1])
|
|
tooltip:"Value for the Maximum number of overlapping\ndrawcalls in screen-space (red).\nRange from 0 to 200 (default is 20)."
|
|
|
|
-- WIRE OPTIONS : LIGHT COSTS
|
|
checkButton chkLightCost "Opacity" width:100 height:TR_SMALL_BUTTON_HEIGHT highlightColor:WIRE_COLOUR checked:true
|
|
pos:(gbxWireOptionsGroupBox.pos+TR_FIRST_OFFSET+[0,8])
|
|
tooltip:"If OFF, sets the Light Cost Opacity to 0\n(ignoring the value of the Opacity trackbar to the right)."
|
|
button btnLightCostMin "Minimum" width:60 height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(chkLightCost.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_LARGE_GAP])
|
|
tooltip:"Reset the Minimum Light Cost value to the default ( 1 )."
|
|
button btnLightCostMax "Maximum" width:60 height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(btnLightCostMin.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Reset the Maximum Light Cost value to the default ( 8 )."
|
|
|
|
dotnetControl trkLightCostOpacity "system.windows.forms.trackbar" pos:(chkOverdraw.pos+[100+TR_SMALL_GAP,1])
|
|
spinner spnLightCostMin "" range:[1,32,1] type:#Integer width:(TR_WIREOPTION_BUTTON_WIDTH-60-TR_SMALL_GAP)
|
|
pos:(btnLightCostMin.pos+[60+TR_SMALL_GAP,1])
|
|
tooltip:"Value for the Minimum number of overlapping light volumes in world-space (blue overlay).\nRange is from 1 to 32 (default is 1)."
|
|
|
|
spinner spnLightCostMax "" range:[1,32,8] type:#Integer width:(TR_WIREOPTION_BUTTON_WIDTH-60-TR_SMALL_GAP)
|
|
pos:(btnLightCostMax.pos+[60+TR_SMALL_GAP,1])
|
|
tooltip:"Value for the Maximum number of overlapping light volumes in world-space (red overlay).\nRange is from 1 to 32 (default is 8)."
|
|
|
|
-- Option arrays - Option Groups defined here (used when switching between modes), WIRE_OPTION_WIDGETS is the array of the OptionGroups
|
|
local WIREOPTION_TXD_WIDGETS = #( chkTXD1Colour, chkTXD2Colour, chkTXD3Colour, chkTXD4Colour, lblTxd1, lblTxd2, lblTxd3, lblTxd4,
|
|
txtTXD1Name, txtTXD2Name, txtTXD3Name, txtTXD4Name, trkTXD1Multiplier, trkTXD2Multiplier, trkTXD3Multiplier, trkTXD4Multiplier )
|
|
local WIREOPTION_LOD_WIDGETS = #( chkOrphanColour, chkHDColour, chkLODColour, chkSLOD1Colour, gbxLODContainerWidgets, chkSLOD2Colour, chkSLOD3Colour, chkSLOD4Colour,
|
|
lblOrphanLabel, lblHDLabel, lblLODLabel, lblSLOD1Label, lblSLOD2Label, lblSLOD3Label, lblSLOD4Label,
|
|
trkOrphanMultiplier, trkHDMultiplier, trkLODMultiplier, trkSLOD1Multiplier, trkLoSLODsMultiplier )
|
|
local WIREOPTION_BUCKET_WIDGETS = #( chkOpaqueColour, chkWaterColour, chkAlphaColour, chkDecalColour, chkCutoutColour, lblOpaqueLabel, lblAlphaLabel, lblDecalLabel, lblWaterLabel, lblCutoutLabel,
|
|
trkOpaqueMultiplier, trkAlphaMultiplier, trkDecalMultiplier, trkCutoutMultiplier, trkWaterMultiplier )
|
|
local WIREOPTION_HD_WIDGETS = #( chkIsHDColour, chkUsingHDColour, chkSharedHDColour, chkCapableHDColour, chkSwitchingHDColour, chkNotHDColour,
|
|
lblIsHDLabel, lblUsingHDLabel, lblSharedHDLabel, lblCapableHDLabel, lblSwitchingHDLabel, lblNotHDLabel, trkUsingHDMultiplier, trkSharedHDMultiplier, trkCapableHDMultiplier )
|
|
local WIREOPTION_SHADER_WIDGETS = #( chkUseShaderFilter, chkPXMShader, chkUberShader, chkStandard2lyrShader, chkWaterShader, chkMudShader, chkDefaultShader, trkUberLookUp )
|
|
local WIREOPTION_ATTRIBUTES_WIDGETS = #( chkIsProp, chkIsFrag, chkLowPriority, chkIsDoor, chkNoShadow, chkNoReflect, chkIsDynamic, chkAlphaFading )
|
|
local WIREOPTION_TEXDENSITY_WIDGETS = #( chkTexDensityXMinColour, chkTexDensityMinColour, chkTexDensityMidColour, chkTexDensityMaxColour, chkTexDensityXMaxColour, txtTextureMinSize, trkTextureMinSize,
|
|
trkTexDensityXMinMultiplier, trkTexDensityMinMultiplier, trkTexDensityMidMultiplier, trkTexDensityMaxMultiplier, trkTexDensityXMaxMultiplier,
|
|
txtTextureDensityMin, txtTextureDensityMax, trkTextureDensityMin, trkTextureDensityMax, chkUseLogScale, trkDensityShift )
|
|
local WIREOPTION_OVERDRAW_WIDGETS = #( chkOverdraw, btnOverdrawMin, btnOverdrawMax, spnOverdrawMin, spnOverdrawMax, trkOverDrawOpacity )
|
|
local WIREOPTION_LIGHTCOST_WIDGETS = #( chkLightCost, btnLightCostMin, btnLightCostMax, spnLightCostMin, spnLightCostMax, trkLightCostOpacity )
|
|
local WIREOPTION_MULTICOLOUR_WIDGETS = #( chkColourPerEntity, chkColourPerTXD, chkColourPerShader, chkColourPerDrawCall )
|
|
local WIREOPTION_PRIORITYLEVEL = #( chkPriorityRequired, chkPriorityHigh, chkPriorityMedium, chkPriorityLow, lblPriorityRequired, lblPriorityHigh, lblPriorityMedium, lblPriorityLow,
|
|
trkPriorityRequired, trkPriorityHigh, trkPriorityMedium, trkPriorityLow )
|
|
local WIREOPTION_WIDGETS = #( WIREOPTION_TXD_WIDGETS,
|
|
WIREOPTION_LOD_WIDGETS,
|
|
WIREOPTION_BUCKET_WIDGETS,
|
|
WIREOPTION_HD_WIDGETS,
|
|
WIREOPTION_SHADER_WIDGETS,
|
|
WIREOPTION_ATTRIBUTES_WIDGETS,
|
|
WIREOPTION_TEXDENSITY_WIDGETS,
|
|
WIREOPTION_MULTICOLOUR_WIDGETS,
|
|
WIREOPTION_OVERDRAW_WIDGETS,
|
|
WIREOPTION_PRIORITYLEVEL,
|
|
WIREOPTION_LIGHTCOST_WIDGETS
|
|
)
|
|
local WIREOPTION_ALL_WIDGETS = #( gbxWireOptionsGroupBox, chkTXD1Colour, chkTXD2Colour, chkTXD3Colour, chkTXD4Colour, lblTxd1, lblTxd2, lblTxd3, lblTxd4,
|
|
txtTXD1Name, txtTXD2Name, txtTXD3Name, txtTXD4Name, trkTXD1Multiplier, trkTXD2Multiplier, trkTXD3Multiplier, trkTXD4Multiplier,
|
|
|
|
chkOrphanColour, chkHDColour, chkLODColour, chkSLOD1Colour, gbxLODContainerWidgets, chkSLOD2Colour, chkSLOD3Colour, chkSLOD4Colour,
|
|
lblOrphanLabel, lblHDLabel, lblLODLabel, lblSLOD1Label, lblSLOD2Label, lblSLOD3Label, lblSLOD4Label,
|
|
trkOrphanMultiplier, trkHDMultiplier, trkLODMultiplier, trkSLOD1Multiplier, trkLOSLODsMultiplier,
|
|
|
|
chkOpaqueColour, chkWaterColour, chkAlphaColour, chkDecalColour, chkCutoutColour, lblOpaqueLabel, lblAlphaLabel, lblDecalLabel, lblCutoutLabel, lblWaterLabel,
|
|
trkOpaqueMultiplier, trkAlphaMultiplier, trkDecalMultiplier, trkCutoutMultiplier, trkWaterMultiplier,
|
|
|
|
chkIsHDColour, chkUsingHDColour, chkSharedHDColour, chkCapableHDColour, chkSwitchingHDColour, chkNotHDColour,
|
|
lblIsHDLabel, lblUsingHDLabel, lblSharedHDLabel, lblCapableHDLabel, lblSwitchingHDLabel, lblNotHDLabel, trkUsingHDMultiplier, trkSharedHDMultiplier, trkCapableHDMultiplier,
|
|
|
|
chkUseShaderFilter, chkPXMShader, chkUberShader, trkUberLookup, chkStandard2lyrShader, chkWaterShader, chkMudShader, chkDefaultShader,
|
|
|
|
chkIsProp, chkIsFrag, chkLowPriority, chkIsDoor, chkNoShadow, chkNoReflect, chkIsDynamic, chkAlphaFading,
|
|
|
|
chkPriorityRequired, chkPriorityHigh, chkPriorityMedium, chkPriorityLow, lblPriorityRequired, lblPriorityHigh, lblPriorityMedium, lblPriorityLow,
|
|
trkPriorityRequired, trkPriorityHigh, trkPriorityMedium, trkPriorityLow,
|
|
|
|
chkTexDensityXMinColour, chkTexDensityMinColour, chkTexDensityMidColour, chkTexDensityMaxColour, chkTexDensityXMaxColour,
|
|
trkTexDensityXMinMultiplier, trkTexDensityMinMultiplier, trkTexDensityMidMultiplier, trkTexDensityMaxMultiplier, trkTexDensityXMaxMultiplier, txtTextureMinSize, trkTextureMinSize,
|
|
txtTextureDensityMin, txtTextureDensityMax, trkTextureDensityMin, trkTextureDensityMax, chkUseLogScale, trkDensityShift,
|
|
|
|
chkOverdraw, btnOverdrawMin, btnOverdrawMax, spnOverdrawMin, spnOverdrawMax, trkOverDrawOpacity,
|
|
chkLightCost, btnLightCostMin, btnLightCostMax, spnLightCostMin, spnLightCostMax, trkLightCostOpacity,
|
|
|
|
chkColourPerEntity, chkColourPerTXD, chkColourPerShader, chkColourPerDrawCall
|
|
)
|
|
|
|
|
|
-- TIME / WEATHER + TEXTURE VIEWER ROW --
|
|
groupBox gbxTimecycleGroupBox "TIME / WEATHER" width:TR_TIME_WIDTH height:TR_TIME_HEIGHT pos:TR_GROUP_POS
|
|
spinner spnTODHours "" range:[0,23,12] type:#Integer width:TR_TIMESPINNER_WIDTH
|
|
pos:(gbxTimecycleGroupBox.pos+TR_FIRST_OFFSET+[0,4])
|
|
tooltip:"Show/Change the Time of Day (Hours)"
|
|
spinner spnToDMinutes "" range:[0,59,0] type:#Integer width:TR_TIMESPINNER_WIDTH
|
|
pos:(spnTODHours.pos+[10+TR_SMALL_GAP,0])
|
|
tootip:"Show/Change the Time of Day (Minutes)"
|
|
dropdownList ddlWeatherPrev "" items:weatherItems height:(weatherItems.count+1) selection:7 width:TR_WEATHER_WIDTH
|
|
pos:(spnToDMinutes.pos+[10+TR_LARGE_GAP,-5]) enabled:true
|
|
tooltip:"Change the Previous Weather Type.\nRight-click disables the other widget, so this widget sets both Previous and Next."
|
|
dropdownList ddlWeatherNext "" items:weatherItems height:(weatherItems.count+1) selection:7 width:TR_WEATHER_WIDTH enabled:true
|
|
pos:(ddlWeatherPrev.pos+[TR_WEATHER_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Change the Next Weather Type."
|
|
checkButton chkTimeLock "Lock" checked:false width:TR_TIMELOCK_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:TIME_COLOUR
|
|
pos:(spnTODHours.pos+[12-TR_TIMESPINNER_WIDTH,TR_SMALL_BUTTON_HEIGHT-4+TR_SMALL_GAP])
|
|
tooltip:"Stop time from advancing\n(only in game, not RL)..."
|
|
dotnetcontrol trkTimeOfDay "system.windows.forms.trackbar" pos:(chkTimeLock.pos+[TR_TIMELOCK_WIDTH+TR_SMALL_GAP,1])
|
|
dotnetcontrol trkWeatherTransition "system.windows.forms.trackbar" pos:(ddlWeatherNext.pos+[TR_WEATHER_WIDTH+TR_SMALL_GAP+2,0])
|
|
local TIMECYCLE_WIDGETS = #( gbxTimecycleGroupBox, spnTODHours, spnToDMinutes, ddlWeatherPrev, ddlWeatherNext, chkTimeLock, trkTimeOfDay, trkWeatherTransition )
|
|
|
|
groupBox gbxTexViewerGroupBox "TEXTURE VIEWER" width:TR_TEXVIEWER_WIDTH height:TR_TIME_HEIGHT pos:(gbxTimecycleGroupBox.pos+[TR_TIME_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkTexViewerToggle "SHOW" width:TR_LARGE_BUTTON_HEIGHT height:TR_LARGE_BUTTON_HEIGHT highlightcolor:TIME_COLOUR checked:false
|
|
pos:(gbxTexViewerGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Open Texture Viewer window in RAG.\nAlso shows/hides the debug text with\ntexture names for the hovered-over material."
|
|
dropDownList ddlTexViewerSearchType"" items:#("TXDs","Textures") width:(TR_TEXVIEWER_TEXT_WIDTH-42-TR_SMALL_GAP) height:3
|
|
pos:(chkTexViewerToggle.pos+[TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP,0])
|
|
tooltip:"Change search between TXDs and Textures."
|
|
checkButton chkTexViewerExact "Exact" width:40 height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TIME_COLOUR
|
|
pos:(ddlTexViewerSearchType.pos+[TR_TEXVIEWER_TEXT_WIDTH-42,0])
|
|
tooltip:"Texture Viewer search results will only match Exact text below."
|
|
editText txtTexViewerSearch "" width:TR_TEXVIEWER_TEXT_WIDTH
|
|
pos:(chkTexViewerToggle.pos+[TR_LARGE_BUTTON_HEIGHT+TR_SMALL_GAP-3,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP+2])
|
|
tooltip:"Enter text to search for TXDs or Textures.\nWill only return results for loaded TXDs."
|
|
local TEXVIEWER_WIDGETS = #( gbxTexViewerGroupBox, chkTexViewerToggle, ddlTexViewerSearchType, chkTexViewerExact, txtTexViewerSearch )
|
|
|
|
|
|
|
|
-- OCCLUSION + GBUFFER + CULLBOXES ROW --
|
|
groupBox gbxOcclusionGroupBox "OCCLUSION" width:TR_OCCL_WIDTH height:TR_OCCL_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkOcclOff "ON" width:TR_OCCL_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR checked:true
|
|
pos:(gbxOcclusionGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle occlusion ON / OFF"
|
|
dropDownList ddlOcclMode "" items:#("Hide","Show","Overlay") width:TR_OCCLMODE_WIDTH height:4
|
|
pos:(chkOcclOff.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
toolTip:"Show/Hide occlusion mesh in-game."
|
|
checkButton chkOcclFlip "Flip" width:TR_OCCLFLIP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR checked:false
|
|
pos:(ddlOcclMode.pos+[TR_OCCLMODE_WIDTH+TR_SMALL_GAP,1])
|
|
tooltip:"Draw only objects that are normally occluded."
|
|
local OCCLUSION_WIDGETS = #( gbxOcclusionGroupBox, chkOcclOff, ddlOcclMode, chkOcclFlip )
|
|
|
|
groupBox gbxGBuffGroupBox "G BUFFER" width:TR_GBUF_WIDTH height:TR_OCCL_HEIGHT pos:(gbxOcclusionGroupBox.pos+[TR_OCCL_WIDTH+TR_GROUP_HGAP,0])
|
|
dropdownList ddlGBufferLocation "" items:#("Off","Corner","Full") width:60 height:4
|
|
pos:(gbxGBuffGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show selected GBuffer pass\nin either the corner or fullscreen."
|
|
dropdownList ddlGBuffer "" items:#("Albedo","Normals","Specular","Ambient/Emissive","Velocity","Depth","Shadow") selection:1 width:TR_GBUF_MODE_WIDTH height:8 \
|
|
pos:(ddlGBufferLocation.pos+[60+TR_SMALL_GAP,0])
|
|
tooltip:"Change GBuffer mode"
|
|
|
|
checkButton chkLightOverride "Lights" width:40 height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR
|
|
pos:(ddlGBufferLocation.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP+1])
|
|
tooltip:"Toggle Lighting On/Off"
|
|
checkButton chkDiffuseOverride "Diffuse" width:40 height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR
|
|
pos:(chkLightOverride.pos+[40+TR_SMALL_GAP+3,0])
|
|
tooltip:"Toggle Diffuse Textures On/Off"
|
|
checkButton chkTintOverride "Tint" width:32 height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR
|
|
pos:(chkDiffuseOverride.pos+[40+1,0])
|
|
tooltip:"Toggle Tint Textures On/Off\n(Results may vary, as Tinted Textures aren't always Tint Textures)"
|
|
dotNetControl trkDiffuseOverride "system.windows.forms.trackbar" pos:(chkTintOverride.pos+[33,1])
|
|
dotNetControl trkDarkOverride "system.windows.forms.trackbar" pos:(ddlGBuffer.pos+[TR_GBUF_MODE_WIDTH+TR_SMALL_GAP+3,0])
|
|
local GBUF_WIDGETS = #( gbxGBuffGroupBox, ddlGBuffer, ddlGBufferLocation, chkLightOverride, chkDiffuseOverride, trkDiffuseOverride, chkTintOverride, trkDarkOverride )
|
|
local GBUF_CONTROLS = #( gbxGBuffGroupBox, chkLightOverride, chkDiffuseOverride, chkTintOverride )
|
|
|
|
groupBox gbxCullBoxGroupBox "CULLBOXES" width:TR_CULLBOX_WIDTH height:TR_OCCL_HEIGHT pos:(gbxGBuffGroupBox.pos+[TR_GBUF_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkCullBoxesOn "ON" width:TR_CULLBOX_ON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR checked:true
|
|
pos:(gbxCullBoxGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle IMAP culling ON / OFF"
|
|
checkButton chkCullBoxEditor "Edit" width:TR_CULLBOX_EDITOR_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:OCCL_COLOUR checked:false
|
|
pos:(chkCullBoxesOn.pos+[TR_CULLBOX_ON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Open in-game IPL Cullbox Editor"
|
|
button btnFindCullBox "Find" width:TR_CULL_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(chkCullBoxesOn.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Point debug camera at editor's selected Cullbox"
|
|
button btnWarpToCullBox "Warp" width:TR_CULL_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(btnFindCullBox.pos+[TR_CULL_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Warp debug camera to selected Cullbox"
|
|
local CULLBOX_WIDGETS = #( gbxCullBoxGroupBox, chkCullBoxesOn, chkCullBoxEditor, btnFindCullBox, btnWarpToCullBox )
|
|
|
|
|
|
|
|
-- PREVIEW + LIGHTING ROW --
|
|
groupBox gbxPreviewGroupBox "PREVIEW" width:TR_PREVIEW_WIDTH height:TR_LIGHTING_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkPreviewEnable "PREVIEW" width:(TR_PREVIEW_WIDTH-TR_GROUP_HBORDERS) height:(TR_SMALL_BUTTON_HEIGHT+8) highlightColor:LIGHT_COLOUR checked:false
|
|
pos:(gbxPreviewGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Enable Preview"
|
|
button btnFlushScene "Flush" width:(TR_PREVIEW_WIDTH-TR_GROUP_HBORDERS) height:TR_SMALL_BUTTON_HEIGHT
|
|
pos:(chkPreviewEnable.pos+[0,TR_SMALL_BUTTON_HEIGHT+8+TR_SMALL_GAP])
|
|
tooltip:"Flush Scene to update Preview."
|
|
local PREVIEW_WIDGETS = #( gbxPreviewGroupBox, chkPreviewEnable, btnFlushScene )
|
|
|
|
groupBox gbxLightInfoGroupBox "LIGHT INFO" width:TR_LIGHT_INFO_WIDTH height:TR_LIGHTING_HEIGHT pos:(gbxPreviewGroupBox.pos+[TR_PREVIEW_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkShowBudget "Budget" width:(TR_LIGHT_TYPE_WIDTH+TR_SMALL_GAP+TR_SMALL_BUTTON_HEIGHT) height:(TR_SMALL_BUTTON_HEIGHT+8) highlightColor:LIGHT_COLOUR checked:false
|
|
pos:( gbxLightInfoGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide Budget windows.\nRrequired for LOCAL light Tint\n(Clicking one will toggle the other on automatically)."
|
|
checkButton chkLightInfo "Type" width:TR_LIGHT_TYPE_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightColor:LIGHT_COLOUR checked:false
|
|
pos:(chkShowBudget.pos+[0,TR_SMALL_BUTTON_HEIGHT+8+TR_SMALL_GAP])
|
|
tooltip:"Show Type Labels next to light entities."
|
|
checkButton chkLightCosts "C" width:TR_SMALL_BUTTON_HEIGHT height:TR_SMALL_BUTTON_HEIGHT highlightColor:LIGHT_COLOUR checked:false
|
|
pos:( chkLightInfo.pos+[TR_LIGHT_TYPE_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Toggle Light Costs visualisation ON/OFF.\nOverrides current wireframe mode.\n(Options appear in Wireframe Option group.)"
|
|
local LIGHT_INFO_WIDGETS = #( gbxLightInfoGroupBox, chkLightCosts, chkShowBudget, chkLightInfo )
|
|
|
|
groupBox gbxLightingTogglesGroupBox "MAIN LIGHT TOGGLES" width:TR_LIGHTING_TOGGLES_WIDTH height:TR_LIGHTING_HEIGHT pos:(gbxLightInfoGroupBox.pos+[TR_LIGHT_INFO_WIDTH+1,0])
|
|
checkButton chkGlobalLightToggle "GLOBAL" width:(TR_LIGHT_GLOBAL_WIDTH) height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(gbxLightingTogglesGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle GlOBAL light ON/OFF."
|
|
|
|
checkButton chkTintLOD "Tint" width:TR_LIGHT_TYPE_WIDTH height:(TR_SMALL_BUTTON_HEIGHT-2) highlightColor:CONTROL_COLOUR checked:false
|
|
pos:(chkGlobalLightToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP+4]) tooltip:"Toggle RED Tint on LOD lights."
|
|
checkButton chkLODLightToggle "LOD" width:(TR_LIGHT_GLOBAL_WIDTH-TR_LIGHT_TYPE_WIDTH) height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkTintLOD.pos+[TR_LIGHT_TYPE_WIDTH,0])
|
|
tooltip:"Show/Hide LOD Lights."
|
|
|
|
checkButton chkTintLocal "Tint" width:TR_LIGHT_TYPE_WIDTH height:(TR_SMALL_BUTTON_HEIGHT-2) highlightColor:CONTROL_COLOUR checked:false
|
|
pos:(chkGlobalLightToggle.pos+[TR_LIGHT_GLOBAL_WIDTH+TR_LARGE_GAP,0])
|
|
tooltip:"Toggle coloured tint on LOCAL Lights.\nRequires Budget window to be active\n(Clicking one will toggle the other on automatically)"
|
|
checkButton chkLocalLightToggle "LOCAL" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkTintLocal.pos+[TR_LIGHT_TYPE_WIDTH,0])
|
|
tooltip:"Show/Hide LOCAL lights.(Will toggle ON Point, Spot, Capsule and Other if none are ON)."
|
|
|
|
checkButton chkHighlightDistant "Show" width:TR_LIGHT_TYPE_WIDTH height:(TR_SMALL_BUTTON_HEIGHT-2) highlightColor:CONTROL_COLOUR checked:false
|
|
pos:(chkTintLocal.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP+4])
|
|
tooltip:"Show/Hide Debug Highlights on Distant LOD Lights."
|
|
checkButton chkDistantLightToggle "Distant" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkHighlightDistant.pos+[TR_LIGHT_TYPE_WIDTH,0])
|
|
tooltip:"Show/Hide Distant LOD Lights."
|
|
|
|
local LIGHTING_TOGGLE_WIDGETS = #( gbxLightingTogglesGroupBox, chkGlobalLightToggle, chkLODLightToggle, chkLocalLightToggle, chkDistantLightToggle,
|
|
chkTintLOD, chkTintLocal, chkHighlightDistant )
|
|
|
|
groupBox gbxLocalTogglesGroupBox "LOCAL LIGHTS" width:TR_LOCALLIGHTS_WIDTH height:TR_LIGHTING_HEIGHT pos:(gbxLightingTogglesGroupBox.pos+[TR_LIGHTING_TOGGLES_WIDTH+1,0])
|
|
checkButton chkPointLightToggle "Point" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(gbxLocalTogglesGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide LOCAL Point Lights."
|
|
checkButton chkSpotLightToggle "Spot" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkPointLightToggle.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+4])
|
|
tooltip:"Show/Hide LOCAL Spot Lights.\nRequires LOCAL on, so will automatically toggle it."
|
|
checkButton chkCapsuleLightToggle "Capsule" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkPointLightToggle.pos+[TR_LIGHT_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide LOCAL Capsule Lights.\nRequires LOCAL on, so will automatically toggle it."
|
|
checkButton chkOtherLightToggle "Other" width:TR_LIGHT_BUTTON_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+4) highlightColor:LIGHT_COLOUR checked:true
|
|
pos:(chkCapsuleLightToggle.pos+[0,TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP+4])
|
|
tooltip:"Show/Hide Other Types of LOCAL Lights.\nRequires LOCAL on, so will automatically toggle it."
|
|
local LOCAL_TOGGLE_WIDGETS = #( gbxLocalTogglesGroupBox, chkPointLightToggle, chkSpotLightToggle, chkCapsuleLightToggle, chkOtherLightToggle )
|
|
|
|
local LIGHT_TOGGLE_CONTROLS = #( gbxLightingTogglesGroupBox, chkGlobalLightToggle, chkLODLightToggle, chkLocalLightToggle, chkDistantLightToggle )
|
|
local LOCALLIGHT_TOGGLE_CONTROLS = #( gbxLocalTogglesGroupBox, chkPointLightToggle, chkSpotLightToggle, chkCapsuleLightToggle, chkOtherLightToggle )
|
|
|
|
|
|
|
|
-- LOD HIERARCHY ROW --
|
|
groupBox gbxLODHierarchyGroupBox "LOD TYPE TOGGLES" width:TR_LODHIERARCHY_WIDTH height:TR_LOD_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkOrphanToggle "Orphan" width:(TR_LOD_BUTTON_WIDTH-12) height:(TR_LOD_BUTTON_HEIGHT-2) highlightcolor:(buttonColours.orphan * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(gbxLODHierarchyGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide Orphan HD objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
checkButton chkHDToggle "HD" width:(TR_LOD_BUTTON_WIDTH+12)height:TR_LOD_BUTTON_HEIGHT highlightcolor:(buttonColours.hd * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkOrphanToggle.pos+[TR_LOD_BUTTON_WIDTH+TR_SMALL_GAP-12,0])
|
|
tooltip:"Show/Hide HD objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
|
|
checkButton chkLODToggle "LOD" width:(TR_LOD_BUTTON_WIDTH+12) height:(TR_LOD_BUTTON_HEIGHT-6) highlightcolor:(buttonColours.lod * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkOrphanToggle.pos+[0,TR_LOD_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show/Hide LOD objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
checkButton chkSLOD1Toggle "SLOD1" width:(TR_LOD_BUTTON_WIDTH-12) height:(TR_LOD_BUTTON_HEIGHT-8) highlightcolor:(buttonColours.slod1 * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkLODToggle.pos+[TR_LOD_BUTTON_WIDTH+12+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide SLOD1 objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
|
|
checkButton chkSLOD2Toggle "SLOD2" width:TR_LOD_BUTTONTHREE_WIDTH height:(TR_LOD_BUTTON_HEIGHT-12) highlightcolor:(buttonColours.slod2 * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkLODToggle.pos+[0,TR_LOD_BUTTON_HEIGHT+TR_LARGE_GAP-8])
|
|
tooltip:"Show/Hide SLOD2 objects.\nRight-click to Show/Hide ALL other LOD Levels."
|
|
checkButton chkSLOD3Toggle "SLOD3" width:TR_LOD_BUTTONTHREE_WIDTH height:(TR_LOD_BUTTON_HEIGHT-12) highlightcolor:(buttonColours.slod3 * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkSLOD2Toggle.pos+[TR_LOD_BUTTONTHREE_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide SLOD3 objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
checkButton chkSLOD4Toggle "SLOD4" width:TR_LOD_BUTTONTHREE_WIDTH height:(TR_LOD_BUTTON_HEIGHT-12) highlightcolor:(buttonColours.slod4 * DARK_SCHEME_MULTIPLIER) checked:true
|
|
pos:(chkSLOD3Toggle.pos+[TR_LOD_BUTTONTHREE_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide SLOD4 objects.\nRight-click to Show / Hide ALL other LOD Levels."
|
|
|
|
groupBox gbxLODLevelsGroupBox "LEVELS" width:TR_LODLEVELS_WIDTH height:TR_LOD_HEIGHT pos:(gbxLODHierarchyGroupBox.pos+[TR_LODHIERARCHY_WIDTH+1,0])
|
|
dropdownList ddlLODLevel "" items:#("HD","LOD","SLOD1","SLOD2","SLOD3","SLOD4") width:80 height:7
|
|
pos:(gbxLODLevelsGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Select a LOD Level to Isolate/Hide."
|
|
dropdownList ddlLODFunction "" items:#("Draw All","Switch To","Cull Only", "Cull Other") width:80 height:5
|
|
pos:(ddlLODLevel.pos+[0,TR_SMALL_BUTTON_HEIGHT+1])
|
|
tooltip:"Isolate/Hide the LOD Level selected in the drop down to the left."
|
|
|
|
checkButton chkLODMultiplierToggle "Multilpier" width:80 height:(TR_SMALL_BUTTON_HEIGHT+10) highlightcolor:buttonColours.alpha checked:false
|
|
pos:(ddlLODFunction.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_LARGE_GAP])
|
|
tooltip:"Switch on the LOD multiplier (using value to the right).\nWARNING : Large values (ie. over 4) are prone to locking up the game\nas you'll be trying to load a lot more objects."
|
|
spinner spnLODMultiplier "" range:[0.0,10.0,4.0] type:#float width:80
|
|
pos:(chkLODMultiplierToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+11])
|
|
tooltip:"Value to multiply ALL LOD Distances by.\n(BEWARE VALUES OVER 4)."
|
|
|
|
groupBox gbxLODInfoGroupBox "INFO" width:TR_LODINFO_WIDTH height:TR_LOD_HEIGHT pos:(gbxLODLevelsGroupBox.pos+[TR_LODLEVELS_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkLODSphere "LOD Sphere" width:TR_LODTREE_WIDTH height:TR_LARGE_BUTTON_HEIGHT highlightcolor:LOD_COLOUR checked:false
|
|
pos:(gbxLODInfoGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show LOD sphere for the highlighted object in RAG Picker."
|
|
checkButton chkLODTree "Tree" width:TR_LODTREE_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:LOD_COLOUR checked:false
|
|
pos:(chkLODSphere.pos+[0,TR_LARGE_BUTTON_HEIGHT+TR_LARGE_GAP])
|
|
tooltip:"Show LOD Tree for selected object in RAG"
|
|
checkButton chkLODInfo "Info" width:TR_LODTREE_WIDTH height:(TR_SMALL_BUTTON_HEIGHT+2) highlightColor:LOD_COLOUR checked:false
|
|
pos:(chkLODTree.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show LOD hierarchy info for selected objects in the in-game debug text (B)."
|
|
|
|
groupBox gbxLODEditGroupBox "LOD TWEAK" width:TR_LODEDIT_WIDTH height:TR_LOD_HEIGHT pos:(gbxLODINFOGroupBox.pos+[TR_LODINFO_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkEnableTweak "Edit Distances" width:TR_TWEAKTYPE_WIDTH height:(TR_LARGE_BUTTON_HEIGHT) highlightColor:LOD_COLOUR checked:false
|
|
pos:(gbxLODEditGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Temporarily tweak the LOD Distance for the selected objects in RAG."
|
|
dropDownList ddlTweakType "" items:#("Selected","Children") selection:1 width:TR_TWEAKTYPE_WIDTH height:3
|
|
pos:(chkEnableTweak.pos+[0,TR_LARGE_BUTTON_HEIGHT+TR_LARGE_GAP])
|
|
tooltip:"Swap between selected Object's LOD Distance,\nand selected object's child LOD Distance."
|
|
spinner spnTweakValue "" range:[0,12000,0] type:#integer height:TR_SMALL_BUTTON_HEIGHT width:TR_TWEAKTYPE_WIDTH
|
|
pos:(ddlTweakType.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP+2])
|
|
tooltip:"New LOD Distance.\nShould switch to existing LOD Distance when first editted.\nWill revert to existing LOD Distance when object unloads from memory."
|
|
|
|
local LODHIERARCHY_WIDGETS = #( gbxLODHierarchyGroupBox, chkOrphanToggle, chkHDToggle, chkLODToggle, chkSLOD1Toggle, chkSLOD2Toggle, chkSLOD3Toggle, chkSLOD4Toggle )
|
|
local LODLEVELS_WIDGETS = #( gbxLODLevelsGroupBox, ddlLODLevel, ddlLODFunction, chkLODMultiplierToggle, spnLODMultiplier )
|
|
local LODINFO_WIDGETS = #( gbxLODInfoGroupBox, chkLODSphere, chkLODTree, chkLODInfo )
|
|
local LODEDIT_WIDGETS = #( gbxLODEditGroupBox, chkEnableTweak, ddlTweakType, spnTweakValue )
|
|
|
|
local LOD_WIDGETS = #( gbxLODHierarchyGroupBox, chkOrphanToggle, chkHDToggle, chkLODToggle, chkSLOD1Toggle, chkSLOD2Toggle, chkSLOD3Toggle, chkSLOD4Toggle,
|
|
ddlLODLevel, ddlLODFunction, chkLODMultiplierToggle, spnLODMultiplier, chkLODSphere, chkLODTree, chkLODInfo,
|
|
gbxLODEditGroupBox, chkEnableTweak, ddlTweakType, spnTweakValue
|
|
)
|
|
local LOD_CONTROLS = #( gbxLODHierarchyGroupBox, chkOrphanToggle, chkHDToggle, chkLODToggle, chkSLOD1Toggle, chkSLOD2Toggle, chkSLOD3Toggle, chkSLOD4Toggle ) -- Just the LOD Level buttons for switching states
|
|
|
|
|
|
|
|
-- GEO / RENDER PASS / COLLISON TOGGLE ROW --
|
|
groupBox gbxGeoTypeGroupBox "GEO TYPE TOGGLES" width:TR_GEO_WIDTH height:TR_GEO_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkVisBuildingsToggle "Building" width:TR_GEOTYPE_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(gbxGeoTypeGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide objects flagged as BUILDING\n(probably still includes TERRAIN LODs).\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisInteriorToggle "Interior" width:TR_GEOTYPE_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(TOGGLE_COLOUR*0.8) checked:true enabled:true
|
|
pos:(chkVisBuildingsToggle.pos+[TR_GEOTYPE_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as INTERIOR\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisTerrainToggle "Terrain" width:TR_GEOTYPE_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(chkVisInteriorToggle.pos+[TR_GEOTYPE_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as TERRAIN\nRight-click to Show/Hide ALL other types."
|
|
|
|
checkButton chkVisIPTreesToggle "Tree" width:TR_GEOPROP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(chkVisBuildingsToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as TREE\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisIPGrassToggle "Grass" width:TR_GEOPROP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(chkVisIPTreesToggle.pos+[TR_GEOPROP_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as GRASS\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisObjectsToggle "Object" width:TR_GEOPROP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(chkVisIPGrassToggle.pos+[TR_GEOPROP_BUTTON_WIDTH+TR_LARGE_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as OBJECT (PROPS)\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisDummiesToggle "Dummy" width:TR_GEOPROP_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:TOGGLE_COLOUR checked:true enabled:true
|
|
pos:(chkVisObjectsToggle.pos+[TR_GEOPROP_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as DUMMY (PROPS)\nRight-click to Show/Hide ALL other types."
|
|
|
|
checkButton chkVisWaterToggle "Water" width:TR_GEOOTHER_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(TOGGLE_COLOUR*0.8) checked:true enabled:true
|
|
pos:(chkVisIPTreesToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide objects flagged as WATER\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisVehiclesToggle "Vehicles" width:TR_GEOOTHER_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(TOGGLE_COLOUR*0.7) checked:true
|
|
pos:(chkVisWaterToggle.pos+[TR_GEOOTHER_BUTTON_WIDTH+TR_LARGE_GAP,0])
|
|
tooltip:"Show/Hide VEHICLEs\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisPedsToggle "Peds" width:TR_GEOOTHER_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(TOGGLE_COLOUR*0.7) checked:true enabled:true
|
|
pos:(chkVisVehiclesToggle.pos+[TR_GEOOTHER_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide PEDs\nRight-click to Show/Hide ALL other types."
|
|
|
|
local GEOTYPE_WIDGETS = #( gbxGeoTypeGroupBox,chkVisBuildingsToggle, chkVisInteriorToggle, chkVisTerrainToggle,
|
|
chkVisIPTreesToggle, chkVisIPGrassToggle, chkVisObjectsToggle, chkVisDummiesToggle, chkVisWaterToggle, chkVisVehiclesToggle, chkVisPedsToggle
|
|
)
|
|
|
|
groupBox gbxRenderPassGroup "RENDER PASS TOGGLES" width:TR_PASS_WIDTH height:TR_GEO_HEIGHT pos:(gbxGeoTypeGroupBox.pos+[TR_GEO_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkVisOpaqueToggle "Opaque" width:(TR_PASS_BUTTON_WIDTH+16) height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(buttonColours.opaque * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(gbxRenderPassGroup.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Show/Hide OPAQUE materials\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisDecalToggle "Decal" width:(TR_PASS_BUTTON_WIDTH-16) height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(buttonColours.decal * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(chkVisOpaqueToggle.pos+[TR_PASS_BUTTON_WIDTH+16+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide DECAL materials\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisAlphaToggle "Alpha" width:TR_PASS_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(buttonColours.alpha * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(chkVisOpaqueToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show/Hide ALPHA materials\nRight-click to Show/Hide ALL other types."
|
|
checkButton chkVisCutoutToggle "Cutout" width:TR_PASS_BUTTON_WIDTH height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(buttonColours.cutout * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(chkVisAlphaToggle.pos+[TR_PASS_BUTTON_WIDTH+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide CUTOUT materials\nRight-click to Show/Hide ALL other types."
|
|
|
|
checkButton chkVisFXToggle "VFX" width:(TR_PASS_BUTTON_WIDTH-16) height:TR_SMALL_BUTTON_HEIGHT highlightColor:(buttonColours.shadow * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(chkVisAlphaToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Toggle Fog/VFX ON and OFF."
|
|
checkButton chkShadowToggle "Shadow" width:(TR_PASS_BUTTON_WIDTH+16) height:TR_SMALL_BUTTON_HEIGHT highlightcolor:(buttonColours.shadow * DARK_SCHEME_MULTIPLIER) checked:true enabled:true
|
|
pos:(chkVisFXToggle.pos+[TR_PASS_BUTTON_WIDTH-16+TR_SMALL_GAP,0])
|
|
tooltip:"Show/Hide SHADOWS\nRight-click to Show/Hide ALL other types."
|
|
local RENDERPASS_WIDGETS = #( gbxRenderPassGroup, chkVisOpaqueToggle, chkVisAlphaToggle, chkVisDecalToggle, chkVisCutoutToggle)
|
|
local ALLPASS_WIDGETS = #( gbxRenderPassGroup, chkVisOpaqueToggle, chkVisAlphaToggle, chkVisDecalToggle, chkVisCutoutToggle, chkVisFXToggle, chkShadowToggle )
|
|
|
|
groupBox gbxCollisionGroup "COLLISION" width:TR_COLLISION_WIDTH height:TR_GEO_HEIGHT pos:(gbxRenderPassGroup.pos+[TR_PASS_WIDTH+TR_GROUP_HGAP,0])
|
|
checkButton chkSolidCollision "Solid" width:(TR_COLLISION_WIDTH-TR_GROUP_HBORDERS) height:TR_SMALL_BUTTON_HEIGHT highlightColor:TOGGLE_COLOUR checked:false
|
|
pos:(gbxCollisionGroup.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Draw active basic Collision as solid."
|
|
dropdownList ddlCollisionType "" items:#("OFF", "MOVER", "WEAPON") selection:1 width:(TR_COLLISION_WIDTH-TR_GROUP_HBORDERS) height:4
|
|
pos:(chkSolidCollision.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show basic Collision type overlay.\nRight-click to turn both overlays OFF."
|
|
dropdownList ddlOtherType "" items:#("OFF", "Pavement", "Deep Snow", "Mud", "PedDensity") selection:1 width:(TR_COLLISION_WIDTH-TR_GROUP_HBORDERS) height:6
|
|
pos:(ddlCollisionType.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show other Collision type overlay.\nRight-click to turn both overlays OFF."
|
|
local COLLISION_WIDGETS = #( gbxCollisionGroup, chkSolidCollision, ddlCollisionType, ddlOtherType )
|
|
|
|
|
|
|
|
-- PLACEHOLDER ROW - TO BE ORGANISED ONCE THE WIDGET SELECTION IS FINALISED !!!! --
|
|
-- WILL PROBABLY HAVE OPTIMISATION, POM GROUPS + MAYBE VIRTUAL MAP REINSTATED FROM SCENEANALYSER
|
|
-- + ANY REQUESTED WIDGETS FROM FEEDBACK
|
|
groupBox gbxOtherGroupBox "PLACEHOLDER SPACE FOR OTHER WIDGET GROUPS TO BE ORGANISED LATER" width:TR_OTHER_WIDTH height:TR_OTHER_HEIGHT pos:TR_GROUP_POS
|
|
checkButton chkFloatingObjects "Floating Objects" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR checked:false
|
|
pos:(gbxOtherGroupBox.pos+TR_FIRST_OFFSET)
|
|
tooltip:"Toggle Floating/Intersecting object info overlay OFF/ON."
|
|
checkButton chkObjectDensityToggle "Object Density" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightcolor:CONTROL_COLOUR checked:false
|
|
pos:(chkFloatingObjects.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Draw Object Density Boxes"
|
|
checkButton chkShowEntities "Light Entities" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR checked:false
|
|
pos:( chkObjectDensityToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show/Hide boxes around loaded light entities."
|
|
|
|
checkButton chkDrawListToggle "Draw List" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightcolor:CONTROL_COLOUR checked:false
|
|
pos:(chkFloatingObjects.pos+[90+TR_SMALL_GAP,0])
|
|
tooltip:"Show Draw List Stats"
|
|
checkButton chkBudgetToggle "GBUF Budgets" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightcolor:CONTROL_COLOUR checked:false
|
|
pos:(chkDrawListToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show GPU Budget diagnostics"
|
|
checkButton chkHDTexturesToggle "HD Tex List" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightcolor:CONTROL_COLOUR checked:false enabled:true
|
|
tooltip:"Show HD Texture List"
|
|
pos:(chkBudgetToggle.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
|
|
checkButton chkPOMEnable "Disable POM" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR
|
|
pos:(chkDrawListToggle.pos+[90+TR_SMALL_GAP,0])
|
|
tooltip:"Disables POM."
|
|
checkButton chkShowPOMBlend "POM Blend Mask" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR
|
|
pos:(chkPOMEnable.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Shows/Hides the POM Blend Mask vert channel."
|
|
checkButton chkShowPOMCurve "POM Curve Mask" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR
|
|
pos:(chkShowPOMBlend.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show/Hide the POM Curve Mask vert channel."
|
|
checkButton chkShowPOMFade "Show POM Fade" width:90 height:TR_SMALL_BUTTON_HEIGHT highlightColor:CONTROL_COLOUR
|
|
pos:(chkShowPOMCurve.pos+[0,TR_SMALL_BUTTON_HEIGHT+TR_SMALL_GAP])
|
|
tooltip:"Show/Hide the POM Distance Fade Settings."
|
|
|
|
local OTHER_WIDGETS = #( gbxOtherGroupBox, chkFloatingObjects, chkObjectDensityToggle, chkShowEntities, chkDrawListToggle, chkBudgetToggle, chkHDTexturesToggle,
|
|
chkPOMEnable, chkShowPOMBlend, chkShowPOMCurve, chkShowPOMFade
|
|
)
|
|
|
|
-- HERE ARE A FEW OF MY LESS FAVOURITE THINGS --
|
|
/* groupBox gbxVectorMapGroupBox "Vector Map" width:TR_VECTOR_MAP_WIDTH height:TR_SMALL_HEIGHT pos:(gbxWireframeGroupBox.pos+[(TR_WIRE_WIDTH-TR_VECTOR_MAP_WIDTH),96])
|
|
checkButton chkVisMap "Basic" width:34 height:TR_SMALL_BUTTON_HEIGHT highlightColor:DEFAULT_COLOUR checked:false pos:(gbxVectorMapGroupBox.pos+TR_FIRST_OFFSET) tooltip:""
|
|
checkButton chkVisMapDebug "More" width:32 height:TR_SMALL_BUTTON_HEIGHT highlightColor:DEFAULT_COLOUR checked:false pos:(chkVisMap.pos+[36,0]) tooltip:""
|
|
checkButton chkVisMapDupes "Dupes" width:40 height:TR_SMALL_BUTTON_HEIGHT highlightColor:DEFAULT_COLOUR checked:false pos:(chkVisMapDebug.pos+[34,0]) tooltip:""
|
|
checkButton chkVisMapInfo "Info" width:28 height:TR_SMALL_BUTTON_HEIGHT highlightColor:DEFAULT_COLOUR checked:false pos:(chkVisMapDupes.pos+[42,0]) tooltip:""
|
|
button btnVMapZoomOut "-" width:18 height:TR_SMALL_BUTTON_HEIGHT pos:(chkVisMapInfo.pos+[36,0]) tooltip:""
|
|
button btnVMapZoomIn "+" width:18 height:TR_SMALL_BUTTON_HEIGHT pos:(btnVMapZoomOut.pos+[20,0]) tooltip:""
|
|
*/
|
|
|
|
|
|
-- Row order defined here... wireOptionRow setup properly in open event to avoid problems if new rows are added !!!!
|
|
local wireOptionRow = 1 -- Setting obviously wrong to detect any unforseen problems early (will mangle the WIRE_OPTIONS UI so it's visible outside WIREFRAME)
|
|
local ALL_WIDGETS = #(
|
|
#(ALLBANK_WIDGETS, gbxBankTogglesGroupBox),
|
|
|
|
#(BLOCK_WIDGETS, PICKER_WIDGETS, chkPickerBank),
|
|
#(TIMECYCLE_WIDGETS, TEXVIEWER_WIDGETS, chkTimeBank),
|
|
#(WIREFRAME_WIDGETS, WIREOPTION_ALL_WIDGETS, chkWireframeBank),
|
|
#(PREVIEW_WIDGETS, LIGHTING_TOGGLE_WIDGETS, LOCAL_TOGGLE_WIDGETS, LIGHT_INFO_WIDGETS, chkLightingBank),
|
|
#(LODHIERARCHY_WIDGETS, LODLEVELS_WIDGETS, LODINFO_WIDGETS, LODEDIT_WIDGETS, chkLODBank),
|
|
#(OCCLUSION_WIDGETS, GBUF_WIDGETS, CULLBOX_WIDGETS, chkOcclCullBank),
|
|
#(GEOTYPE_WIDGETS, ALLPASS_WIDGETS, COLLISION_WIDGETS, chkToggleBank),
|
|
#(OTHER_WIDGETS, chkOtherBank)
|
|
)
|
|
|
|
|
|
---- FUNCTIONS ----
|
|
-- DEBUG FUNCTIONS --
|
|
fn AddLabelsToTooltips =
|
|
( -- DEBUG FUNCTION that appends the widget name to its tooltip (because there are too many widgets to remember their names)
|
|
for widgetRow in ALL_WIDGETS do
|
|
(
|
|
for groupID = 1 to (widgetRow.count-1) do
|
|
( -- 1 to (widgetRow.count-1) as the control widgets are appended to the widget groups (and should always be in the first widget group)
|
|
for widget in widgetRow[groupID] do
|
|
(
|
|
if ((classOf widget) != GroupBoxControl) and ((classOf widget) != dotnetcontrol) then
|
|
(
|
|
--try
|
|
--( -- NOt sure if there are any that refuse to have tooltips... so may have to re-instate try (only for DEBUG, so not too bothered about performance for this one)
|
|
if ( widget.tooltip != "" ) then
|
|
(
|
|
widget.tooltip += ( "\n\nDEBUG WIDGET INFO: " + widget.name )
|
|
)
|
|
else
|
|
(
|
|
widget.tooltip = ( "DEBUG WIDGET INFO: " + widget.name )
|
|
)
|
|
--)
|
|
--catch()
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
fn TraceMessage caller start:true =
|
|
( -- Writes a trace message to the listener when called (text is indented so it's easier to see which function has called the current function)
|
|
local mesg = stringstream ""
|
|
if start then
|
|
(
|
|
if ( TRACE > 1 ) then ( for tab = 1 to ( TRACE - 1 ) do ( format " " to:mesg ) )
|
|
format "%\n" caller to:mesg
|
|
format ( mesg as string )
|
|
|
|
TRACE += 1
|
|
)
|
|
else
|
|
(
|
|
TRACE -= 1
|
|
)
|
|
)
|
|
|
|
-- CONTROL FUNCTIONS --
|
|
fn InitDotNetTrackbarControl ctrl value:100 width:TR_WIRE_BAR_WIDTH height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:0 maxVal:100 intervals:4 vertical:false =
|
|
( -- Set up DOTNET Trackbar ctrl according to passed arguments
|
|
local buttColour = (colorMan.getColor #button) * 255
|
|
|
|
ctrl.autoSize = false
|
|
ctrl.minimum = minVal
|
|
ctrl.maximum = maxVal
|
|
ctrl.value = value
|
|
ctrl.size = dotNetObject "System.Drawing.Size" width height
|
|
ctrl.TickFrequency = (maxVal - minVal) / intervals -- 25
|
|
ctrl.largeChange = (maxVal - minVal) / intervals
|
|
ctrl.TickStyle = ( dotNetClass"System.Windows.Forms.TickStyle").bottomright
|
|
ctrl.enabled = true
|
|
|
|
ctrl.backColor = ( (dotNetClass "system.drawing.color").fromARGB buttColour[1] buttColour[2] buttColour[3] )
|
|
|
|
if vertical then ( ctrl.orientation = (dotNetClass "system.windows.forms.orientation").vertical )
|
|
)
|
|
|
|
fn GetInitialWidgetOffsets =
|
|
( -- Setup the initial widget offsets from their group box position (used when moving groups vertically)
|
|
local allWidgetOffsets = #()
|
|
|
|
for widgetRow in ALL_WIDGETS do
|
|
(
|
|
local widgetRowOffsets = #()
|
|
--for widgetGroup in widgetRow do
|
|
for groupID = 1 to (widgetRow.count-1) do
|
|
(
|
|
local widgetOffsets = #()
|
|
--for widgetId = 1 to widgetGroup.count do
|
|
for widgetId = 1 to widgetRow[groupID].count do
|
|
(
|
|
append widgetOffsets (widgetRow[groupID][widgetID].pos - widgetRow[groupID][1].pos)
|
|
)
|
|
append widgetRowOffsets widgetOffsets
|
|
)
|
|
append allWidgetOffsets widgetRowOffsets
|
|
)
|
|
|
|
allWidgetOffsets
|
|
)
|
|
|
|
fn SkipSEPARATOR ctrl separatorLine previousSelection =
|
|
( -- Skips over DDL lines in the direction of travel, when they're a separatorLine
|
|
-- Passing 3 arguments, since might have different widths of DDL controls with different separators at some point
|
|
if (ctrl.selected == separatorLine) then
|
|
(
|
|
local increment = if (ctrl.selection > previousSelection) then (1) else (-1)
|
|
ctrl.selection = ctrl.selection + increment
|
|
|
|
)
|
|
ctrl.selection
|
|
)
|
|
|
|
-- GENERAL RAG FUNCTIONS --
|
|
-- fn SetupRAGBanks =
|
|
-- ( -- Only called once, so duping to CheckRAGConnection, since the condition is always true there
|
|
-- Enable all the 'Create X widgets' for referenced RAG widget banks if they don't alreday exist (camera test not the best...)
|
|
-- if ( RemoteConnection.IsConnected() ) then
|
|
-- (
|
|
-- if ( ( RemoteConnection.ReadStringWidget "Scene/PostScan/Lod Level" ) == "Couldn't find widget 'Scene/PostScan/Lod Level'" ) then ( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
|
|
-- if ( ( RemoteConnection.ReadFloatWidget "Camera/Free camera/Position Z" ) == 0.0 ) then ( RemoteConnection.WriteBoolWidget "Camera/Create camera widgets" true )
|
|
|
|
-- if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then ( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
|
|
-- if ( ( RemoteConnection.ReadStringWidget "Streaming & Memory/Memory/Memory Usage/Per-Module Info/Master Module Display/Resource Search" ) == "Couldn't find widget 'Streaming & Memory/Memory/Memory Usage/Per-Module Info/Master Module Display/Resource Search'") then
|
|
-- ( RemoteConnection.WriteBoolWidget "Streaming & Memory/Create streaming memory widgets" true )
|
|
|
|
-- if ( RemoteConnection.ReadStringWidget "TimeCycle/Game/Weather and Time Overrides/Override Prev Type" == "Couldn't find widget 'TimeCycle/Game/Weather and Time Overrides/Override Prev Type'") then
|
|
-- ( RemoteConnection.WriteBoolWidget "TimeCycle/Create Timecycle Widgets" true )
|
|
|
|
-- if ( RemoteConnection.ReadStringWidget "Visual Effects/GPU Particles/Debug Render Mode Drop Particles" == "Couldn't find widget 'Visual Effects/GPU Particles/Debug Render Mode Drop Particles'") then
|
|
-- ( RemoteConnection.WriteBoolWidget "Visual Effects/Create Vfx Widgets" true )
|
|
|
|
-- RemoteConnection.SendSyncCommand()
|
|
-- )
|
|
-- )
|
|
-- fn SetUpRAG =
|
|
-- ( -- Only called once, so duping to CheckRAGConnection, since the condition is always true there
|
|
-- if ( chkConnect.checked ) then
|
|
-- (
|
|
-- SetUpRAGBanks() -- Hit all the Create Widget buttons if they exist in RAG
|
|
-- RsTinyRAG.SetRAGPickerWidgets updateRAG:false
|
|
-- RsTinyRAG.SetLightingWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGWireframeWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGLODWidgets()
|
|
-- RsTinyRAG.SetRAGTimeCycleWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGTexViewerWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGBlockWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGMiscModeWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGVisibilityWidgets updateRAG:false
|
|
-- RsTinyRAG.SetOtherRAGWidgets updateRAG:false
|
|
-- RsTinyRAG.SetRAGVisibilityWidgets updateRAG:false
|
|
-- RemoteConnection.SendSyncCommand()
|
|
-- )
|
|
-- )
|
|
fn CheckRAGConnection connectDialog:false =
|
|
( -- Check RAG connection
|
|
-- if (TRACE > 0) then ( TraceMessage "CheckRAGConnection" start:true ) -- Somewhat spammy, so enable only if checking specifically for connection problems (slowness, etc)
|
|
|
|
if connectDialog or (chkCONNECT.text == "CONNECTED") then
|
|
( -- Only runs if a connect was specifically asked for, or it has been connected previously
|
|
-- If it's not already connected, try to connect (again)
|
|
local connectRequired = not ( RemoteConnection.IsConnected() )
|
|
if connectRequired then ( format "Connecting to RAG...\n" ; RemoteConnection.Connect() )
|
|
|
|
if ( RemoteConnection.IsConnected() ) then
|
|
( -- Succesful connection - Setup CONNECT widget
|
|
chkCONNECT.text = "CONNECTED"
|
|
chkCONNECT.checked = true
|
|
if connectRequired or connectDialog then
|
|
(
|
|
if connectRequired then ( format "Success!\n" )
|
|
--SetupRAG() -- Only 1 call of these functions, so...
|
|
-- SetUpRAGBanks() -- Hit all the Create Widget buttons if they exist in RAG
|
|
|
|
-- Duped over from SetUpRAGBanks()
|
|
if ( ( RemoteConnection.ReadStringWidget "Scene/PostScan/Lod Level" ) == "Couldn't find widget 'Scene/PostScan/Lod Level'" ) then
|
|
( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
if ( ( RemoteConnection.ReadFloatWidget "Camera/Free camera/Position Z" ) == 0.0 ) then
|
|
( RemoteConnection.WriteBoolWidget "Camera/Create camera widgets" true )
|
|
if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then
|
|
( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
if ( ( RemoteConnection.ReadStringWidget "Streaming & Memory/Memory/Memory Usage/Per-Module Info/Master Module Display/Resource Search" ) == "Couldn't find widget 'Streaming & Memory/Memory/Memory Usage/Per-Module Info/Master Module Display/Resource Search'") then
|
|
( RemoteConnection.WriteBoolWidget "Streaming & Memory/Create streaming memory widgets" true )
|
|
if ( RemoteConnection.ReadStringWidget "TimeCycle/Game/Weather and Time Overrides/Override Prev Type" == "Couldn't find widget 'TimeCycle/Game/Weather and Time Overrides/Override Prev Type'") then
|
|
( RemoteConnection.WriteBoolWidget "TimeCycle/Create Timecycle Widgets" true )
|
|
if ( RemoteConnection.ReadStringWidget "Visual Effects/GPU Particles/Debug Render Mode Drop Particles" == "Couldn't find widget 'Visual Effects/GPU Particles/Debug Render Mode Drop Particles'") then
|
|
( RemoteConnection.WriteBoolWidget "Visual Effects/Create Vfx Widgets" true )
|
|
RemoteConnection.SendSyncCommand()
|
|
-- Partly Duped over from SetupRAG()
|
|
RsTinyRAG.SetRAGPickerWidgets updateRAG:false
|
|
RsTinyRAG.SetLightingWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGWireframeWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGLODWidgets()
|
|
RsTinyRAG.SetRAGTimeCycleWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGTexViewerWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGBlockWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGMiscModeWidgets updateRAG:false
|
|
RsTinyRAG.SetRAGVisibilityWidgets updateRAG:false
|
|
RsTinyRAG.SetOtherRAGWidgets updateRAG:false
|
|
|
|
RemoteConnection.SendSyncCommand()
|
|
)
|
|
)
|
|
else
|
|
( -- Failed to connect - update CONNECT widget, and dump to a messageBox
|
|
if connectRequired then ( format "FAILED TO CONNECT!\n" )
|
|
if ( chkCONNECT.checked ) then
|
|
(
|
|
local message = "Connection to RAG lost.\nCheck game and RAG are running."
|
|
messageBox message title:"Connection Lost"
|
|
)
|
|
chkCONNECT.text = "CONNECT TO RAG"
|
|
chkCONNECT.checked = false
|
|
)
|
|
)
|
|
|
|
-- if (TRACE > 0) then ( TraceMessage "CheckRAGConnection" start:false )
|
|
)
|
|
fn DrawDebugInfo =
|
|
(
|
|
chkDrawListToggle.checked or chkLODInfo.checked
|
|
)
|
|
|
|
fn StringToPosition posString =
|
|
( -- Convert a string to a position (either point2, point3, with optional brackets and either space or comma separators)
|
|
-- Returns [0.0,0.0,0.0] if anything goes wrong with the x or y coords
|
|
local posArray = filterString posString "[(, )]"
|
|
local newPos = [0.0, 0.0, 0.0]
|
|
if (posArray.count > 1) then
|
|
(
|
|
local newX = posArray[1] as float
|
|
local newY = posArray[2] as float
|
|
if (newX != undefined) and (newY != undefined) then
|
|
(
|
|
newPos = [newX, newY, 20.0]
|
|
if (posArray.count > 2) then
|
|
(
|
|
local newZ = posArray[3] as float
|
|
if (newZ != undefined) then ( newPos.z = newZ )
|
|
)
|
|
)
|
|
)
|
|
newPos
|
|
)
|
|
fn PositionToString pos =
|
|
( -- Shortens the camera string to integer values from float with 4 decimal places
|
|
local posString = stringstream ""
|
|
format "%,%,%" ((pos.x + 0.5) as integer) ((pos.y + 0.5) as integer) ((pos.z + 0.5) as integer) to:posString
|
|
posString as string
|
|
)
|
|
|
|
fn UpdateRAGPositionHelper helperPos cameraHelper:true coordChange:false =
|
|
( -- Create CAMERA or OBJECT position helpers in Max
|
|
local previousActiveLayer = LayerManager.current
|
|
local objectLayer = LayerManager.getLayerFromName "SA_OBJECT_ANALYSIS"
|
|
if ( objectLayer == undefined ) then ( objectLayer = LayerManager.newLayerFromName "SA_OBJECT_ANALYSIS" )
|
|
objectLayer.current = true
|
|
|
|
-- Setup object properties for either Object or Camera helper
|
|
local objectName = "RAG_OBJECT_POSITION"
|
|
local wireColour = OBJECT_HELPER_COLOUR -- color 70 250 40
|
|
local showWidget = chkObjectPosHelper
|
|
if cameraHelper then
|
|
(
|
|
objectName = "RAG_CAMERA_POSITION"
|
|
wireColour = CAMERA_HELPER_COLOUR -- color 60 190 255
|
|
showWidget = chkCamPosHelper
|
|
)
|
|
|
|
-- Create a new helper if it doesn't already exist
|
|
RAGhelper = getNodeByName objectName
|
|
if (RAGhelper == undefined) then
|
|
(
|
|
RAGhelper = point name:objectName cross:on size:30 constantscreensize:on wirecolor:wireColour showFrozenInGray:off
|
|
)
|
|
|
|
RAGhelper.position = [helperPos.x, helperPos.y, helperPos.z]
|
|
if (showWidget.checked) then
|
|
(
|
|
unhide RAGhelper doLayer:true
|
|
if coordChange then
|
|
(
|
|
txtWarpCoords.text = PositionToString helperPos
|
|
ddlWarpSource.selection = 2
|
|
RsTinyRAG.SetRAGBlockWidgets()
|
|
)
|
|
)
|
|
else
|
|
(
|
|
hide RAGhelper
|
|
)
|
|
|
|
-- Restore previous active layer
|
|
previousActiveLayer.current = true
|
|
)
|
|
|
|
|
|
|
|
-- PICKER FUNCTIONS --
|
|
-- PICKER_WIDGETS = #( gbxPickerGroupBox, chkPickerToggle, txtPickerFilter, chkPickerIsolate, chkPickerHide, chkPickerAddToSelection, chkIMAPBounds, ddlPickerHighlight, btnPickerScope )
|
|
fn GetRAGObjectPos required:false coordChange:false =
|
|
( -- Fudgily read the position of an uncontrollably random object from the current RAG Picker selection (annoyingly can't seem to switch mode on then off in a single pass)
|
|
local newPos = [0.0,0.0,0.0]
|
|
if chkObjectPosHelper.checked or required then
|
|
(
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Picker/Transform Manipulation Enabled" true
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
RemoteConnection.WriteBoolWidget "Picker/Restore Original Transform" true
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
newPos = [(RemoteConnection.ReadFloatWidget "Picker/World Offset X"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Y"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Z")]
|
|
if (newPos != [0.0,0.0,0.0]) then ( UpdateRAGPositionHelper newPos cameraHelper:false coordChange:coordChange)
|
|
|
|
--RemoteConnection.WriteBoolWidget "Picker/Transform Manipulation Enabled" false
|
|
)
|
|
)
|
|
else
|
|
(
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Picker/Transform Manipulation Enabled" false
|
|
)
|
|
)
|
|
-- format "%\n" newPos
|
|
newPos
|
|
)
|
|
fn SetRAGPickerWidgets updateRAG:true =
|
|
(
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGPickerWidgets" start:true )
|
|
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if updateRAG then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Hide UI" false
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Enable UI" true
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Enable picking" chkPickerToggle.checked
|
|
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Display Physical Bounds For Node Of Selected Entity" chkIMAPBounds.checked
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Display Streaming Bounds For Node Of Selected Entity" chkIMAPBounds.checked
|
|
-- RemoteConnection.WriteBoolWidget "Picker/Picker Options/Display bounds of hover entity" chkIMAPBounds.checked
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Display bounds of entities in list" ( ddlPickerHighlight.selected == "All" )
|
|
|
|
local isolateHideMode = if (chkPickerHide.checked) then ( "Hide " ) else ( "Isolate " )
|
|
isolateHideMode += if ( ddlPickerHighlight.selected == "All" ) then ( "Entities in List" ) else ( "Selected Entity" )
|
|
RemoteConnection.WriteStringWidget "Picker/Picker Options/Show//hide mode" isolateHideMode
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Show//hide enabled" ( chkPickerIsolate.checked or chkPickerHide.checked )
|
|
)
|
|
else
|
|
(
|
|
chkPickerToggle.checked = RemoteConnection.ReadBoolWidget "Picker/Picker Options/Enable picking"
|
|
chkIMAPBounds.checked = RemoteConnection.ReadBoolWidget "Picker/Picker Options/Display Physical Bounds For Node Of Selected Entity"
|
|
|
|
local isolateHideMode = RemoteConnection.ReadStringWidget "Picker/Picker Options/Show//hide mode"
|
|
local modeActive = (RemoteConnection.ReadBoolWidget "Picker/Picker Options/Show//hide enabled")
|
|
chkPickerHide.checked = modeActive and (matchPattern isolateHideMode pattern:"Hide*")
|
|
chkPickerIsolate.checked = modeActive and (matchPattern isolateHideMode pattern:"Isolate*")
|
|
)
|
|
-- Moved out of updateRAG condition, since it's always false if it's not visible in RAG (which defaults to Add)
|
|
-- chkPickerAddToSelection.checked = false
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/New search clears list" (not chkPickerAddToSelection.checked)
|
|
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Display name of hover entity" true
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGPickerWidgets" start:false )
|
|
)
|
|
fn SelectByName objectNames =
|
|
( -- Multiple select by name in RAG/Picker (very slow if several names passed in the argument string, since have to synch after each)
|
|
if (not chkPickerToggle.checked) then
|
|
(
|
|
chkPickerToggle.checked = true
|
|
SetRAGPickerWidgets()
|
|
)
|
|
|
|
RemoteConnection.WriteStringWidget "Picker/Picker Options/Picker Type" "Intersecting Entities"
|
|
RemoteConnection.WriteBoolWidget "Picker/Transform Manipulation Enabled" true
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/Spherical Search" ( ddlPickerScope.selected == "Sphere" )
|
|
RemoteConnection.WriteIntWidget "Picker/Picker Options/Intersecting Entities/Spherical Search radius" 4500
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/New search clears list" (not chkPickerAddToSelection.checked)
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
local averagePos = [0,0,0]
|
|
|
|
-- First object
|
|
RemoteConnection.WriteStringWidget "Picker/Picker Options/Intersecting Entities/Search filter" objectNames[1]
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/Refresh search" true
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
local newPos = [(RemoteConnection.ReadFloatWidget "Picker/World Offset X"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Y"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Z")]
|
|
averagePos += newPos
|
|
|
|
-- Remaining objects
|
|
--for objectName in objectNames do
|
|
if (objectNames.count > 1) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/New search clears list" false
|
|
|
|
for objectID = 2 to objectNames.count do
|
|
(
|
|
RemoteConnection.WriteStringWidget "Picker/Picker Options/Intersecting Entities/Search filter" objectNames[objectID]
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/Refresh search" true
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
local newPos = [(RemoteConnection.ReadFloatWidget "Picker/World Offset X"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Y"), (RemoteConnection.ReadFloatWidget "Picker/World Offset Z")]
|
|
averagePos += newPos
|
|
|
|
--RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/New search clears list" false
|
|
--RemoteConnection.SendSyncCommand()
|
|
)
|
|
)
|
|
if (objectNames.count > 0) then ( averagePos /= objectNames.count )
|
|
|
|
if ( averagePos != [0,0,0] ) then
|
|
(
|
|
--txtBlockID.text = PositionToString averagePos
|
|
UpdateRAGPositionHelper averagePos cameraHelper:false
|
|
)
|
|
|
|
RemoteConnection.WriteBoolWidget "Picker/Picker Options/Intersecting Entities/New search clears list" (not chkPickerAddToSelection.checked)
|
|
RemoteConnection.WriteStringWidget "Picker/Picker Options/Picker Type" "Entity Render"
|
|
RemoteConnection.WriteBoolWidget "Picker/Transform Manipulation Enabled" false
|
|
)
|
|
|
|
|
|
-- BLOCK/WARP FUNCTIONS --
|
|
-- BLOCK_WIDGETS = #( gbxBlockGroupBox, chkIsolateBlock, ddlWarpToLocation, txtBlockID, chkCamPosHelper, btnWarpToSelection, chkAutoWarp, chkWarpStreamFromCamera, chkFindObj, btnGetCameraPosition )
|
|
fn ExpandBounds bBox min:[0,0,0] max:[0,0,0] =
|
|
( -- Expand one bounding box to cover another bounding box
|
|
bBox.min.x = amin bBox.min.x min.x
|
|
bBox.min.y = amin bBox.min.y min.y
|
|
bBox.min.z = amin bBox.min.z min.z
|
|
|
|
bBox.max.x = amax bBox.max.x max.x
|
|
bBox.max.y = amax bBox.max.y max.y
|
|
bBox.max.z = amax bBox.max.z max.z
|
|
bBox
|
|
)
|
|
fn GetSelectionBounds objects:selection =
|
|
( -- Get the bounding box that covers the selection (currently only Max selection, needs SceneAnalyser integration)
|
|
local bBox = datapair min:[0,0,0] max:[0,0,0]
|
|
|
|
if (objects.count > 0) then
|
|
(
|
|
if ((classOf objects) == ObjectSet) then
|
|
(
|
|
bBox = datapair min:(objects[1].min) max:(objects[1].max)
|
|
for obj in objects do ( ExpandBounds bBox min:obj.min max:obj.max )
|
|
)
|
|
)
|
|
bBox
|
|
)
|
|
fn GetSelectionCoords objects:selection =
|
|
( -- Gets centre point of the current selection (currently only Max selection, needs SceneAnalyser integration)
|
|
local coords = [0,0,0]
|
|
|
|
if (objects.count > 0 ) then
|
|
(
|
|
local bBox = GetSelectionBounds objects:objects
|
|
coords = (bBox.min + bBox.max) * 0.5
|
|
)
|
|
coords
|
|
)
|
|
fn GetOrientation camPos focusPos =
|
|
( -- Calculate rotation point3 from camPos facing towards focusPos
|
|
local XYVector = [focusPos.x,focusPos.y,0.0] - [camPos.x,camPos.y,0.0]
|
|
local YZVector = [0.0,(length XYVector),(focusPos.z - camPos.z)]
|
|
|
|
local newOrient = [0.0,0.0,0.0]
|
|
|
|
newOrient.z = acos ( dot (normalize XYVector) [0.0,1.0,0.0] )
|
|
newOrient.z = if (XYVector.x < 0.0) then (newOrient.z) else (0.0 - newOrient.z)
|
|
newOrient.x = acos( dot (normalize YZVector) [0,1.0,0])
|
|
newOrient.x = if (YZVector.z > 0.0) then (newOrient.x) else (0.0 - newOrient.x)
|
|
|
|
newOrient
|
|
)
|
|
fn GetViewPortCoords =
|
|
(
|
|
local coordSysTM = Inverse ( getViewTM() )
|
|
if (coordSysTM.row3 == [0,0,1]) then
|
|
(
|
|
coordSysTM.row3 = [0.0,-0.03,0.9995]
|
|
coordSysTM.row4.z = amax 50.0 coordSysTM.row4.z
|
|
)
|
|
|
|
local camRot = GetOrientation coordSysTM.row3 [0.0,0.0,0.0]
|
|
|
|
--RsTinyRAG.SetCameraCoords camPos:coordSysTM.row4 camRot:camRot
|
|
local result = dataPair camPos:coordSysTM.row4 camRot:camRot
|
|
result
|
|
)
|
|
fn GetCameraOrientation =
|
|
(
|
|
local camRot = point3 0.0 0.0 0.0
|
|
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if ( ( RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/WorldMtx d X" ) == 0.0 ) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Camera/Create camera widgets" true
|
|
RemoteConnection.SendSyncCommand()
|
|
)
|
|
|
|
if ( (RemoteConnection.ReadStringWidget "Camera/Debug director/Active mode") == "Free" ) then
|
|
(
|
|
camRot.x = RemoteConnection.ReadFloatWidget "Camera/Free camera/Orientation X"
|
|
camRot.y = RemoteConnection.ReadFloatWidget "Camera/Free camera/Orientation Y"
|
|
camRot.z = RemoteConnection.ReadFloatWidget "Camera/Free camera/Orientation Z"
|
|
)
|
|
)
|
|
camRot
|
|
)
|
|
fn GetCameraCoords coordChange:false =
|
|
( -- Read the free camera position (2 possible RAG banks in case first one fails)
|
|
local camPos = point3 0.0 0.0 0.0
|
|
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if ( ( RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/WorldMtx d X" ) == 0.0 ) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Camera/Create camera widgets" true
|
|
RemoteConnection.SendSyncCommand()
|
|
)
|
|
|
|
if ( (RemoteConnection.ReadStringWidget "Camera/Debug director/Active mode") == "Free" ) then
|
|
(
|
|
camPos.x = RemoteConnection.ReadFloatWidget "Camera/Free camera/Position X"
|
|
camPos.y = RemoteConnection.ReadFloatWidget "Camera/Free camera/Position Y"
|
|
camPos.z = RemoteConnection.ReadFloatWidget "Camera/Free camera/Position Z"
|
|
)
|
|
else
|
|
(
|
|
camPos.x = RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/CamMtx d X"
|
|
camPos.y = RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/CamMtx d Y"
|
|
camPos.z = RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/CamMtx d Z"
|
|
)
|
|
|
|
if (camPos != [0.0,0.0,0.0]) then ( UpdateRAGPositionHelper camPos cameraHelper:true coordChange:coordChange )
|
|
)
|
|
camPos
|
|
)
|
|
fn SetCameraCoords camPos:[0,0,0] camRot:[0,0,0] =
|
|
( -- Change camera position or rotation (either optional)
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if ( ( RemoteConnection.ReadFloatWidget "Camera/Renderer/CamMtx/WorldMtx d X" ) == 0.0 ) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Camera/Create camera widgets" true
|
|
RemoteConnection.SendSyncCommand()
|
|
)
|
|
|
|
local camString = stringStream ""
|
|
|
|
if (camPos == [0,0,0]) then ( camPos = GetCameraCoords() )
|
|
format "% % %" camPos.x camPos.y camPos.z to:camString
|
|
if (camRot != [0,0,0]) then
|
|
(
|
|
--camRot = GetCameraOrientation()
|
|
format " % % %" camRot.x camRot.y camRot.z to:camString
|
|
)
|
|
|
|
|
|
--format "SetCameraCoords -> Debug/Warp Camera x y z p r y = %\n" (camString as string)
|
|
RemoteConnection.WriteStringWidget "Debug/Warp Player x y z h vx vy vz" (camString as String)
|
|
--RemoteConnection.WriteStringWidget "Debug/Warp Camera x y z p r y" (camString as string) -- This way better than directly changing the Free camera widget values individually
|
|
--RemoteConnection.WriteBoolWidget "Debug/Warp camera now" true
|
|
|
|
RemoteConnection.SendSyncCommand()
|
|
)
|
|
)
|
|
|
|
fn WarpToSelection bBox minLODDistance:300000 =
|
|
( -- Get vaguely relevant position and rotation from selected bounding box, calls GetOrientation and SetCameraCoords
|
|
if (bBox != undefined) then
|
|
(
|
|
local selectionCentre = (bBox.min + bBox.max) * 0.5
|
|
|
|
-- First face selection centre to get the correct rotation from initial position, then warp
|
|
local camPos = GetCameraCoords()
|
|
local camRot = GetOrientation camPos selectionCentre
|
|
camRot.x = 5.0
|
|
|
|
local totalDistance = distance camPos selectionCentre
|
|
local objectRadius = (distance bBox.max bBox.min) * 0.65
|
|
if ( (objectRadius == 0.0) or ((minLODDistance > 0) and ((minLODDIstance * 0.9) < objectRadius)) ) then ( objectRadius = minLODDIstance * 0.9 )
|
|
local ratio = objectRadius / totalDistance
|
|
|
|
-- Try to frame
|
|
local warpPos = selectionCentre
|
|
if (chkFindObjects.checked) then
|
|
(
|
|
warpPos -= ((selectionCentre - camPos) * ratio)
|
|
warpPos.z = selectionCentre.z + abs (selectionCentre.z - warpPos.z)
|
|
camRot = GetOrientation warpPos selectionCentre
|
|
)
|
|
|
|
-- Override camera rotation if there's an active RAG_OBJECT_POSITION
|
|
if (chkObjectPosHelper.checked) then
|
|
(
|
|
local helperPos = getNodeByName "RAG_OBJECT_POSITION"
|
|
if (helperPos != undefined) then ( camRot = GetOrientation warpPos helperPos.pos )
|
|
)
|
|
SetCameraCoords camPos:warpPos camRot:camRot
|
|
)
|
|
)
|
|
fn LookAtPoint coords =
|
|
( -- Turn RAG free camera to point towards coords, calls GetOrientation and SetCameraCoords
|
|
local newOrient = [0,0,0]
|
|
|
|
local cameraPos = GetCameraCoords()
|
|
newOrient = GetOrientation cameraPos coords
|
|
SetCameraCoords camPos:cameraPos camRot:newOrient
|
|
|
|
newOrient
|
|
)
|
|
|
|
fn SetRAGBlockWidgets updateRAG:true warpCamera:true =
|
|
(
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGBlockWidgets" start:true )
|
|
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if updateRAG then
|
|
(
|
|
chkDebugCamera.checked = (chkDebugCamera.checked or chkWarpCamera.checked or chkFindObjects.checked) -- Force free cam on if WARP or FIND is checked
|
|
|
|
local activeCamera = if chkDebugCamera.checked then ( "Free" ) else ( "None" )
|
|
RemoteConnection.WriteBoolWidget "Input/Pad/Debug pad" chkDebugCamera.checked -- Turn on the debug pad regardless
|
|
RemoteConnection.WriteStringWidget "Camera/Debug director/Active mode" activeCamera -- switch to debug cam
|
|
|
|
local blockText = toLower txtBlockID.text
|
|
if (txtBlockID.text != "") then ( RemoteConnection.WriteStringWidget "Blocks/Block" blockText )
|
|
local validBlock = ( blockText == (RemoteConnection.ReadStringWidget "Blocks/Block") )
|
|
|
|
RemoteConnection.WriteBoolWidget "Blocks/Isolate Block" ( chkIsolateBlock.checked and validBlock )
|
|
|
|
local camPos = GetCameraCoords()
|
|
|
|
local newPos = case of
|
|
(
|
|
(not chkDebugCamera.checked) : ( camPos )
|
|
(ddlWarpSource.selected == "BlockID"):( if validBlock then (StringToPosition (RemoteConnection.ReadStringWidget "Blocks/Block Coordinates")) else ([0,0,0]) )
|
|
(ddlWarpSource.selected == "Coords"):( StringToPosition txtWarpCoords.text )
|
|
(ddlWarpSource.selected == "Selection"):( GetSelectionCoords() )
|
|
(ddlWarpSource.selected == "Picker"):( GetRAGObjectPos required:true )
|
|
(ddlWarpSource.selected == "Viewport"):( (GetViewPortCoords()) )
|
|
default:( [0,0,0] )
|
|
)
|
|
-- format "Camera = % | camPos = % | newPos = %\n" activeCamera camPos newPos
|
|
-- if (newPos != undefined) then ( txtWarpCoords.text = PositionToString newPos )
|
|
|
|
if (newPos != [0,0,0]) then
|
|
(
|
|
if (ddlWarpSource.selected == "Viewport") then
|
|
(
|
|
if warpCamera then
|
|
(
|
|
case of
|
|
(
|
|
(chkWarpCamera.checked):( SetCameraCoords camPos:newPos.camPos camRot:newPos.camRot )
|
|
(chkFindObjects.checked):( LookAtPoint newPos.camPos )
|
|
default:()
|
|
)
|
|
)
|
|
UpdateRAGPositionHelper newPos.camPos cameraHelper:true
|
|
)
|
|
else
|
|
(
|
|
if warpCamera then
|
|
(
|
|
case of
|
|
(
|
|
(chkWarpCamera.checked):( SetCameraCoords camPos:newPos )
|
|
(chkFindObjects.checked):( LookAtPoint newPos )
|
|
default:()
|
|
)
|
|
)
|
|
UpdateRAGPositionHelper newPos cameraHelper:true
|
|
)
|
|
)
|
|
|
|
RemoteConnection.WriteBoolWidget "Camera/Free camera/Override streaming focus" chkStreamFromCamera.checked
|
|
|
|
if (ddlWireMode.selected == "BLOCK ID") then ( RsTinyRAG.SetRAGWireframeMode() )
|
|
)
|
|
else
|
|
(
|
|
chkDebugCamera.checked = ( (RemoteConnection.ReadStringWidget "Camera/Debug director/Active mode") == "Free" )
|
|
|
|
txtBlockID.text = ( RemoteConnection.ReadStringWidget "Blocks/Block" )
|
|
chkIsolateBlock.checked = ( RemoteConnection.ReadBoolWidget "Blocks/Isolate Block" )
|
|
if chkIsolateBlock.checked then
|
|
(
|
|
local blockText = ( RemoteConnection.ReadStringWidget "Blocks/Block" )
|
|
if (blockText == "") then ( blockText = ( RemoteConnection.ReadStringWidget "Blocks/Block Name" ) )
|
|
if (blockText != "") then ( txtBlockID.text = blockText )
|
|
)
|
|
|
|
chkStreamFromCamera.checked = ( RemoteConnection.ReadBoolWidget "Camera/Free camera/Override streaming focus" )
|
|
)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGBlockWidgets" start:false )
|
|
)
|
|
|
|
|
|
-- LIGHTING FUNCTIONS --
|
|
|
|
fn SetLightingWidgets updateRAG:true checkLocalStates:false =
|
|
(
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeOpacity" start:true )
|
|
|
|
CheckRAGConnection()
|
|
if ( chkCONNECT.checked) then
|
|
(
|
|
-- Show Light Costs (+ new wiremode option) - "_LiveEdit_/Lights Edit/Light Cost/Show light cost" +
|
|
-- "_LiveEdit_/Lights Edit/Light Cost/Light cost opacity",
|
|
-- "_LiveEdit_/Lights Edit/Light Cost/Light cost min",
|
|
-- "_LiveEdit_/Lights Edit/Light Cost/Light cost max"
|
|
-- Entities - "Lighting/Misc/Light entities/Show debug"
|
|
-- Budget - "Lighting/Budget/Draw Budget", "Lighting/Budget/Budget Type", "Lighting/Budget/Light Settings/Show Standard Lights Info", "Lighting/Budget/Light Settings/Show Misc Lights Info"
|
|
-- Timers - "Lighting/Budget/Enable GPU budget timers"
|
|
-- Toggles -
|
|
-- Global - "Lighting/Budget/Light Settings/Enable global directional light"
|
|
-- Local - "Lighting/Budget/Light Settings/Enable local lights" (+ "Lighting/Budget/Light Settings/Colour Lights")
|
|
-- Point - "Lighting/Budget/Light Settings/Disable local point-type lights"
|
|
-- Spot - "Lighting/Budget/Light Settings/Disable local spot-type lights"
|
|
-- Capsule - "Lighting/Budget/Light Settings/Disable local capsule-type lights"
|
|
-- LOD - "Lighting/Budget/Light Settings/Enable local LOD lights" (+ "Lighting/Budget/Light Settings/LOD lights force red color")
|
|
-- DISTANT - "Lighting/LOD / Distant Lights/Enable distant LOD lights" (+ "Lighting/LOD / Distant Lights/Distant lights/Debug render")
|
|
-- Debug Info - "Lighting/LOD / Distant Lights/Debug/Show LOD light types"
|
|
|
|
local anyActiveLocalLight = chkPointLightToggle.checked or chkSpotLightToggle.checked or chkCapsuleLightToggle.checked or chkOtherLightToggle.checked
|
|
if checkLocalStates then
|
|
(
|
|
chkLocalLightToggle.checked = anyActiveLocalLight
|
|
)
|
|
if (not chkLocalLightToggle.checked) then
|
|
(
|
|
chkPointLightToggle.checked = chkSpotLightToggle.checked = chkCapsuleLightToggle.checked = chkOtherLightToggle.checked = false
|
|
)
|
|
else
|
|
(
|
|
if (not anyActiveLocalLight) then
|
|
(
|
|
chkPointLightToggle.checked = chkSpotLightToggle.checked = chkCapsuleLightToggle.checked = chkOtherLightToggle.checked = true
|
|
)
|
|
)
|
|
|
|
if updateRAG then
|
|
(
|
|
-- Info Widgets
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Draw Budget" chkShowBudget.checked
|
|
if chkShowBudget.checked then
|
|
(
|
|
RemoteConnection.WriteStringWidget "Renderer/Budget/Budget Type" "Lights"
|
|
)
|
|
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Budget Type" chkShowBudget.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Show Standard Lights Info" chkShowBudget.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Show Misc Lights Info" chkShowBudget.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Misc/Light entities/Show debug" chkShowEntities.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/LOD // Distant Lights/Debug/Show LOD light types" chkLightInfo.checked
|
|
--RemoteConnection.WriteBoolWidget "Debug/Rendering/Debug Text" ( chkLODInfo.checked or chkLightInfo.checked )
|
|
|
|
-- Toggles
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Enable global directional light" chkGlobalLightToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Enable local lights" chkLocalLightToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Enable local LOD lights" chkLODLightToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/LOD // Distant Lights/Enable distant LOD lights" chkDistantLightToggle.checked
|
|
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local point-type lights" ( not chkPointLightToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local spot-type lights" ( not chkSpotLightToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local capsule-type lights" ( not chkCapsuleLightToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local other light types" ( not chkOtherLightToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local AO volume-type lights" ( not chkOtherLightToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Disable local volumetric lights" ( not chkOtherLightToggle.checked )
|
|
|
|
-- Light Tint / Highlight
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/Colour Lights" chkTintLocal.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/Budget/Light Settings/LOD lights force red color" chkTintLOD.checked
|
|
RemoteConnection.WriteBoolWidget "Lighting/LOD // Distant Lights/Distant lights/Debug render" chkHighlightDistant.checked
|
|
)
|
|
else
|
|
(
|
|
-- Info Widgets
|
|
chkShowBudget.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Draw Budget" )
|
|
chkShowEntities.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Misc/Light entities/Show debug" )
|
|
chkLightInfo.checked = ( RemoteConnection.ReadBoolWidget "Lighting/LOD // Distant Lights/Debug/Show LOD light types" )
|
|
|
|
-- Toggles
|
|
chkGlobalLightToggle.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Enable global directional light" )
|
|
chkLocalLightToggle.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Enable local lights" )
|
|
chkLODLightToggle.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Enable local LOD lights" )
|
|
chkDistantLightToggle.checked = ( RemoteConnection.ReadBoolWidget "Lighting/LOD // Distant Lights/Enable distant LOD lights" )
|
|
|
|
chkPointLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local point-type lights") )
|
|
chkSpotLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local spot-type lights") )
|
|
chkCapsuleLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local capsule-type lights") )
|
|
chkOtherLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local other light types") )
|
|
chkOtherLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local AO volume-type lights") )
|
|
chkOtherLightToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Disable local volumetric lights") )
|
|
|
|
-- Light Tint / Highlight
|
|
chkTintLocal.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/Colour Lights" )
|
|
chkTintLOD.checked = ( RemoteConnection.ReadBoolWidget "Lighting/Budget/Light Settings/LOD lights force red color" )
|
|
chkHighlightDistant.checked = ( RemoteConnection.ReadBoolWidget "Lighting/LOD // Distant Lights/Distant lights/Debug render" )
|
|
)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGBlockWidgets" start:false )
|
|
)
|
|
|
|
-- WIREFRAME FUNCTIONS --
|
|
-- WIREFRAME_WIDGETS = #( gbxWireframeGroupBox, chkWireToggle, ddlWireMode, ddlWireOption, txtWireframeFilterName, chkWireMatchExact,
|
|
-- chkWireLabel, trkWireOpacity, chkHiddenLabel, trkWireHidden, chkFillLabel, trkFillOpacity, chkOpacityLabel, trkOpacityMultiplier, trkDiffuseOverride )
|
|
-- WIREOPTION_TXD_WIDGETS = #( gbxWireOptionsGroupBox, chkTXD1Colour, chkTXD2Colour, chkTXD3Colour, chkTXD4Colour, txtTXD1Name, txtTXD2Name, txtTXD3Name, txtTXD4Name )
|
|
fn GetAlphaValue val =
|
|
(
|
|
-- Options filed in the Bin of History
|
|
--local result = (0.1*(val as float)^2) ^ 2
|
|
--local result = (val as float) ^ 3
|
|
-- local result = (1 - (cos (0.1*val))) ^ 2
|
|
|
|
-- Vaguely OK curve for no good reason, other than not-awful mid-range:
|
|
local result = (0.2 * val) ^ 2.5
|
|
result
|
|
)
|
|
fn TrackbarValueToAlpha ctrl =
|
|
(
|
|
local rangeScale = 255.0 / (GetAlphaValue ctrl.maximum)
|
|
local rangeOffset = 1 - (GetAlphaValue ctrl.minimum)
|
|
local result = amax 0 ( amin 255 (rangeOffset + (GetAlphaValue ctrl.value) * rangeScale) )
|
|
result
|
|
)
|
|
|
|
|
|
fn ShowOptionWidgets =
|
|
( -- Show / Hide relevant options for current wireframe mode (TXD Names if no relevant options)
|
|
if (TRACE > 0) then ( TraceMessage ShowOptionWidgets start:true )
|
|
|
|
PREVIOUS_WIREMODE = SkipSEPARATOR ddlWireMode SEPARATOR PREVIOUS_WIREMODE
|
|
|
|
local optionsEnabled = true
|
|
local wireOptionMode = wireModes[ddlWireMode.selection].optionMode
|
|
if (wireOptionMode == 0) then
|
|
(
|
|
wireOptionMode = 1
|
|
-- optionsEnabled = false
|
|
)
|
|
|
|
gbxWireOptionsGroupBox.text = wireModes[ddlWireMode.selection].groupLabel
|
|
|
|
local groupPos = WIREOPTION_ALL_WIDGETS[1].pos
|
|
for widgetID = 2 to WIREOPTION_ALL_WIDGETS.count do
|
|
(
|
|
local widget = WIREOPTION_ALL_WIDGETS[widgetID]
|
|
|
|
local inGroup = findItem WIREOPTION_WIDGETS[wireOptionMode] widget
|
|
widget.visible = (inGroup > 0) -- and optionsEnabled
|
|
widget.enabled = optionsEnabled
|
|
widget.pos.x = groupPos.x + initialWidgetOffsets[wireOptionRow][2][widgetID].x + ((if widget.visible then 0 else 1) * 2000)
|
|
)
|
|
|
|
txtTextureMinSize.text = (2 ^ trkTextureMinSize.value) as String
|
|
txtTextureDensityMin.text = trkTextureDensityMin.value as String
|
|
txtTextureDensityMax.text = trkTextureDensityMax.value as String
|
|
|
|
if (TRACE > 0) then ( TraceMessage ShowOptionWidgets start:false )
|
|
)
|
|
|
|
fn SetRAGWireframeOpacity updateRAG:true =
|
|
( -- Set up Wireframe Opacity values from the 4 trackbars (taking whether in Overdraw mode into account)
|
|
-- Change button tooltips to show slider values ()
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeOpacity" start:true )
|
|
|
|
CheckRAGConnection()
|
|
if ( chkCONNECT.checked) then
|
|
(
|
|
if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then ( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
|
|
if updateRAG then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Draw" ( chkWireToggle.checked and (not chkLightCosts.checked) ) -- Legacy V toggle
|
|
RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Enabled" ( chkWireToggle.checked and (not chkLightCosts.checked) )
|
|
)
|
|
else
|
|
(
|
|
-- If we suddenly want to restore Opacity values from RAG on Dialog open... restore these 2, add add the missing 2... !!!
|
|
--trkOpacityMultiplier.value = (RemoteConnection.ReadFloatWidget "Renderer/Wireframe/Rendering/Opacity") * 100.0
|
|
--trkWireOpacity.value = (RemoteConnection.ReadFloatWidget "Renderer/Wireframe/Rendering/Wire Opacity") * 100.0
|
|
chkWireToggle.checked = (RemoteConnection.ReadBoolWidget "Renderer/Wireframe/Enabled")
|
|
)
|
|
|
|
RemoteConnection.WriteBoolWidget "_LiveEdit_/Lights Edit/Light Cost/Show light cost" chkLightCosts.checked
|
|
|
|
local opacityMult = if (ddlWireMode.selected == "Tex Density") then ( 1.0 ) else ( amax ((0.0 + trkOpacityMultiplier.value) / trkOpacityMultiplier.maximum) (if chkOpacityLabel.checked then 0 else 1) )
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Opacity" opacityMult
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Wire Opacity" ( (0.0 + trkWireOpacity.value) / trkWireOpacity.maximum * (if chkWireLabel.checked then 1 else 0) )
|
|
|
|
-- Overdraw Mode specific conditions... RAG has it's own Overdraw Opacity slider, which conflicts with the other sliders
|
|
if ( ddlWireMode.selected == "Overdraw" ) then
|
|
(
|
|
--local maxOverdraw = trkWireHidden.value as integer
|
|
--chkHiddenLabel.text = maxOverdraw as string
|
|
|
|
RemoteConnection.WriteFloatWidget "Renderer/Overdraw/Overdraw Opacity" ( ((0.0 + trkOverdrawOpacity.value) / trkOverdrawOpacity.maximum) * (if chkOverdraw.checked then 1 else 0) )
|
|
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Fill Opacity" 0.0 -- These 2 are the conflicting widgets, which need set to 0.0 for bad things not to happen
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Invisible Opacity" 0.0
|
|
)
|
|
else
|
|
(
|
|
--chkHiddenLabel.text = "Hidn."
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Fill Opacity" ( (0.0 + trkFillOpacity.value) / trkFillOpacity.maximum * (if chkFillLabel.checked then 1 else 0) )
|
|
RemoteConnection.WriteFloatWidget "Renderer/Wireframe/Rendering/Invisible Opacity" ( (0.0 + trkWireHidden.value) / trkWireHidden.maximum * (if chkHiddenLabel.checked then 1 else 0) )
|
|
)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeOpacity" start:false )
|
|
)
|
|
|
|
|
|
fn SetRAGWireframeMode updateRAG:true =
|
|
(
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeMode" start:true )
|
|
|
|
-- messageBox "I AM PAUSE"
|
|
|
|
local textFilterModes = #{2,3,4,5} -- Not convinced this does anything anymore !!!!!
|
|
|
|
PREVIOUS_WIREMODE = SkipSEPARATOR ddlWireMode SEPARATOR PREVIOUS_WIREMODE
|
|
|
|
|
|
CheckRAGConnection()
|
|
if ( chkConnect.checked ) then
|
|
(
|
|
-- Make sure Wireframe widget bank is loaded
|
|
if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then ( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
|
|
local textureDensityActive = ((RemoteConnection.ReadStringWidget "Renderer/Wireframe/Channel") == "Diffuse Texture Density" )
|
|
|
|
RemoteConnection.WriteBoolWidget "_LiveEdit_/Lights Edit/Light Cost/Show light cost" chkLightCosts.checked
|
|
RemoteConnection.WriteFloatWidget "Renderer/Shader Model 5/Terrain/Lookups Select RawCpv//Final//RawTexture" ( ((trkuberLookup.value as float) / 100.0) * (if chkUberShader.checked then 1 else 0) )
|
|
if updateRAG then
|
|
(
|
|
if (chkWireToggle.checked or chkLightCosts.checked) then
|
|
(
|
|
local overdrawActive = false
|
|
local textureDensityActive = ( (RemoteConnection.ReadStringWidget "Renderer/Wireframe/Channel") == "Diffuse Texture Density" )
|
|
|
|
local wireFilterString = if (txtWireframeFilterName.text != "") and (textFilterModes[ddlWireMode.selection]) then ( txtWireframeFilterName.text )
|
|
else
|
|
(
|
|
if (selection.count > 0) then ( selection[1].name ) else ( "" )
|
|
)
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Mode Params/Match Filter Text Exactly" chkWireMatchExact.checked
|
|
Remoteconnection.WriteStringWidget "Renderer/Wireframe/Channel" "" -- Clear Tex Density
|
|
|
|
newWireMode = wireModes[ddlWireMode.selection].RAGvalue
|
|
|
|
case ddlWireMode.selected of
|
|
(
|
|
("Picker"):
|
|
(
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.picker
|
|
)
|
|
("IMAP"):
|
|
(
|
|
if (wireFilterString == "") then ( wireFilterString = "NOT_SET")
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.IMAP
|
|
)
|
|
("BLOCK ID"):
|
|
(
|
|
wireFilterString = if (txtBlockID.text == "") then ( "NOT_SET" ) else ( txtBlockID.text )
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.IMAP
|
|
)
|
|
("Shaders..."):
|
|
(
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.shader
|
|
case of
|
|
(
|
|
( chkPXMShader.checked ):( wireFilterString = "pxm" )
|
|
( chkUberShader.checked ):( wireFilterString = "uber" )
|
|
( chkStandard2lyrShader.checked ):( wireFilterString = "standard_2lyr" )
|
|
( chkWaterShader.checked ):( wireFilterString = "water" )
|
|
( chkMudShader.checked ):( wireFilterString = "mud" )
|
|
( chkDefaultShader.checked ):( wireFilterString = "default" )
|
|
default:()
|
|
)
|
|
)
|
|
("Attributes..."):
|
|
(
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.attribute
|
|
case of
|
|
(
|
|
(chkIsProp.checked):( newWireMode = "Is Prop" )
|
|
(chkIsFrag.checked):( newWireMode = "Is Frag" )
|
|
(chkLowPriority.checked):( newWireMode = "Is Entity Low Priority Stream" )
|
|
(chkIsDoor.checked):( newWireMode = "Is Object Door")
|
|
(chkNoShadow.checked):( newWireMode = "Is Entity Don't Render in Shadows" )
|
|
(chkNoReflect.checked):( newWireMode = "Is Entity Don't Render in Environment Reflections" )
|
|
(chkIsDynamic.checked):( newWireMode = "Is Entity Dynamic")
|
|
(chkAlphaFading.checked):( newWireMode = "Is Entity Alpha < 255")
|
|
default:()
|
|
)
|
|
)
|
|
("TXD Name"):
|
|
(
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.txd
|
|
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 1" txtTXD1Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 2" txtTXD2Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 3" txtTXD3Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 4" txtTXD4Name.text
|
|
)
|
|
("Texture"):
|
|
(
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.texture
|
|
)
|
|
("Overdraw"):
|
|
(
|
|
overdrawActive = true
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Filter" ""
|
|
--RemoteConnection.WriteFloatWidget "Renderer/Overdraw/Overdraw Opacity" ( trkFillOpacity.value / 100.0 )
|
|
RemoteConnection.WriteIntWidget "Renderer/Overdraw/Overdraw Min" ( amin spnOverdrawMin.value spnOverdrawMax.value )
|
|
RemoteConnection.WriteIntWidget "Renderer/Overdraw/Overdraw Max" ( amax spnOverdrawMin.value spnOverdrawMax.value )
|
|
)
|
|
("Light Costs"):
|
|
(
|
|
RemoteConnection.WriteFloatWidget "_LiveEdit_/Lights Edit/Light Cost/Light cost opacity" ( (trkLightCostOpacity.value / 100.0) * (if chkLightCost.checked then 1 else 0) )
|
|
RemoteConnection.WriteIntWidget "_LiveEdit_/Lights Edit/Light Cost/Light cost min" ( amin spnLightCostMin.value spnLightCostMax.value )
|
|
RemoteConnection.WriteIntWidget "_LiveEdit_/Lights Edit/Light Cost/Light cost max" ( amax spnLightCostMin.value spnLightCostMax.value )
|
|
)
|
|
|
|
("Tex Density"):
|
|
(
|
|
newWireMode = ""
|
|
Remoteconnection.WriteStringWidget "Renderer/Wireframe/Channel" "Diffuse Texture Density"
|
|
|
|
RemoteConnection.WriteBoolWidget "Debug/Texture Density/Density Extreme Min Color Enabled " true
|
|
RemoteConnection.WriteBoolWidget "Debug/Texture Density/Density Extreme Max Color Enabled " true
|
|
|
|
RemoteConnection.WriteBoolWidget "Debug/Texture Density/Density Use Logarithmic Scale" chkUseLogScale.checked
|
|
|
|
RemoteConnection.WriteFloatWidget "Debug/Texture Density/Density Min (texels per meter)" trkTextureDensityMin.value
|
|
RemoteConnection.WriteFloatWidget "Debug/Texture Density/Density Max (texels per meter)" trkTextureDensityMax.value
|
|
RemoteConnection.WriteFloatWidget "Debug/Texture Density/Density Range Shift" (0.05 * trkDensityShift.value)
|
|
|
|
txtTextureMinSize.text = ((2 ^ trkTextureMinSize.value) as String)
|
|
|
|
txtTextureDensityMin.text = trkTextureDensityMin.value as String
|
|
txtTextureDensityMax.text = trkTextureDensityMax.value as String
|
|
)
|
|
("Color Per..."):
|
|
(
|
|
case of
|
|
(
|
|
(chkColourPerTXD.checked):( newWireMode = "Random Colour Per Texture Dict" )
|
|
(chkColourPerShader.checked):( newWireMode = "Random Colour Per Shader" )
|
|
(chkColourPerDrawCall.checked):( newWireMode = "Random Colour Per Draw Call" )
|
|
default:( newWireMode = "Random Colour Per Entity" )
|
|
)
|
|
)
|
|
default:
|
|
(
|
|
-- Set up Default Options
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Rendering/Colour Near" RAGcolours.default
|
|
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 1" txtTXD1Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 2" txtTXD2Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 3" txtTXD3Name.text
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 4" txtTXD4Name.text
|
|
)
|
|
)
|
|
RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode" newWireMode
|
|
if (wireFilterString != "") then ( RemoteConnection.WriteStringWidget "Renderer/Wireframe/Mode Params/Filter" wireFilterString )
|
|
|
|
-- Setup Widgets that depend on Overdraw state
|
|
RemoteConnection.WriteBoolWidget "Renderer/Overdraw/Render Overdraw" overdrawActive
|
|
RemoteConnection.WriteBoolWidget "Renderer/Overdraw/Render Overdraw Cost" overdrawActive
|
|
|
|
RemoteConnection.WriteFloatWidget "Renderer/Overdraw/Overdraw Opacity" ( (0.0 + trkOverdrawOpacity.value) / trkOverdrawOpacity.maximum )
|
|
)
|
|
)
|
|
else
|
|
(
|
|
local RAGwireMode = (RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode")
|
|
if ( textureDensityActive ) then (RAGwireMode = "Tex Density")
|
|
|
|
local dialogWireModes = for mode in wireModes collect mode.RAGvalue
|
|
local wireMode = findItem dialogWireModes RAGwireMode
|
|
|
|
if (wireMode > 0) then
|
|
(
|
|
if (wireModes[wireMode].item == SEPARATOR) then ( wireMode += 1 )
|
|
ddlWireMode.selection = wireMode
|
|
)
|
|
if (textFilterModes[ddlWireMode.selection]) then ( txtWireframeFilterName.text = RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode Params/Filter" )
|
|
chkWireMatchExact.checked = RemoteConnection.ReadBoolWidget "Renderer/Wireframe/Mode Params/Match Filter Text Exactly"
|
|
|
|
txtTXD1Name.text = RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 1"
|
|
txtTXD2Name.text = RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 2"
|
|
txtTXD3Name.text = RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 3"
|
|
txtTXD4Name.text = RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd 4"
|
|
|
|
chkUseLogScale.checked = RemoteConnection.ReadBoolWidget "Debug/Texture Density/Density Use Logarithmic Scale"
|
|
|
|
trkTextureDensityMin.value = RemoteConnection.ReadFloatWidget "Debug/Texture Density/Density Min (texels per meter)"
|
|
trkTextureDensityMax.value = RemoteConnection.ReadFloatWidget "Debug/Texture Density/Density Max (texels per meter)"
|
|
trkDensityShift.value = (20.0 * RemoteConnection.ReadFloatWidget "Debug/Texture Density/Density Range Shift")
|
|
|
|
trkuberLookup.value = ( RemoteConnection.ReadFloatWidget "Renderer/Shader Model 5/Terrain/Lookups Select RawCpv//Final//RawTexture" ) * 100.0
|
|
|
|
txtTextureMinSize.text = ((2 ^ trkTextureMinSize.value) as String)
|
|
|
|
txtTextureDensityMin.text = trkTextureDensityMin.value as String
|
|
txtTextureDensityMax.text = trkTextureDensityMax.value as String
|
|
|
|
)
|
|
ShowOptionWidgets()
|
|
)
|
|
if ( (ddlWireMode.selected == "Light Costs") and (not chkLightCosts.checked) ) then ( ddlWireMode.selection = 1 )
|
|
|
|
-- Show / Hide relevant options for current wireframe mode (TXD Names if no relevant options)
|
|
local wireOptionMode = wireModes[ddlWireMode.selection].optionMode
|
|
gbxWireOptionsGroupBox.text = wireModes[ddlWireMode.selection].groupLabel
|
|
|
|
local groupPos = WIREOPTION_ALL_WIDGETS[1].pos
|
|
for widgetID = 2 to WIREOPTION_ALL_WIDGETS.count do
|
|
(
|
|
local widget = WIREOPTION_ALL_WIDGETS[widgetID]
|
|
|
|
local inGroup = if (wireOptionMode > 0) then ( findItem WIREOPTION_WIDGETS[wireOptionMode] widget ) else ( 0 )
|
|
widget.visible = (inGroup > 0)
|
|
widget.pos.x = groupPos.x + initialWidgetOffsets[wireOptionRow][2][widgetID].x + ((if widget.visible then 0 else 1) * 2000)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeMode" start:false )
|
|
)
|
|
|
|
fn SetRAGWireframeWidgets updateRAG:true =
|
|
( -- Setup Wire colours, call SetRAGWireframeOpacity() and SetRAGWireframeMode()
|
|
-- Setup the RAG colour alpha values by the Trackbar values (function converts linear value to something more exponential in the [0,255] range)
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeWidgets" start:true )
|
|
|
|
RAGcolours.orphan.a = (if chkOrphanColour.checked then 1 else 0) * (TrackbarValueToAlpha trkOrphanMultiplier)
|
|
RAGcolours.hd.a = (if chkHDColour.checked then 1 else 0) * (TrackbarValueToAlpha trkHDMultiplier)
|
|
RAGcolours.lod.a = (if chkLODColour.checked then 1 else 0) * (TrackbarValueToAlpha trkLODMultiplier)
|
|
RAGcolours.slod1.a = (if chkSLOD1Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkSLOD1Multiplier)
|
|
RAGcolours.slod2.a = (if chkSLOD2Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkLoSLODsMultiplier)
|
|
RAGcolours.slod3.a = (if chkSLOD3Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkLoSLODsMultiplier)
|
|
RAGcolours.slod4.a = (if chkSLOD4Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkLoSLODsMultiplier)
|
|
|
|
RAGcolours.opaque.a = (if chkOpaqueColour.checked then 1 else 0) * (TrackbarValueToAlpha trkOpaqueMultiplier)
|
|
RAGcolours.alpha.a = (if chkAlphaColour.checked then 1 else 0) * (TrackbarValueToAlpha trkAlphaMultiplier)
|
|
RAGcolours.decal.a = (if chkDecalColour.checked then 1 else 0) * (TrackbarValueToAlpha trkDecalMultiplier)
|
|
RAGcolours.cutout.a = (if chkCutoutColour.checked then 1 else 0) * (TrackbarValueToAlpha trkCutoutMultiplier)
|
|
RAGcolours.water.a = (if chkWaterColour.checked then 1 else 0) * (TrackbarValueToAlpha trkWaterMultiplier)
|
|
|
|
RAGcolours.txd1.a = (if chkTXD1Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkTXD1Multiplier)
|
|
RAGcolours.txd2.a = (if chkTXD2Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkTXD2Multiplier)
|
|
RAGcolours.txd3.a = (if chkTXD3Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkTXD3Multiplier)
|
|
RAGcolours.txd4.a = (if chkTXD4Colour.checked then 1 else 0) * (TrackbarValueToAlpha trkTXD4Multiplier)
|
|
|
|
RAGcolours.isHD.a = (if chkIsHDColour.checked then 1 else 0) * 255
|
|
RAGcolours.usingHD.a = (if chkUsingHDColour.checked then 1 else 0) * (TrackbarValueToAlpha trkUsingHDMultiplier)
|
|
RAGcolours.sharedHD.a = (if chkSharedHDColour.checked then 1 else 0) * (TrackbarValueToAlpha trkSharedHDMultiplier)
|
|
RAGcolours.capableHD.a = (if chkCapableHDColour.checked then 1 else 0) * (TrackbarValueToAlpha trkCapableHDMultiplier)
|
|
RAGcolours.switchingHD.a = (if chkSwitchingHDColour.checked then 1 else 0) * 255
|
|
RAGcolours.notHD.a = (if chkNotHDColour.checked then 1 else 0) * 255
|
|
|
|
RAGcolours.densityXmin.a = (if chkTexDensityXMinColour.checked then 1 else 0) * (TrackbarValueToAlpha trkTexDensityXMinMultiplier)
|
|
RAGcolours.densityMin.a = (if chkTexDensityMinCOlour.checked then 1 else 0) * (TrackbarValueToAlpha trkTexDensityMinMultiplier)
|
|
RAGcolours.densityMid.a = (if chkTexDensityMidColour.checked then 1 else 0) * (TrackbarValueToAlpha trkTexDensityMidMultiplier)
|
|
RAGcolours.densityMax.a = (if chkTexDensityMaxColour.checked then 1 else 0) * (TrackbarValueToAlpha trkTexDensityMaxMultiplier)
|
|
RAGcolours.densityXMax.a = (if chkTexDensityXMaxColour.checked then 1 else 0) * (TrackbarValueToAlpha trkTexDensityXMaxMultiplier)
|
|
|
|
RAGcolours.priRequired.a = (if chkPriorityRequired.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityRequired)
|
|
RAGcolours.priHigh.a = (if chkPriorityHigh.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityHigh)
|
|
RAGcolours.priMedium.a = (if chkPriorityMedium.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityMedium)
|
|
RAGcolours.priLow.a = (if chkPriorityLow.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityLow)
|
|
RAGcolours.priStatic.a = 255 -- (if chkPriorityStatic.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityStatic)
|
|
RAGcolours.priNotAProp.a = 5 -- (if chkPriorityStatic.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityNotAProp)
|
|
RAGcolours.priInvalid.a = 255 -- (if chkPriorityStatic.checked then 1 else 0) * (TrackbarValueToAlpha trkPriorityInvalid)
|
|
|
|
|
|
CheckRAGConnection()
|
|
if chkConnect.checked then
|
|
(
|
|
-- Make sure Wireframe widget bank is loaded
|
|
if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then ( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
|
|
SetRAGWireframeOpacity updateRAG:updateRAG
|
|
|
|
if (chkWireToggle.checked) then
|
|
(
|
|
SetRAGWireframeMode updateRAG:updateRAG
|
|
|
|
-- Setup Wirecolours
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_ORPHANHD" RAGcolours.orphan
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_HD" RAGcolours.hd
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_LOD" RAGcolours.lod
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_SLOD1" RAGcolours.slod1
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_SLOD2" RAGcolours.slod2
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_SLOD3" RAGcolours.slod3
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/LOD Type Colours/LODTYPES_DEPTH_SLOD4" RAGcolours.slod4
|
|
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/HD Entity" RAGColours.isHD
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/Currently Using HD Txd" RAGColours.usingHD
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/Currently Using HD Txd (shared)" RAGColours.sharedHD
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/HD Txd Capable" RAGColours.capableHD
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/HD Txd Capable (switching ..)" RAGColours.switchingHD
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Model HD State Colours/Not HD Txd Capable" RAGColours.notHD
|
|
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Render Bucket Colours/RB_OPAQUE" RAGColours.opaque
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Render Bucket Colours/RB_ALPHA" RAGColours.alpha
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Render Bucket Colours/RB_DECAL" RAGColours.decal
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Render Bucket Colours/RB_CUTOUT" RAGColours.cutout
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Render Bucket Colours/RB_WATER" RAGColours.water
|
|
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd Colour 1" ( RAGcolours.txd1 )
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd Colour 2" ( RAGcolours.txd2 )
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd Colour 3" ( RAGcolours.txd3 )
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Uses Parent Txd Colours/Uses Parent Txd Colour 4" ( RAGcolours.txd4 )
|
|
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/PRI_REQUIRED" RAGcolours.priRequired
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/PRI_OPTIONAL_HIGH" RAGcolours.priHigh
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/PRI_OPTIONAL_MEDIUM" RAGcolours.priMedium
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/PRI_OPTIONAL_LOW" RAGcolours.priLow
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/STATIC" RAGcolours.priStatic
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/NOT_A_PROP" RAGcolours.priNotAProp
|
|
RemoteConnection.WriteVector4Widget "Renderer/Wireframe/Mode Params/Prop Priority Level Colours/PRI_INVALID" RAGcolours.priInvalid
|
|
|
|
RemoteConnection.WriteVector4Widget "Debug/Texture Density/Density Extreme Min Color " RAGcolours.densityXmin
|
|
RemoteConnection.WriteVector4Widget "Debug/Texture Density/Density Min Color" RAGcolours.densityMin
|
|
RemoteConnection.WriteVector4Widget "Debug/Texture Density/Density Mid Color" RAGcolours.densityMid
|
|
RemoteConnection.WriteVector4Widget "Debug/Texture Density/Density Max Color" RAGcolours.densityMax
|
|
RemoteConnection.WriteVector4Widget "Debug/Texture Density/Density Extreme Max Color " RAGcolours.densityXMax
|
|
|
|
--RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Render Trees" false
|
|
RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Render Tree Imposters" false
|
|
)
|
|
else
|
|
(
|
|
ShowOptionWidgets()
|
|
)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGWireframeWidgets" start:false )
|
|
)
|
|
|
|
|
|
|
|
-- LOD HIERARCHY FUNCTIONS --
|
|
-- LOD_WIDGETS = #( gbxLODHierarchyGroupBox, chkOrphanToggle, chkHDToggle, chkLODToggle, chkSLOD1Toggle, chkSLOD2Toggle, chkSLOD3Toggle, chkSLOD4Toggle,
|
|
-- ddlLODLevel, ddlLODFunction, chkLODMultiplierToggle, spnLODMultiplier, chkLODTree, chkLODInfo, chkLODSphere, chkEnableTweak, ddlTweakType, spnTweakValue )
|
|
fn SetRAGLODWidgets sender:undefined =
|
|
( -- Setup RAG LOD filters, Multiplier, Info widgets
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGLODWidgets" start:true )
|
|
|
|
local DEBUG = false
|
|
if DEBUG then ( format "Hello LOD Widgets from %\n" sender )
|
|
CheckRAGConnection()
|
|
if ( chkCONNECT.checked ) then
|
|
(
|
|
-- Make sure bank is loaded
|
|
if ( ( RemoteConnection.ReadStringWidget "Scene/PostScan/Lod Level" ) == "Couldn't find widget 'Scene/PostScan/Lod Level'" ) then ( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
|
|
-- Update LOD Multiplier Widgets
|
|
if ( chkLODMultiplierToggle.checked ) then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Scene/LOD Debug/LOD Scales/Override scales" true
|
|
RemoteConnection.WriteFloatWidget "Scene/LOD Debug/LOD Scales/Global LOD scale" (spnLODMultiplier.value as float )
|
|
)
|
|
else
|
|
(
|
|
RemoteConnection.WriteFloatWidget "Scene/LOD Debug/LOD Scales/Global LOD scale" (1.0 as float)
|
|
RemoteConnection.WriteBoolWidget "Scene/LOD Debug/LOD Scales/Override scales" false
|
|
)
|
|
|
|
-- Update LOD Level filter Widgets
|
|
local switchToActive = #{2,4}[ddlLODFunction.selection]
|
|
local widgetID = findItem LOD_WIDGETS sender
|
|
|
|
if ( switchToActive and (widgetID > 0) ) then
|
|
(
|
|
if (#{9,10}[widgetID]) then
|
|
( -- 'Switch To' or 'Cull Other' selected, so ensure selected LOD Level is visible
|
|
if DEBUG then ( format "Turning on %\n" sender )
|
|
LOD_WIDGETS[ddlLODLevel.selection+2].checked = true
|
|
if (ddlLODLevel.selection == 1) then ( LOD_WIDGETS[2].checked = true )
|
|
)
|
|
else
|
|
( -- Otherwise, change the LOD Level selection if 'Switch To' or 'Cull Other' is active
|
|
local activeLevel = findItem LOD_CONTROLS sender
|
|
if ( (activeLevel > 0) and (sender.checked) ) then
|
|
(
|
|
if DEBUG then ( format "Switching ddlLODLevel to %\n" activeLevel )
|
|
ddlLODLevel.selection = ( amax 1 (activeLevel-2) )
|
|
)
|
|
)
|
|
)
|
|
|
|
RemoteConnection.WriteStringWidget "Scene/PostScan/Lod Level" ddlLODLevel.selected
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Switch to level" ( ddlLODFunction.selected == "Switch To" )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull only level" ( ddlLODFunction.selected == "Cull Only" )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull all except level" ( ddlLODFunction.selected == "Cull Other" )
|
|
|
|
-- Update Visibility Widgets
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull orphan HD" ( not chkOrphanToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull lodded HD" ( not chkHDToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull LOD" ( not chkLODToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull SLOD1" ( not chkSLOD1Toggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull SLOD2" ( not chkSLOD2Toggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull SLOD3" ( not chkSLOD3Toggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Cull SLOD4" ( not chkSLOD4Toggle.checked ) -- Also toggle SLOD4 since out of room for a SLOD4 toggle button !!!
|
|
|
|
-- Update Tree Info Widgets
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Draw LOD range for selected entity" chkLODSphere.checked
|
|
RemoteConnection.WriteBoolWidget "Scene/LOD Debug/Tree Info/Display tree for selected" chkLODTree.checked
|
|
RemoteConnection.WriteBoolWidget "Scene/LOD Debug/Tree Info/Display info on selected" chkLODInfo.checked
|
|
RemoteConnection.WriteBoolWidget "Debug/Rendering/Debug Text" ( DrawDebugInfo() )-- chkLODInfo.checked
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGLODWidgets" start:false )
|
|
)
|
|
fn SetRAGLODTweak valueChanged:false =
|
|
( -- Setup RAG LOD Distance Tweak widgets
|
|
local DEBUG = true
|
|
|
|
CheckRAGConnection()
|
|
if ( chkCONNECT.checked ) then
|
|
(
|
|
-- Make sure bank is loaded
|
|
if ( ( RemoteConnection.ReadStringWidget "Scene/PostScan/Lod Level" ) == "Couldn't find widget 'Scene/PostScan/Lod Level'" ) then ( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
|
|
RemoteConnection.WriteBoolWidget "Scene/LOD Debug/LOD Distances/Enable LOD dist tweaking" chkEnableTweak.checked
|
|
spnTweakValue.enabled = chkEnableTweak.checked
|
|
|
|
-- Find which LOD Distance is being tweaked from ddlTweakType.selected (Should be either "Children" or "Selected" )
|
|
local distanceWidget = case ddlTweakType.selected of
|
|
(
|
|
( "Children" ):( "Scene/LOD Debug/LOD Distances/Dist for children of selected entity" )
|
|
( "Selected" ):( "Scene/LOD Debug/LOD Distances/Dist for selected entity" )
|
|
default:( "Scene/LOD Debug/LOD Distances/Dist for selected entity" )
|
|
)
|
|
if valueChanged then
|
|
( -- Function has been called from spnTweakValue event, so need to write the LOD Distance to distanceWidget, rather than read it
|
|
RemoteConnection.WriteIntWidget distanceWidget spnTweakValue.value
|
|
)
|
|
else
|
|
(
|
|
local initialValue = RemoteConnection.ReadIntWidget distanceWidget
|
|
format "%\n" initialValue
|
|
if ( initialValue != undefined ) and ( (superClassOf initialValue) == Number ) then ( spnTweakValue.value = initialValue )
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-- WEATHER/TIME FUNCTIONS --
|
|
-- TIMECYCLE_WIDGETS = #( gbxTimecycleGroupBox, spnTODHours, spnToDMinutes, ddlWeatherPrev, ddlWeatherNext, chkTimeLock, trkTimeOfDay )
|
|
fn SetRAGTimeCycleWidgets updateRAG:true updateSpinners:true lockTime:false =
|
|
( -- Update Time widgets with values from either RAG or Dialog (time may be from spinners or trackbar)
|
|
-- Get ToD from Dialog widgets (will be overwritten if RAG is the source of Time)
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGTimeCycleWidgets" start:true )
|
|
|
|
local DEBUG = false
|
|
|
|
local timeVal = if updateSpinners then ( mod (trkTimeOfDay.value * 6.0) 1440.0 )
|
|
else ( (60.0 * spnToDHours.value) + (mod spnToDMinutes.value 60.0) )
|
|
|
|
local weatherTransition = trkWeatherTransition.value / 100.0
|
|
|
|
local prevRAGTime = 0
|
|
CheckRAGConnection()
|
|
if (chkConnect.checked) then
|
|
(
|
|
if ( RemoteConnection.ReadStringWidget "TimeCycle/Game/Weather and Time Overrides/Override Prev Type" == "Couldn't find widget 'TimeCycle/Game/Weather and Time Overrides/Override Prev Type'") then
|
|
( RemoteConnection.WriteBoolWidget "TimeCycle/Create Timecycle Widgets" true )
|
|
|
|
prevRAGTime = RemoteConnection.ReadIntWidget "TimeCycle/Game/Weather and Time Overrides/Curr Time"
|
|
if updateRAG then
|
|
( -- Value source is Dialog
|
|
RemoteConnection.WriteBoolWidget "TimeCycle/Game/Weather and Time Overrides/Override Time" chkTimeLock.checked
|
|
RemoteConnection.WriteFloatWidget "TimeCycle/Game/Weather and Time Overrides/Time Speed Mult" (if chkTimeLock.checked then 1 else 0)
|
|
|
|
RemoteConnection.WriteIntWidget "TimeCycle/Game/Weather and Time Overrides/Curr Time" timeVal
|
|
RemoteConnection.WriteFloatWidget "TimeCycle/Game/Weather and Time Overrides/Override Interp" weatherTransition
|
|
|
|
local nextWeatherType = if ddlWeatherNext.enabled then ( ddlWeatherNext.selected ) else ( ddlWeatherPrev.selected )
|
|
-- Not sure that the Weather/Weather System ddl can be written to...
|
|
local weatherPath = if (chkTimeLock.checked) or (true) then ("TimeCycle/Game/Weather and Time Overrides/Override ") else ("Weather/Weather System/Info/Prev Type")
|
|
RemoteConnection.WriteStringWidget (weatherPath+"Prev Type") ddlWeatherPrev.selected
|
|
RemoteConnection.WriteStringWidget (weatherPath+"Next Type") nextWeatherType
|
|
)
|
|
else
|
|
( -- Value source is RAG, so overwrite timeVal with RAG value
|
|
timeVal = (RemoteConnection.ReadIntWidget "TimeCycle/Game/Weather and Time Overrides/Curr Time") as Float
|
|
weatherTransition = amax (RemoteConnection.ReadFloatWidget "TimeCycle/Game/Weather and Time Overrides/Override Interp") 0.0
|
|
|
|
local timePaused = ( (RemoteConnection.ReadFloatWidget "TimeCycle/Game/Weather and Time Overrides/Time Speed Mult") == 0.0 )
|
|
chkTimeLock.checked = timePaused and (RemoteConnection.ReadBoolWidget "TimeCycle/Game/Weather and Time Overrides/Override Time")
|
|
|
|
local weatherType = findItem ddlWeatherPrev.items (RemoteConnection.ReadStringWidget "Weather/Weather System/Info/Prev Type")
|
|
if (weatherType > 0) then
|
|
( -- Should be in the list, unless list has been updated, so check before setting...
|
|
ddlWeatherPrev.selection = weatherType
|
|
)
|
|
else
|
|
(
|
|
format "Unknown weather type needs added to dropdown Items : %\n" ( RemoteConnection.ReadStringWidget "Weather/Weather System/Info/Prev Type" )
|
|
)
|
|
|
|
weatherType = findItem ddlWeatherNext.items (RemoteConnection.ReadStringWidget "Weather/Weather System/Info/Next Type")
|
|
if (weatherType > 0) then
|
|
(
|
|
ddlWeatherNext.selection = weatherType
|
|
)
|
|
else
|
|
(
|
|
format "Unknown weather type needs added to dropdown Items : %\n" ( RemoteConnection.ReadStringWidget "Weather/Weather System/Info/Next Type" )
|
|
)
|
|
|
|
-- Worth checking the time is paused as well as override flag set (probably), since the Dialog widget controls both
|
|
|
|
)
|
|
)
|
|
if DEBUG then ( format "TIMEVAL:% -> TRK: % | SPN: %:% | RAG: %\n" timeVal trkTimeofDay.value spnToDHours.value spnToDMinutes.value prevRAGTime )
|
|
-- Update all Dialog time value widgets (possibly RAG over-written)
|
|
trkTimeOfDay.value = (timeVal as Float) / 6.0
|
|
spnToDHours.value = floor (trkTimeOfDay.value / 10.0)
|
|
spnToDMinutes.value = mod timeVal 60
|
|
|
|
trkWeatherTransition.value = weatherTransition * 100.0
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGTimeCycleWidgets" start:false )
|
|
)
|
|
|
|
|
|
|
|
-- TEXTURE VIEWER FUNCTIONS --
|
|
fn SetRAGTexViewerWidgets updateRAG:true runSearch:false =
|
|
( -- Set up Texture Viewer texture/TXD search widgets
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if updateRAG then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Texture Viewer/Visible" chkTexViewerToggle.checked
|
|
-- RemoteConnection.WriteBoolWidget "Texture Viewer/Enable Picking" chkTexViewerToggle.checked -- Flag toggles, but doesn't open window >(
|
|
|
|
RemoteConnection.WriteBoolWidget "Texture Viewer/Search Params/Exact Name Match" chkTexViewerExact.checked
|
|
local searchType = if (ddlTexViewerSearchType.selected == "TXDs") then ( "Texture Dictionaries" ) else ( "Textures" )
|
|
RemoteConnection.WriteStringWidget "Texture Viewer/Search Type" searchType
|
|
|
|
if (txtTexViewerSearch.text != "") then
|
|
(
|
|
RemoteConnection.WriteStringWidget "Texture Viewer/Search Name" txtTexViewerSearch.text
|
|
RemoteConnection.WriteStringWidget "Texture Viewer/Search Filter" txtTexViewerSearch.text
|
|
if runSearch then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Texture Viewer/Search" true
|
|
RemoteConnection.WriteBoolWidget "Texture Viewer/Load Texture//Txd/Load All List Entries" true
|
|
)
|
|
)
|
|
)
|
|
else
|
|
(
|
|
chkTexViewerToggle.checked = RemoteConnection.ReadBoolWidget "Texture Viewer/Visible"
|
|
chkTexViewerExact.checked = RemoteConnection.ReadBoolWidget "Texture Viewer/Search Params/Exact Name Match"
|
|
local searchType = findItem #("Texture Dictionaries","Textures") (RemoteConnection.ReadStringWidget "Texture Viewer/Search Type")
|
|
ddlTexViewerSearchType.selection = ( if (searchType == 2) then ( 2 ) else ( 1 ) ) -- Ignore "Models - Broken".. set to "Textures" instead
|
|
)
|
|
if chkTexViewerToggle.checked then
|
|
(
|
|
RemoteConnection.WriteStringWidget "Texture Viewer/Hover Entity Shader Mode" "Hover Shader Only"
|
|
)
|
|
else
|
|
(
|
|
RemoteConnection.WriteStringWidget "Texture Viewer/Hover Entity Shader Mode" "Off"
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-- OCCLUSION/CULLBOX/GBUFFER FUNCTIONS --
|
|
-- OCCLUSION_WIDGETS = #( gbxOcclusionGroupBox, chkOcclOff, ddlOcclMode, chkOcclFlip )
|
|
-- CULLBOX_WIDGETS = #( gbxCullBoxGroupBox, chkCullBoxesOn, chkCullBoxEditor, btnFindCullBox, btnWarpToCullBox )
|
|
-- GBUF_WIDGETS = #( gbxGBuffGroupBox, ddlGBuffer, ddlGBufferLocation )
|
|
fn SetRAGMiscModeWidgets updateRAG:true =
|
|
( -- Setup Occlusion, Cullbox and GBuffer widgets
|
|
CheckRAGConnection()
|
|
if (chkCONNECT.checked) then
|
|
(
|
|
if updateRAG then
|
|
(
|
|
-- OCCLUDION WIDGETS --
|
|
RemoteConnection.WriteBoolWidget "Renderer/Occlusion/Force Disable Occlusion" (not chkOcclOff.checked)
|
|
RemoteConnection.WriteBoolWidget "Renderer/Occlusion/Flip Result" chkOcclFlip.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Occlusion/Display Occluders" (ddlOcclMode.selected == "Show")
|
|
RemoteConnection.WriteBoolWidget "Renderer/Occlusion/Overlay Occluders" (ddlOcclMode.selected == "Overlay")
|
|
|
|
-- CULL BOX WIDGETS --
|
|
RemoteConnection.WriteBoolWidget "Scene/Map Data Cull Box Editor/Culling enabled" chkCullBoxesOn.checked
|
|
RemoteConnection.WriteBoolWidget "Scene/Map Data Cull Box Editor/Enabled" chkCullBoxEditor.checked
|
|
|
|
RemoteConnection.WriteFloatWidget "Scene/Map Data Cull Box Editor/Solid Box Alpha" 0.25
|
|
RemoteConnection.WriteBoolWidget "Scene/Map Data Cull Box Editor/Draw Selected Box Only" true
|
|
RemoteConnection.WriteBoolWidget "Scene/Map Data Cull Box Editor/Show boxes at camera pos" true
|
|
|
|
-- GBUFFER WIDGETS --
|
|
local gbufMode = "None"
|
|
local darkThreshold = 32 -- Slider value to toggle lighting / sky enabled flags
|
|
|
|
if (ddlGBufferLocation.selected != "Off") then ( gbufMode = ddlGBuffer.selected )
|
|
local afterAlpha = (ddlGBufferLocation.selected == "Corner") -- #{1,3,6,7}[ddlGBuffer.selection] -- not sure why these ones... only seems to enable in corner mode these days
|
|
local rgba = #{3,4,5}[ddlGBuffer.selection] and (gbufMode != "None")
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Debug Display/Show RGBA" rgba
|
|
RemoteConnection.WriteStringWidget "Renderer/Debug/Gbuffer/Debug Display/GBuffer" gbufMode
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Debug Display/GBuffer show corner" ( ddlGBufferLocation.selected == "Corner" )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Debug Display/GBuffer show after alpha" afterAlpha -- Was a bit crashy at one point, so enabling with trepidation...
|
|
|
|
|
|
local DiffOverrideVal = if ( chkDiffuseOverride.checked ) then ( (trkDarkOverRide.value * 2.55) ) else ( 255 )
|
|
local TintOverrideVal = if ( chkTintOverride.checked ) then ( (trkDarkOverRide.value * 2.55) ) else ( 255 ) -- Sometimes seems in-line with base if RGB not multiplied by the trackbar value
|
|
RemoteConnection.WriteBoolWidget "Renderer/Wireframe/Map Editor Mode Enabled" ( (trkDarkOverRide.value == 0) and chkLightOverride.checked ) -- Fully disables everything except wire
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Diffuse/Advanced/Override diffuse base enabled" chkDiffuseOverride.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Diffuse/Advanced/Override diffuse tint enabled" chkTintOverride.checked
|
|
RemoteConnection.WriteVector4Widget "Renderer/Debug/Gbuffer/Overrides/Diffuse/Advanced/Override diffuse base" ( color DiffOverrideVal DiffOverrideVal DiffOverrideVal (trkDiffuseOverride.value * 2.55) )
|
|
RemoteConnection.WriteVector4Widget "Renderer/Debug/Gbuffer/Overrides/Diffuse/Advanced/Override diffuse tint" ( color TintOverrideVal TintOverrideVal TintOverrideVal (trkDiffuseOverride.value * 2.55) )
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Specular/Enable" (not chkLightOverride.checked)
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Normals/Disable Normal Mapping" (not chkLightOverride.checked)
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Ambient/Override Ambient" chkLightOverride.checked
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Ambient/Natural" ( (trkDarkOverride.value as float) / trkDarkOverride.maximum )
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Emissive/Override Emissive" chkLightOverride.checked
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Emissive/Amount" ( (trkDarkOverride.value as float) / trkDarkOverride.maximum )
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Override shadow" chkLightOverride.checked
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Amount" ( 1.0 - ((trkDarkOverride.value as float) / trkDarkOverride.maximum) )
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Intensity" ((trkDarkOverride.value as float) / trkDarkOverride.maximum)
|
|
|
|
-- RemoteConnection.WriteBoolWidget "Visual Effects/Sky/Render Sky" ((not chkDiffuseOverride.checked) or (trkDarkOverride.value > darkThreshold))
|
|
RemoteConnection.WriteBoolWidget "Lighting/Enable Directional" ((not chkLightOverride.checked) and chkGlobalLightToggle.checked) -- or (trkDarkOverride.value > darkThreshold))
|
|
RemoteConnection.WriteBoolWidget "Lighting/Enable Local Lights" ((not chkLightOverride.checked) and chkLocalLightToggle.checked) -- or (trkDarkOverride.value > darkThreshold))
|
|
RemoteConnection.WriteBoolWidget "Lighting/Enable IBL Reflection" (not chkLightOverride.checked) -- or (trkDarkOverride.value > darkThreshold))
|
|
RemoteConnection.WriteBoolWidget "Lighting/LOD // Distant Lights/Enable LOD lights" ((not chkLightOverride.checked) and chkLODLightToggle.checked) -- or (trkDarkOverride.value > darkThreshold))
|
|
RemoteConnection.WriteBoolWidget "Lighting/LOD // Distant Lights/Enable distant LOD lights" ((not chkLightOverride.checked) and chkDistantLightToggle.checked) -- or (trkDarkOverride.value > darkThreshold))
|
|
)
|
|
else
|
|
(
|
|
-- OCCLUSION WIDGETS --
|
|
chkOcclOff.checked = not ( RemoteConnection.ReadBoolWidget "Renderer/Occlusion/Force Disable Occlusion" )
|
|
chkOcclFlip.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Occlusion/Flip Result" )
|
|
ddlOcclMode.selection = case of
|
|
(
|
|
(RemoteConnection.ReadBoolWidget "Renderer/Occlusion/Display Occluders"):( 2 )
|
|
(RemoteConnection.ReadBoolWidget "Renderer/Occlusion/Overlay Occluders"):( 3 )
|
|
default:( 1 )
|
|
)
|
|
|
|
-- CULL BOX WIDGETS --
|
|
chkCullBoxesOn.checked = ( RemoteConnection.ReadBoolWidget "Scene/Map Data Cull Box Editor/Culling enabled" )
|
|
chkCullBoxEditor.checked = ( RemoteConnection.ReadBoolWidget "Scene/Map Data Cull Box Editor/Enabled" )
|
|
|
|
-- GBUFFER WIDGETS --
|
|
local gbufMode = findItem ddlGbuffer.items (RemoteConnection.ReadStringWidget "Renderer/Debug/Gbuffer/Debug Display/GBuffer")
|
|
if (gbufMode == 0) then
|
|
( -- Not always "None"... there are a few modes not in the items, so just pick "Albedo" and "Off"
|
|
ddlGBufferLocation.selection = 1
|
|
ddlGBuffer.selection = 1
|
|
)
|
|
else
|
|
(
|
|
ddlGBuffer.selection = gbufmode
|
|
ddlGBufferLocation.selection = (if (RemoteConnection.ReadBoolWidget "Renderer/Debug/Gbuffer/Debug Display/GBuffer show corner") then ( 2 ) else ( 1 ) )
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-- GEO TOGGLE FUNCTIONS -- + -- RENDER PASS FUNCTIONS --
|
|
fn SetRAGVisibilityWidgets updateRAG:true =
|
|
( -- Toggle object visibilities in RAG by Geo Type Toggles widget states
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGVisibilityWidgets" start:true )
|
|
|
|
CheckRAGConnection()
|
|
if (chkConnect.checked) then
|
|
(
|
|
if ( RemoteConnection.ReadStringWidget "Scene/Map Optimization Helper/Mode" == "Couldn't find widget 'Scene/Map Optimization Helper/Mode'") then
|
|
( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
|
|
if ( RemoteConnection.ReadStringWidget "Visual Effects/GPU Particles/Debug Render Mode Drop Particles" == "Couldn't find widget 'Visual Effects/GPU Particles/Debug Render Mode Drop Particles'") then
|
|
( RemoteConnection.WriteBoolWidget "Visual Effects/Create Vfx Widgets" true )
|
|
|
|
if updateRAG then
|
|
(
|
|
-- GEO TYPE TOGGLES --
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Building types/Turn off Terrain" ( not chkVisTerrainToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Building types/Turn off buildings" ( not chkVisBuildingsToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Don't render interior" ( not ( chkVisInteriorToggle.checked ) )
|
|
|
|
RemoteConnection.WriteBoolwidget "Optimization/Disable Tree bucket" ( not chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off SLOD Trees" ( not chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Entity Batches" ( not chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Instance Lists/Render Settings/Prop Instance Lists/Render Instance Lists" ( chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Grass Batches" ( not chkVisIPGrassToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Instance Lists/Render Settings/Grass Instance Lists/Render Instance Lists" ( chkVisIPGrassToggle.checked )
|
|
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off objects" ( not chkVisObjectsToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off dummy objects" ( not chkVisDummiesToggle.checked )
|
|
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Vehicles" ( not chkVisVehiclesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Peds" ( not chkVisPedsToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Draw Water Quads" chkVisWaterToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Water bucket" ( not chkVisWaterToggle.checked )
|
|
|
|
-- RENDER PASS TOGGLES --
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Opaque bucket" ( not ( chkVisOpaqueToggle.checked ) )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Alpha bucket" ( not ( chkVisAlphaToggle.checked ) )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Decal bucket" ( not ( chkVisDecalToggle.checked ) )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Cutout bucket" ( not ( chkVisCutoutToggle.checked ) )
|
|
|
|
--RemoteConnection.WriteBoolWidget "Renderer/Debug/Render Phases/Cascaded Shadows/Disable" ( not chkShadowToggle.checked ) -- Rather too crashy for my liking... GBuf override less so.
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Override shadow" (not chkShadowToggle.checked)
|
|
if (not chkLightOverride.checked) then
|
|
(
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Intensity" 1.0
|
|
RemoteConnection.WriteFloatWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Amount" 1.0
|
|
)
|
|
|
|
local cloudCover = (if chkVisFXToggle.checked then 1 else 0) as Float
|
|
RemoteConnection.WriteFloatWidget "Visual Effects/Scattering and Transmittance System/Density Scale" ( cloudCover )
|
|
RemoteConnection.WriteBoolWidget "Visual Effects/Particles/Framework/Disable All" ( not chkVisFXToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Optimization/turn off bloom" ( not chkVisFXToggle.checked )
|
|
|
|
-- COLLISION TOGGLES --
|
|
RemoteConnection.WriteBoolWidget "Optimization/Polygon Density/Solid" chkSolidCollision.checked
|
|
|
|
for typeID = 2 to collisionHash.count do
|
|
(
|
|
RemoteConnection.WriteBoolWidget collisionHash[typeID].RAGvalue ( ddlCollisionType.selection == typeID )
|
|
)
|
|
for typeID = 2 to otherCollisionHash.count do
|
|
(
|
|
RemoteConnection.WriteBoolWidget otherCollisionHash[typeID].RAGvalue ( ddlOtherType.selection == typeID )
|
|
)
|
|
)
|
|
else
|
|
(
|
|
-- GEO TYPE TOGGLES --
|
|
chkVisTerrainToggle.checked = not ( RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Building types/Turn off Terrain" )
|
|
chkVisBuildingsToggle.checked= not ( RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Building types/Turn off buildings" )
|
|
chkVisInteriorToggle.checked = not ( RemoteConnection.ReadBoolWidget "Optimization/Don't render interior" )
|
|
|
|
chkVisIPTreesToggle.checked = not ( (RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Entity Batches") or
|
|
(RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Entity Batches") )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off SLOD Trees" ( not chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Entity Batches" ( not chkVisIPTreesToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Instance Lists/Render Settings/Prop Instance Lists/Render Instance Lists" ( chkVisIPTreesToggle.checked )
|
|
chkVisIPGrassToggle.checked = ( not (RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Grass Batches") ) or
|
|
(RemoteConnection.ReadBoolWidget "Renderer/Instance Lists/Render Settings/Grass Instance Lists/Render Instance Lists")
|
|
RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Entity Batches/Turn off Grass Batches" ( not chkVisIPGrassToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Instance Lists/Render Settings/Grass Instance Lists/Render Instance Lists" ( chkVisIPGrassToggle.checked )
|
|
|
|
chkVisObjectsToggle.checked = not ( RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off objects" )
|
|
chkVisDummiesToggle.checked = not ( RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off dummy objects" )
|
|
|
|
chkVisVehiclesToggle.checked = not (RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Vehicles")
|
|
chkVisPedsToggle.checked = not (RemoteConnection.ReadBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Peds")
|
|
-- Legacy from single Ped+Vehicle button
|
|
--RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Vehicles" ( not chkVisVehiclesToggle.checked )
|
|
--RemoteConnection.WriteBoolWidget "Scene/PostScan/Entity Visibility Toggles/Dynamic Entities/Turn off Peds" ( not chkVisPedsToggle.checked )
|
|
|
|
chkVisWaterToggle.checked = (RemoteConnection.ReadBoolWidget "Optimization/Draw Water Quads") or
|
|
( not (RemoteConnection.ReadBoolWidget "Optimization/Disable Water bucket") )
|
|
RemoteConnection.WriteBoolWidget "Optimization/Draw Water Quads" chkVisWaterToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Optimization/Disable Water bucket" ( not chkVisWaterToggle.checked )
|
|
|
|
-- RENDER PASS TOGGLES --
|
|
chkVisOpaqueToggle.checked = not ( RemoteConnection.ReadBoolWidget "Optimization/Disable Opaque bucket" )
|
|
chkVisAlphaToggle.checked = not ( RemoteConnection.ReadBoolWidget "Optimization/Disable Alpha bucket" )
|
|
chkVisDecalToggle.checked = not ( RemoteConnection.ReadBoolWidget "Optimization/Disable Decal bucket" )
|
|
chkVisCutoutToggle.checked = not ( RemoteConnection.ReadBoolWidget "Optimization/Disable Cutout bucket" )
|
|
|
|
--chkShadowToggle.checked = not ( RemoteConnection.ReadBoolWidget "Renderer/Debug/Render Phases/Cascaded Shadows/Disable" ) -- Rather too crashy for my liking... GBuf override less so.
|
|
chkShadowToggle.checked = not ( RemoteConnection.ReadBoolWidget "Renderer/Debug/Gbuffer/Overrides/Shadow/Override shadow" )
|
|
local cloudCover = ( (RemoteConnection.ReadFloatWidget "Visual Effects/Scattering and Transmittance System/Density Scale") == 1.0 ) or
|
|
( not (RemoteConnection.ReadBoolWidget "Visual Effects/Particles/Framework/Disable All") )
|
|
chkVisFXToggle.checked = cloudCover
|
|
RemoteConnection.WriteFloatWidget "Visual Effects/Scattering and Transmittance System/Density Scale" ( (if cloudCover then 1 else 0) as Float )
|
|
RemoteConnection.WriteBoolWidget "Visual Effects/Particles/Framework/Disable All" ( not chkVisFXToggle.checked )
|
|
RemoteConnection.WriteBoolWidget "Optimization/turn off bloom" ( not chkVisFXToggle.checked )
|
|
|
|
-- COLLISION TOGGLES --
|
|
chkSolidCollision.checked = ( RemoteConnection.ReadBoolWidget "Optimization/Polygon Density/Solid" )
|
|
|
|
local activeCollision = #{}
|
|
for hashID = 2 to collisionHash.count while activeCollision.isEmpty do
|
|
(
|
|
local colActive = RemoteConnection.ReadBoolWidget collisionHash[hashID].RAGvalue
|
|
if (colActive != undefined) then
|
|
(
|
|
activeCollision[HashID] = colActive -- ( RemoteConnection.ReadBoolWidget collisionHash[hashID].RAGvalue )
|
|
)
|
|
)
|
|
if (activeCollision.isEmpty) then ( ddlCollisionType.selection = 1)
|
|
else ( ddlCollisionType.selection = (activeCollision as array)[1] )
|
|
|
|
local activeOtherCollision = #{}
|
|
for hashID = 2 to otherCollisionHash.count while activeOtherCollision.isEmpty do
|
|
(
|
|
local colActive = RemoteConnection.ReadBoolWidget otherCollisionHash[hashID].RAGvalue
|
|
if (colActive != undefined) then
|
|
(
|
|
activeOtherCollision[HashID] = colActive -- ( RemoteConnection.ReadBoolWidget otherCollisionHash[hashID].RAGvalue )
|
|
)
|
|
)
|
|
if (activeOtherCollision.isEmpty) then ( ddlOtherType.selection = 1)
|
|
else ( ddlOtherType.selection = (activeOtherCollision as array)[1] )
|
|
)
|
|
)
|
|
|
|
if (TRACE > 0) then ( TraceMessage "SetRAGVisibilityWidgets" start:false )
|
|
)
|
|
|
|
|
|
|
|
-- PREVIEW AND OTHER FUNCTIONS --
|
|
fn SetOtherRAGWidgets updateRAG:true =
|
|
(
|
|
if ( ( RemoteConnection.ReadStringWidget "Renderer/Wireframe/Mode" ) == "Couldn't find widget 'Renderer/Wireframe/Mode'" ) then ( RemoteConnection.WriteBoolWidget "Renderer/Create Renderer widgets" true )
|
|
if ( ( RemoteConnection.ReadStringWidget "Scene/PostScan/Lod Level" ) == "Couldn't find widget 'Scene/PostScan/Lod Level'" ) then ( RemoteConnection.WriteBoolWidget "Scene/Create Scene widgets" true )
|
|
RemoteConnection.SendSyncCommand()
|
|
|
|
if updateRAG then
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Preview Folder/Enable" chkPreviewEnable.checked
|
|
RemoteConnection.WriteBoolWidget "Optimization/Potentially Floating Objects/Draw" chkFloatingObjects.checked
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Draw Lists/Draw List Framework/Draw Lists/Show Rendering Stats" false
|
|
RemoteConnection.WriteBoolWidget "Renderer/Draw Lists/Draw List Framework/Draw Lists/Show Context Stats" false
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Draw Lists/Draw List Framework/Draw Lists/Show Draw List Stats" chkDrawListToggle.checked
|
|
-- if chkDrawListToggle.checked then ( RemoteConnection.WriteBoolWidget "Debug/Rendering/Debug Text" true )
|
|
RemoteConnection.WriteBoolWidget "Debug/Rendering/Debug Text" ( DrawDebugInfo() )
|
|
RemoteConnection.WriteBoolWidget "Renderer/Debug/Render Phases/Entity Selector/Enable Entity Select Render Pass" false
|
|
|
|
RemoteConnection.WriteBoolWidget "Objects/Object Density Tool/Enable Object Density Tool" chkObjectDensityToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Budget/Enable GPU budget timers" chkBudgetToggle.checked
|
|
RemoteConnection.WriteBoolWidget "Scene/HD Assets/Textures/List HD txds" chkHDTexturesToggle.checked
|
|
|
|
RemoteConnection.WriteBoolWidget "Renderer/Shader Model 5/POM // Displacement/Disable POM" chkPOMEnable.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Blend Mask" chkShowPOMBlend.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Curve Mask" chkShowPOMCurve.checked
|
|
RemoteConnection.WriteBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Distance Fade Settings" chkShowPOMFade.checked
|
|
)
|
|
else
|
|
(
|
|
chkDrawListToggle.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Draw Lists/Draw List Framework/Draw Lists/Show Draw List Stats" )
|
|
|
|
chkObjectDensityToggle.checked = ( RemoteConnection.ReadBoolWidget "Objects/Object Density Tool/Enable Object Density Tool" )
|
|
chkBudgetToggle.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Budget/Enable GPU budget timers" )
|
|
chkHDTexturesToggle.checked = ( RemoteConnection.ReadBoolWidget "Scene/HD Assets/Textures/List HD txds" )
|
|
|
|
chkPreviewEnable.checked = ( RemoteConnection.ReadBoolWidget "Preview Folder/Enable" )
|
|
chkFloatingObjects.checked = ( RemoteConnection.ReadBoolWidget "Optimization/Potentially Floating Objects/Draw" )
|
|
|
|
chkPOMEnable.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Shader Model 5/POM // Displacement/Disable POM" )
|
|
chkShowPOMBlend.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Blend Mask" )
|
|
chkShowPOMCurve.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Curve Mask" )
|
|
chkShowPOMFade.checked = ( RemoteConnection.ReadBoolWidget "Renderer/Shader Model 5/POM // Displacement/Visualise POM Distance Fade Settings" )
|
|
)
|
|
)
|
|
fn FlushPreview =
|
|
(
|
|
RemoteConnection.WriteBoolWidget "Preview Folder/Flush scene" true
|
|
)
|
|
|
|
|
|
|
|
-- GENERAL WIDGET FUNCTIONS --
|
|
fn UpdateGroupVisibility =
|
|
( -- Show / Hide widget groups depending on state of their control button, move them vertically, resize dialog
|
|
if (TRACE > 0) then ( TraceMessage "UpdateGroupVisibility" start:true )
|
|
|
|
local nextRowYPos = BANK_WIDGETS[1].pos.y + TR_BANK_HEIGHT + (TR_GROUP_GAP/2) -- Keep note of where the next visible group should be vertically
|
|
-- Disabled the Connected check after setting initial states to off
|
|
-- if ( chkCONNECT.checked or DEBUG_ADD_WIDGET_LABELS ) then
|
|
-- (
|
|
for rowID = 2 to ALL_WIDGETS.count do
|
|
(
|
|
-- local areWidgetsOn = BANK_WIDGETS[rowID].checked -- and ( chkCONNECT.checked or DEBUG_ADD_WIDGET_LABELS )
|
|
local widgetRow = ALL_WIDGETS[rowID]
|
|
local areWidgetsOn = widgetRow[widgetRow.count].checked
|
|
|
|
local deactivatedWidgetOffset = (if areWidgetsOn then 0 else 1) * 2000
|
|
for groupID = 1 to (widgetRow.count-1) do
|
|
(
|
|
local widgetGroup = widgetRow[groupID]
|
|
local widgetOffsets = initialWidgetOffsets[rowID][groupID]
|
|
for widgetID = 1 to widgetGroup.count do
|
|
(
|
|
local widget = widgetGroup[widgetID]
|
|
widget.visible = areWidgetsOn
|
|
widget.pos.y = nextRowYPos + widgetOffsets[widgetID].y + deactivatedWidgetOffset
|
|
-- if ( widgetID > 1 ) and ( not widget.visible ) then ( widget.pos.x = widgetGroup[1].pos.x + widgetOffsets[widgetID].x + deactivatedWidgetOffset )
|
|
)
|
|
)
|
|
if areWidgetsOn then ( nextRowYPos += (ALL_WIDGETS[rowID][1][1].height + TR_GROUP_GAP) )
|
|
)
|
|
-- )
|
|
RsTinyRAG.height = nextRowYPos
|
|
--SetRAGWireframeMode()
|
|
ShowOptionWidgets()
|
|
|
|
if (TRACE > 0) then ( TraceMessage "UpdateGroupVisibility" start:false )
|
|
)
|
|
fn IsolateGroup clickedWidget widgetGroup force:false =
|
|
( -- Show/Hide grouped widgets (called from right-clicking a grouped widget)
|
|
-- Are all other widgets unchecked (not counting the first widget, which is always the groupBox)
|
|
if (TRACE > 0) then ( TraceMessage "IsolateGroup" start:true )
|
|
|
|
local othersOn = true
|
|
for widgetID = 2 to widgetGroup.count do
|
|
(
|
|
if ( (widgetGroup[widgetID] != clickedWidget) and ((classOf widgetGroup[widgetID]) == CheckButtonControl) ) then (othersOn = othersOn and not widgetGroup[widgetID].checked)
|
|
)
|
|
othersOn = (not force) and othersOn
|
|
|
|
for widget in widgetGroup do
|
|
( -- If all others Off, then everything on,
|
|
if ((classOf widget) == CheckButtonControl) then ( widget.checked = othersOn )
|
|
)
|
|
clickedWidget.checked = true
|
|
if ((findItem BANK_WIDGETS clickedWidget) > 0 ) then ( UpdateGroupVisibility() )
|
|
|
|
if (TRACE > 0) then ( TraceMessage "IsolateGroup" start:false )
|
|
)
|
|
fn TrackBarValueAsPercentage ctrl =
|
|
(
|
|
local result = formattedPrint ((ctrl.value as Float) / ctrl.maximum * 100.0) format:"#.1f"
|
|
result += "%"
|
|
result
|
|
)
|
|
fn setTrackBarValue textWidget ctrl logNeeded:false =
|
|
( -- Mostly convert textWidget to power of 2 and set dotnetTrackbar.value
|
|
-- Keeping open so an integer value can be passed in the first argument to similarly set it (if I add any trackbars with no text)
|
|
local isTextWidget = ((classOf textWidget) == EditTextControl)
|
|
local newValue = if isTextWidget then ( textWidget.text as Integer ) else ( textWidget as Integer )
|
|
if (newValue != undefined) then
|
|
(
|
|
if logNeeded then ( newValue = ((log newValue) / 0.693147) as Integer )
|
|
ctrl.value = amin ctrl.maximum ( amax ctrl.minimum newValue )
|
|
)
|
|
|
|
-- Set textWidget.value with rounded power of 2 value, since anything else is vaguely illegal
|
|
if isTextWidget then ( textWidget.text = if logNeeded then ((2 ^ (ctrl.value)) as String) else (ctrl.value as String) )
|
|
)
|
|
fn TrackbarMouseEvent ctrl sender arg updateFunction:undefined =
|
|
( -- Right-click jump to nearest tick
|
|
local DEBUG = false
|
|
|
|
if (arg.button == sender.mouseButtons.right) then
|
|
(
|
|
-- Horrible maths to find the actual value clicked
|
|
-- since arg.x is the value relative to the left edge of the widget, not the area between min/max ticks
|
|
-- and vertical timebars are even worse
|
|
-- (8.0 plucked from pixelCounting in PS)
|
|
local ratio = if (ctrl.orientation.toString() == "Horizontal") then
|
|
( -- Horizontal Trackbar case
|
|
(arg.x - 8.0) / (ctrl.width - 16.0)
|
|
)
|
|
else
|
|
( -- Vertical TrackBar case
|
|
1.0 - ((arg.y - 8.0) / (ctrl.height - 16.0))
|
|
)
|
|
ratio = amax 0.0 ( amin 1.0 ratio )
|
|
|
|
local clickedVal = ratio * (ctrl.maximum - ctrl.minimum)
|
|
|
|
-- Find the value corresponding to the closest tick (multiple of ctrl.largeChange)
|
|
--local newVal = amin ( amax ((floor (clickedVal / ctrl.largeChange + 0.5)) * ctrl.largeChange) ctrl.minimum ) ctrl.maximum
|
|
local newVal = (floor (clickedVal / ctrl.largeChange + 0.5)) * ctrl.largeChange + ctrl.minimum
|
|
if DEBUG then ( format "(MIN:% | MAX:% | STEP:%) RATIO:% -> CLICKED:% -> NEWVAL:%\n" ctrl.minimum ctrl.maximum ctrl.largeChange ratio clickedVal newVal )
|
|
|
|
ctrl.value = newVal
|
|
|
|
-- local isTCWidget = findItem TIMECYCLE_WIDGETS ctrl
|
|
if (updateFunction != undefined) then ( updateFunction() )
|
|
)
|
|
else
|
|
if (arg.button == sender.mouseButtons.left) then
|
|
(
|
|
if (updateFunction != undefined) then ( updateFunction() )
|
|
)
|
|
|
|
local newTip = case ctrl of
|
|
(
|
|
(trkTimeOfDay):( "Time : " + ((spnToDHours.value as String)+":"+ (if (spnToDminutes.value < 10) then ((spnToDMinutes.value as String)+"0") else (spnToDMinutes.value as String)) ) )
|
|
(trkWeatherTransition):( "Weather Transition : " + (ctrl.value as String) + "% " + ddlWeatherNext.selected )
|
|
(trkWireOpacity):( "Wire Opacity : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkWireHidden):( "Hidden Wire Opacity : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkFillOpacity):( "Fill Opacity : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkOpacityMultiplier):( "Opacity Multiplier : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkUberLookup):( "Uber Lookup Opacity : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkDiffuseOverride):( "Texture Override : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkDarkOverride):( "Override Greyscale : " + (TrackBarValueAsPercentage ctrl) )
|
|
(trkTextureMinSize):( "Texture Minimum Size : " + ((2 ^ ctrl.value) as String) )
|
|
(trkTextureDensityMin):( "Minimum Texture Density : " + (ctrl.value as String) )
|
|
(trkTextureDensityMax):("Maximum Texture Density : " + (ctrl.value as String) )
|
|
(trkDensityShift):("Denisty Range Shift : " + ((0.05 * ctrl.value) as String) )
|
|
(trkLightCostOpacity):( "Light Cost Opacity :" + (TrackBarValueAsPercentage ctrl) )
|
|
default:( "Alpha : " + (((TrackBarValueToAlpha ctrl) as Integer) as String) )
|
|
)
|
|
|
|
ttpTrackbarTooltip.SetToolTip ctrl newTip
|
|
ttpTrackbarTooltip.showAlways = true
|
|
)
|
|
|
|
|
|
|
|
---- EVENTS ----
|
|
|
|
-- BANK WIDGET EVENTS --
|
|
on chkCONNECT changed NewState do ( CheckRAGConnection connectDialog:true ; UpdateGroupVisibility() )
|
|
|
|
on chkPickerBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkLightingBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkWireframeBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkLODBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkTimeBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkOcclCullBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkToggleBank changed NewState do ( UpdateGroupVisibility() )
|
|
on chkOtherBank changed NewState do ( UpdateGroupVisibility() )
|
|
|
|
on chkPickerBank rightclick do ( IsolateGroup chkPickerBank BANK_WIDGETS )
|
|
on chkLightingBank rightclick do ( IsolateGroup chkLightingBank BANK_WIDGETS )
|
|
on chkWireframeBank rightclick do ( IsolateGroup chkWireframeBank BANK_WIDGETS )
|
|
on chkLODBank rightclick do ( IsolateGroup chkLODBank BANK_WIDGETS )
|
|
on chkTimeBank rightclick do ( IsolateGroup chkTimeBank BANK_WIDGETS )
|
|
on chkOcclCullBank rightClick do ( IsolateGroup chkOcclCullBank BANK_WIDGETS )
|
|
on chkToggleBank rightclick do ( IsolateGroup chkToggleBank BANK_WIDGETS )
|
|
on chkOtherBank rightclick do ( IsolateGroup chkOtherBank BANK_WIDGETS ; UpdateGroupVisibility() ) -- DISCONNECTING OTHER WIDGET FROM RIGHTCLICK AS IT'S NOT FINALISED
|
|
|
|
|
|
|
|
-- PICKER EVENTS --
|
|
-- PICKER_WIDGETS = #( gbxPickerGroupBox, chkPickerToggle, txtPickerFilter, chkPickerIsolate, chkPickerHide, chkPickerAddToSelection, chkIMAPBounds, ddlPickerHighlight, btnPickerScope )
|
|
on chkPickerToggle changed newState do ( SetRAGPickerWidgets() )
|
|
on txtPickerFilter entered newValue do ( SelectByName (filterString txtPickerFilter.text " ,") )
|
|
on btnPickSelection pressed do ( SelectByName (for obj in selection collect obj.name) )
|
|
|
|
on chkPickerIsolate changed newState do ( chkPickerHide.checked = false ; SetRAGPickerWidgets() )
|
|
on chkPickerHide changed newState do ( chkPickerIsolate.checked = false ; SetRAGPickerWidgets() )
|
|
on chkPickerAddToSelection changed newState do ( SetRAGPickerWidgets() )
|
|
on chkIMAPBounds changed newState do ( SetRAGPickerWidgets() )
|
|
on ddlPickerHighlight selected newSelection do ( SetRAGPickerWidgets() )
|
|
on ddlPickerSource selected newSelection do ( SetRAGPickerWidgets() )
|
|
|
|
on chkObjectPosHelper changed newState do ( GetRAGObjectPos() )
|
|
on chkObjectPosHelper rightclick do ( chkObjectPosHelper.checked = true ; GetRAGObjectPos coordChange:true )
|
|
|
|
|
|
fn CheckWarpText widget =
|
|
( -- To cope with block/coord text entered into the wrong widget
|
|
-- Parse text, overwrite other if it matches that type, then clear the original widget text
|
|
local warpText = widget.text
|
|
if (warpText != "") then
|
|
(
|
|
local textWithoutCoords = filterString warpText "[0123456789,-] "
|
|
local numCoords = filterString widget.text ","
|
|
|
|
if ( (textWithoutCoords.count == 0) and (numCoords.count>1) ) then
|
|
( -- We got some Coordinates...
|
|
ddlWarpSource.selection = ( findItem ddlWarpSource.items "Coords" ) -- Should be 2, but just in case
|
|
if (widget == txtBlockID) then
|
|
(
|
|
txtWarpCoords.text = widget.text
|
|
widget.text = ""
|
|
)
|
|
SetRAGBlockWidgets()
|
|
)
|
|
else
|
|
(
|
|
if ( (matchPattern warpText pattern:"*_*") and not (matchPattern warpText pattern:"*,*") ) then
|
|
(
|
|
ddlWarpSource.selection = ( findItem ddlWarpSource.items "BlockID" )
|
|
if (widget == txtWarpCoords) then
|
|
(
|
|
txtBlockID.text = widget.text
|
|
widget.text = ""
|
|
)
|
|
SetRAGBlockWidgets()
|
|
)
|
|
)
|
|
)
|
|
)
|
|
-- BLOCK/WARP EVENTS --
|
|
-- BLOCK_WIDGETS = #( gbxBlockGroupBox,chkIsolateBlock, ddlWarpToLocation, txtBlockID, btnWarpToSelection, chkAutoWarp, chkWarpStreamFromCamera, btnGetCameraPosition )
|
|
-- BLOCK_WIDGETS = #( gbxBlockGroupBox, chkIsolateBlock, ddlWarpToLocation, txtBlockID, chkCamPosHelper, btnWarpToSelection, chkAutoWarp,
|
|
-- chkWarpStreamFromCamera, chkFindObj, btnGetCameraPosition )
|
|
on chkIsolateBlock changed newState do ( SetRAGBlockWidgets warpCamera:false )
|
|
|
|
-- on txtBlockID entered newValue do ( ddlWarpSource.selection = 1 ; SetRAGBlockWidgets() )
|
|
-- on txtWarpCoords entered newValue do ( ddlWarpSource.selection = 2 ; SetRAGBlockWidgets() )
|
|
|
|
on txtBlockID entered newValue do ( CheckWarpText txtBlockID )
|
|
on txtWarpCoords entered newValue do ( CheckWarpText txtWarpCoords )
|
|
|
|
on chkDebugCamera changed newState do ( if (not newState) then (chkWarpCamera.checked = chkFindObjects.checked = false) ; SetRAGBlockWidgets() )
|
|
on chkWarpCamera changed newState do ( SetRAGBlockWidgets() )
|
|
on chkWarpCamera rightclick do if true then ( SetRAGBlockWidgets() ) else ( WarpToSelection (GetSelectionBounds()) )
|
|
on chkFindObjects changed newState do ( SetRAGBlockWidgets() )
|
|
on chkFindObjects rightlcick do if true then ( SetRAGBlockWidgets() ) else ( LookAtPoint (GetSelectionCoords()) )
|
|
|
|
on ddlWarpSource selected newSelection do ( SetRAGBlockWidgets() )
|
|
on ddlWarpToLocation selected newSelection do ( txtWarpCoords.text = warpPoints[newSelection].location as String ; ddlWarpSource.selection = 2 ; SetRAGBlockWidgets() )
|
|
on chkStreamFromCamera changed newState do ( SetRAGBlockWidgets warpCamera:false )
|
|
|
|
on chkCamPosHelper changed newState do ( GetCameraCoords() )
|
|
on chkCamPosHelper rightclick do ( chkCamPosHelper.checked = true ; GetCameraCoords coordChange:true )
|
|
|
|
|
|
-- LIGHTING EVENTS --
|
|
on chkLightCosts changed newState do ( if newState then ( ddlWireMode.selection = ( findItem ddlWireMode.items "Light Costs" ) ) ; SetRAGWireframeMode updateRAG:newState )-- SetLightingWidgets() )
|
|
on chkShowBudget changed newState do ( if (not newState) then ( chkTintLocal.checked = false ) ; SetLightingWidgets() )
|
|
on chkShowEntities changed newState do ( SetLightingWidgets() )
|
|
on chkLightInfo changed newState do ( SetLightingWidgets() )
|
|
|
|
on chkGlobalLightToggle changed newState do ( SetLightingWidgets() )
|
|
on chkLocalLightToggle changed newState do ( SetLightingWidgets() )
|
|
on chkLODLightToggle changed newState do ( SetLightingWidgets() )
|
|
on chkDistantLightToggle changed newState do ( SetLightingWidgets() )
|
|
on chkGlobalLightToggle rightclick do ( IsolateGroup chkGlobalLightToggle LIGHT_TOGGLE_CONTROLS ; SetLightingWidgets() )
|
|
on chkLocalLightToggle rightclick do ( IsolateGroup chkLocalLightToggle LIGHT_TOGGLE_CONTROLS ; SetLightingWidgets() )
|
|
on chkLODLightToggle rightclick do ( IsolateGroup chkLODLightToggle LIGHT_TOGGLE_CONTROLS ; SetLightingWidgets() )
|
|
on chkDistantLightToggle rightclick do ( IsolateGroup chkDistantLightToggle LIGHT_TOGGLE_CONTROLS ; SetLightingWidgets() )
|
|
|
|
on chkPointLightToggle changed newState do ( SetLightingWidgets checkLocalStates:true )
|
|
on chkSpotLightToggle changed newState do ( SetLightingWidgets checkLocalStates:true )
|
|
on chkCapsuleLightToggle changed newState do ( SetLightingWidgets checkLocalStates:true )
|
|
on chkOtherLightToggle changed newState do ( SetLightingWidgets checkLocalStates:true )
|
|
on chkPointLightToggle rightclick do ( IsolateGroup chkPointLightToggle LOCALLIGHT_TOGGLE_CONTROLS ; chkLocalLightToggle.checked = true ; SetLightingWidgets() )
|
|
on chkSpotLightToggle rightclick do ( IsolateGroup chkSpotLightToggle LOCALLIGHT_TOGGLE_CONTROLS ; chkLocalLightToggle.checked = true ; SetLightingWidgets() )
|
|
on chkCapsuleLightToggle rightclick do ( IsolateGroup chkCapsuleLightToggle LOCALLIGHT_TOGGLE_CONTROLS ; chkLocalLightToggle.checked = true ; SetLightingWidgets() )
|
|
on chkOtherLightToggle rightclick do ( IsolateGroup chkOtherLightToggle LOCALLIGHT_TOGGLE_CONTROLS ; chkLocalLightToggle.checked = true ; SetLightingWidgets() )
|
|
|
|
on chkTintLocal changed newState do ( chkShowBudget.checked = (chkShowBudget.checked or chkTintLocal.checked) ; SetLightingWidgets() )
|
|
on chkTintLOD changed newState do ( SetLightingWidgets() )
|
|
on chkHighlightDistant changed newState do ( SetLightingWidgets() )
|
|
|
|
|
|
-- WIREFRAME EVENTS --
|
|
-- WIREFRAME_WIDGETS = #( gbxWireframeGroupBox, chkWireToggle, ddlWireMode, ddlWireOption, txtWireframeFilterName, chkWireMatchExact,
|
|
-- chkWireLabel, trkWireOpacity, chkHiddenLabel, trkWireHidden, chkFillLabel, trkFillOpacity, chkOpacityLabel, trkOpacityMultiplier, trkDiffuseOverride )
|
|
-- WIREOPTION_TXD_WIDGETS = #( gbxWireOptionsGroupBox, pkrTXD1Colour, pkrTXD2Colour, pkrTXD3Colour, pkrTXD4Colour, txtTXD1Name, txtTXD2Name, txtTXD3Name, txtTXD4Name )
|
|
on chkWireToggle changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkWireMatchExact changed newState do ( SetRAGWireframeWidgets() )
|
|
|
|
on ddlWireMode selected newSelection do ( chkLightCosts.checked = (ddlWireMode.selected == "Light Costs") ; ShowOptionWidgets() ; SetRAGWireframeWidgets() ) -- SetRAGWireframeMode() )
|
|
on txtWireframeFilterName entered newValue do ( SetRAGWireframeMode() )
|
|
|
|
on chkWireLabel changed newState do ( SetRAGWireframeOpacity() )
|
|
on chkFillLabel changed newState do ( SetRAGWireframeOpacity() )
|
|
on chkOpacityLabel changed newState do ( SetRAGWireframeOpacity() )
|
|
on chkHiddenLabel changed newState do ( SetRAGWireframeOpacity() )
|
|
|
|
on trkWireOpacity mouseMove sender arg do ( TrackbarMouseEvent trkWireOpacity sender arg updateFunction:SetRAGWireframeOpacity ) -- ( if (arg.button == sender.mouseButtons.left) then (SetRAGWireframeOpacity()) )
|
|
on trkfillOpacity mouseMove sender arg do ( TrackbarMouseEvent trkfillOpacity sender arg updateFunction:SetRAGWireframeOpacity ) -- ( if (arg.button == sender.mouseButtons.left) then (SetRAGWireframeOpacity()) )
|
|
on trkWireHidden mouseMove sender arg do ( TrackbarMouseEvent trkWireHidden sender arg updateFunction:SetRAGWireframeOpacity ) -- ( if (arg.button == sender.mouseButtons.left) then (SetRAGWireframeOpacity()) )
|
|
on trkOpacityMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkOpacityMultiplier sender arg updateFunction:SetRAGWireframeOpacity ) -- ( if (arg.button == sender.mouseButtons.left) then (SetRAGWireframeOpacity()) )
|
|
|
|
on trkWireOpacity mouseUp sender arg do ( TrackbarMouseEvent trkWireOpacity sender arg updateFunction:SetRAGWireframeOpacity )
|
|
on trkfillOpacity mouseUp sender arg do ( TrackbarMouseEvent trkfillOpacity sender arg updateFunction:SetRAGWireframeOpacity )
|
|
on trkWireHidden mouseUp sender arg do ( TrackbarMouseEvent trkWireHidden sender arg updateFunction:SetRAGWireframeOpacity )
|
|
on trkOpacityMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkOpacityMultiplier sender arg updateFunction:SetRAGWireframeOpacity )
|
|
|
|
|
|
|
|
-- WIREFRAME OPTIONS --
|
|
-- LOD LEVEL OPTIONS --
|
|
on chkOrphanColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkLODColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSLOD1Colour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSLOD2Colour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSLOD3Colour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSLOD4Colour changed newState do ( SetRAGWireframeWidgets() )
|
|
|
|
on chkOrphanColour rightclick do ( IsolateGroup chkOrphanColour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkHDColour rightclick do ( IsolateGroup chkHDColour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkLODColour rightclick do ( IsolateGroup chkLODColour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSLOD1Colour rightclick do ( IsolateGroup chkSLOD1Colour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSLOD2Colour rightclick do ( IsolateGroup chkSLOD2Colour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSLOD3Colour rightclick do ( IsolateGroup chkSLOD3Colour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSLOD4Colour rightclick do ( IsolateGroup chkSLOD4Colour WIRE_LOD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on trkOrphanMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkOrphanMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkOrphanMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkOrphanMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkHDMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkHDMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkLODMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkLODMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkLODMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkLODMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkSLOD1Multiplier mouseMove sender arg do ( TrackbarMouseEvent trkSLOD1Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkSLOD1Multiplier mouseUp sender arg do ( TrackbarMouseEvent trkSLOD1Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkLoSLODsMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkLoSLODsMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkLoSLODsMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkLoSLODsMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- RENDER PASS OPTIONS --
|
|
on chkOpaqueColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkWaterColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkAlphaColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkDecalColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkCutoutColour changed newState do ( SetRAGWireframeWidgets() )
|
|
|
|
on chkOpaqueColour rightclick do ( IsolateGroup chkOpaqueColour WIRE_BUCKET_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkWaterColour rightclick do ( IsolateGroup chchkWaterColourkHDColour WIRE_BUCKET_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkAlphaColour rightclick do ( IsolateGroup chkAlphaColour WIRE_BUCKET_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkDecalColour rightclick do ( IsolateGroup chkDecalColour WIRE_BUCKET_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkCutoutColour rightclick do ( IsolateGroup chkCutoutColour WIRE_BUCKET_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on trkOpaqueMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkOpaqueMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkOpaqueMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkOpaqueMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkAlphaMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkAlphaMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkAlphaMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkAlphaMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkDecalMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkDecalMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkDecalMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkDecalMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkCutoutMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkCutoutMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkCutoutMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkCutoutMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkWaterMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkWaterMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkWaterMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkWaterMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- TXD NAME OPTIONS --
|
|
on chkTXD1Colour changed newState do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeWidgets() )
|
|
on chkTXD2Colour changed newState do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeWidgets() )
|
|
on chkTXD3Colour changed newState do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeWidgets() )
|
|
on chkTXD4Colour changed newState do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeWidgets() )
|
|
|
|
on chkTXD1Colour rightclick do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; IsolateGroup chkTXD1Colour WIRE_TXD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTXD2Colour rightclick do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; IsolateGroup chkTXD2Colour WIRE_TXD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTXD3Colour rightclick do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; IsolateGroup chkTXD3Colour WIRE_TXD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTXD4Colour rightclick do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; IsolateGroup chkTXD4Colour WIRE_TXD_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on txtTXD1Name entered newValue do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeMode() )
|
|
on txtTXD2Name entered newValue do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeMode() )
|
|
on txtTXD3Name entered newValue do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeMode() )
|
|
on txtTXD4Name entered newValue do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; SetRAGWireframeMode() )
|
|
|
|
on trkTXD1Multiplier mouseMove sender arg do ( TrackbarMouseEvent trkTXD1Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD1Multiplier mouseUp sender arg do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; TrackbarMouseEvent trkTXD1Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD2Multiplier mouseMove sender arg do ( TrackbarMouseEvent trkTXD2Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD2Multiplier mouseUp sender arg do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; TrackbarMouseEvent trkTXD2Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD3Multiplier mouseMove sender arg do ( TrackbarMouseEvent trkTXD3Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD3Multiplier mouseUp sender arg do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; TrackbarMouseEvent trkTXD3Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD4Multiplier mouseMove sender arg do ( TrackbarMouseEvent trkTXD4Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTXD4Multiplier mouseUp sender arg do ( ddlWireMode.selection = (findItem ddlWireMode.items "TXD Name") ; TrackbarMouseEvent trkTXD4Multiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- HD STATE OPTIONS --
|
|
on chkIsHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkUsingHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSharedHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkCapableHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkSwitchingHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkNotHDColour changed newState do ( SetRAGWireframeWidgets() )
|
|
|
|
on chkIsHDColour rightclick do ( IsolateGroup chkIsHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkUsingHDColour rightclick do ( IsolateGroup chkUsingHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSharedHDColour rightclick do ( IsolateGroup chkSharedHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkCapableHDColour rightclick do ( IsolateGroup chkCapableHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkSwitchingHDColour rightclick do ( IsolateGroup chkSwitchingHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkNotHDColour rightclick do ( IsolateGroup chkNotHDColour WIRE_HDSTATE_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on trkUsingHDMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkUsingHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkUsingHDMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkUsingHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkSharedHDMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkSharedHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkSharedHDMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkSharedHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkCapableHDMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkCapableHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkCapableHDMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkCapableHDMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- SHADER OPTIONS --
|
|
on chkUseShaderFilter changed newState do ( IsolateGroup chkUseShaderFilter WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkPXMShader changed newState do ( IsolateGroup chkPXMShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkUberShader changed newState do ( IsolateGroup chkUberShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkStandard2lyrShader changed newState do ( IsolateGroup chkStandard2lyrShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkWaterShader changed newState do ( IsolateGroup chkWaterShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkMudShader changed newState do ( IsolateGroup chkMudShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkDefaultShader changed newState do ( IsolateGroup chkDefaultShader WIREOPTION_SHADER_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
|
|
on trkUberLookup mouseMove sender arg do ( TrackbarMouseEvent trkUberLookup sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkUberLookup mouseUp sender arg do ( TrackbarMouseEvent trkUberLookup sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- OBJECT ATTRIBUTES --
|
|
on chkIsProp changed newState do ( IsolateGroup chkIsProp WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkIsFrag changed newState do ( IsolateGroup chkIsFrag WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkLowPriority changed newState do ( IsolateGroup chkLowPriority WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkIsDoor changed newState do ( IsolateGroup chkIsDoor WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkNoShadow changed newState do ( IsolateGroup chkNoShadow WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkNoReflect changed newState do ( IsolateGroup chkNoReflect WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkIsDynamic changed newState do ( IsolateGroup chkIsDynamic WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkAlphaFading changed newState do ( IsolateGroup chkAlphaFading WIREOPTION_ATTRIBUTES_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
|
|
-- PROP PRIORITY LEVEL --
|
|
on chkPriorityRequired changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkPriorityHigh changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkPriorityMedium changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkPriorityLow changed newState do ( SetRAGWireframeWidgets() )
|
|
-- on chkPriorityStatic changed newState do ( SetRAGWireframeWidgets() )
|
|
-- on chkPriorityNotAProp changed newState do ( SetRAGWireframeWidgets() )
|
|
-- on chkPriorityInvalid changed newState do ( SetRAGWireframeWidgets() )
|
|
|
|
on chkPriorityRequired rightclick do ( IsolateGroup chkPriorityRequired WIREOPTION_PRIORITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkPriorityHigh rightclick do ( IsolateGroup chkPriorityHigh WIREOPTION_PRIORITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkPriorityMedium rightclick do ( IsolateGroup chkPriorityMedium WIREOPTION_PRIORITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkPriorityLow rightclick do ( IsolateGroup chkPriorityLow WIREOPTION_PRIORITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on trkPriorityRequired mouseMove sender arg do ( TrackbarMouseEvent trkPriorityRequired sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityRequired mouseUp sender arg do ( TrackbarMouseEvent trkPriorityRequired sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityHigh mouseMove sender arg do ( TrackbarMouseEvent trkPriorityHigh sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityHigh mouseUp sender arg do ( TrackbarMouseEvent trkPriorityHigh sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityMedium mouseMove sender arg do ( TrackbarMouseEvent trkPriorityMedium sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityMedium mouseUp sender arg do ( TrackbarMouseEvent trkPriorityMedium sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityLow mouseMove sender arg do ( TrackbarMouseEvent trkPriorityLow sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkPriorityLow mouseUp sender arg do ( TrackbarMouseEvent trkPriorityLow sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityStatic mouseMove sender arg do ( TrackbarMouseEvent trkPriorityStatic sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityStatic mouseUp sender arg do ( TrackbarMouseEvent trkPriorityStatic sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityNotAProp mouseMove sender arg do ( TrackbarMouseEvent trkPriorityNotAProp sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityNotAProp mouseUp sender arg do ( TrackbarMouseEvent trkPriorityNotAProp sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityInvalid mouseMove sender arg do ( TrackbarMouseEvent trkPriorityInvalid sender arg updateFunction:SetRAGWireframeWidgets )
|
|
-- on trkPriorityInvalid mouseUp sender arg do ( TrackbarMouseEvent trkPriorityInvalid sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
-- TEXTURE DENSITY --
|
|
on chkTexDensityXMinColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkTexDensityMinColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkTexDensityMidColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkTexDensityMaxColour changed newState do ( SetRAGWireframeWidgets() )
|
|
on chkTexDensityXMaxColour changed newState do ( SetRAGWireframeWidgets() )
|
|
-- Doesn't make a great deal of sense to isolate any of these, but since it's a general thing, doing it anyway
|
|
on chkTexDensityXMinColour rightclick do ( IsolateGroup chkTexDensityXMinColour WIREOPTION_TEXDENSITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTexDensityMinColour rightclick do ( IsolateGroup chkTexDensityMinColour WIREOPTION_TEXDENSITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTexDensityMidColour rightclick do ( IsolateGroup chkTexDensityMidColour WIREOPTION_TEXDENSITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTexDensityMaxColour rightclick do ( IsolateGroup chkTexDensityMaxColour WIREOPTION_TEXDENSITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
on chkTexDensityXMaxColour rightclick do ( IsolateGroup chkTexDensityXMaxColour WIREOPTION_TEXDENSITY_CONTROLS ; SetRAGWireframeWidgets() )
|
|
|
|
on trkTexDensityXMinMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkTexDensityXMinMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityXMinMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkTexDensityXMinMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMinMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkTexDensityMinMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMinMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkTexDensityMinMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMidMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkTexDensityMidMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMidMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkTexDensityMidMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMaxMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkTexDensityMaxMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityMaxMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkTexDensityMaxMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityXMaxMultiplier mouseMove sender arg do ( TrackbarMouseEvent trkTexDensityXMaxMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkTexDensityXMaxMultiplier mouseUp sender arg do ( TrackbarMouseEvent trkTexDensityXMaxMultiplier sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
on txtTextureMinSize entered newValue do ( setTrackBarValue txtTextureMinSize trkTextureMinSize logNeeded:true ; SetRAGWireframeWidgets() )
|
|
on trkTextureMinSize mouseMove sender arg do ( TrackbarMouseEvent trkTextureMinSize sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
on trkTextureMinSize mouseUp sender arg do ( TrackbarMouseEvent trkTextureMinSize sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
|
|
on txtTextureDensityMin entered newValue do ( setTrackBarValue txtTextureDensityMin trkTextureDensityMin ; SetRAGWireframeWidgets() )
|
|
on txtTextureDensityMax entered newValue do ( setTrackBarValue txtTextureDensityMax trkTextureDensityMax ; SetRAGWireframeWidgets() )
|
|
|
|
on trkTextureDensityMin mouseMove sender arg do ( TrackbarMouseEvent trkTextureDensityMin sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
on trkTextureDensityMin mouseUp sender arg do ( TrackbarMouseEvent trkTextureDensityMin sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
on trkTextureDensityMax mouseMove sender arg do ( TrackbarMouseEvent trkTextureDensityMax sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
on trkTextureDensityMax mouseUp sender arg do ( TrackbarMouseEvent trkTextureDensityMax sender arg updateFunction:SetRAGWireframeWidgets ; ShowOptionWidgets() )
|
|
|
|
on chkUseLogScale changed newState do ( SetRAGWireframeWidgets() )
|
|
on trkDensityShift mouseMove sender arg do ( TrackbarMouseEvent trkDensityShift sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkDensityShift mouseUp sender arg do ( TrackbarMouseEvent trkDensityShift sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- OVERDRAW --
|
|
--on trkOverdrawMin mouseMove sender arg do ( TrackbarMouseEvent trkOverdrawMin sender arg updateFunction:SetRAGWireframeWidgets )
|
|
--on trkOverdrawMin mouseUp sender arg do ( TrackbarMouseEvent trkOverdrawMin sender arg updateFunction:SetRAGWireframeWidgets )
|
|
--on trkOverdrawMax mouseMove sender arg do ( TrackbarMouseEvent trkOverdrawMax sender arg updateFunction:SetRAGWireframeWidgets )
|
|
--on trkOverdrawMax mouseUp sender arg do ( TrackbarMouseEvent trkOverdrawMax sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on chkOverdraw changed newValue do ( SetRAGWireframeOpacity() )
|
|
on spnOverdrawMin changed newValue do ( SetRAGWireframeMode() )
|
|
on spnOverdrawMax changed newValue do ( SetRAGWireframeMode() )
|
|
on btnOverdrawMin pressed do ( spnOverdrawMin.value = 0 ; SetRAGWireframeMode() )
|
|
on btnOverdrawMax pressed do ( spnOverdrawMax.value = 20 ; SetRAGWireframeMode() )
|
|
on trkOverdrawOpacity mouseMove sender arg do ( TrackbarMouseEvent trkOverdrawOpacity sender arg updateFunction:SetRAGWireframeWidgets )
|
|
on trkOverdrawOpacity mouseUp sender arg do ( TrackbarMouseEvent trkOverdrawOpacity sender arg updateFunction:SetRAGWireframeWidgets )
|
|
|
|
|
|
-- LIGHT COSTS --
|
|
on chkLightCost changed newState do ( SetRAGWireframeMode() )
|
|
on spnLightCostMin changed newValue do ( SetRAGWireframeMode() )
|
|
on spnLightCostMax changed newWalue do ( SetRAGWireframeMode() )
|
|
on btnLightCostMin pressed do ( spnLightCostMin.value = 1 ; SetRAGWireframeMode() )
|
|
on btnLightCostMax pressed do ( spnLightCostMax.value = 8 ; SetRAGWireframeMode() )
|
|
on trkLightCostOpacity mouseMove sender arg do ( TrackbarMouseEvent trkLightCostOpacity sender arg updateFunction:SetRAGWireframeMode )
|
|
on trkLightCostOpacity mouseUp sender arg do ( TrackbarMouseEvent trkOverdrawOpacity sender arg updateFunction:SetRAGWireframeMode )
|
|
|
|
|
|
-- COLOR PER... --
|
|
on chkColourPerEntity changed newState do ( IsolateGroup chkColourPerEntity WIREOPTION_MULTICOLOUR_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkColourPerTXD changed newState do ( IsolateGroup chkColourPerTXD WIREOPTION_MULTICOLOUR_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkColourPerShader changed newState do ( IsolateGroup chkColourPerShader WIREOPTION_MULTICOLOUR_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
on chkColourPerDrawCall changed newState do ( IsolateGroup chkColourPerDrawCall WIREOPTION_MULTICOLOUR_WIDGETS force:true ; SetRAGWireframeMode() )
|
|
|
|
|
|
-- OTHER EVENTS (IN THE CURRENTLY PLACEHOLDER ROW) --
|
|
on chkPreviewEnable changed newState do ( SetOtherRAGWidgets() )
|
|
on btnFlushScene pressed do ( FlushPreview() )
|
|
|
|
on chkFloatingObjects changed newState do ( SetOtherRAGWidgets() )
|
|
on chkObjectDensityToggle changed newState do ( SetOtherRAGWidgets() )
|
|
on chkDrawListToggle changed newState do ( SetOtherRAGWidgets() )
|
|
on chkBudgetToggle changed newState do ( SetOtherRAGWidgets() )
|
|
on chkHDTexturesToggle changed newState do ( SetOtherRAGWidgets() )
|
|
|
|
on chkPOMEnable changed newState do ( SetOtherRAGWidgets() )
|
|
on chkShowPOMBlend changed newState do ( SetOtherRAGWidgets() )
|
|
on chkShowPOMCurve changed newState do ( SetOtherRAGWidgets() )
|
|
on chkShowPOMFade changed newState do ( SetOtherRAGWidgets() )
|
|
|
|
|
|
-- LOD HIERARCHY EVENTS --
|
|
-- LOD_WIDGETS = #( gbxLODHierarchyGroupBox, chkOrphanToggle, chkHDToggle, chkLODToggle, chkSLOD1Toggle, chkSLOD2Toggle, chkSLOD3Toggle, chkSLOD4Toggle,
|
|
-- ddlLODLevel, ddlLODFunction, chkLODMultiplierToggle, spnLODMultiplier, chkLODTree, chkLODInfo, chkLODSphere, chkEnableTweak, ddlTweakType, spnTweakValue )
|
|
on chkOrphanToggle changed newState do ( SetRAGLODWidgets sender:chkOrphanToggle )
|
|
on chkHDToggle changed newState do ( SetRAGLODWidgets sender:chkHDToggle )
|
|
on chkLODToggle changed newState do ( SetRAGLODWidgets sender:chkLODToggle )
|
|
on chkSLOD1Toggle changed newState do ( SetRAGLODWidgets sender:chkSLOD1Toggle )
|
|
on chkSLOD2Toggle changed newState do ( SetRAGLODWidgets sender:chkSLOD2Toggle )
|
|
on chkSLOD3Toggle changed newState do ( SetRAGLODWidgets sender:chkSLOD3Toggle )
|
|
on chkSLOD4Toggle changed newState do ( SetRAGLODWidgets sender:chkSLOD4Toggle )
|
|
|
|
on chkOrphanToggle rightclick do ( IsolateGroup chkOrphanToggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkOrphanToggle )
|
|
on chkHDToggle rightclick do ( IsolateGroup chkHDToggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkHDToggle )
|
|
on chkLODToggle rightclick do ( IsolateGroup chkLODToggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkLODToggle )
|
|
on chkSLOD1Toggle rightclick do ( IsolateGroup chkSLOD1Toggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkSLOD1Toggle )
|
|
on chkSLOD2Toggle rightclick do ( IsolateGroup chkSLOD2Toggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkSLOD2Toggle )
|
|
on chkSLOD3Toggle rightclick do ( IsolateGroup chkSLOD3Toggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkSLOD3Toggle )
|
|
on chkSLOD4Toggle rightclick do ( IsolateGroup chkSLOD4Toggle LOD_CONTROLS ; SetRAGLODWidgets sender:chkSLOD4Toggle )
|
|
|
|
on ddlLODLevel selected newSelection do ( SetRAGLODWidgets sender:ddlLODLevel )
|
|
on ddlLODFunction selected newSelection do ( SetRAGLODWidgets sender:ddlLODFunction )
|
|
|
|
on chkLODMultiplierToggle changed newState do ( SetRAGLODWidgets() )
|
|
on spnLODMultiplier changed newValue do ( SetRAGLODWidgets() )
|
|
|
|
on chkLODSphere changed newState do ( SetRAGLODWidgets() )
|
|
on chkLODTree changed newState do ( SetRAGLODWidgets() )
|
|
on chkLODInfo changed newState do ( SetRAGLODWidgets() )
|
|
|
|
on chkEnableTweak changed newState do ( SetRAGLODTweak valueChanged:false )
|
|
on ddlTweakType selected newSelection do ( SetRAGLODTweak valueChanged:false )
|
|
on spnTweakValue changed newValue do ( SetRAGLODTweak valueChanged:true )
|
|
|
|
|
|
|
|
-- WEATHER/TIME EVENTS --
|
|
on spnTODHours changed newValue do ( chkTimeLock.checked = true ; SetRAGTimeCycleWidgets updateRAG:true updateSpinners:false )
|
|
on spnToDMinutes changed newValue do ( chkTimeLock.checked = true ; SetRAGTimeCycleWidgets updateRAG:true updateSpinners:false )
|
|
on spnToDMinutes rightclick do ( spnToDMinutes.value = 0.0 ; chkTimeLock.checked = true ; SetRAGTimeCycleWidgets updateRAG:true updateSpinners:false )
|
|
|
|
on ddlWeatherPrev selected newSelection do
|
|
(
|
|
if ((trkWeatherTransition.value == 100) and (ddlWeatherNext.enabled)) then ( trkWeatherTransition.value = 0 )
|
|
SetRAGTimeCycleWidgets updateRAG:true updateSpinners:true
|
|
)
|
|
on ddlWeatherPrev rightclick do ( ddlWeatherNext.enabled = not ddlWeatherNext.enabled ; SetRAGTimeCycleWidgets updateRAG:true updateSpinners:true )
|
|
on ddlWeatherNext selected newSelection do
|
|
(
|
|
if (trkWeatherTransition.value == 0) then ( trkWeatherTransition.value = 100 )
|
|
SetRAGTimeCycleWidgets updateRAG:true updateSpinners:true
|
|
)
|
|
|
|
on chkTimeLock changed newValue do ( SetRAGTimeCycleWidgets updateRAG:true updateSpinners:true )
|
|
on trkTimeOfDay mouseMove sender arg do ( TrackbarMouseEvent trkTimeOfDay sender arg updateFunction:SetRAGTimeCycleWidgets )
|
|
on trkTimeOfDay mouseUp sender arg do ( chkTimeLock.checked = true ; TrackbarMouseEvent trkTimeOfDay sender arg updateFunction:SetRAGTimeCycleWidgets )
|
|
|
|
on trkWeatherTransition mouseMove sender arg do ( TrackbarMouseEvent trkWeatherTransition sender arg updateFunction:SetRAGTimeCycleWidgets )
|
|
on trkWeatherTransition mouseUp sender arg do ( TrackbarMouseEvent trkWeatherTransition sender arg updateFunction:SetRAGTimeCycleWidgets )
|
|
|
|
|
|
|
|
-- TEXTURE VIEWER EVENTS --
|
|
on chkTexViewerToggle changed newState do ( SetRAGTexViewerWidgets() )
|
|
on ddlTexViewerSearchType selected newSelection do ( SetRAGTexViewerWidgets() )
|
|
on chkTexViewerExact changed newState do ( SetRAGTexViewerWidgets runSearch:true )
|
|
on txtTexViewerSearch entered newValue do ( SetRAGTexViewerWidgets runSearch:true )
|
|
|
|
|
|
|
|
-- OCCLUSION/CULLBOX/GBUFFER EVENTS --
|
|
-- OCCLUSION_WIDGETS = #( gbxOcclusionGroupBox, chkOcclOff, ddlOcclMode, chkOcclFlip )
|
|
-- CULLBOX_WIDGETS = #( gbxCullBoxGroupBox, chkCullBoxesOn, chkCullBoxEditor, btnFindCullBox, btnWarpToCullBox )
|
|
-- GBUF_WIDGETS = #( gbxGBuffGroupBox, ddlGBuffer, ddlGBufferLocation )
|
|
on chkOcclOff changed newState do ( SetRAGMiscModeWidgets() )
|
|
on ddlOcclMode selected newSelection do ( SetRAGMiscModeWidgets() )
|
|
on chkOcclFlip changed newState do ( SetRAGMiscModeWidgets() )
|
|
|
|
|
|
on chkCullBoxesOn changed newState do ( SetRAGMiscModeWidgets() )
|
|
on chkCullBoxEditor changed newState do ( SetRAGMiscModeWidgets() )
|
|
on btnFindCullBox pressed do ( SetRAGMiscModeWidgets() )
|
|
on btnWarpToCullBox pressed do ( SetRAGMiscModeWidgets() )
|
|
|
|
on ddlGBuffer selected newSelection do ( SetRAGMiscModeWidgets() )
|
|
on ddlGBufferLocation selected newSelection do ( SetRAGMiscModeWidgets() )
|
|
|
|
on chkLightOverride changed newState do ( SetRAGMiscModeWidgets() )
|
|
on chkDiffuseOverride changed newState do ( SetRAGMiscModeWidgets() )
|
|
on chkTintOverride changed newState do ( SetRAGMiscModeWidgets() )
|
|
on chkLightOverride rightclick do ( IsolateGroup chkLightOverride GBUF_CONTROLS ; SetRAGMiscModeWidgets() )
|
|
on chkDiffuseOverride rightclick do ( IsolateGroup chkDiffuseOverride GBUF_CONTROLS ; SetRAGMiscModeWidgets() )
|
|
on chkTintOverride rightclick do ( IsolateGroup chkTintOverride GBUF_CONTROLS ; SetRAGMiscModeWidgets() )
|
|
|
|
on trkDiffuseOverride mouseMove sender arg do ( TrackbarMouseEvent trkDiffuseOverride sender arg updateFunction:SetRAGMiscModeWidgets )
|
|
on trkDiffuseOverride mouseUp sender arg do ( TrackbarMouseEvent trkDiffuseOverride sender arg updateFunction:SetRAGMiscModeWidgets )
|
|
on trkDarkOverride mouseMove sender arg do ( TrackbarMouseEvent trkDarkOverride sender arg updateFunction:SetRAGMiscModeWidgets )
|
|
on trkDarkOverride mouseUp sender arg do ( TrackbarMouseEvent trkDarkOverride sender arg updateFunction:SetRAGMiscModeWidgets )
|
|
|
|
-- GEO TOGGLE EVENTS --
|
|
on chkVisBuildingsToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisInteriorToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisTerrainToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisIPTreesToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisIPGrassToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisWaterToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisObjectsToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisDummiesToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisVehiclesToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisPedsToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
|
|
on chkVisBuildingsToggle rightclick do ( IsolateGroup chkVisBuildingsToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisInteriorToggle rightclick do ( IsolateGroup chkVisInteriorToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisTerrainToggle rightclick do ( IsolateGroup chkVisTerrainToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisIPTreesToggle rightclick do ( IsolateGroup chkVisIPTreesToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisIPGrassToggle rightclick do ( IsolateGroup chkVisIPGrassToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisObjectsToggle rightclick do ( IsolateGroup chkVisObjectsToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisDummiesToggle rightclick do ( IsolateGroup chkVisDummiesToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisWaterToggle rightclick do ( IsolateGroup chkVisWaterToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisVehiclesToggle rightclick do ( IsolateGroup chkVisVehiclesToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisPedsToggle rightclick do ( IsolateGroup chkVisPedsToggle GEOTYPE_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
|
|
-- RENDER PASS EVENTS --
|
|
on chkVisOpaqueToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisAlphaToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisDecalToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkVisCutoutToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
|
|
on chkVisFXToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
on chkShadowToggle changed newState do ( SetRAGVisibilityWidgets() )
|
|
|
|
on chkVisOpaqueToggle rightclick do ( IsolateGroup chkVisOpaqueToggle RENDERPASS_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisAlphaToggle rightclick do ( IsolateGroup chkVisAlphaToggle RENDERPASS_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisDecalToggle rightclick do ( IsolateGroup chkVisDecalToggle RENDERPASS_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
on chkVisCutoutToggle rightclick do ( IsolateGroup chkVisCutoutToggle RENDERPASS_WIDGETS ; SetRAGVisibilityWidgets() )
|
|
|
|
-- COLLISION EVENTS --
|
|
on chkSolidCollision changed newState do ( SetRAGVisibilityWidgets() )
|
|
on ddlCollisionType selected newSelection do ( SetRAGVisibilityWidgets() )
|
|
on ddlOtherType selected newSelection do ( if (newSelection > 1) then ( chkSolidCollision.checked = false ) ; SetRAGVisibilityWidgets() )
|
|
|
|
on ddlCollisionType rightclick do ( ddlCollisionType.selection = 1 ; ddlOtherType.selection = 1 ; SetRAGVisibilityWidgets() )
|
|
on ddlOtherType rightclick do ( ddlCollisionType.selection = 1 ; ddlOtherType.selection = 1 ; SetRAGVisibilityWidgets() )
|
|
|
|
-- Dialog Events --
|
|
on RsTinyRAG open do
|
|
(
|
|
banner.setup()
|
|
if DEBUG_ADD_WIDGET_LABELS then ( AddLabelsToTooltips() )
|
|
|
|
-- Initialise the dotNet trackbars
|
|
InitDotNetTrackbarControl trkWireOpacity value:20 width:TR_WIRE_BAR_WIDTH height:17 maxVal:100 intervals:5
|
|
InitDotNetTrackbarControl trkFillOpacity value:60 width:TR_WIRE_BAR_WIDTH height:17 maxVal:100 intervals:5
|
|
InitDotNetTrackbarControl trkOpacityMultiplier value:40 width:TR_WIRE_BAR_WIDTH height:17 maxVal:100 intervals:5
|
|
InitDotNetTrackbarControl trkWireHidden value:10 width:TR_WIRE_BAR_WIDTH height:17 maxVal:100 intervals:5
|
|
|
|
InitDotNetTrackbarControl trkOrphanMultiplier value:100 width:50 height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkHDMultiplier value:100 width:50 height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkLODMultiplier value:100 width:50 height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkSLOD1Multiplier value:100 width:50 height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkLoSLODsMultiplier value:100 width:(TR_WIRE_BUTTON_HEIGHT+TR_WIRE_HALFOPTION_WIDTH-33) height:17 minVal:4 maxVal:100 intervals:6 vertical:true
|
|
|
|
InitDotNetTrackbarControl trkTXD1Multiplier value:100 width:TR_WIRE_OPTIONSLIDER_WIDTH height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkTXD2Multiplier value:100 width:TR_WIRE_OPTIONSLIDER_WIDTH height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkTXD3Multiplier value:100 width:TR_WIRE_OPTIONSLIDER_WIDTH height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkTXD4Multiplier value:100 width:TR_WIRE_OPTIONSLIDER_WIDTH height:17 minVal:4 maxVal:100 intervals:6
|
|
|
|
InitDotNetTrackbarControl trkUberLookup value:0 width:(TR_WIREOPTIONS_WIDTH-TR_WIREOPTION_HALFBUTTON_WIDTH-TR_GROUP_HBORDERS-4) height:18 minVal:-100 maxVal:100 intervals:4
|
|
|
|
InitDotNetTrackbarControl trkOpaqueMultiplier value:100 width:(TR_WIREOPTIONS_WIDTH-TR_WIRE_BUTTON_HEIGHT-TR_LARGE_GAP-TR_GROUP_HBORDERS-40-22) height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkAlphaMultiplier value:100 width:(TR_WIREOPTIONS_WIDTH-TR_WIRE_BUTTON_HEIGHT-TR_LARGE_GAP-TR_GROUP_HBORDERS-40-22) height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkDecalMultiplier value:100 width:(TR_WIREOPTIONS_WIDTH-TR_WIRE_BUTTON_HEIGHT-TR_LARGE_GAP-TR_GROUP_HBORDERS-40-22) height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkCutoutMultiplier value:100 width:76 height:17 minVal:4 maxVal:100 intervals:3
|
|
InitDotNetTrackbarControl trkWaterMultiplier value:100 width:((TR_WIRE_BUTTON_HEIGHT+TR_SMALL_GAP)*3) height:17 minVal:4 maxVal:100 intervals:3 vertical:true
|
|
|
|
InitDotNetTrackbarControl trkUsingHDMultiplier value:100 width:(TR_WIRE_OPTIONSLIDER_WIDTH+30) height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkSharedHDMultiplier value:100 width:(TR_WIRE_OPTIONSLIDER_WIDTH+30) height:17 minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkCapableHDMultiplier value:100 width:(TR_WIRE_OPTIONSLIDER_WIDTH+30) height:17 minVal:4 maxVal:100 intervals:6
|
|
|
|
InitDotNetTrackbarControl trkPriorityRequired value:52 width:(TR_WIREOPTION_BUTTON_WIDTH-TR_WIRE_BUTTON_HEIGHT-62) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkPriorityHigh value:100 width:(TR_WIREOPTION_BUTTON_WIDTH-TR_WIRE_BUTTON_HEIGHT-62) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkPriorityMedium value:100 width:(TR_WIREOPTION_BUTTON_WIDTH-TR_WIRE_BUTTON_HEIGHT-62) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkPriorityLow value:100 width:(TR_WIREOPTION_BUTTON_WIDTH-TR_WIRE_BUTTON_HEIGHT-62) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
|
|
InitDotNetTrackbarControl trkTexDensityXMinMultiplier value:36 width:(TR_WIRE_HEIGHT - TR_GROUP_BORDERS - TR_WIRE_BUTTON_HEIGHT - 2) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6 vertical:true
|
|
InitDotNetTrackbarControl trkTexDensityMinMultiplier value:52 width:(TR_WIRE_HEIGHT - TR_GROUP_BORDERS - TR_WIRE_BUTTON_HEIGHT - 2) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6 vertical:true
|
|
InitDotNetTrackbarControl trkTexDensityMidMultiplier value:36 width:(TR_WIRE_HEIGHT - TR_GROUP_BORDERS - TR_WIRE_BUTTON_HEIGHT - 2) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6 vertical:true
|
|
InitDotNetTrackbarControl trkTexDensityMaxMultiplier value:84 width:(TR_WIRE_HEIGHT - TR_GROUP_BORDERS - TR_WIRE_BUTTON_HEIGHT - 2) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6 vertical:true
|
|
InitDotNetTrackbarControl trkTexDensityXMaxMultiplier value:84 width:(TR_WIRE_HEIGHT - TR_GROUP_BORDERS - TR_WIRE_BUTTON_HEIGHT - 2) height:(TR_WIRE_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6 vertical:true
|
|
|
|
InitDotNetTrackbarControl trkTextureMinSize value:6 width:TR_WIREOPTION_DENSITY_WIDTH height:17 minVal:0 maxVal:12 intervals:4
|
|
InitDotNetTrackbarControl trkTextureDensityMin value:64 width:TR_WIREOPTION_DENSITY_WIDTH height:17 minVal:0 maxVal:4096 intervals:8
|
|
InitDotNetTrackbarControl trkTextureDensityMax value:1024 width:TR_WIREOPTION_DENSITY_WIDTH height:17 minVal:0 maxVal:4096 intervals:8
|
|
|
|
InitDotNetTrackbarControl trkDensityShift value:0 width:TR_WIREOPTION_DENSITY_WIDTH height:17 minVal:(-100) maxVal:100 intervals:4
|
|
|
|
InitDotNetTrackbarControl trkTimeOfDay value:120 width:TR_TIMEBAR_WIDTH height:(TR_SMALL_BUTTON_HEIGHT-2) maxVal:240 intervals:6
|
|
InitDotNetTrackbarControl trkWeatherTransition value:0 width:TR_LARGE_BUTTON_HEIGHT height:TR_TRACKBAR_HEIGHT maxVal:100 intervals:4 vertical:true
|
|
|
|
InitDotNetTrackbarControl trkDiffuseOverride value:100 width:TR_GBUF_TRACKBAR_WIDTH height:(TR_SMALL_BUTTON_HEIGHT-2) minVal:0 maxVal:100 intervals:5
|
|
InitDotNetTrackbarControl trkDarkOverride value:100 width:TR_LARGE_BUTTON_HEIGHT height:(TR_SMALL_BUTTON_HEIGHT-2) minVal:0 maxVal:100 intervals:4 vertical:true
|
|
|
|
InitDotNetTrackbarControl trkOverdrawOpacity value:60 width:(TR_WIREOPTION_BUTTON_WIDTH-100-TR_SMALL_GAP) height:(TR_SMALL_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
InitDotNetTrackbarControl trkLightCostOpacity value:60 width:(TR_WIREOPTION_BUTTON_WIDTH-100-TR_SMALL_GAP) height:(TR_SMALL_BUTTON_HEIGHT-2) minVal:4 maxVal:100 intervals:6
|
|
|
|
-- Setup the initial widget offsets based on their position relative to their group
|
|
initialWidgetOffsets = GetInitialWidgetOffsets()
|
|
|
|
-- Find the Wireframe row, which shuold contain the WireOptions
|
|
for rowID = 1 to (ALL_WIDGETS.count) do
|
|
(
|
|
if (ALL_WIDGETS[rowID][(ALL_WIDGETS[rowID]).count] == chkWireframeBank) then ( wireOptionRow = rowID )
|
|
)
|
|
|
|
-- Set up the wire mode dropdrown (with fake separators)
|
|
ddlWireMode.selection = 1 -- Default to Picker Mode
|
|
for char = 1 to (TR_WIREMODE_WIDTH / 4) do (format "-" to:SEPARATOR)
|
|
ddlWiremode.items = (for mode in wireModes collect mode.item)
|
|
ddlWireMode.height = (ddlWireMode.items.count + 1) * 18
|
|
|
|
-- Set up the 2 collision type dropdowns
|
|
ddlCollisionType.items = (for type in collisionHash collect type.item)
|
|
ddlCollisionType.height = (collisionHash.count+1) * 18
|
|
ddlOtherType.items = (for type in otherCollisionHash collect type.item)
|
|
ddlOtherType.height = (otherCollisionHash.count+1) * 18
|
|
|
|
-- Show widgets based on connection status and control widget states
|
|
-- Check for existing connection, and set up widgets if already connected (using flag to set up CONNECT widget)
|
|
if ( RemoteConnection.isConnected() ) then
|
|
(
|
|
CheckRAGConnection connectDialog:true
|
|
)
|
|
--else
|
|
--(
|
|
-- ShowOptionWidgets()
|
|
--)
|
|
if (chkCONNECT.checked) then ( chkPickerBank.checked = true )
|
|
UpdateGroupVisibility()
|
|
--SetRAGWireframeMode()
|
|
)
|
|
on RsTinyRAG close do
|
|
(
|
|
free initialWidgetOffsets
|
|
RsTinyRAG = undefined
|
|
|
|
gc()
|
|
)
|
|
)
|
|
|
|
CreateDialog RsTinyRAG width:(RsTinyRAG.TR_WIDTH+(RsTinyRAG.TR_GROUP_HGAP)) height:1 lockWidth:true style:#(#style_titlebar, #style_border, #style_sysmenu, #style_minimizebox) --476 #style_resizing,
|
|
SetDialogPos RsTinyRAG RsTinyRAGPos
|