//--- OBJECT WRITE BEGIN --- %guiContent = new GuiControl(AssimpImportDlg,EditorGuiGroup) { isContainer = "1"; Profile = "ToolsGuiDefaultProfile"; HorizSizing = "width"; VertSizing = "height"; position = "0 0"; Extent = "1024 768"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; hovertime = "1000"; canSaveDynamicFields = "0"; new GuiWindowCtrl() { resizeWidth = "0"; resizeHeight = "0"; canMove = "1"; canClose = "1"; canMinimize = "0"; canMaximize = "0"; minSize = "50 50"; closeCommand = "Canvas.popDialog(AssimpImportDlg);"; EdgeSnap = "1"; text = "Open Asset Import Library"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "1"; Profile = "ToolsGuiWindowProfile"; HorizSizing = "center"; VertSizing = "center"; position = "254 136"; Extent = "416 390"; MinExtent = "8 8"; canSave = "1"; Visible = "1"; Accelerator = "escape"; tooltipprofile = "ToolsGuiToolTipProfile"; hovertime = "1000"; internalName = "window"; canSaveDynamicFields = "0"; new GuiTextCtrl() { text = "Up Axis"; maxLength = "1024"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "0"; Profile = "ToolsGuiTextRightProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 31"; Extent = "40 16"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiPopUpMenuCtrl() { maxPopupHeight = "200"; sbUsesNAColor = "0"; reverseTextList = "0"; bitmapBounds = "16 16"; maxLength = "1024"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "0"; Profile = "ToolsGuiPopUpMenuProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "56 30"; Extent = "66 18"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; hovertime = "1000"; internalName = "upAxis"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Convert To Left Handed"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 50"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::ConvertToLeftHanded"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Converts the model to left-handed"; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Triangulate"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 70"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; Active = "0"; variable = "$Assimp::Triangulate"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Triangulate polygons with more than 3 edges."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Calculate Tangent Space"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 90"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::CalcTangentSpace"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Calculate tangents and bitangents, if possible."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Validate Data Structure"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 110"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::ValidateDataStructure"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Perform a full validation of the loader's output."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Improve Cache Locality"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 130"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::ImproveCacheLocality"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Improve the cache locality of the output vertices."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Remove Redundant Materials"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 150"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::RemoveRedundantMaterials"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Removes redundant materials."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Find Degenerates"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 170"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FindDegenerates"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Remove degenerated polygons from the import."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Find Invalid Data"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 190"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FindInvalidData"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Detect invalid model data, such as invalid normal vectors."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Generate UV Coordinates"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 210"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::GenUVCoords"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Convert spherical, cylindrical, box and planar mapping to proper UVs."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Transform UV Coordinates"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 230"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::TransformUVCoords"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Preprocess UV transformations (scaling, translation ...)"; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Flip UV Coordinates"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 250"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FlipUVs"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "This step flips all UV coordinates along the y-axis and adjusts material settings and bitangents accordingly.\nAssimp uses TL(0,0):BR(1,1). T3D uses TL(0,1):BR(1,0). This will be needed for most textured models."; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Find Instances"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 270"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FindInstances"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "search for instanced meshes and remove them by references to one master."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Limit Bone Weights"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "10 290"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::LimitBoneWeights"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Limit bone weights to 4 per vertex."; hovertime = "1000"; internalName = "overrideScale"; canSaveDynamicFields = "0"; }; new GuiTextCtrl() { text = "LOD"; maxLength = "1024"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "0"; Profile = "ToolsGuiTextRightProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 31"; Extent = "22 16"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiPopUpMenuCtrl() { maxPopupHeight = "200"; sbUsesNAColor = "0"; reverseTextList = "0"; bitmapBounds = "16 16"; maxLength = "1024"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "0"; Profile = "ToolsGuiPopUpMenuProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "238 30"; Extent = "92 18"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Method used to determine LOD for meshes in the model"; hovertime = "1000"; internalName = "lodType"; canSaveDynamicFields = "0"; }; new GuiTextEditCtrl() { historySize = "0"; password = "0"; tabComplete = "0"; sinkAllKeyEvents = "0"; passwordMask = "*"; text = "2"; maxLength = "1024"; Margin = "0 0 0 0"; Padding = "0 0 0 0"; AnchorTop = "1"; AnchorBottom = "0"; AnchorLeft = "1"; AnchorRight = "0"; isContainer = "0"; Profile = "ToolsGuiTextEditProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "338 30"; Extent = "49 18"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Detail size for all meshes in this model (when LOD type is SingleSize)"; hovertime = "1000"; internalName = "singleDetailSize"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Center Model"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 50"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::adjustCenter"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Translates model so the origin is at the center"; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Floor Model"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 70"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::adjustFloor"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Translates model so the origin is at the bottom"; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Join Identical Vertices"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 90"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::JoinIdenticalVertices"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Identifies and joins identical vertex data sets within all imported meshes."; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Flip Winding Order"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 110"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FlipWindingOrder"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "This step adjusts the output face winding order to be clockwise. The default face winding order is counter clockwise."; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiCheckBoxCtrl() { useInactiveState = "0"; text = " Invert Normals"; groupNum = "-1"; buttonType = "ToggleButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiCheckBoxProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "210 130"; Extent = "200 13"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; variable = "$Assimp::FlipNormals"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Reverse the normal vector direction for all normals."; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiButtonCtrl() { text = "OK"; groupNum = "-1"; buttonType = "PushButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiButtonProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "120 348"; Extent = "86 22"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; Command = "AssimpImportDlg.onOK();"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Load the COLLADA model"; hovertime = "1000"; canSaveDynamicFields = "0"; }; new GuiButtonCtrl() { text = "Cancel"; groupNum = "-1"; buttonType = "PushButton"; useMouseEvents = "0"; isContainer = "0"; Profile = "ToolsGuiButtonProfile"; HorizSizing = "right"; VertSizing = "bottom"; position = "220 348"; Extent = "86 22"; MinExtent = "8 2"; canSave = "1"; Visible = "1"; Command = "AssimpImportDlg.onCancel();"; tooltipprofile = "ToolsGuiToolTipProfile"; ToolTip = "Exit without loading the COLLADA model"; hovertime = "1000"; canSaveDynamicFields = "0"; }; }; }; //--- OBJECT WRITE END --- function AssimpImportDlg::showDialog(%this, %shapePath, %cmd) { %this.path = %shapePath; %this.cmd = %cmd; // $Assimp::OverrideUpAxis value. Default is z-axis (no change to transforms) if ($Assimp::OverrideUpAxis $= "") $Assimp::OverrideUpAxis = 2; %this-->upAxis.clear(); %this-->upAxis.add("X_AXIS", 0); %this-->upAxis.add("Y_AXIS", 1); %this-->upAxis.add("Z_AXIS", 2); %this-->upAxis.setSelected($Assimp::OverrideUpAxis); if ($Assimp::lodType $= "") $Assimp::lodType = 0; %this-->lodType.clear(); %this-->lodType.add("DetectDTS", 0); %this-->lodType.add("SingleSize", 1); %this-->lodType.add("TrailingNumber", 2); %this-->lodType.setSelected($Assimp::lodType); if ($Assimp::singleDetailSize $= "") $Assimp::singleDetailSize = "2"; %this-->singleDetailSize.text = $Assimp::singleDetailSize; //Triangulate is a default(currently mandatory) behavior $Assimp::Triangulate = true; //FlipWindingOrder assimp uses ccw, t3d uses cw. Is there any reason to expose this? $Assimp::FlipWindingOrder = true; // $Assimp::FlipUVs will be needed for virtually all textured models $Assimp::FlipUVs = true; Canvas.pushDialog(%this); } function AssimpImportDlg::onCancel(%this) { Canvas.popDialog(%this); ColladaImportTreeView.clear(); } function AssimpImportDlg::onOK(%this) { Canvas.popDialog(%this); ColladaImportTreeView.clear(); $Assimp::OverrideUpAxis = %this-->upAxis.getSelected(); $Assimp::lodType = %this-->lodType.getSelected(); $Assimp::singleDetailSize = %this-->singleDetailSize.getText(); // Load the shape (always from the DAE) $assimp::forceLoad = true; eval(%this.cmd); $assimp::forceLoad = true; }