public void Weld()
        {
            GameObject[] arrGOtoWeld = FieldController.GetUnityGameObjects();

            int arrGOtoWeld_size = arrGOtoWeld.Length;

            if (arrGOtoWeld_size == 0)
            {
                EditorUtility.DisplayDialog("CaronteFX", "Input objects are mandatory", "Ok");
                return;
            }

            GameObject[] arrWeldedObject;
            Mesh[]       arrWeldedMesh;

            EditorUtility.DisplayProgressBar(Data.Name, "Welding...", 1.0f);
            CarGeometryUtils.WeldObjects(arrGOtoWeld, Data.Name, out arrWeldedObject, out arrWeldedMesh);
            EditorUtility.ClearProgressBar();

            if (CarVersionChecker.IsFreeVersion() && arrWeldedObject == null)
            {
                EditorUtility.DisplayDialog("CaronteFX - Free version", "CaronteFX Free version can only weld the meshes included in the example scenes and the unity primitives (cube, plane, sphere, etc.).", "Ok");
            }

            if (arrWeldedObject != null)
            {
                DeleteOldObjects();

                List <GameObject> listWeldedObjects = new List <GameObject>();
                listWeldedObjects.AddRange(arrWeldedObject);

                Bounds bounds = CarEditorUtils.GetGlobalBoundsWorld(listWeldedObjects);

                GameObject go = new GameObject(Data.Name + "_output");
                go.transform.position = bounds.center;

                foreach (GameObject weldedGO in listWeldedObjects)
                {
                    weldedGO.transform.parent = go.transform;
                }

                if (Data.WeldGameObject != null)
                {
                    go.transform.parent = Data.WeldGameObject.transform.parent;
                    Object.DestroyImmediate(Data.WeldGameObject);
                }

                Data.WeldGameObject = go;
                Data.ArrWeldedGO    = arrWeldedObject;
                Data.ArrWeldedMesh  = arrWeldedMesh;
                EditorUtility.SetDirty(Data);

                UnityEditor.Selection.activeGameObject = Data.WeldGameObject;
            }
        }
        void OnEnable()
        {
            string version = CaronteSharp.Caronte.GetNativeDllVersion();
            string versionTypeName;

            if (CarVersionChecker.IsFreeVersion())
            {
                versionTypeName = " FREE";
                versionType_    = VersionType.Free;
            }
            else if (CarVersionChecker.IsPremiumVersion())
            {
                if (CarVersionChecker.IsEvaluationVersion())
                {
                    versionTypeName = " PREMIUM TRIAL";
                    versionType_    = VersionType.Premium | VersionType.Evaluation;
                }
                else
                {
                    versionTypeName = " PREMIUM";
                    versionType_    = VersionType.Premium;
                }
            }
            else // PRO VERSION
            {
                if (CarVersionChecker.IsEvaluationVersion())
                {
                    versionTypeName = " PRO TRIAL";
                    versionType_    = VersionType.Pro | VersionType.Evaluation;
                }
                else
                {
                    versionTypeName = " PRO";
                    versionType_    = VersionType.Pro;
                }
            }

            if (CarVersionChecker.DoVersionExpires())
            {
                expirationDateTime_ = CarVersionChecker.GetExpirationDateDateInSeconds();
            }

            if (CarVersionChecker.IsAdvanceCompressionVersion())
            {
                compressionType_ = CompressionType.Advanced;
            }
            else
            {
                compressionType_ = CompressionType.Normal;
            }

            companyIcon_   = CarEditorResource.LoadEditorTexture(CarVersionChecker.CompanyIconName);
            versionString_ = "Version: " + version + versionTypeName + " \n(Compression type: " + compressionType_.ToString() + ")";
        }
Exemple #3
0
        public void Tessellate()
        {
            GameObject[] arrGOtoTessellate = FieldController.GetUnityGameObjects();

            GameObject[] arrGOTessellated;
            Mesh[]       arrMeshTessellated;

            if (arrGOtoTessellate.Length == 0)
            {
                EditorUtility.DisplayDialog("CaronteFX", "Please, first add some objects to tessellate to the field.", "Ok");
                return;
            }

            EditorUtility.DisplayProgressBar(Data.Name, "Tessellating...", 1.0f);
            CarGeometryUtils.TessellateObjects(arrGOtoTessellate, Data.MaxEdgeDistance, Data.LimitByMeshDimensions, out arrGOTessellated, out arrMeshTessellated);
            EditorUtility.ClearProgressBar();

            if (CarVersionChecker.IsFreeVersion() && arrGOTessellated == null)
            {
                EditorUtility.DisplayDialog("CaronteFX - Free version", "CaronteFX Free version can only tessellate the meshes included in the example scenes and the unity primitives (cube, plane, sphere, etc.).", "Ok");
            }

            if (arrGOTessellated != null)
            {
                DeleteOldObjects();

                List <GameObject> listGameObject = new List <GameObject>();
                listGameObject.AddRange(arrGOTessellated);

                Bounds     bounds = CarEditorUtils.GetGlobalBoundsWorld(listGameObject);
                GameObject nodeGO = new GameObject(Data.Name);

                nodeGO.transform.position = bounds.center;

                foreach (GameObject go in arrGOTessellated)
                {
                    go.transform.parent = nodeGO.transform;
                }

                if (Data.NodeGO != null)
                {
                    nodeGO.transform.parent = Data.NodeGO.transform.parent;
                    Object.DestroyImmediate(Data.NodeGO);
                }

                Data.NodeGO             = nodeGO;
                Data.ArrTessellatedGO   = arrGOTessellated;
                Data.ArrTessellatedMesh = arrMeshTessellated;

                EditorUtility.SetDirty(Data);

                Selection.activeGameObject = nodeGO;
            }
        }