1633 lines
82 KiB
Plaintext
Executable File
1633 lines
82 KiB
Plaintext
Executable File
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- RSL_CollisionOps2SelectDisplay
|
|
-- By Paul Truss
|
|
-- Senior Technical Artist
|
|
-- Rockstar Games London
|
|
-- 12/01/2011
|
|
--
|
|
-- Modified for Rockstar North by Neil Gregory
|
|
-- 07/2011
|
|
--
|
|
--
|
|
-- Structure containing functions and UI used by RSL_CollisionOps2 in select/display mode
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
-- struct used to store both rexBound and standard attribute data for attributes e.g. stairs
|
|
struct RSL_flag
|
|
(
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- Struct variables
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
name,
|
|
attr,
|
|
rex,
|
|
value,
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
--
|
|
-- FUNCTIONS
|
|
--
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- compare() Compares the parsed flag with the struct variables. Returns true if they are the same.
|
|
-- name and value struct variables are ignored.
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn compare flag =
|
|
(
|
|
if flag.attr == attr and flag.rex == rex then
|
|
(
|
|
true
|
|
)
|
|
else
|
|
(
|
|
false
|
|
)
|
|
)
|
|
)
|
|
|
|
-- main struct
|
|
struct RSL_CollisionOps2SelectDisplay
|
|
(
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- Struct variables
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
INIfile = (RsConfigGetWildWestDir() + "etc/config/general/collisionOps2.ini"),
|
|
|
|
hideClassArray = #(),
|
|
hideFlagArray = #(),
|
|
|
|
otherHelpersArray = #(),
|
|
hiddenObjectArray = #(),
|
|
selectObjectArray = #(),
|
|
HiddenFlagArray = #(),
|
|
selectFlagArray = #(),
|
|
|
|
hiddenSurfaceArray = #(),
|
|
unHiddenSurfaceArray = #(),
|
|
|
|
objectsurfaceTypeArray = #(),
|
|
|
|
hiddenIcon = (RsConfigGetWildWestDir() + "script\\max\\Rockstar_London\\images\\EyeClosed.png"),
|
|
unHiddenIcon = (RsConfigGetWildWestDir() + "script\\max\\Rockstar_London\\images\\EyeOpen.png"),
|
|
|
|
ignoreCheck = false,
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- UI variables
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
checkButtonType = (dotNetObject "CheckBox").getType(),
|
|
|
|
selectDisplayTableLayout,
|
|
colTypeTableLayout,
|
|
|
|
meshHideCheckButton,meshSelectButton,boxHideCheckButton,boxSelectButton,capsuleHideCheckButton,capsuleSelectButton,
|
|
cylinderHideCheckButton,cylinderSelectButton,planeHideCheckButton,planeSelectButton,sphereHideCheckButton,sphereSelectButton,
|
|
|
|
colTypeAllButton,colTypeNoneButton,colTypeInvertButton,
|
|
attributeHideButton,attributeSelectButton,
|
|
surfaceTypeDataGrid,surfaceTypeAllButton,surfaceTypeNoneButton,surfaceTypeInvertButton,
|
|
|
|
attributesTableLayout,
|
|
cameraHideCheckButton,cameraSelectButton,physicsHideCheckButton,physicsSelectButton,
|
|
hiDetailHideCheckButton,hiDetailSelectButton,locoHideCheckButton,locoSelectButton,
|
|
|
|
stairsHideCheckButton,stairsSelectButton,noCoverHideCheckButton,noCoverSelectButton,
|
|
noClimbHideCheckButton,noClimbSelectButton,noWalkHideCheckButton,noWalkSelectButton,
|
|
seeHideCheckButton,seeSelectButton,noCamHideCheckButton,noCamSelectButton,
|
|
shootHideCheckButton,shootSelectButton,
|
|
|
|
attributeAllButton,attributeNoneButton,attributeInvertButton,
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
--
|
|
-- FUNCTIONS
|
|
--
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hideByClass() Sets the isHidden state for each parsed object to the parsed state if it is the same class as the parsed class
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn hideByClass object class state =
|
|
(
|
|
-- make sure we only do this for collision objects
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
if (classOf object) == class then
|
|
(
|
|
object.isHidden = state
|
|
|
|
if state then
|
|
(
|
|
appendIfUnique hiddenObjectArray object
|
|
)
|
|
else
|
|
(
|
|
local index = (findItem hiddenObjectArray object)
|
|
|
|
if index > 0 then
|
|
(
|
|
deleteItem hiddenObjectArray index
|
|
)
|
|
)
|
|
)
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- selectByClass() Selects each parsed object if it is the same class as the parsed class
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn selectByClass object class =
|
|
(
|
|
if (classOf object) == class then
|
|
(
|
|
selectMore object
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- isRexBound() Checks to see if the object contains any rexBound materials. Returns true if rexBound materials are found
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn isRexBound object =
|
|
(
|
|
local result = true
|
|
|
|
if object.material != undefined then
|
|
(
|
|
case (classOf object.material) of
|
|
(
|
|
default:
|
|
(
|
|
result = false
|
|
)
|
|
RexBoundMtl:
|
|
(
|
|
result = true
|
|
)
|
|
Multimaterial:
|
|
(
|
|
for i = 1 to object.material.materialList.count do
|
|
(
|
|
local subMaterial = object.material.materialList[i]
|
|
|
|
if (classOf subMaterial) == RexBoundMtl then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
else
|
|
(
|
|
result = false
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getFlagRexBound() Checks to see if any of the rexBound materials assigned to the parsed object have the parsed flag set
|
|
-- Returns true if the flag is found
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn getFlagRexBound object flag =
|
|
(
|
|
local result = false
|
|
local material = object.material
|
|
|
|
case (classOf material) of
|
|
(
|
|
RexBoundMtl:
|
|
(
|
|
local flags = RexGetCollisionFlags material
|
|
|
|
if (bit.and flags (bit.shift 1 flag.rex) > 0) then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
Multimaterial:
|
|
(
|
|
for i = 1 to material.materialList.count do
|
|
(
|
|
local subMaterial = material.materialList[i]
|
|
|
|
if (classOf subMaterial) == RexBoundMtl then
|
|
(
|
|
local flags = RexGetCollisionFlags subMaterial
|
|
|
|
if (bit.and flags (bit.shift 1 flag.rex) > 0) then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getFlagAttribute() Checks to see if the parsed object has the parsed flag attribute set. Returns true if the flag is set
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn getFlagAttribute object flag =
|
|
(
|
|
try (getAttr object flag.attr) catch (false)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getFlagRexBound() Checks to see if any of the rexBound materials assigned to the parsed object have the parsed surfaceType
|
|
-- Returns true if the surfaceType is found
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn hasSurfaceTypeRexBound object surfaceType =
|
|
(
|
|
local result = false
|
|
local material = object.material
|
|
|
|
case (classOf material) of
|
|
(
|
|
RexBoundMtl:
|
|
(
|
|
local sType = RexGetCollisionName material
|
|
|
|
if (toUpper sType) == (toUpper surfaceType) then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
Multimaterial:
|
|
(
|
|
for i = 1 to material.materialList.count do
|
|
(
|
|
local subMaterial = material.materialList[i]
|
|
|
|
if (classOf subMaterial) == RexBoundMtl then
|
|
(
|
|
local sType = RexGetCollisionName subMaterial
|
|
|
|
if (toUpper sType) == (toUpper surfaceType) then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getFlagAttribute() Checks to see if the parsed object has the parsed surfaceType attribute set. Returns true if the flag is set
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn hasSurfaceTypeAttribute object surfaceType =
|
|
(
|
|
local sType = getAttr object (getAttrIndex "Gta Collision" "Coll Type")
|
|
|
|
if (toUpper sType) == (toUpper surfaceType) then
|
|
(
|
|
true
|
|
)
|
|
else
|
|
(
|
|
false
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getSurfaceTypeRexBound() Gathers all the surface types set for the parsed object from the rexBound materials. Returns
|
|
-- an array
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn getSurfaceTypeRexBound object =
|
|
(
|
|
local result = #()
|
|
local material = object.material
|
|
|
|
case (classOf material) of
|
|
(
|
|
RexBoundMtl:
|
|
(
|
|
append result (RexGetCollisionName material)
|
|
)
|
|
Multimaterial:
|
|
(
|
|
for i = 1 to material.materialList.count do
|
|
(
|
|
local subMaterial = material.materialList[i]
|
|
|
|
if (classOf subMaterial) == RexBoundMtl then
|
|
(
|
|
append result (RexGetCollisionName subMaterial)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getSurfaceTypeRexBound() Gets the surface type attribute set for the parsed object. Returns an array
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn getSurfaceTypeAttribute object =
|
|
(
|
|
#(getAttr object (getAttrIndex "Gta Collision" "Coll Type"))
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- recurseCheckAttributes() Checks to see if the parsed attribute control, if it's marked as visible (un-checked), is set on
|
|
-- the parsed object. Returns false if found because this is used to set the isHidden state of the parsed object.
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn recurseCheckAttributes control object &hideState =
|
|
(
|
|
-- make sure the control is a check button and it's un-checked
|
|
if control.getType() == checkButtonType and not control.checked then
|
|
(
|
|
local flag = control.tag.value
|
|
local rexBound = isRexBound object
|
|
local state
|
|
|
|
if rexBound and flag.rex != undefined then
|
|
(
|
|
state = getFlagRexBound object flag
|
|
)
|
|
else
|
|
(
|
|
state = getFlagAttribute object flag
|
|
)
|
|
|
|
if state then hideState = false
|
|
)
|
|
|
|
-- run the function on any sub controls of the control because the controls are embedded
|
|
for i = 0 to control.controls.count - 1 do
|
|
(
|
|
local subControl = control.controls.item[i]
|
|
|
|
recurseCheckAttributes subControl object &hideState
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hideByAttributes() Sets the isHidden state for each parsed object based on the attributes
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn hideByAttributes object =
|
|
(
|
|
-- make sure we only do this for collision objects
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
local hideState = true
|
|
|
|
-- check the attribute check buttons to see if any visible controls are attributes the object has
|
|
recurseCheckAttributes attributesTableLayout object &hideState
|
|
|
|
object.isHidden = hideState
|
|
|
|
if hideState then
|
|
(
|
|
appendIfUnique HiddenFlagArray object
|
|
)
|
|
else
|
|
(
|
|
local index = findItem HiddenFlagArray object
|
|
|
|
if index > 0 then
|
|
(
|
|
deleteItem HiddenFlagArray index
|
|
)
|
|
)
|
|
)
|
|
else
|
|
(
|
|
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- selectByAttribute() Selects each parsed object if it has the parsed flag attribute set
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn selectByAttribute object flag =
|
|
(
|
|
-- make sure we only do this for collision objects
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
local rexBound = isRexBound object
|
|
local state
|
|
|
|
-- get the state of the flag on the object using the correct function
|
|
if rexBound and flag.rex != undefined then
|
|
(
|
|
state = getFlagRexBound object flag
|
|
)
|
|
else
|
|
(
|
|
state = getFlagAttribute object flag
|
|
)
|
|
|
|
if state then
|
|
(
|
|
selectMore object
|
|
)
|
|
)
|
|
else
|
|
(
|
|
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- gatherObjectSurfaceTypes() Populates the objectSurfaceTypeArray with a dataPair containing surface types set for
|
|
-- each parsed object
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn gatherObjectSurfaceTypes object =
|
|
(
|
|
-- make sure we only do this for collision objects
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
local data = DataPair object:object surfaceTypeArray:#()
|
|
|
|
local rexBound = isRexBound object
|
|
local state
|
|
|
|
if rexBound then
|
|
(
|
|
data.surfaceTypeArray = getSurfaceTypeRexBound object
|
|
)
|
|
else
|
|
(
|
|
data.surfaceTypeArray = getSurfaceTypeAttribute object
|
|
)
|
|
|
|
append objectSurfaceTypeArray data
|
|
)
|
|
else
|
|
(
|
|
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hasSurfaceType() Searches the objectSurfaceTypeArray for the parsed object to see if it has the parsed type assigned.
|
|
-- Returns true if found
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn hasSurfaceType object type =
|
|
(
|
|
local result = false
|
|
|
|
for entry in objectSurfaceTypeArray do
|
|
(
|
|
if entry.object == object then
|
|
(
|
|
if (findItem entry.surfaceTypeArray type) > 0 then
|
|
(
|
|
result = true
|
|
)
|
|
)
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- checkSurfaceTypes() Checks to see if any of the surface type dataGrid items, if they're marked as visible, are assigned
|
|
-- to the parsed object. Returns false if any are found because this is used to set the isHidden state of the parsed object.
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn checkSurfaceTypes object =
|
|
(
|
|
local result = true
|
|
|
|
for i = 0 to surfaceTypeDataGrid.Rows.count - 1 do
|
|
(
|
|
local row = surfaceTypeDataGrid.Rows.Item[i]
|
|
local hidden = row.cells.item[3].value
|
|
|
|
if not hidden then
|
|
(
|
|
local surfaceType = row.Cells.Item[0].value
|
|
local state = hasSurfaceType object surfaceType
|
|
|
|
if state then result = false
|
|
)
|
|
)
|
|
|
|
result
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hideBySurfaceType() Sets the isHidden state for each parsed object based on the surface type
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn hideBySurfaceType object =
|
|
(
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
local hideState = checkSurfaceTypes object
|
|
|
|
if hideState then
|
|
(
|
|
append hiddenSurfaceArray object
|
|
)
|
|
else
|
|
(
|
|
append unHiddenSurfaceArray object
|
|
)
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hideBySurfaceType() Selects each parsed object if it has the parsed surfaceType set
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn selectBySurfaceType object surfaceType =
|
|
(
|
|
if (getAttrClass object) == "Gta Collision" then
|
|
(
|
|
local state = hasSurfaceType object surfaceType
|
|
|
|
if state then
|
|
(
|
|
selectMore object
|
|
)
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- exitSelectDisplay() Unhides any objects in the hiddenObjectArray and HiddenFlagArray variables.
|
|
-- CURRENTLY NOT USED
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn exitSelectDisplay =
|
|
(
|
|
if colTypeHideButton != undefined and colTypeHideButton.checked then
|
|
(
|
|
unHide hiddenObjectArray
|
|
unHide HiddenFlagArray
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- hideBySurfaceType() Recursive function that sets the check state property of the parsed control to the parsed state
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn recurseSetCheck control state =
|
|
(
|
|
-- make sure we only set this on check buttons
|
|
if control.getType() == checkButtonType then
|
|
(
|
|
if state == #invert then
|
|
(
|
|
control.checked = not control.checked
|
|
)
|
|
else
|
|
(
|
|
control.checked = state
|
|
)
|
|
)
|
|
|
|
for i = 0 to control.controls.count - 1 do
|
|
(
|
|
local subControl = control.controls.item[i]
|
|
|
|
recurseSetCheck subControl state
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- setupDataColumns() Sets up the data columns for the surfaceTypeDataGrid
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn setupDataColumns =
|
|
(
|
|
local nameColumn = dotNetObject "System.Windows.Forms.DataGridViewTextBoxColumn"
|
|
nameColumn.width = 200
|
|
-- set the AutoSizeMode so that this column resizes to fit the available area when the form is resized
|
|
nameColumn.AutoSizeMode = (dotNetClass "System.Windows.Forms.DataGridViewAutoSizeColumnMode").Fill
|
|
nameColumn.fillWeight = 100
|
|
nameColumn.ReadOnly = true
|
|
|
|
local hideColumn = dotNetObject "System.Windows.Forms.DataGridViewImageColumn"
|
|
hideColumn.width = 24
|
|
|
|
local selectColumn = dotNetObject "System.Windows.Forms.DataGridViewButtonColumn"
|
|
selectColumn.width = 24
|
|
|
|
-- this column is hidden and only used internally
|
|
local checkColumn = dotNetObject "System.Windows.Forms.DataGridViewCheckBoxColumn"
|
|
checkColumn.width = 0
|
|
|
|
surfaceTypeDataGrid.columns.AddRange #(nameColumn, hideColumn, selectColumn, checkColumn)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- addSurfaceTypeData() Creates a row for each parsed surfaceType and assigns it to the surfaceTypeDataGrid
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
mapped fn addSurfaceTypeData surfaceType =
|
|
(
|
|
surfaceTypeDataGrid.Rows.add #(surfaceType.type, (RS_dotNetObject.imageObject unHiddenIcon), "S")
|
|
|
|
local row = surfaceTypeDataGrid.Rows.item[surfaceTypeDataGrid.Rows.count - 1]
|
|
row.cells.item[0].ToolTipText = surfaceType.type
|
|
row.cells.item[3].value = false
|
|
row.cells.item[0].Style.backColor = RS_dotNetClass.colourClass.White
|
|
|
|
-- check to see if there's a colour in the INI file for this surface type
|
|
local colour = getINISetting INIFile "surfaceColours" surfaceType.type
|
|
|
|
if colour != "" then
|
|
(
|
|
local colourValue = readExpr (colour as stringStream)
|
|
row.cells.item[0].Style.backColor = RS_dotNetClass.colourClass.fromARGB colourValue.r colourValue.g colourValue.b
|
|
|
|
-- make sure the fore colour is not to similar to the back colour
|
|
local backColTotal = colourValue.r + colourValue.g + colourValue.b
|
|
local foreColTotal = row.cells.item[0].Style.foreColor.r + row.cells.item[0].Style.foreColor.g + row.cells.item[0].Style.foreColor.b
|
|
|
|
-- it is so we make the fore colour either black or white
|
|
if (abs (backColTotal - foreColTotal)) < 128 then
|
|
(
|
|
if row.cells.item[0].Style.foreColor == RS_dotNetClass.colourClass.White then
|
|
(
|
|
row.cells.item[0].Style.foreColor = RS_dotNetClass.colourClass.Black
|
|
)
|
|
else
|
|
(
|
|
row.cells.item[0].Style.foreColor = RS_dotNetClass.colourClass.White
|
|
)
|
|
)
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- surfaceTypeSetCheck() Sets the visibility state of each surface type in the surfaceTypeDataGrid to the parsed state
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn surfaceTypeSetCheck state =
|
|
(
|
|
for i = 0 to surfaceTypeDataGrid.Rows.count - 1 do
|
|
(
|
|
local icon = surfaceTypeDataGrid.Rows.Item[i].Cells.Item[1]
|
|
local control = surfaceTypeDataGrid.Rows.Item[i].Cells.Item[3]
|
|
|
|
if state == #invert then
|
|
(
|
|
control.value = not control.value
|
|
)
|
|
else
|
|
(
|
|
control.value = state
|
|
)
|
|
|
|
if control.value then
|
|
(
|
|
icon.value = RS_dotNetObject.imageObject hiddenIcon
|
|
)
|
|
else
|
|
(
|
|
icon.value = RS_dotNetObject.imageObject unHiddenIcon
|
|
)
|
|
)
|
|
|
|
hiddenSurfaceArray = #()
|
|
unHiddenSurfaceArray = #()
|
|
|
|
hideBySurfaceType helpers
|
|
|
|
hide hiddenSurfaceArray
|
|
unHide unHiddenSurfaceArray
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
--
|
|
-- UI FUNCTIONS
|
|
--
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchFlagSelectClick() Dispatches flagSelectClick() Called when the user checks any one of the attribute selection buttons
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchFlagSelectClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.flagSelectClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- flagSelectClick() Runs the selectByAttribute function
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn flagSelectClick s e =
|
|
(
|
|
-- check to see if the control button is not down and set the object selection to none
|
|
local control = dotNetClass "system.windows.forms.control"
|
|
|
|
if control.modifierKeys != control.modifierKeys.Control then
|
|
(
|
|
max select none
|
|
)
|
|
|
|
selectByAttribute helpers s.tag.value
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchFlagHideCheck() Dispatches flagHideCheck() Called when the user checks any one of the collision type attribute
|
|
-- visibility buttons
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchFlagHideCheck s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.flagHideCheck s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- flagHideCheck() Sets the icon for the pressed check button, the check state for the tag and then runs hideByAttributes
|
|
-- if ignoreCheck is false
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn flagHideCheck s e =
|
|
(
|
|
if s.checked then
|
|
(
|
|
s.BackgroundImage = RS_dotNetObject.imageObject hiddenIcon
|
|
)
|
|
else
|
|
(
|
|
s.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
)
|
|
|
|
s.tag.value.value = s.checked
|
|
|
|
if not ignoreCheck then
|
|
(
|
|
hideByAttributes helpers
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchAttributeCheckClick() Dispatches attributeCheckClick() Called when the user checks any one of the all, none and
|
|
-- invert buttons for attributes
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchAttributeCheckClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.attributeCheckClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- attributeCheckClick() Sets the visibility state based on which button is pressed, then sets the check state for all attribute
|
|
-- check buttons and then runs hideByAttributes
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn attributeCheckClick s e =
|
|
(
|
|
-- set ignoreCheck to true because we dont want it to hideByAttributes each time we set the check state for an
|
|
-- attribute check button
|
|
ignoreCheck = true
|
|
|
|
local state = #invert
|
|
|
|
case s.name of
|
|
(
|
|
"attributeAllButton":(state = true)
|
|
"attributeNoneButton":(state = false)
|
|
)
|
|
|
|
recurseSetCheck attributesTableLayout state
|
|
hideByAttributes helpers
|
|
|
|
ignoreCheck = false
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- createAttributeControls() Creates the attribute controls. These are the basic attributes shared between rexBound and
|
|
-- standard atributes
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn createAttributeControls =
|
|
(
|
|
-- we set the tag value on each control to an RSL_flag struct so that we can use a single function to check for the existence of
|
|
-- the attribute or lack when we decide to hide or select the object e.g...
|
|
-- (RSL_flag name:"Does Not Provide Cover" attr:(getAttrIndex "Gta Collision" "Does Not Provide Cover") rex:4 value:false)
|
|
-- This has all the info we need to check if an object has "Does Not Provide Cover" set or un-set in both standard attribute and
|
|
-- rexBound data.
|
|
/*
|
|
cameraLabel = RS_dotNetUI.Label "cameraLabel" text:" Camera" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
cameraHideCheckButton = RS_dotNetUI.checkBox "cameraHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
cameraHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
cameraHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
cameraHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Camera" attr:(getAttrIndex "Gta Collision" "Camera") value:false)
|
|
dotnet.addEventHandler cameraHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
cameraSelectButton = RS_dotNetUI.Button "cameraSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
cameraSelectButton.tag = dotNetMXSValue (RSL_flag name:"Camera" attr:(getAttrIndex "Gta Collision" "Camera") value:true)
|
|
dotnet.addEventHandler cameraSelectButton "click" dispatchFlagSelectClick
|
|
|
|
cameraTableLayout = RS_dotNetUI.tableLayout "cameraTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
cameraTableLayout.controls.add cameraLabel 0 0
|
|
cameraTableLayout.controls.add cameraHideCheckButton 1 0
|
|
cameraTableLayout.controls.add cameraSelectButton 2 0
|
|
|
|
physicsLabel = RS_dotNetUI.Label "physicsLabel" text:" Physics" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
physicsHideCheckButton = RS_dotNetUI.checkBox "physicsHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
physicsHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
physicsHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
physicsHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Physics" attr:(getAttrIndex "Gta Collision" "Physics") value:false)
|
|
dotnet.addEventHandler physicsHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
physicsSelectButton = RS_dotNetUI.Button "physicsSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
physicsSelectButton.tag = dotNetMXSValue (RSL_flag name:"Physics" attr:(getAttrIndex "Gta Collision" "Physics") value:true)
|
|
dotnet.addEventHandler physicsSelectButton "click" dispatchFlagSelectClick
|
|
|
|
physicsTableLayout = RS_dotNetUI.tableLayout "physicsTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
physicsTableLayout.controls.add physicsLabel 0 0
|
|
physicsTableLayout.controls.add physicsHideCheckButton 1 0
|
|
physicsTableLayout.controls.add physicsSelectButton 2 0
|
|
|
|
hiDetailLabel = RS_dotNetUI.Label "hiDetailLabel" text:" Hi Detail" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
hiDetailHideCheckButton = RS_dotNetUI.checkBox "hiDetailHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
hiDetailHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
hiDetailHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
hiDetailHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Hi Detail" attr:(getAttrIndex "Gta Collision" "Hi Detail") value:false)
|
|
dotnet.addEventHandler hiDetailHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
hiDetailSelectButton = RS_dotNetUI.Button "hiDetailSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
hiDetailSelectButton.tag = dotNetMXSValue (RSL_flag name:"Hi Detail" attr:(getAttrIndex "Gta Collision" "Hi Detail") value:true)
|
|
dotnet.addEventHandler hiDetailSelectButton "click" dispatchFlagSelectClick
|
|
|
|
hiDetailTableLayout = RS_dotNetUI.tableLayout "hiDetailTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
hiDetailTableLayout.controls.add hiDetailLabel 0 0
|
|
hiDetailTableLayout.controls.add hiDetailHideCheckButton 1 0
|
|
hiDetailTableLayout.controls.add hiDetailSelectButton 2 0
|
|
|
|
locoLabel = RS_dotNetUI.Label "locoLabel" text:" Loco" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
locoHideCheckButton = RS_dotNetUI.checkBox "locoHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
locoHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
locoHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
locoHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Loco" attr:(getAttrIndex "Gta Collision" "Loco") value:false)
|
|
dotnet.addEventHandler locoHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
locoSelectButton = RS_dotNetUI.Button "locoSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
locoSelectButton.tag = dotNetMXSValue (RSL_flag name:"Loco" attr:(getAttrIndex "Gta Collision" "Loco") value:true)
|
|
dotnet.addEventHandler locoSelectButton "click" dispatchFlagSelectClick
|
|
|
|
locoTableLayout = RS_dotNetUI.tableLayout "locoTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
locoTableLayout.controls.add locoLabel 0 0
|
|
locoTableLayout.controls.add locoHideCheckButton 1 0
|
|
locoTableLayout.controls.add locoSelectButton 2 0
|
|
*/
|
|
stairsLabel = RS_dotNetUI.Label "stairsLabel" text:" Stairs" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
stairsHideCheckButton = RS_dotNetUI.checkBox "stairsHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
stairsHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
stairsHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
stairsHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Stairs" attr:(getAttrIndex "Gta Collision" "Stairs") rex:0 value:false)
|
|
dotnet.addEventHandler stairsHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
stairsSelectButton = RS_dotNetUI.Button "stairsSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
stairsSelectButton.tag = dotNetMXSValue (RSL_flag name:"Stairs" attr:(getAttrIndex "Gta Collision" "Stairs") rex:0 value:true)
|
|
dotnet.addEventHandler stairsSelectButton "click" dispatchFlagSelectClick
|
|
|
|
stairsTableLayout = RS_dotNetUI.tableLayout "stairsTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
stairsTableLayout.controls.add stairsLabel 0 0
|
|
stairsTableLayout.controls.add stairsHideCheckButton 1 0
|
|
stairsTableLayout.controls.add stairsSelectButton 2 0
|
|
|
|
/*
|
|
noCoverLabel = RS_dotNetUI.Label "noCoverLabel" text:" Doesn't Provide Cover" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noCoverHideCheckButton = RS_dotNetUI.checkBox "noCoverHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
noCoverHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
noCoverHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
noCoverHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Does Not Provide Cover" attr:(getAttrIndex "Gta Collision" "Does Not Provide Cover") rex:4 value:false)
|
|
dotnet.addEventHandler noCoverHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
noCoverSelectButton = RS_dotNetUI.Button "noCoverSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
noCoverSelectButton.tag = dotNetMXSValue (RSL_flag name:"Does Not Provide Cover" attr:(getAttrIndex "Gta Collision" "Does Not Provide Cover") rex:4 value:true)
|
|
dotnet.addEventHandler noCoverSelectButton "click" dispatchFlagSelectClick
|
|
|
|
noCoverTableLayout = RS_dotNetUI.tableLayout "noCoverTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noCoverTableLayout.controls.add noCoverLabel 0 0
|
|
noCoverTableLayout.controls.add noCoverHideCheckButton 1 0
|
|
noCoverTableLayout.controls.add noCoverSelectButton 2 0
|
|
*/
|
|
|
|
noClimbLabel = RS_dotNetUI.Label "noClimbLabel" text:" Non Climable" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noClimbHideCheckButton = RS_dotNetUI.checkBox "noClimbHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
noClimbHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
noClimbHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
noClimbHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Non Climable" attr:(getAttrIndex "Gta Collision" "Non Climable") rex:1 value:false)
|
|
dotnet.addEventHandler noClimbHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
noClimbSelectButton = RS_dotNetUI.Button "noClimbSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
noClimbSelectButton.tag = dotNetMXSValue (RSL_flag name:"Non Climable" attr:(getAttrIndex "Gta Collision" "Non Climable") rex:1 value:true)
|
|
dotnet.addEventHandler noClimbSelectButton "click" dispatchFlagSelectClick
|
|
|
|
noClimbTableLayout = RS_dotNetUI.tableLayout "noClimbTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noClimbTableLayout.controls.add noClimbLabel 0 0
|
|
noClimbTableLayout.controls.add noClimbHideCheckButton 1 0
|
|
noClimbTableLayout.controls.add noClimbSelectButton 2 0
|
|
|
|
/*
|
|
noWalkLabel = RS_dotNetUI.Label "noWalkLabel" text:" Non Walkable" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noWalkHideCheckButton = RS_dotNetUI.checkBox "noWalkHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
noWalkHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
noWalkHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
noWalkHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Non Walkable" attr:(getAttrIndex "Gta Collision" "Non Walkable") rex:5 value:false)
|
|
dotnet.addEventHandler noWalkHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
noWalkSelectButton = RS_dotNetUI.Button "noWalkSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
noWalkSelectButton.tag = dotNetMXSValue (RSL_flag name:"Non Walkable" attr:(getAttrIndex "Gta Collision" "Non Walkable") rex:5 value:true)
|
|
dotnet.addEventHandler noWalkSelectButton "click" dispatchFlagSelectClick
|
|
|
|
noWalkTableLayout = RS_dotNetUI.tableLayout "noWalkTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noWalkTableLayout.controls.add noWalkLabel 0 0
|
|
noWalkTableLayout.controls.add noWalkHideCheckButton 1 0
|
|
noWalkTableLayout.controls.add noWalkSelectButton 2 0
|
|
*/
|
|
|
|
seeLabel = RS_dotNetUI.Label "seeLabel" text:" See Through" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
seeHideCheckButton = RS_dotNetUI.checkBox "seeHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
seeHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
seeHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
seeHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"See Through" attr:(getAttrIndex "Gta Collision" "See Through") rex:2 value:false)
|
|
dotnet.addEventHandler seeHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
seeSelectButton = RS_dotNetUI.Button "seeSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
seeSelectButton.tag = dotNetMXSValue (RSL_flag name:"See Through" attr:(getAttrIndex "Gta Collision" "See Through") rex:2 value:true)
|
|
dotnet.addEventHandler seeSelectButton "click" dispatchFlagSelectClick
|
|
|
|
seeTableLayout = RS_dotNetUI.tableLayout "seeTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
seeTableLayout.controls.add seeLabel 0 0
|
|
seeTableLayout.controls.add seeHideCheckButton 1 0
|
|
seeTableLayout.controls.add seeSelectButton 2 0
|
|
|
|
noCamLabel = RS_dotNetUI.Label "noCamLabel" text:" Non Camera Collidable" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noCamHideCheckButton = RS_dotNetUI.checkBox "noCamHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
noCamHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
noCamHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
noCamHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Non Camera Collidable" attr:(getAttrIndex "Gta Collision" "Non Camera Collidable") rex:7 value:false)
|
|
dotnet.addEventHandler noCamHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
noCamSelectButton = RS_dotNetUI.Button "noCamSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
noCamSelectButton.tag = dotNetMXSValue (RSL_flag name:"Non Camera Collidable" attr:(getAttrIndex "Gta Collision" "Non Camera Collidable") rex:7 value:true)
|
|
dotnet.addEventHandler noCamSelectButton "click" dispatchFlagSelectClick
|
|
|
|
noCamTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
noCamTableLayout.controls.add noCamLabel 0 0
|
|
noCamTableLayout.controls.add noCamHideCheckButton 1 0
|
|
noCamTableLayout.controls.add noCamSelectButton 2 0
|
|
|
|
-------------------
|
|
--Shoot Through
|
|
-------------------
|
|
shootLabel = RS_dotNetUI.Label "shootLabel" text:" Shoot Through" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
shootHideCheckButton = RS_dotNetUI.checkBox "shootHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
shootHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
shootHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
shootHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Shoot Through" attr:(getAttrIndex "Gta Collision" "Shoot Through") rex:3 value:false)
|
|
dotnet.addEventHandler shootHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
shootSelectButton = RS_dotNetUI.Button "shootSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
shootSelectButton.tag = dotNetMXSValue (RSL_flag name:"Shoot Through" attr:(getAttrIndex "Gta Collision" "Shoot Through") rex:3 value:true)
|
|
dotnet.addEventHandler shootSelectButton "click" dispatchFlagSelectClick
|
|
|
|
shootTableLayout = RS_dotNetUI.tableLayout "shootTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
shootTableLayout.controls.add shootLabel 0 0
|
|
shootTableLayout.controls.add shootHideCheckButton 1 0
|
|
shootTableLayout.controls.add shootSelectButton 2 0
|
|
|
|
-----------------------
|
|
--Edited by leeds
|
|
-----------------------
|
|
/*
|
|
leedsLabel = RS_dotNetUI.Label "leedsLabel" text:" Edited by Leeds" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
leedsHideCheckButton = RS_dotNetUI.checkBox "shootHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
leedsHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
leedsHideCheckButton.BackgroundImageLayout =q (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
leedsHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Edited by Leeds" attr:(getAttrIndex "Gta Collision" "Edited by Leeds") rex:6 value:false)
|
|
dotnet.addEventHandler leedsHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
leedsSelectButton = RS_dotNetUI.Button "leedsSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
leedsSelectButton.tag = dotNetMXSValue (RSL_flag name:"Edited by Leeds" attr:(getAttrIndex "Gta Collision" "Edited by Leeds") rex:6 value:true)
|
|
dotnet.addEventHandler leedsSelectButton "click" dispatchFlagSelectClick
|
|
|
|
leedsTableLayout = RS_dotNetUI.tableLayout "leedsTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
leedsTableLayout.controls.add leedsLabel 0 0
|
|
leedsTableLayout.controls.add leedsHideCheckButton 1 0
|
|
leedsTableLayout.controls.add leedsSelectButton 2 0
|
|
*/
|
|
|
|
---------------------
|
|
--BVH Bound
|
|
---------------------
|
|
BVHBoundLabel = RS_dotNetUI.Label "BVHBoundLabel" text:" BVH Bound" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
BVHBoundHideCheckButton = RS_dotNetUI.checkBox "BVHBoundHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
BVHBoundHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
BVHBoundHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
BVHBoundHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"BVH Bound" attr:(getAttrIndex "Gta Collision" "BVH Bound") rex:8 value:false)
|
|
dotnet.addEventHandler BVHBoundHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
BVHBoundSelectButton = RS_dotNetUI.Button "BVHBoundSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
BVHBoundSelectButton.tag = dotNetMXSValue (RSL_flag name:"BVH Bound" attr:(getAttrIndex "Gta Collision" "BVH Bound") rex:8 value:true)
|
|
|
|
BVHBoundTableLayout = RS_dotNetUI.tableLayout "BVHBoundTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
BVHBoundTableLayout.controls.add BVHBoundLabel 0 0
|
|
BVHBoundTableLayout.controls.add BVHBoundHideCheckButton 1 0
|
|
BVHBoundTableLayout.controls.add BVHBoundSelectButton 2 0
|
|
|
|
-------------------------
|
|
--Wet
|
|
-------------------------
|
|
WetLabel = RS_dotNetUI.Label "WetLabel" text:" Wet" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
WetHideCheckButton = RS_dotNetUI.checkBox "WetHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
WetHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
WetHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
WetHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Wet" attr:(getAttrIndex "Gta Collision" "Wet") rex:4 value:false)
|
|
dotnet.addEventHandler WetHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
WetSelectButton = RS_dotNetUI.Button "WetSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
WetSelectButton.tag = dotNetMXSValue (RSL_flag name:"Wet" attr:(getAttrIndex "Gta Collision" "Wet") rex:4 value:true)
|
|
|
|
WetTableLayout = RS_dotNetUI.tableLayout "WetTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
WetTableLayout.controls.add WetLabel 0 0
|
|
WetTableLayout.controls.add WetHideCheckButton 1 0
|
|
WetTableLayout.controls.add WetSelectButton 2 0
|
|
|
|
-------------------------
|
|
--Path
|
|
-------------------------
|
|
pathLabel = RS_dotNetUI.Label "pathLabel" text:" Path" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
pathHideCheckButton = RS_dotNetUI.checkBox "pathHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
pathHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
pathHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
pathHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Path" attr:(getAttrIndex "Gta Collision" "Path") rex:5 value:false)
|
|
dotnet.addEventHandler pathHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
pathSelectButton = RS_dotNetUI.Button "pathSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
pathSelectButton.tag = dotNetMXSValue (RSL_flag name:"Path" attr:(getAttrIndex "Gta Collision" "Path") rex:5 value:true)
|
|
|
|
pathTableLayout = RS_dotNetUI.tableLayout "pathTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
pathTableLayout.controls.add pathLabel 0 0
|
|
pathTableLayout.controls.add pathHideCheckButton 1 0
|
|
pathTableLayout.controls.add pathSelectButton 2 0
|
|
|
|
-------------------------
|
|
--Use Procedural Tint
|
|
-------------------------
|
|
procTintLabel = RS_dotNetUI.Label "procTintLabel" text:" Use Procedural Tint" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
procTintHideCheckButton = RS_dotNetUI.checkBox "procTintHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
procTintHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
procTintHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
procTintHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Use Procedural Tint" attr:(getAttrIndex "Gta Collision" "Use Procedural Tint") rex:9 value:false)
|
|
dotnet.addEventHandler procTintHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
procTintSelectButton = RS_dotNetUI.Button "procTintSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
procTintSelectButton.tag = dotNetMXSValue (RSL_flag name:"Use Procedural Tint" attr:(getAttrIndex "Gta Collision" "Use Procedural Tint") rex:9 value:true)
|
|
|
|
procTintTableLayout = RS_dotNetUI.tableLayout "procTintTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
procTintTableLayout.controls.add procTintLabel 0 0
|
|
procTintTableLayout.controls.add procTintHideCheckButton 1 0
|
|
procTintTableLayout.controls.add procTintSelectButton 2 0
|
|
|
|
-------------------------
|
|
--Is Cloth Collision
|
|
-------------------------
|
|
clothCollLabel = RS_dotNetUI.Label "clothCollLabel" text:" Is Cloth Collision" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
clothCollHideCheckButton = RS_dotNetUI.checkBox "clothCollHideCheckButton" text:"" dockStyle:RS_dotNetPreset.DS_Fill appearance:RS_dotNetPreset.AC_Button \
|
|
margin:(RS_dotNetObject.paddingObject 0)
|
|
clothCollHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
clothCollHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
clothCollHideCheckButton.tag = dotNetMXSValue (RSL_flag name:"Is Cloth Collision" attr:(getAttrIndex "Gta Collision" "Is Cloth Collision") rex:10 value:false)
|
|
dotnet.addEventHandler clothCollHideCheckButton "CheckedChanged" dispatchFlagHideCheck
|
|
|
|
clothCollSelectButton = RS_dotNetUI.Button "clothCollSelectButton" text:"S" dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
clothCollSelectButton.tag = dotNetMXSValue (RSL_flag name:"Is Cloth Collision" attr:(getAttrIndex "Gta Collision" "Is Cloth Collision") rex:10 value:true)
|
|
|
|
clothCollTableLayout = RS_dotNetUI.tableLayout "clothCollTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
clothCollTableLayout.controls.add clothCollLabel 0 0
|
|
clothCollTableLayout.controls.add clothCollHideCheckButton 1 0
|
|
clothCollTableLayout.controls.add clothCollSelectButton 2 0
|
|
|
|
-------------------------
|
|
--Attribute buttons
|
|
-------------------------
|
|
attributeAllButton = RS_dotNetUI.Button "attributeAllButton" text:("All") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler attributeAllButton "click" dispatchAttributeCheckClick
|
|
|
|
attributeNoneButton = RS_dotNetUI.Button "attributeNoneButton" text:("None") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler attributeNoneButton "click" dispatchAttributeCheckClick
|
|
|
|
attributeInvertButton = RS_dotNetUI.Button "attributeInvertButton" text:("Invert") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler attributeInvertButton "click" dispatchAttributeCheckClick
|
|
|
|
attributesTableLayout = RS_dotNetUI.tableLayout "attributesTableLayout" text:"attributesTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:75),(dataPair type:"Percent" value:25)) \
|
|
rows:#((dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)
|
|
,(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
attributesTableLayout.controls.add attributeAllButton 1 0
|
|
attributesTableLayout.controls.add stairsTableLayout 0 0 --stairsCheckBox
|
|
attributesTableLayout.controls.add noClimbTableLayout 0 1 --noClimbCheckBox
|
|
--attributesTableLayout.controls.add cameraTableLayout 0 0 --cameraCheckBox
|
|
attributesTableLayout.controls.add attributeNoneButton 1 1
|
|
attributesTableLayout.controls.add seeTableLayout 0 2 --seeCheckBox
|
|
--attributesTableLayout.controls.add physicsTableLayout 0 1 --physicsCheckBox
|
|
attributesTableLayout.controls.add attributeInvertButton 1 2
|
|
attributesTableLayout.controls.add noCamTableLayout 0 3 --noCameraCheckBox
|
|
--attributesTableLayout.controls.add hiDetailTableLayout 0 2 --hiDetailCheckBox
|
|
--attributesTableLayout.controls.add locoTableLayout 0 3 --locoCheckBox
|
|
attributesTableLayout.controls.add shootTableLayout 0 4 --shootCheckBox
|
|
|
|
attributesTableLayout.controls.add BVHBoundTableLayout 0 5 --BVHBoundCheckbox
|
|
attributesTableLayout.controls.add WetTableLayout 0 6 --wetCheckbox
|
|
attributesTableLayout.controls.add pathTableLayout 0 7 --PathCheckbox
|
|
attributesTableLayout.controls.add procTintTableLayout 0 8 --procTintCheckbox
|
|
attributesTableLayout.controls.add clothCollTableLayout 0 9 --clothCollCheckbox
|
|
|
|
attributesTableLayout
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchColTypeCheckClick() Dispatches colTypeCheckClick() Called when the user checks any one of the all, none and
|
|
-- invert buttons for collision object types
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchColTypeCheckClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.colTypeCheckClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- colTypeCheckClick() Set the state based on which button is pressed and then set the check state for all the collision object
|
|
-- type check buttons based on the state
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn colTypeCheckClick s e =
|
|
(
|
|
local state = #invert
|
|
|
|
case s.name of
|
|
(
|
|
"colTypeAllButton":(state = true)
|
|
"colTypeNoneButton":(state = false)
|
|
)
|
|
|
|
recurseSetCheck colTypeTableLayout state
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchColTypeHideCheck() Dispatches colTypeHideCheck() Called when the user checks any one of the collision object type
|
|
-- visibility check buttons
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchColTypeHideCheck s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.colTypeHideCheck s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- colTypeHideCheck() Set the icon for the pressed button and the runs the hideByClass function
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn colTypeHideCheck s e =
|
|
(
|
|
if s.checked then
|
|
(
|
|
s.BackgroundImage = RS_dotNetObject.imageObject hiddenIcon
|
|
)
|
|
else
|
|
(
|
|
s.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
)
|
|
|
|
hideByClass helpers s.tag.value s.checked
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchColTypeSelectClick() Dispatches colTypeSelectClick() Called when the user checks any one of the collision object type
|
|
-- selection check buttons
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchColTypeSelectClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.colTypeSelectClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- colTypeSelectClick() Runs the selectByClass function
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn colTypeSelectClick s e =
|
|
(
|
|
-- check to see if the control button is not down and set the object selection to none
|
|
local control = dotNetClass "system.windows.forms.control"
|
|
|
|
if control.modifierKeys != control.modifierKeys.Control then
|
|
(
|
|
max select none
|
|
)
|
|
|
|
selectByClass helpers s.tag.value
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchSurfaceTypeGridClick() Dispatches surfaceTypeGridClick(), called when the user clicks a cell in the surfaceTypeDataGrid
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchSurfaceTypeGridClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.surfaceTypeGridClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- surfaceTypeGridClick() Either hides or selects based on which cell is clicked
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn surfaceTypeGridClick s e =
|
|
(
|
|
local row = surfaceTypeDataGrid.rows.item[e.RowIndex]
|
|
|
|
case e.columnIndex of
|
|
(
|
|
default:()
|
|
1:
|
|
(
|
|
-- A visibility cell has been clicked so we gather the surface types for each object, set the icon
|
|
-- based on the check state of the hidden check button and then hideBySurfaceType
|
|
objectSurfaceTypeArray = #()
|
|
gatherObjectSurfaceTypes helpers
|
|
|
|
if not row.cells.item[3].value then
|
|
(
|
|
row.cells.item[3].value = true
|
|
row.cells.item[1].value = RS_dotNetObject.imageObject hiddenIcon
|
|
)
|
|
else
|
|
(
|
|
row.cells.item[3].value = false
|
|
row.cells.item[1].value = RS_dotNetObject.imageObject unHiddenIcon
|
|
)
|
|
|
|
hiddenSurfaceArray = #()
|
|
unHiddenSurfaceArray = #()
|
|
|
|
hideBySurfaceType helpers
|
|
|
|
hide hiddenSurfaceArray
|
|
unHide unHiddenSurfaceArray
|
|
)
|
|
2:
|
|
(
|
|
-- A Selection cell button has been clicked so we gather the surface types for each object and
|
|
-- selectBySurfaceType
|
|
objectsurfaceTypeArray = #()
|
|
gatherObjectSurfaceTypes helpers
|
|
|
|
-- check to see if the control button is not down and set the object selection to none
|
|
local control = dotNetClass "system.windows.forms.control"
|
|
|
|
if control.modifierKeys != control.modifierKeys.Control then
|
|
(
|
|
max select none
|
|
)
|
|
|
|
selectBySurfaceType helpers row.cells.item[0].value
|
|
)
|
|
)
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- dispatchSurfaceTypeCheckClick() Dispatches surfaceTypeCheckClick(), called when the user clicks any of the all, none or
|
|
-- invert buttons for the surface type group
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn dispatchSurfaceTypeCheckClick s e =
|
|
(
|
|
::RSL_CollisionOps.selectDisplayUI.surfaceTypeCheckClick s e
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- surfaceTypeCheckClick() Sets the visibility state for every surface type in the surfaceTypeDataGrid based on the pressed
|
|
-- button
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn surfaceTypeCheckClick s e =
|
|
(
|
|
local state = #invert
|
|
|
|
case s.name of
|
|
(
|
|
"surfaceTypeAllButton":(state = true)
|
|
"surfaceTypeNoneButton":(state = false)
|
|
)
|
|
|
|
surfaceTypeSetCheck state
|
|
),
|
|
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
-- getUI() Creates the UI for select/display mode
|
|
---------------------------------------------------------------------------------------------------------------------------------------
|
|
fn getUI =
|
|
(
|
|
hideClassArray = #()
|
|
otherHelpersArray = #()
|
|
hiddenObjectArray = #()
|
|
selectObjectArray = #()
|
|
|
|
selectDisplayTableLayout = RS_dotNetUI.tableLayout "selectDisplayTableLayout" text:"selectDisplayTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50)) \
|
|
rows:#((dataPair type:"Absolute" value:170),(dataPair type:"Absolute" value:(316 - 27)),(dataPair type:"Absolute" value:(24 + 244)),(dataPair type:"Absolute" value:24)) \
|
|
dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
meshLabel = RS_dotNetUI.Label "meshLabel" text:" Mesh" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
meshHideCheckButton = RS_dotNetUI.checkBox "meshHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
meshHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
meshHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
meshHideCheckButton.tag = dotNetMXSValue Col_Mesh
|
|
dotnet.addEventHandler meshHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
meshSelectButton = RS_dotNetUI.Button "meshSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
meshSelectButton.tag = dotNetMXSValue Col_Mesh
|
|
dotnet.addEventHandler meshSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
meshClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
meshClassTableLayout.controls.add meshLabel 0 0
|
|
meshClassTableLayout.controls.add meshHideCheckButton 1 0
|
|
meshClassTableLayout.controls.add meshSelectButton 2 0
|
|
|
|
boxLabel = RS_dotNetUI.Label "boxLabel" text:" Box" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
boxHideCheckButton = RS_dotNetUI.checkBox "boxHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
boxHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
boxHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
boxHideCheckButton.tag = dotNetMXSValue Col_box
|
|
dotnet.addEventHandler boxHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
boxSelectButton = RS_dotNetUI.Button "boxSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
boxSelectButton.tag = dotNetMXSValue Col_box
|
|
dotnet.addEventHandler boxSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
boxClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
boxClassTableLayout.controls.add boxLabel 0 0
|
|
boxClassTableLayout.controls.add boxHideCheckButton 1 0
|
|
boxClassTableLayout.controls.add boxSelectButton 2 0
|
|
|
|
capsuleLabel = RS_dotNetUI.Label "capsuleLabel" text:" capsule" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
capsuleHideCheckButton = RS_dotNetUI.checkBox "capsuleHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
capsuleHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
capsuleHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
capsuleHideCheckButton.tag = dotNetMXSValue Col_capsule
|
|
dotnet.addEventHandler capsuleHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
capsuleSelectButton = RS_dotNetUI.Button "capsuleSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
capsuleSelectButton.tag = dotNetMXSValue Col_capsule
|
|
dotnet.addEventHandler capsuleSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
capsuleClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
capsuleClassTableLayout.controls.add capsuleLabel 0 0
|
|
capsuleClassTableLayout.controls.add capsuleHideCheckButton 1 0
|
|
capsuleClassTableLayout.controls.add capsuleSelectButton 2 0
|
|
|
|
cylinderLabel = RS_dotNetUI.Label "cylinderLabel" text:" cylinder" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
cylinderHideCheckButton = RS_dotNetUI.checkBox "cylinderHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
cylinderHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
cylinderHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
cylinderHideCheckButton.tag = dotNetMXSValue Col_cylinder
|
|
dotnet.addEventHandler cylinderHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
cylinderSelectButton = RS_dotNetUI.Button "cylinderSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
cylinderSelectButton.tag = dotNetMXSValue Col_cylinder
|
|
dotnet.addEventHandler cylinderSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
cylinderClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
cylinderClassTableLayout.controls.add cylinderLabel 0 0
|
|
cylinderClassTableLayout.controls.add cylinderHideCheckButton 1 0
|
|
cylinderClassTableLayout.controls.add cylinderSelectButton 2 0
|
|
|
|
planeLabel = RS_dotNetUI.Label "planeLabel" text:" plane" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
planeHideCheckButton = RS_dotNetUI.checkBox "planeHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
planeHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
planeHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
planeHideCheckButton.tag = dotNetMXSValue Col_plane
|
|
dotnet.addEventHandler planeHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
planeSelectButton = RS_dotNetUI.Button "planeSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
planeSelectButton.tag = dotNetMXSValue Col_plane
|
|
dotnet.addEventHandler planeSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
planeClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
planeClassTableLayout.controls.add planeLabel 0 0
|
|
planeClassTableLayout.controls.add planeHideCheckButton 1 0
|
|
planeClassTableLayout.controls.add planeSelectButton 2 0
|
|
|
|
sphereLabel = RS_dotNetUI.Label "sphereLabel" text:" sphere" textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
borderStyle:RS_dotNetPreset.BS_None dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
sphereHideCheckButton = RS_dotNetUI.checkBox "sphereHideCheckButton" text:"" appearance:RS_dotNetPreset.AC_Button textAlign:RS_dotNetPreset.CA_MiddleLeft \
|
|
dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
sphereHideCheckButton.BackgroundImage = RS_dotNetObject.imageObject unHiddenIcon
|
|
sphereHideCheckButton.BackgroundImageLayout = (dotNetClass "System.Windows.Forms.ImageLayout").Center
|
|
sphereHideCheckButton.tag = dotNetMXSValue Col_sphere
|
|
dotnet.addEventHandler sphereHideCheckButton "CheckedChanged" dispatchColTypeHideCheck
|
|
|
|
sphereSelectButton = RS_dotNetUI.Button "sphereSelectButton" text:("S") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
sphereSelectButton.tag = dotNetMXSValue Col_sphere
|
|
dotnet.addEventHandler sphereSelectButton "click" dispatchColTypeSelectClick
|
|
|
|
sphereClassTableLayout = RS_dotNetUI.tableLayout "noCamTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:50),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
rows:#((dataPair type:"Absolute" value:24)) dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
sphereClassTableLayout.controls.add sphereLabel 0 0
|
|
sphereClassTableLayout.controls.add sphereHideCheckButton 1 0
|
|
sphereClassTableLayout.controls.add sphereSelectButton 2 0
|
|
|
|
colTypeAllButton = RS_dotNetUI.Button "colTypeAllButton" text:("All") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler colTypeAllButton "click" dispatchColTypeCheckClick
|
|
|
|
colTypeNoneButton = RS_dotNetUI.Button "colTypeNoneButton" text:("None") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler colTypeNoneButton "click" dispatchColTypeCheckClick
|
|
|
|
colTypeInvertButton = RS_dotNetUI.Button "colTypeInvertButton" text:("Invert") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler colTypeInvertButton "click" dispatchColTypeCheckClick
|
|
|
|
colTypeTableLayout = RS_dotNetUI.tableLayout "colTypeTableLayout" text:"colTypeTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:75),(dataPair type:"Percent" value:25)) \
|
|
rows:#((dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)
|
|
,(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24)) \
|
|
dockStyle:RS_dotNetPreset.DS_Fill
|
|
|
|
colTypeTableLayout.controls.add meshClassTableLayout 0 0 --meshCheckBox
|
|
colTypeTableLayout.controls.add colTypeAllButton 1 0
|
|
colTypeTableLayout.controls.add boxClassTableLayout 0 1 --boxCheckBox
|
|
colTypeTableLayout.controls.add colTypeNoneButton 1 1
|
|
colTypeTableLayout.controls.add capsuleClassTableLayout 0 2 --capsuleCheckBox
|
|
colTypeTableLayout.controls.add colTypeInvertButton 1 2
|
|
colTypeTableLayout.controls.add cylinderClassTableLayout 0 3 --cylinderCheckBox
|
|
colTypeTableLayout.controls.add planeClassTableLayout 0 4 --planeCheckBox
|
|
colTypeTableLayout.controls.add sphereClassTableLayout 0 5 --sphereCheckBox
|
|
|
|
colTypeGroup = RS_dotNetUI.GroupBox "classGroup" Text:"Collision Object Type" dockStyle:RS_dotNetPreset.DS_Fill
|
|
colTypeGroup.controls.add colTypeTableLayout
|
|
|
|
attributePanel = (createAttributeControls())
|
|
|
|
attributeTableLayout = RS_dotNetUI.tableLayout "attributeTableLayout" text:"attributeTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:75),(dataPair type:"Percent" value:25)) \
|
|
rows:#((dataPair type:"Absolute" value:240),(dataPair type:"Absolute" value:24)) \
|
|
dockStyle:RS_dotNetPreset.DS_Fill --cellStyle:RS_dotNetPreset.CBS_Single
|
|
|
|
attributeTableLayout.controls.add attributePanel 0 0
|
|
|
|
attributeTableLayout.SetColumnSpan attributePanel 2
|
|
|
|
attributeGroup = RS_dotNetUI.GroupBox "attributeGroup" Text:"Attribute" dockStyle:RS_dotNetPreset.DS_Fill
|
|
attributeGroup.controls.add attributeTableLayout
|
|
|
|
surfaceTypeDataGrid = RS_dotNetUI.dataGridView "surfaceTypeDataGrid" text:"Surface Types" dockStyle:RS_dotNetPreset.DS_Fill
|
|
surfaceTypeDataGrid.ColumnHeadersVisible = false
|
|
surfaceTypeDataGrid.SelectionMode = (dotNetClass "System.Windows.Forms.DataGridViewSelectionMode").FullRowSelect --CellSelect
|
|
surfaceTypeDataGrid.RowHeadersWidthSizeMode = (dotNetClass "System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode").DisableResizing
|
|
surfaceTypeDataGrid.backColor = RS_dotNetClass.colourClass.White
|
|
dotnet.addEventHandler surfaceTypeDataGrid "CellClick" dispatchSurfaceTypeGridClick --CellContentClick
|
|
|
|
setupDataColumns()
|
|
addSurfaceTypeData ::RSL_CollisionOps.attribute.matDatSurfaceTypeArray
|
|
|
|
surfaceTypeAllButton = RS_dotNetUI.Button "surfaceTypeAllButton" text:("All") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler surfaceTypeAllButton "click" dispatchSurfaceTypeCheckClick
|
|
|
|
surfaceTypeNoneButton = RS_dotNetUI.Button "surfaceTypeNoneButton" text:("None") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler surfaceTypeNoneButton "click" dispatchSurfaceTypeCheckClick
|
|
|
|
surfaceTypeInvertButton = RS_dotNetUI.Button "surfaceTypeInvertButton" text:("Invert") dockStyle:RS_dotNetPreset.DS_Fill margin:(RS_dotNetObject.paddingObject 0)
|
|
dotnet.addEventHandler surfaceTypeInvertButton "click" dispatchSurfaceTypeCheckClick
|
|
|
|
surfaceTypeTableLayout = RS_dotNetUI.tableLayout "surfaceTypeTableLayout" text:"surfaceTypeTableLayout" \
|
|
collumns:#((dataPair type:"Percent" value:75),(dataPair type:"Percent" value:25)) \
|
|
rows:#((dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:24),(dataPair type:"Absolute" value:168),(dataPair type:"Absolute" value:24)) \
|
|
dockStyle:RS_dotNetPreset.DS_Fill --cellStyle:RS_dotNetPreset.CBS_Single
|
|
|
|
surfaceTypeTableLayout.controls.add surfaceTypeDataGrid 0 0 --surfaceTypeSelectButton
|
|
surfaceTypeTableLayout.controls.add surfaceTypeAllButton 1 0
|
|
surfaceTypeTableLayout.controls.add surfaceTypeNoneButton 1 1
|
|
surfaceTypeTableLayout.controls.add surfaceTypeInvertButton 1 2
|
|
|
|
surfaceTypeTableLayout.setRowSpan surfaceTypeDataGrid 4
|
|
|
|
surfaceTypeGroup = RS_dotNetUI.GroupBox "surfaceTypeGroup" Text:"Surface Type" dockStyle:RS_dotNetPreset.DS_Fill
|
|
surfaceTypeGroup.controls.add surfaceTypeTableLayout
|
|
|
|
selectDisplayTableLayout.controls.add colTypeGroup
|
|
selectDisplayTableLayout.controls.add attributeGroup
|
|
selectDisplayTableLayout.controls.add surfaceTypeGroup
|
|
|
|
selectDisplayTableLayout
|
|
)
|
|
) |