| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003 |
- new GuiControl(MaterialSelectorOverlay, EditorGuiGroup) {
- canSaveDynamicFields = "0";
- Profile = "GuiOverlayProfile";
- Enabled = "1";
- isContainer = "1";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "1024 768";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- hovertime = "1000";
- new GuiWindowCtrl(MaterialSelector){
- profile = "ToolsGuiWindowProfile";
- HorizSizing = "center";
- VertSizing = "center";
- resizeWidth = "1";
- resizeHeight = "1";
- canClose = "1";
- canMinimize = "0";
- canMaximize = "0";
- position = "72 98";
- extent =" 766 550";
- MinExtent = "383 274";
- text = "Material Selector";
- closeCommand = "MaterialSelector::hideDialog();";
- EdgeSnap = "0";
- canCollapse = "0";
- visible = "0";
-
- new GuiContainer(){
- isContainer = "1";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "4 22";
- Extent = "120 31";
- Profile = "inspectorStyleRolloutDarkProfile";
- };
- new GuiTextCtrl(){
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "10 23";
- extent = "30 16";
- text = "Filters";
- };
- new GuiContainer(){
- profile = "ToolsGuiDefaultProfile";
- Position = "4 39";
- Extent = "120 507";
- HorizSizing = "right";
- VertSizing = "height";
- isContainer = "1";
-
- new GuiScrollCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "1";
- Profile = "GuiEditorScrollProfile";
- HorizSizing = "width";
- VertSizing = "height";
- Position = "0 0";
- Extent = "128 355";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- tooltipprofile = "ToolsGuiDefaultProfile";
- hovertime = "1000";
- Docking = "Client";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- willFirstRespond = "1";
- hScrollBar = "alwaysOff";
- vScrollBar = "dynamic";
- lockHorizScroll = true;
- lockVertScroll = "false";
- constantThumbHeight = "0";
- childMargin = "0 0";
- mouseWheelScrollSpeed = "-1";
-
-
- new GuiDynamicCtrlArrayControl() {
- canSaveDynamicFields = "0";
- internalName = "filterArray";
- Enabled = "1";
- isContainer = "1";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "width";
- VertSizing = "bottom";
- Position = "18 0";
- Extent = "128 195";
- MinExtent = "8 8";
- dynamicSize = "1";
- rowSpacing = "2";
- colSize = "128";
- rowSize = "18";
- };
- };
- };
- new GuiContainer(){
- Profile = "inspectorStyleRolloutDarkProfile";
- Position = "128 22";
- Extent = "480 31";
- HorizSizing = "width";
- VertSizing = "bottom";
- isContainer = "1";
- };
- new GuiTextCtrl(){
- profile = "ToolsGuiDefaultProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "133 23";
- extent = "53 16";
- text = "Materials";
- };
- // Create New Material
- new GuiBitmapButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "594 24";
- Extent = "15 15";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- Command = "MaterialSelector.createNewMaterial();";
- hovertime = "1000";
- tooltip = "Create New Unmapped Material";
- bitmap = "tools/gui/images/new";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- };
-
- new GuiBitmapButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "578 24";
- Extent = "15 15";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- Command = "MaterialSelector.showDeleteDialog();";
- hovertime = "1000";
- tooltip = "Delete Material";
- bitmap = "tools/gui/images/delete";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- };
-
- new GuiContainer(){ // Materials
- profile = "ToolsGuiDefaultProfile";
- Position = "128 39";
- Extent = "480 507";
- HorizSizing = "width";
- VertSizing = "height";
- isContainer = "1";
-
- new GuiScrollCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "1";
- Profile = "GuiEditorScrollProfile";
- HorizSizing = "width";
- VertSizing = "height";
- Position = "0 0";
- Extent = "480 507";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- tooltipprofile = "ToolsGuiDefaultProfile";
- hovertime = "1000";
- Docking = "Client";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- willFirstRespond = "1";
- hScrollBar = "alwaysOff";
- vScrollBar = "dynamic";
- lockHorizScroll = "true";
- lockVertScroll = "false";
- constantThumbHeight = "0";
- childMargin = "0 0";
- mouseWheelScrollSpeed = "-1";
-
- new GuiStackControl(){
- HorizSizing = "width";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "128 0";
- changeChildPosition = 0;
- changeChildSizeToFit = 1;
-
- new GuiControl(){
- Extent = "0 4";
- };
- new GuiDynamicCtrlArrayControl() {
- canSaveDynamicFields = "0";
- internalName = "materialSelection";
- Enabled = "1";
- isContainer = "1";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "width";
- VertSizing = "bottom";
- Position = "3 0";
- Extent = "128 0";
- MinExtent = "8 8";
- dynamicSize = "1";
- autoCellSize = "1";
- rowSpacing = "2";
- colSpacing = "2";
- margin = "2";
- };
- };
- };
- new GuiContainer(){
- internalName = "materialPreviewControlContainer";
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "480 20";
- HorizSizing = "width";
- VertSizing = "height";
- isContainer = "1";
- Docking = "Bottom";
- new GuiTextCtrl(){
- profile = "ToolsGuiDefaultProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "0 2";
- extent = "100 16";
- text = "Thumbnails per Page:";
- };
- new GuiPopupMenuCtrlEx(){
- internalName = "materialPreviewCountPopup";
- Profile = "ToolsGuiPopUpMenuProfile";
- Position = "104 2";
- Extent = "40 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- Command = "MaterialSelector.thumbnailCountUpdate();";
- reverseTextList = "0";
- Text = "16";
- };
-
- new GuiStackControl(){
- internalName = "materialPreviewButtonStack";
- HorizSizing = "left";
- VertSizing = "bottom";
- Position = "480 2";
- Extent = "0 16";
- dynamic = 1;
- dynamicPos = 1;
- stackingType = "Horizontal";
- changeChildPosition = 1;
- changeChildSizeToFit = 1;
- padding = 2;
-
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "20 16";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- Command = "MaterialSelector::firstPage();";
- tooltipprofile = "ToolsGuiToolTipProfile";
- tooltip = "First";
- hovertime = "1000";
- text = "|<";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "1";
- };
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "20 16";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- Command = "MaterialSelector::previousPage();";
- tooltipprofile = "ToolsGuiToolTipProfile";
- tooltip = "Previous";
- hovertime = "1000";
- text = "<";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "1";
- };
- new GuiStackControl(){
- internalName = "materialPreviewPagesStack";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "0 16";
- dynamic = 1;
- stackingType = "Horizontal";
- changeChildPosition = 1;
- changeChildSizeToFit = 1;
- padding = 2;
- };
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "20 16";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- Command = "MaterialSelector::nextPage();";
- tooltipprofile = "ToolsGuiToolTipProfile";
- tooltip = "Next";
- hovertime = "1000";
- text = ">";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "1";
- };
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "20 16";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- Command = "MaterialSelector::lastPage();";
- tooltipprofile = "ToolsGuiToolTipProfile";
- tooltip = "Last";
- hovertime = "1000";
- text = ">|";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "1";
- };
- };
- };
- };
- new GuiContainer(){
- Profile = "inspectorStyleRolloutDarkProfile";
- Position = "612 206";
- Extent = "150 31";
- HorizSizing = "left";
- VertSizing = "bottom";
- isContainer = "1";
- };
- new GuiTextCtrl(){
- profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "618 207";
- extent = "84 16";
- text = "Material Tags";
- };
- new GuiContainer(){ // Filter Selection
- profile = "ToolsGuiDefaultProfile";
- Position = "612 223";
- Extent = "150 295";
- HorizSizing = "left";
- VertSizing = "height";
- isContainer = "1";
-
- new GuiScrollCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "1";
- Profile = "GuiEditorScrollProfile";
- HorizSizing = "width";
- VertSizing = "height";
- Position = "0 0";
- Extent = "128 195";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- tooltipprofile = "ToolsGuiDefaultProfile";
- hovertime = "1000";
- Docking = "Client";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- willFirstRespond = "1";
- hScrollBar = "alwaysOff";
- vScrollBar = "dynamic";
- lockHorizScroll = "true";
- lockVertScroll = "false";
- constantThumbHeight = "0";
- childMargin = "0 0";
- mouseWheelScrollSpeed = "-1";
- new GuiDynamicCtrlArrayControl() {
- canSaveDynamicFields = "0";
- internalName = "materialCategories";
- Enabled = "1";
- isContainer = "1";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "width";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "128 195";
- MinExtent = "8 8";
- dynamicSize = "1";
- rowSpacing = "2";
- colSize = "128";
- rowSize = "18";
- };
- };
- };
- new GuiContainer(){
- Profile = "inspectorStyleRolloutDarkProfile";
- Position = "612 22";
- Extent = "150 167";
- HorizSizing = "left";
- VertSizing = "bottom";
- isContainer = "1";
-
- new GuiBitmapCtrl(){
- internalName = "previewSelection";
- HorizSizing = "left";
- VertSizing = "bottom";
- profile = "ToolsGuiDefaultProfile";
- position = "1 18";
- extent = "148 148";
- bitmap = "";
- };
- };
- new GuiTextCtrl(){
- profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "618 23";
- extent = "84 16";
- text = "Diffuse Preview";
- };
-
- new GuiBitmapCtrl(){
- HorizSizing = "left";
- VertSizing = "bottom";
- profile = "ToolsGuiDefaultProfile";
- position = "612 39";
- extent = "150 150";
- bitmap = "tools/worldEditor/images/terrainpainter/terrain-painter-border-large";
- visible = false;
- };
- new GuiTextCtrl(){
- internalName = "previewSelectionText";
- HorizSizing = "left";
- VertSizing = "bottom";
- profile = "ToolsGuiTextProfile";
- position = "613 189";
- extent = "149 16";
- text = "";
- };
- new GuiButtonCtrl(){
- internalName = "SelectButton";
- HorizSizing = "left";
- VertSizing = "top";
- profile = "ToolsGuiButtonProfile";
- position = "612 522";
- extent = "94 24";
- text = "Select";
- command = "MaterialSelector.selectMaterial( MaterialSelector.selectedMaterial );";
- };
- new GuiButtonCtrl(){
- HorizSizing = "left";
- VertSizing = "top";
- profile = "ToolsGuiButtonProfile";
- position = "710 522";
- extent = "52 24";
- text = "Cancel";
- command = "MaterialSelector.hideDialog();";
- };
- };
-
- new GuiWindowCtrl(MaterialSelector_addFilterWindow) {
- canSaveDynamicFields = "0";
- isContainer = "1";
- Profile = "ToolsGuiWindowProfile";
- HorizSizing = "center";
- VertSizing = "center";
- position = "362 333";
- Extent = "272 99";
- MinExtent = "48 92";
- canSave = "1";
- Visible = "0";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- resizeWidth = "1";
- resizeHeight = "1";
- canMove = "1";
- canClose = "0";
- canMinimize = "0";
- canMaximize = "0";
- minSize = "50 50";
- EdgeSnap = "1";
- text = "Create New Tag";
- new GuiTextEditCtrl() {
- canSaveDynamicFields = "0";
- internalName = "tagName";
- isContainer = "0";
- Profile = "ToolsGuiTextEditProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "64 35";
- Extent = "196 18";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- maxLength = "1024";
- historySize = "0";
- password = "0";
- tabComplete = "0";
- sinkAllKeyEvents = "0";
- passwordMask = "*";
- };
- new GuiTextCtrl() {
- canSaveDynamicFields = "0";
- isContainer = "0";
- Profile = "ToolsGuiTextProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "12 35";
- Extent = "52 16";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- Margin = "0 0 0 0";
- Padding = "0 0 0 0";
- AnchorTop = "1";
- AnchorBottom = "0";
- AnchorLeft = "1";
- AnchorRight = "0";
- maxLength = "1024";
- text = "Tag Name";
- };
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "64 68";
- Extent = "126 22";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- text = "Create";
- Command = "MaterialSelector.createFilter( MaterialSelector_addFilterWindow-->tagName.getText() );MaterialSelector_addFilterWindow.setVisible(0);";
- };
- new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- isContainer = "0";
- Profile = "ToolsGuiButtonProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "196 68";
- Extent = "64 22";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- text = "Cancel";
- Command = "MaterialSelector_addFilterWindow.setVisible(0);";
- };
- };
- };
- $Pref::MaterialSelector::CurrentStaticFilter = "MaterialFilterAllArray";
- $Pref::MaterialSelector::CurrentFilter = ""; //ALL
- $Pref::MaterialSelector::ThumbnailCountIndex = 0;
- new PersistenceManager(MaterialSelectorPerMan);
- new ArrayObject(UnlistedMaterials);
- UnlistedMaterials.add( "unlistedMaterials", WarningMaterial );
- UnlistedMaterials.add( "unlistedMaterials", materialEd_previewMaterial );
- UnlistedMaterials.add( "unlistedMaterials", notDirtyMaterial );
- UnlistedMaterials.add( "unlistedMaterials", materialEd_cubemapEd_cubeMapPreview );
- UnlistedMaterials.add( "unlistedMaterials", matEdCubeMapPreviewMat );
- UnlistedMaterials.add( "unlistedMaterials", materialEd_justAlphaMaterial );
- UnlistedMaterials.add( "unlistedMaterials", materialEd_justAlphaShader );
-
- function MaterialSelector::selectMaterial( %this, %material )
- {
- %name = "";
-
- if( MaterialSelector.terrainMaterials )
- {
- %name = %material;
- %material = TerrainMaterialSet.findObjectByInternalName( %material );
- }
- else
- {
- %name = %material.getName();
- }
-
- // The callback function should be ready to intake the returned material
- //eval("materialEd_previewMaterial." @ %propertyField @ " = " @ %value @ ";");
- if( MaterialSelector.returnType $= "name" )
- eval( "" @ MaterialSelector.selectCallback @ "(" @ %name @ ");");
- else if( MaterialSelector.returnType $= "index" )
- {
- %index = -1;
- if( MaterialSelector.terrainMaterials )
- {
- // Obtain the index into the terrain's material list
- %mats = ETerrainEditor.getMaterials();
- for(%i = 0; %i < getRecordCount( %mats ); %i++)
- {
- %matInternalName = getRecord( %mats, %i );
- if( %matInternalName $= %name )
- {
- %index = %i;
- break;
- }
- }
- }
- else
- {
- // Obtain the index into the material set
- for(%i = 0; %i < materialSet.getCount(); %i++)
- {
- %obj = materialSet.getObject(%i);
- if( %obj.getName() $= %name )
- {
- %index = %i;
- break;
- }
- }
- }
-
- eval( "" @ MaterialSelector.selectCallback @ "(" @ %index @ ");");
- }
- else
- eval( "" @ MaterialSelector.selectCallback @ "(" @ %material.getId() @ ");");
- MaterialSelector.hideDialog();
- }
- function MaterialSelector::showDialog( %this, %selectCallback, %returnType)
- {
- if( MaterialSelector.isVisible() )
- return;
-
- %this.showDialogBase(%selectCallback, %returnType, false);
- }
- function MaterialSelector::showTerrainDialog( %this, %selectCallback, %returnType)
- {
- %this.showDialogBase(%selectCallback, %returnType, true);
- }
- function MaterialSelector::showDialogBase( %this, %selectCallback, %returnType, %useTerrainMaterials)
- {
- // Set the select callback
- MaterialSelector.selectCallback = %selectCallback;
- MaterialSelector.returnType = %returnType;
-
- MaterialSelector.currentStaticFilter = $Pref::MaterialSelector::CurrentStaticFilter;
- MaterialSelector.currentFilter = $Pref::MaterialSelector::CurrentFilter;
- MaterialSelector.terrainMaterials = %useTerrainMaterials;
-
- MaterialSelector-->materialPreviewCountPopup.clear();
- MaterialSelector-->materialPreviewCountPopup.add( "10", 0 );
- MaterialSelector-->materialPreviewCountPopup.add( "15", 1 );
- MaterialSelector-->materialPreviewCountPopup.add( "25", 2 );
- MaterialSelector-->materialPreviewCountPopup.add( "50", 3 );
- MaterialSelector-->materialPreviewCountPopup.add( "75", 4 );
- MaterialSelector-->materialPreviewCountPopup.add( "100", 5 );
- MaterialSelector-->materialPreviewCountPopup.setSelected( $Pref::MaterialSelector::ThumbnailCountIndex );
-
- Canvas.pushDialog(MaterialSelectorOverlay);
- MaterialSelector.setVisible(1);
- MaterialSelector.buildStaticFilters();
-
- MaterialSelector.selectedMaterial = "";
- MaterialSelector.loadMaterialFilters();
- }
- function MaterialSelector::hideDialog( %this )
- {
- MaterialSelector.breakdown();
- MaterialSelector.setVisible(0);
- Canvas.popDialog(MaterialSelectorOverlay);
- }
- function MaterialSelector::breakdown( %this )
- {
- $Pref::MaterialSelector::CurrentStaticFilter = MaterialSelector.currentStaticFilter;
- $Pref::MaterialSelector::CurrentFilter = MaterialSelector.currentFilter;
-
- MaterialSelector-->filterArray.deleteAllObjects();
- MaterialSelector-->materialSelection.deleteAllObjects();
- MatEdPreviewArray.delete();
-
- MaterialSelector-->materialCategories.deleteAllObjects();
- MaterialFilterAllArray.delete();
- MaterialFilterMappedArray.delete();
- MaterialFilterUnmappedArray.delete();
-
- }
- function MaterialSelector::buildStaticFilters( %this )
- {
- // if you want to add any more containers to staticFilterObjects, here's
- // where to do it
-
- %staticFilterContainer = new GuiControl (){
- new GuiContainer(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- parentGroup = %filterArray;
-
- new GuiContainer(){
- profile = "inspectorStyleRolloutDarkProfile";
- Position = "-1 0";
- Extent = "128 32";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- };
- new GuiTextCtrl(){
- Profile = "EditorTextProfile";
- position = "5 0";
- Extent = "118 18";
- text = "Types";
- };
- };
- new GuiContainer(){ // All
- profile = "ToolsGuiDefaultProfile";
- Position = "415 191";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- parentGroup = %filterArray;
-
- new GuiCheckBoxCtrl(MaterialFilterAllArrayCheckbox){
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 2";
- Extent = "118 18";
- text = "All";
- Command = "MaterialSelector.switchStaticFilters(\"MaterialFilterAllArray\");";
- };
- };
- new GuiContainer(){ // Mapped
- profile = "ToolsGuiDefaultProfile";
- Position = "415 191";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- parentGroup = %filterArray;
-
- new GuiCheckBoxCtrl(MaterialFilterMappedArrayCheckbox){
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 2";
- Extent = "118 18";
- text = "Mapped";
- Command = "MaterialSelector.switchStaticFilters(\"MaterialFilterMappedArray\");";
- };
- };
- new GuiContainer(){ // Unmapped
- profile = "ToolsGuiDefaultProfile";
- Position = "415 191";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- parentGroup = %filterArray;
-
- new GuiCheckBoxCtrl(MaterialFilterUnmappedArrayCheckbox){
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 2";
- Extent = "118 18";
- text = "Unmapped";
- Command = "MaterialSelector.switchStaticFilters(\"MaterialFilterUnmappedArray\");";
- };
- };
- new GuiContainer(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- parentGroup = %filterArray;
-
- new GuiContainer(){
- profile = "inspectorStyleRolloutDarkProfile";
- Position = "-1 0";
- Extent = "128 32";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- };
-
- new GuiTextCtrl(){
- Profile = "EditorTextProfile";
- position = "5 0";
- Extent = "118 18";
- text = "Tags";
- };
- // Create New Tag
- new GuiBitmapButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "105 2";
- Extent = "15 15";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- Command = "MaterialSelector_addFilterWindow.setVisible(1); MaterialSelectorOverlay.pushToBack(MaterialSelector_addFilterWindow);";
- hovertime = "1000";
- tooltip = "Create New Tag";
- bitmap = "tools/gui/images/new";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- };
- new GuiBitmapButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiDefaultProfile";
- HorizSizing = "left";
- VertSizing = "bottom";
- position = "89 2";
- Extent = "13 13";
- MinExtent = "8 2";
- canSave = "1";
- Visible = "1";
- Command = "MaterialSelector.clearMaterialFilters();";
- hovertime = "1000";
- tooltip = "Clear Selected Tag";
- bitmap = "tools/gui/images/clear-btn";
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "0";
- };
- };
- };
- %i = %staticFilterContainer.getCount();
- for( ; %i != 0; %i--)
- MaterialSelector-->filterArray.addGuiControl(%staticFilterContainer.getObject(0));
-
- MaterialSelector.staticFilterObjects = MaterialSelector-->filterArray.getCount();
-
- %staticFilterContainer.delete();
-
- // Create our category array used in the selector, this code should be taken out
- // in order to make the material selector agnostic
- new ArrayObject(MaterialFilterAllArray);
- new ArrayObject(MaterialFilterMappedArray);
- new ArrayObject(MaterialFilterUnmappedArray);
-
- %mats = "";
- %count = 0;
- if( MaterialSelector.terrainMaterials )
- {
- %mats = ETerrainEditor.getTerrainBlocksMaterialList();
- %count = getRecordCount( %mats );
- }
- else
- {
- %count = materialSet.getCount();
- }
-
- for(%i = 0; %i < %count; %i++)
- {
- // Process terrain materials
- if( MaterialSelector.terrainMaterials )
- {
- %matInternalName = getRecord( %mats, %i );
- %material = TerrainMaterialSet.findObjectByInternalName( %matInternalName );
-
- // Is there no material info for this slot?
- if ( !isObject( %material ) )
- continue;
-
- // Add to the appropriate filters
- MaterialFilterMappedArray.add( "", %material );
- MaterialFilterAllArray.add( "", %material );
-
- continue;
- }
- // Process regular materials here
- %material = materialSet.getObject(%i);
-
- for( %k = 0; %k < UnlistedMaterials.count(); %k++ )
- {
- %unlistedFound = 0;
- if( UnlistedMaterials.getValue(%k) $= %material.name )
- {
- %unlistedFound = 1;
- break;
- }
- }
-
- if( %unlistedFound )
- continue;
-
- if( %material.mapTo $= "" || %material.mapTo $= "unmapped_mat" )
- {
- MaterialFilterUnmappedArray.add( "", %material.name );
- //running through the existing tag names
- for( %j = 0; %material.getFieldValue("materialTag" @ %j) !$= ""; %j++ )
- MaterialFilterUnmappedArray.add( %material.getFieldValue("materialTag" @ %j), %material.name );
- }
- else
- {
- MaterialFilterMappedArray.add( "", %material.name );
- for( %j = 0; %material.getFieldValue("materialTag" @ %j) !$= ""; %j++ )
- MaterialFilterMappedArray.add( %material.getFieldValue("materialTag" @ %j), %material.name );
- }
-
- MaterialFilterAllArray.add( "", %material.name );
- for( %j = 0; %material.getFieldValue("materialTag" @ %j) !$= ""; %j++ )
- MaterialFilterAllArray.add( %material.getFieldValue("materialTag" @ %j), %material.name );
-
- }
-
- MaterialFilterAllArrayCheckbox.setText("All ( " @ MaterialFilterAllArray.count() @" ) ");
- MaterialFilterMappedArrayCheckbox.setText("Mapped ( " @ MaterialFilterMappedArray.count() @" ) ");
- MaterialFilterUnmappedArrayCheckbox.setText("Unmapped ( " @ MaterialFilterUnmappedArray.count() @" ) ");
- }
- function MaterialSelector::preloadFilter( %this )
- {
- %selectedFilter = "";
- for( %i = MaterialSelector.staticFilterObjects; %i < MaterialSelector-->filterArray.getCount(); %i++ )
- {
- if( MaterialSelector-->filterArray.getObject(%i).getObject(0).getValue() == 1 )
- {
- if( %selectedFilter $= "" )
- %selectedFilter = MaterialSelector-->filterArray.getObject(%i).getObject(0).filter;
- else
- %selectedFilter = %selectedFilter @ " " @ MaterialSelector-->filterArray.getObject(%i).getObject(0).filter;
- }
- }
- MaterialSelector.loadFilter( %selectedFilter );
- }
- function MaterialSelector::loadFilter( %this, %selectedFilter, %staticFilter )
- {
- // manage schedule array properly
- if(!isObject(MatEdScheduleArray))
- new ArrayObject(MatEdScheduleArray);
-
- // if we select another list... delete all schedules that were created by
- // previous load
- for( %i = 0; %i < MatEdScheduleArray.count(); %i++ )
- cancel(MatEdScheduleArray.getKey(%i));
-
- // we have to empty out the list; so when we create new schedules, these dont linger
- MatEdScheduleArray.empty();
-
- // manage preview array
- if(!isObject(MatEdPreviewArray))
- new ArrayObject(MatEdPreviewArray);
-
- // we have to empty out the list; so when we create new guicontrols, these dont linger
- MatEdPreviewArray.empty();
- MaterialSelector-->materialSelection.deleteAllObjects();
- MaterialSelector-->materialPreviewPagesStack.deleteAllObjects();
-
- // changed to accomadate tagging. dig through the array for each tag name,
- // call unique value, sort, and we have a perfect set of materials
- if( %staticFilter !$= "" )
- MaterialSelector.currentStaticFilter = %staticFilter;
-
- MaterialSelector.currentFilter = %selectedFilter;
-
- %filteredObjectsArray = new ArrayObject();
-
- %previewsPerPage = MaterialSelector-->materialPreviewCountPopup.getTextById( MaterialSelector-->materialPreviewCountPopup.getSelected() );
-
- %tagCount = getWordCount( MaterialSelector.currentFilter );
- if( %tagCount != 0 )
- {
- for( %j = 0; %j < %tagCount; %j++ )
- {
- for( %i = 0; %i < MaterialSelector.currentStaticFilter.count(); %i++ )
- {
- %currentTag = getWord( MaterialSelector.currentFilter, %j );
- if( MaterialSelector.currentStaticFilter.getKey(%i) $= %currentTag)
- %filteredObjectsArray.add( MaterialSelector.currentStaticFilter.getKey(%i), MaterialSelector.currentStaticFilter.getValue(%i) );
- }
- }
-
- %filteredObjectsArray.uniqueValue();
- %filteredObjectsArray.sortd();
-
- MaterialSelector.totalPages = mCeil( %filteredObjectsArray.count() / %previewsPerPage );
-
- //Can we maintain the current preview page, or should we go to page 1?
- if( (MaterialSelector.currentPreviewPage * %previewsPerPage) >= %filteredObjectsArray.count() )
- MaterialSelector.currentPreviewPage = 0;
-
- // Build out the pages buttons
- MaterialSelector.buildPagesButtons( MaterialSelector.currentPreviewPage, MaterialSelector.totalPages );
-
- %previewCount = %previewsPerPage;
- %possiblePreviewCount = %filteredObjectsArray.count() - MaterialSelector.currentPreviewPage * %previewsPerPage;
- if( %possiblePreviewCount < %previewCount )
- %previewCount = %possiblePreviewCount;
-
- %start = MaterialSelector.currentPreviewPage * %previewsPerPage;
- for( %i = %start; %i < %start + %previewCount; %i++ )
- MaterialSelector.buildPreviewArray( %filteredObjectsArray.getValue(%i) );
-
- %filteredObjectsArray.delete();
- }
- else
- {
- MaterialSelector.currentStaticFilter.sortd();
-
- // Rebuild the static filter list without tagged materials
- %noTagArray = new ArrayObject();
- for( %i = 0; %i < MaterialSelector.currentStaticFilter.count(); %i++ )
- {
- if( MaterialSelector.currentStaticFilter.getKey(%i) !$= "")
- continue;
-
- %material = MaterialSelector.currentStaticFilter.getValue(%i);
-
- // CustomMaterials are not available for selection
- if ( !isObject( %material ) || %material.isMemberOfClass( "CustomMaterial" ) )
- continue;
-
- %noTagArray.add( "", %material );
- }
-
- MaterialSelector.totalPages = mCeil( %noTagArray.count() / %previewsPerPage );
-
- //Can we maintain the current preview page, or should we go to page 1?
- if( (MaterialSelector.currentPreviewPage * %previewsPerPage) >= %noTagArray.count() )
- MaterialSelector.currentPreviewPage = 0;
-
- // Build out the pages buttons
- MaterialSelector.buildPagesButtons( MaterialSelector.currentPreviewPage, MaterialSelector.totalPages );
-
- %previewCount = %previewsPerPage;
- %possiblePreviewCount = %noTagArray.count() - MaterialSelector.currentPreviewPage * %previewsPerPage;
- if( %possiblePreviewCount < %previewCount )
- %previewCount = %possiblePreviewCount;
- %start = MaterialSelector.currentPreviewPage * %previewsPerPage;
- for( %i = %start; %i < %start + %previewCount; %i++ )
- {
- MaterialSelector.buildPreviewArray( %noTagArray.getValue(%i) );
- }
- }
-
-
- MaterialSelector.loadImages( 0 );
- }
- function MaterialSelector::buildPreviewArray( %this, %material )
- {
- %matName = "";
- // CustomMaterials are not available for selection
- if ( !isObject( %material ) || %material.isMemberOfClass( "CustomMaterial" ) )
- return;
- if( %material.isMemberOfClass("TerrainMaterial") )
- {
- %matName = %material.getInternalName();
-
- if( %material.diffuseMap $= "")
- %previewImage = "core/art/warnmat";
- else
- %previewImage = %material.diffuseMap;
- }
- else if( %material.toneMap[0] $= "" && %material.diffuseMap[0] $= "" && !isObject(%material.cubemap) )
- {
- %matName = %material.name;
- %previewImage = "core/art/warnmat";
- }
- else
- {
- %matName = %material.name;
-
- if( %material.toneMap[0] !$= "" )
- %previewImage = %material.toneMap[0];
- else if( %material.diffuseMap[0] !$= "" )
- %previewImage = %material.diffuseMap[0];
- else if( %material.cubemap.cubeFace[0] !$= "" )
- %previewImage = %material.cubemap.cubeFace[0];
-
- //%previewImage = MaterialEditorGui.searchForTexture( %material, %previewImage );
-
- // were going to use a couple of string commands in order to properly
- // find out what the img src path is
- // **NEW** this needs to be updated with the above, but has some timing issues
- %materialDiffuse = %previewImage;
- %materialPath = %material.getFilename();
-
- if( strchr( %materialDiffuse, "/") $= "" )
- {
- %k = 0;
- while( strpos( %materialPath, "/", %k ) != -1 )
- {
- %foo = strpos( %materialPath, "/", %k );
- %k = %foo + 1;
- }
-
- %foobar = getSubStr( %materialPath , %k , 99 );
- %previewImage = strreplace( %materialPath, %foobar, %previewImage );
- }
- else
- %previewImage = strreplace( %materialPath, %materialPath, %previewImage );
- }
-
- // it may seem goofy why the checkbox can't be instanciated inside the container
- // reason being its because we need to store the checkbox ctrl in order to make changes
- // on it later in the function.
-
- %container = new GuiControl(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "74 87";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
-
- new GuiTextCtrl(){
- position = "7 71";
- profile = "ToolsGuiTextCenterProfile";
- extent = "64 16";
- text = %matName;
- };
- };
-
- %previewButton = new GuiBitmapButtonCtrl(){
- internalName = %matName;
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiButtonProfile";
- position = "7 4";
- extent = "64 64";
- buttonType = "PushButton";
- bitmap = "";
- Command = "";
- text = "Loading...";
- useStates = false;
-
- new GuiBitmapButtonCtrl(){
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiButtonProfile";
- position = "0 0";
- extent = "64 64";
- Variable = "";
- buttonType = "toggleButton";
- bitmap = "tools/materialEditor/gui/cubemapBtnBorder";
- groupNum = "0";
- text = "";
- };
- };
-
- %previewBorder = new GuiButtonCtrl(){
- internalName = %matName@"Border";
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiThumbHighlightButtonProfile";
- position = "3 0";
- extent = "72 88";
- Variable = "";
- buttonType = "toggleButton";
- tooltip = %matName;
- Command = "MaterialSelector.updateSelection( $ThisControl.getParent().getObject(1).internalName, $ThisControl.getParent().getObject(1).bitmap );";
- groupNum = "0";
- text = "";
- };
-
- %container.add(%previewButton);
- %container.add(%previewBorder);
- // add to the gui control array
- MaterialSelector-->materialSelection.add(%container);
-
- // add to the array object for reference later
- MatEdPreviewArray.add( %previewButton, %previewImage );
- }
- function MaterialSelector::loadImages( %this, %materialNum )
- {
- // this will save us from spinning our wheels in case we don't exist
- if( !MaterialSelector.visible )
- return;
-
- // this schedule is here to dynamically load images
- %previewButton = MatEdPreviewArray.getKey(%materialNum);
- %previewImage = MatEdPreviewArray.getValue(%materialNum);
-
- %previewButton.setBitmap(%previewImage);
- %previewButton.setText("");
-
- %materialNum++;
-
- if( %materialNum < MatEdPreviewArray.count() )
- {
- %tempSchedule = %this.schedule(64, "loadImages", %materialNum);
- MatEdScheduleArray.add( %tempSchedule, %materialNum );
- }
- }
- function MaterialSelector::clearMaterialFilters( %this )
- {
- for( %i = MaterialSelector.staticFilterObjects; %i < MaterialSelector-->filterArray.getCount(); %i++ )
- MaterialSelector-->filterArray.getObject(%i).getObject(0).setStateOn(0);
-
- MaterialSelector.loadFilter( "", "" );
- }
- function MaterialSelector::loadMaterialFilters( %this )
- {
- %filteredTypesArray = new ArrayObject();
-
- %filteredTypesArray.duplicate( MaterialFilterAllArray );
- %filteredTypesArray.uniqueKey();
-
- // sort the the keys before we do anything
- %filteredTypesArray.sortkd();
-
- eval( MaterialSelector.currentStaticFilter @ "Checkbox.setStateOn(1);" );
- // it may seem goofy why the checkbox can't be instanciated inside the container
- // reason being its because we need to store the checkbox ctrl in order to make changes
- // on it later in the function.
- %selectedFilter = "";
- for( %i = 0; %i < %filteredTypesArray.count(); %i++ )
- {
- %filter = %filteredTypesArray.getKey(%i);
- if(%filter $= "")
- continue;
-
- %container = new GuiControl(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- };
-
- %checkbox = new GuiCheckBoxCtrl(){
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 1";
- Extent = "118 18";
- Command = "";
- groupNum = "0";
- buttonType = "ToggleButton";
- text = %filter @ " ( " @ MaterialFilterAllArray.countKey(%filter) @ " )";
- filter = %filter;
- Command = "MaterialSelector.preloadFilter();";
- };
- %container.add( %checkbox );
- MaterialSelector-->filterArray.add( %container );
-
- %tagCount = getWordCount( MaterialSelector.currentFilter );
- for( %j = 0; %j < %tagCount; %j++ )
- {
- if( %filter $= getWord( MaterialSelector.currentFilter, %j ) )
- {
- if( %selectedFilter $= "" )
- %selectedFilter = %filter;
- else
- %selectedFilter = %selectedFilter @ " " @ %filter;
-
- %checkbox.setStateOn(1);
- }
- }
- }
-
- MaterialSelector.loadFilter( %selectedFilter );
-
- %filteredTypesArray.delete();
- }
- // create category and update current material if there is one
- function MaterialSelector::createFilter( %this, %filter )
- {
- if( %filter $= %existingFilters )
- {
- MessageBoxOK( "Error", "Can not create blank filter.");
- return;
- }
-
- for( %i = MaterialSelector.staticFilterObjects; %i < MaterialSelector-->filterArray.getCount() ; %i++ )
- {
- %existingFilters = MaterialSelector-->filterArray.getObject(%i).getObject(0).filter;
- if( %filter $= %existingFilters )
- {
- MessageBoxOK( "Error", "Can not create two filters of the same name.");
- return;
- }
- }
- %container = new GuiControl(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "128 18";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
-
- new GuiCheckBoxCtrl(){
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 1";
- Extent = "118 18";
- Command = "";
- groupNum = "0";
- buttonType = "ToggleButton";
- text = %filter @ " ( " @ MaterialFilterAllArray.countKey(%filter) @ " )";
- filter = %filter;
- Command = "MaterialSelector.preloadFilter();";
- };
- };
-
- MaterialSelector-->filterArray.add( %container );
-
- // if selection exists, lets reselect it to refresh it
- if( isObject(MaterialSelector.selectedMaterial) )
- MaterialSelector.updateSelection( MaterialSelector.selectedMaterial, MaterialSelector.selectedPreviewImagePath );
-
- // material category text field to blank
- MaterialSelector_addFilterWindow-->tagName.setText("");
- }
- function MaterialSelector::updateSelection( %this, %material, %previewImagePath )
- {
- // the material selector will visually update per material information
- // after we move away from the material. eg: if we remove a field from the material,
- // the empty checkbox will still be there until you move fro and to the material again
-
- %isMaterialBorder = 0;
- eval("%isMaterialBorder = isObject(MaterialSelector-->"@%material@"Border);");
- if( %isMaterialBorder )
- {
- eval( "MaterialSelector-->"@%material@"Border.setStateOn(1);");
- }
-
- %isMaterialBorderPrevious = 0;
- eval("%isMaterialBorderPrevious = isObject(MaterialSelector-->"@$prevSelectedMaterialHL@"Border);");
- if( %isMaterialBorderPrevious )
- {
- eval( "MaterialSelector-->"@$prevSelectedMaterialHL@"Border.setStateOn(0);");
- }
-
- MaterialSelector-->materialCategories.deleteAllObjects();
- MaterialSelector.selectedMaterial = %material;
- MaterialSelector.selectedPreviewImagePath = %previewImagePath;
- MaterialSelector-->previewSelectionText.setText( %material );
- MaterialSelector-->previewSelection.setBitmap( %previewImagePath );
-
- // running through the existing list of categorynames in the left, so yes
- // some might exist on the left only temporary if not given a home
- for( %i = MaterialSelector.staticFilterObjects; %i < MaterialSelector-->filterArray.getCount() ; %i++ )
- {
- %filter = MaterialSelector-->filterArray.getObject(%i).getObject(0).filter;
-
- %checkbox = new GuiCheckBoxCtrl(){
- materialName = %material.name;
- Profile = "ToolsGuiCheckBoxListProfile";
- position = "5 2";
- Extent = "118 18";
- Command = "MaterialSelector.updateMaterialTags( $ThisControl.materialName, $ThisControl.getText(), $ThisControl.getValue() );";
- text = %filter;
- };
-
- MaterialSelector-->materialCategories.add( %checkbox );
- // crawl through material for categories in order to check or not
- %filterFound = 0;
- for( %j = 0; %material.getFieldValue("materialTag" @ %j) !$= ""; %j++ )
- {
- %tag = %material.getFieldValue("materialTag" @ %j);
-
- if( %tag $= %filter )
- {
- %filterFound = 1;
- break;
- }
- }
-
- if( %filterFound )
- %checkbox.setStateOn(1);
- else
- %checkbox.setStateOn(0);
- }
-
- $prevSelectedMaterialHL = %material;
- }
- function MaterialSelector::updateMaterialTags( %this, %material, %tag, %tagValue )
- {
- if( %tagValue == 1 )
- {
- MaterialFilterAllArray.add( %tag, %material );
- if( %material.mapTo $= "" || %material.mapTo $= "unmapped_mat" )
- %secondStaticFilter = MaterialFilterUnmappedArray;
- else
- %secondStaticFilter = MaterialFilterMappedArray;
-
- %secondStaticFilter.add( %tag, %material );
-
- %createdTag = 0;
- for( %i = 0; %createdTag == 0; %i++ )
- {
- %materialTag = %material.getFieldValue("materialTag" @ %i);
- if( %materialTag $= "" )
- {
- eval( %material @ ".materialTag" @ %i @ "=" @ %tag @ ";" );
- %createdTag = 1;
-
- for( %j = MaterialSelector.staticFilterObjects; %j < MaterialSelector-->filterArray.getCount() ; %j++ )
- {
- if( %tag $= MaterialSelector-->filterArray.getObject(%j).getObject(0).filter )
- {
- %count = getWord( MaterialSelector-->filterArray.getObject(%j).getObject(0).getText(), 2 );
- %count++;
- MaterialSelector-->filterArray.getObject(%j).getObject(0).setText( %tag @ " ( "@ %count @ " )");
- }
- }
-
- break;
- }
- }
-
- }
- else
- {
- // Remove the material from the "all" category
- for( %i = 0; %i < MaterialFilterAllArray.count(); %i++ )
- {
- if( MaterialFilterAllArray.getKey(%i) $= %tag )
- {
- if( MaterialFilterAllArray.getValue(%i) $= %material )
- {
- MaterialFilterAllArray.erase(%i);
- break;
- }
- }
- }
-
- // Figure out what the material's other category is
- if( %material.mapTo $= "" || %material.mapTo $= "unmapped_mat" )
- %secondStaticFilter = MaterialFilterUnmappedArray;
- else
- %secondStaticFilter = MaterialFilterMappedArray;
-
- // Remove the material from its other category
- for( %i = 0; %i < %secondStaticFilter.count(); %i++ )
- {
- if( %secondStaticFilter.getKey(%i) $= %tag )
- {
- if( %secondStaticFilter.getValue(%i) $= %material )
- {
- %secondStaticFilter.erase( %i );
- break;
- }
- }
- }
-
-
- MaterialSelector.updateFilterCount( %tag, false );
-
- %tagField = MaterialSelector.getTagField( %material, %tag );
- %lastTagField = MaterialSelector.getLastTagField( %material );
- %lastValidTagField = MaterialSelector.getLastValidTagField( %material, %tag );
-
- if( %tagField $= %lastValidTagField || %lastValidTagField $= "" )
- {
- MaterialSelectorPerMan.removeField( %material, %tagField );
- }
- else
- {
- // Replace the current tagFieldValue with the last tagFieldValue
- %lastValidTag = %material.getFieldValue( %lastValidTagField );
- %material.setFieldValue( %tagField, %lastValidTag );
-
- // Remove the last tagFieldValue
- MaterialSelectorPerMan.removeField( %material, %lastTagField );
- }
- }
- // so were not going to save materials that dont current exist...
- // technically all the data is stored in dynamic fields if the user feels like saving
- // their auto-generated or new material
- if( %material.getFilename() !$= "" &&
- %material.getFilename() !$= "tools/gui/MaterialSelector.ed.gui" &&
- %material.getFilename() !$= "tools/materialEditor/scripts/materialEditor.ed.cs" )
- {
- MaterialSelectorPerMan.setDirty( %material );
- MaterialSelectorPerMan.saveDirty();
- MaterialSelectorPerMan.removeDirty( %material );
-
- if(!%tagValue)
- %material.setFieldValue( %lastTagField, "" );
- }
- }
- function MaterialSelector::updateFilterCount( %this, %tag, %add )
- {
- for( %i = MaterialSelector.staticFilterObjects; %i < MaterialSelector-->filterArray.getCount() ; %i++ )
- {
- if( %tag $= MaterialSelector-->filterArray.getObject(%i).getObject(0).filter )
- {
- // Get the filter count and apply the operation
- %idx = getWord( MaterialSelector-->filterArray.getObject(%i).getObject(0).getText(), 2 );
-
- if( %add )
- %idx++;
- else
- %idx--;
-
- MaterialSelector-->filterArray.getObject(%i).getObject(0).setText( %tag @ " ( "@ %idx @ " )");
- }
- }
- }
- // this should create a new material pretty nicely
- function MaterialSelector::createNewMaterial( %this )
- {
- // look for a newMaterial name to grab
- %material = getUniqueName( "newMaterial" );
-
- new Material(%material)
- {
- diffuseMap[0] = "core/art/warnMat";
- mapTo = "unmapped_mat";
- parentGroup = RootGroup;
- };
-
- // add one to All filter
- MaterialFilterAllArray.add( "", %material.name );
- MaterialFilterAllArrayCheckbox.setText("All ( " @ MaterialFilterAllArray.count() + 1 @ " ) ");
- MaterialFilterUnmappedArray.add( "", %material.name );
- MaterialFilterUnmappedArrayCheckbox.setText("Unmapped ( " @ MaterialFilterUnmappedArray.count() + 1 @ " ) ");
-
- if( MaterialSelector.currentStaticFilter !$= "MaterialFilterMappedArray" )
- {
- // create the new material gui
- %container = new GuiControl(){
- profile = "ToolsGuiDefaultProfile";
- Position = "0 0";
- Extent = "74 85";
- HorizSizing = "right";
- VertSizing = "bottom";
- isContainer = "1";
- new GuiTextCtrl(){
- position = "10 70";
- profile = "ToolsGuiTextCenterProfile";
- extent = "64 16";
- text = %material.name;
- };
- };
-
- %previewButton = new GuiBitmapButtonCtrl(){
- internalName = %material.name;
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiButtonProfile";
- position = "7 4";
- extent = "64 64";
- buttonType = "PushButton";
- bitmap = "core/art/warnMat";
- Command = "";
- text = "Loading...";
- useStates = false;
-
- new GuiBitmapButtonCtrl(){
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiButtonProfile";
- position = "0 0";
- extent = "64 64";
- Variable = "";
- buttonType = "toggleButton";
- bitmap = "tools/materialEditor/gui/cubemapBtnBorder";
- groupNum = "0";
- text = "";
- };
- };
-
- %previewBorder = new GuiButtonCtrl(){
- internalName = %material.name@"Border";
- HorizSizing = "right";
- VertSizing = "bottom";
- profile = "ToolsGuiThumbHighlightButtonProfile";
- position = "3 0";
- extent = "72 88";
- Variable = "";
- buttonType = "toggleButton";
- tooltip = %material.name;
- Command = "MaterialSelector.updateSelection( $ThisControl.getParent().getObject(1).internalName, $ThisControl.getParent().getObject(1).bitmap );";
- groupNum = "0";
- text = "";
- };
-
- %container.add(%previewButton);
- %container.add(%previewBorder);
- // add to the gui control array
- MaterialSelector-->materialSelection.add(%container);
- }
-
- // select me
- MaterialSelector.updateSelection( %material, "core/art/warnMat.png" );
- }
- //needs to be deleted with the persistence manager and needs to be blanked out of the matmanager
- //also need to update instances... i guess which is the tricky part....
- function MaterialSelector::showDeleteDialog( %this )
- {
- %material = MaterialSelector.selectedMaterial;
- %secondFilter = "MaterialFilterMappedArray";
- %secondFilterName = "Mapped";
-
- for( %i = 0; %i < MaterialFilterUnmappedArray.count(); %i++ )
- {
- if( MaterialFilterUnmappedArray.getValue(%i) $= %material )
- {
- %secondFilter = "MaterialFilterUnmappedArray";
- %secondFilterName = "Unmapped";
- break;
- }
- }
-
- if( isObject( %material ) )
- {
- MessageBoxYesNoCancel("Delete Material?",
- "Are you sure you want to delete<br><br>" @ %material.getName() @ "<br><br> Material deletion won't take affect until the engine is quit.",
- "MaterialSelector.deleteMaterial( " @ %material @ ", " @ %secondFilter @ ", " @ %secondFilterName @" );",
- "",
- "" );
- }
- }
- function MaterialSelector::deleteMaterial( %this, %materialName, %secondFilter, %secondFilterName )
- {
- if( !isObject( %materialName ) )
- return;
-
- for( %i = 0; %i <= MaterialFilterAllArray.countValue( %materialName ); %i++)
- {
- %index = MaterialFilterAllArray.getIndexFromValue( %materialName );
- MaterialFilterAllArray.erase( %index );
- }
- MaterialFilterAllArrayCheckbox.setText("All ( " @ MaterialFilterAllArray.count() - 1 @ " ) ");
-
- %checkbox = %secondFilter @ "Checkbox";
- for( %k = 0; %k <= %secondFilter.countValue( %materialName ); %k++)
- {
- %index = %secondFilter.getIndexFromValue( %materialName );
- %secondFilter.erase( %index );
- }
- %checkbox.setText( %secondFilterName @ " ( " @ %secondFilter.count() - 1 @ " ) ");
-
- for( %i = 0; %materialName.getFieldValue("materialTag" @ %i) !$= ""; %i++ )
- {
- %materialTag = %materialName.getFieldValue("materialTag" @ %i);
-
- for( %j = MaterialSelector.staticFilterObjects; %j < MaterialSelector-->filterArray.getCount() ; %j++ )
- {
- if( %materialTag $= MaterialSelector-->filterArray.getObject(%j).getObject(0).filter )
- {
- %count = getWord( MaterialSelector-->filterArray.getObject(%j).getObject(0).getText(), 2 );
- %count--;
- MaterialSelector-->filterArray.getObject(%j).getObject(0).setText( %materialTag @ " ( "@ %count @ " )");
- }
- }
-
- }
-
- UnlistedMaterials.add( "unlistedMaterials", %materialName );
-
- if( %materialName.getFilename() !$= "" &&
- %materialName.getFilename() !$= "tools/gui/MaterialSelector.ed.gui" &&
- %materialName.getFilename() !$= "tools/materialEditor/scripts/materialEditor.ed.cs" )
- {
- MaterialSelectorPerMan.removeObjectFromFile(%materialName);
- MaterialSelectorPerMan.saveDirty();
- }
-
- MaterialSelector.preloadFilter();
- //MaterialSelector.selectMaterial( "WarningMaterial" );
- }
- function MaterialSelector::switchStaticFilters( %this, %staticFilter)
- {
- switch$(%staticFilter)
- {
- case "MaterialFilterAllArray":
- MaterialFilterAllArrayCheckbox.setStateOn(1);
- MaterialFilterMappedArrayCheckbox.setStateOn(0);
- MaterialFilterUnmappedArrayCheckbox.setStateOn(0);
- case "MaterialFilterMappedArray":
- MaterialFilterMappedArrayCheckbox.setStateOn(1);
- MaterialFilterAllArrayCheckbox.setStateOn(0);
- MaterialFilterUnmappedArrayCheckbox.setStateOn(0);
- case "MaterialFilterUnmappedArray":
- MaterialFilterUnmappedArrayCheckbox.setStateOn(1);
- MaterialFilterAllArrayCheckbox.setStateOn(0);
- MaterialFilterMappedArrayCheckbox.setStateOn(0);
- }
-
- // kinda goofy were passing a class variable... we can't do an empty check right now
- // on load filter because we actually pass "" as a filter...
- MaterialSelector.loadFilter( MaterialSelector.currentFilter, %staticFilter );
- }
- // Tagging Functionality
- function MaterialSelector::getTagField( %this, %material, %tag )
- {
- for( %i = 0; %material.getFieldValue("materialTag" @ %i) !$= ""; %i++ )
- {
- %loopTag = %material.getFieldValue("materialTag" @ %i);
- if( %tag $= %loopTag )
- {
- %tagField = "materialTag" @ %i;
- break;
- }
- }
-
- return %tagField;
- }
- function MaterialSelector::getLastTagField( %this, %material )
- {
- for( %i = 0; %material.getFieldValue("materialTag" @ %i) !$= ""; %i++ )
- {
- %tagField = "materialTag" @ %i;
- }
-
- return %tagField;
- }
- function MaterialSelector::getLastValidTagField( %this, %material, %invalidTag )
- {
- for( %i = 0; %material.getFieldValue("materialTag" @ %i) !$= ""; %i++ )
- {
- %tag = %material.getFieldValue("materialTag" @ %i);
- // Can't equal our invalid tag
- if( %tag $= %invalidTag )
- continue;
-
- // Set our last found tag
- %tagField = "materialTag" @ %i;
- }
-
- return %tagField;
- }
- // Preview Page Navigation
- function MaterialSelector::firstPage(%this)
- {
- MaterialSelector.currentPreviewPage = 0;
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::previousPage(%this)
- {
- MaterialSelector.currentPreviewPage--;
- if( MaterialSelector.currentPreviewPage < 0)
- MaterialSelector.currentPreviewPage = 0;
-
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::nextPage(%this)
- {
- MaterialSelector.currentPreviewPage++;
- if( MaterialSelector.currentPreviewPage >= MaterialSelector.totalPages)
- MaterialSelector.currentPreviewPage = MaterialSelector.totalPages - 1;
- if( MaterialSelector.currentPreviewPage < 0)
- MaterialSelector.currentPreviewPage = 0;
-
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::lastPage(%this)
- {
- MaterialSelector.currentPreviewPage = MaterialSelector.totalPages - 1;
- if( MaterialSelector.currentPreviewPage < 0)
- MaterialSelector.currentPreviewPage = 0;
-
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::selectPage(%this, %page)
- {
- MaterialSelector.currentPreviewPage = %page;
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::thumbnailCountUpdate(%this)
- {
- $Pref::MaterialSelector::ThumbnailCountIndex = MaterialSelector-->materialPreviewCountPopup.getSelected();
- MaterialSelector.LoadFilter( MaterialSelector.currentFilter, MaterialSelector.currentStaticFilter );
- }
- function MaterialSelector::buildPagesButtons(%this, %currentPage, %totalPages)
- {
- // We don't want any more than 8 pages at a time.
- if( %totalPages > 8 )
- {
- // We attempt to display up to 2 pages before the current page
- %start = %currentPage - 2;
- if( %start <= 0 )
- {
- %start = 0;
- %startbracket = false;
- }
- else
- {
- %startbracket = true;
- }
-
- if( (%totalPages - %start) < 8 )
- {
- // Move %start closer to the beginning to maintain 8 pages
- %start = %totalPages - 8;
- }
-
- %end = %start + 8;
- if( %end >= %totalPages )
- {
- %end = %totalPages;
- %endbracket = false;
- }
- else
- {
- %endbracket = true;
- }
- }
- else
- {
- %start = 0;
- %end = %totalPages;
- %startbracket = false;
- %endbracket = false;
- }
-
- if( %startbracket )
- {
- %control = new GuiTextCtrl(){
- profile = "ToolsGuiTextCenterProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "0 2";
- extent = "14 16";
- MinExtent = "8 8";
- text = "...";
- };
- MaterialSelector-->materialPreviewPagesStack.add( %control );
- }
-
- for( %i = %start; %i < %end; %i++ )
- {
- if( %i != %currentPage )
- {
- %control = new GuiButtonCtrl() {
- canSaveDynamicFields = "0";
- Enabled = "1";
- isContainer = "0";
- Profile = "ToolsGuiTextCenterProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- Position = "0 0";
- Extent = "14 16";
- MinExtent = "8 8";
- canSave = "1";
- isDecoy = "0";
- Visible = "1";
- Command = "MaterialSelector.schedule(0, selectPage, " @ %i @ ");";
- tooltipprofile = "ToolsGuiToolTipProfile";
- hovertime = "1000";
- text = %i+1;
- groupNum = "-1";
- buttonType = "PushButton";
- useMouseEvents = "1";
- };
- }
- else
- {
- %control = new GuiTextCtrl(){
- profile = "ToolsGuiTextBoldCenterProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "0 2";
- extent = "14 16";
- MinExtent = "8 8";
- text = %i+1;
- };
- }
- MaterialSelector-->materialPreviewPagesStack.add( %control );
- }
-
- if( %endbracket )
- {
- %control = new GuiTextCtrl(){
- profile = "ToolsGuiTextCenterProfile";
- HorizSizing = "right";
- VertSizing = "bottom";
- position = "0 2";
- extent = "14 16";
- MinExtent = "8 8";
- text = "...";
- };
- MaterialSelector-->materialPreviewPagesStack.add( %control );
- }
- }
|