public MaterialGlobalInfos(
                AssemblyDocument document,
                Material material,
                List <ComponentOccurrence> materialOccurrences)
            {
                MassProperties asmMassProperties = document.ComponentDefinition.MassProperties;

                Material = material;

                GlobalInfos = new MaterialInfos(material);

                BreakDownInfos = new Dictionary <ComponentOccurrence, MaterialInfos>();

                string docVolumeUnits = GetDocVolumeUnits(document as Document, false);
                string dbVolumeUnits  = GetDbVolumeUnits(document as Document, false);

                foreach (ComponentOccurrence occurrence in materialOccurrences)
                {
                    MaterialInfos materialInfos = new MaterialInfos(material);

                    //Compute percentage first, so no need to convert in doc units first
                    materialInfos.MassPercentage =
                        occurrence.MassProperties.Mass * 100.0 / asmMassProperties.Mass;

                    materialInfos.DbMass = occurrence.MassProperties.Mass;

                    materialInfos.Volume = document.UnitsOfMeasure.ConvertUnits(
                        occurrence.MassProperties.Volume,
                        dbVolumeUnits,
                        docVolumeUnits);

                    materialInfos.Mass = document.UnitsOfMeasure.ConvertUnits(
                        occurrence.MassProperties.Mass,
                        UnitsTypeEnum.kDatabaseMassUnits,
                        UnitsTypeEnum.kDefaultDisplayMassUnits);

                    BreakDownInfos.Add(occurrence, materialInfos);

                    //Add to global, database value
                    GlobalInfos.DbMass += materialInfos.DbMass;
                    GlobalInfos.Volume += occurrence.MassProperties.Volume;
                    GlobalInfos.Mass   += occurrence.MassProperties.Mass;
                }

                //Compute percentage first, so no need to convert in doc units first
                GlobalInfos.MassPercentage = GlobalInfos.Mass * 100.0 / asmMassProperties.Mass;

                //then convert to doc units
                GlobalInfos.Volume = document.UnitsOfMeasure.ConvertUnits(
                    GlobalInfos.Volume,
                    dbVolumeUnits,
                    docVolumeUnits);

                GlobalInfos.Mass = document.UnitsOfMeasure.ConvertUnits(
                    GlobalInfos.Mass,
                    UnitsTypeEnum.kDatabaseMassUnits,
                    UnitsTypeEnum.kDefaultDisplayMassUnits);
            }
        private void GetMaterials()
        {
            List <MaterialPropertyInfo> materialsNames = new List <MaterialPropertyInfo>
            {
                new MaterialPropertyInfo("Custom/LaserCut/CarPaint", "carpaint", 5, -1, -1),
                new MaterialPropertyInfo("Custom/LaserCut/CarWindow", "carwindow", -1, 218, 219),
                new MaterialPropertyInfo("Custom/Reflective/Bump Glow LaserCut", "wheel", 5, 218, 255),
                new MaterialPropertyInfo("Custom/LaserCut/CarPaintBump", "carpaintbump", 5, 218, -1),
                new MaterialPropertyInfo("Custom/Reflective/Bump Glow Interceptor Special", "interceptor", 5, 218, 255),
                new MaterialPropertyInfo("Custom/LaserCut/CarWindowTrans2Sided", "transparentglow", -1, 218, 219)
            };

            foreach (var c in G.Sys.ProfileManager_.carInfos_)
            {
                var prefab = c.prefabs_.carPrefab_;
                foreach (var renderer in prefab.GetComponentsInChildren <Renderer>())
                {
                    foreach (var mat in renderer.materials)
                    {
                        foreach (var key in materialsNames)
                        {
                            if (materials.ContainsKey(key.name))
                            {
                                continue;
                            }

                            if (mat.shader.name == key.shaderName)
                            {
                                var materialInfos = new MaterialInfos
                                {
                                    material     = mat,
                                    diffuseIndex = key.diffuseIndex,
                                    normalIndex  = key.normalIndex,
                                    emitIndex    = key.emitIndex
                                };
                                materials.Add(key.name, materialInfos);
                            }
                        }
                    }
                }
            }

            foreach (var mat in materialsNames)
            {
                if (!materials.ContainsKey(mat.name))
                {
                    Mod.Instance.Errors.Add("Can't find the material: " + mat.name + " - shader: " + mat.shaderName);
                }
            }

            materials.Add("donotreplace", new MaterialInfos());
        }
Example #3
0
 protected override void Awake()
 {
     base.Awake();
     _isForcus = false;
     Util.SetRootContentSize(GetComponent <UIRoot>(), App.SCREEN_RESOLUTION);
     Util.FindParentToChild(ref _uiPanel, base.transform, "Panel");
     Util.FindParentToChild(ref _uiHeader, _uiPanel.transform, "Header");
     _uiHeader.transform.localPosition = _vHeaderPos[0];
     Util.FindParentToChild(ref _uiFrame, _uiPanel.transform, "Frame");
     _uiFrame.transform.localPosition = _vFramePos[0];
     _clsCircles = new Circles(_uiPanel.transform);
     _clsCircles.circleButton.onClick = Util.CreateEventDelegateList(this, "onCircleBtnClick", null);
     _clsAdmiralInfo  = new AdmiralInfos(_uiHeader.transform);
     _clsMaterialInfo = new MaterialInfos(_uiHeader.transform);
     _clsCam          = new Generics.InnerCamera(base.transform.FindChild("FrameCamera"));
     _clsDateTime     = new DateTime(_uiPanel.transform.FindChild("Frame"));
 }
Example #4
0
        private void Load_lsv_MaterialInfo()
        {
            this.lsv_MaterialInfo.Items.Clear();
            int seq = 1;

            foreach (var materialtemp in MaterialInfos.GetMaterialInfosList())
            {
                ListViewItem materialItem = new ListViewItem();

                materialItem.Text = (seq++).ToString();
                materialItem.SubItems.Add(materialtemp.MaterialNo.Trim());
                materialItem.SubItems.Add(materialtemp.MaterialName.Trim());
                materialItem.SubItems.Add(materialtemp.Position.ToString());
                materialItem.SubItems.Add(materialtemp.CountPerBox.ToString());
                materialItem.SubItems.Add(materialtemp.UsageTimePerBox.ToString());


                this.lsv_MaterialInfo.Items.Add(materialItem);
            }
        }
    public static void ExportFbx2GLTF()
    {
        MaterialInfos infos = new MaterialInfos()
        {
            materialInfos = new List <MaterialInfo>()
        };

        var matFiles = GetMatFiles();
        var t        = Environment.CurrentDirectory + "/";

        foreach (var item in matFiles)
        {
            var path = item.Replace(t, "");
            var mat  = AssetDatabase.LoadAssetAtPath <Material>(path);

            var materialInfo = GetCertainMaterialTexturePaths(mat);
            infos.materialInfos.Add(materialInfo);
        }
        var jsonContent = JsonUtility.ToJson(infos, true);

        File.WriteAllText("Assets/BlockData/database_models_material.txt", jsonContent);

        EditorUtility.DisplayDialog("生成所有通用材质配置", "完成", "确定");
    }