/// <summary> /// Returns HEU_UploadMeshData with mesh data found on meshGameObject. /// </summary> /// <param name="meshGameObject">The GameObject to query mesh data from</param> /// <returns>A valid HEU_UploadMeshData if mesh data found or null</returns> public static HEU_InputDataMesh CreateSingleMeshData(GameObject meshGameObject) { HEU_InputDataMesh meshData = new HEU_InputDataMesh(); if (meshGameObject == null) { return null; } Mesh sharedMesh = GetMeshFromObject(meshGameObject); if (sharedMesh == null) { return null; } meshData._mesh = sharedMesh; meshData._numVertices = meshData._mesh.vertexCount; meshData._numSubMeshes = meshData._mesh.subMeshCount; meshData._meshName = meshGameObject.name; // Use project path is not saved in scene, otherwise just use name if (HEU_GeneralUtility.IsGameObjectInProject(meshGameObject)) { meshData._meshPath = HEU_AssetDatabase.GetAssetOrScenePath(meshGameObject); if (string.IsNullOrEmpty(meshData._meshPath)) { meshData._meshPath = meshGameObject.name; } } else { meshData._meshPath = meshGameObject.name; } //Debug.Log("Mesh Path: " + meshData._meshPath); MeshRenderer meshRenderer = meshGameObject.GetComponent<MeshRenderer>(); if (meshRenderer != null) { meshData._materials = meshRenderer.sharedMaterials; } meshData._transform = meshGameObject.transform; return meshData; }
public void PopulateInputPreset(HEU_InputPreset inputPreset) { inputPreset._inputObjectType = _inputObjectType; inputPreset._inputAssetName = _inputAsset != null ? _inputAsset.name : ""; inputPreset._inputIndex = _inputIndex; inputPreset._inputName = _inputName; inputPreset._keepWorldTransform = _keepWorldTransform; inputPreset._packGeometryBeforeMerging = _packGeometryBeforeMerging; foreach (HEU_InputObjectInfo inputObject in _inputObjects) { HEU_InputObjectPreset inputObjectPreset = new HEU_InputObjectPreset(); if (inputObject._gameObject != null) { inputObjectPreset._gameObjectName = inputObject._gameObject.name; // Tag whether scene or project input object inputObjectPreset._isSceneObject = !HEU_GeneralUtility.IsGameObjectInProject(inputObject._gameObject); if (!inputObjectPreset._isSceneObject) { // For inputs in project, use the project path as name inputObjectPreset._gameObjectName = HEU_AssetDatabase.GetAssetOrScenePath(inputObject._gameObject); } } else { inputObjectPreset._gameObjectName = ""; } inputObjectPreset._useTransformOffset = inputObject._useTransformOffset; inputObjectPreset._translateOffset = inputObject._translateOffset; inputObjectPreset._rotateOffset = inputObject._rotateOffset; inputObjectPreset._scaleOffset = inputObject._scaleOffset; inputPreset._inputObjectPresets.Add(inputObjectPreset); } }
public void PopulateInputPreset(HEU_InputPreset inputPreset) { inputPreset._inputObjectType = _inputObjectType; // Deprecated and replaced with _inputAssetPresets. Leaving it in for backwards compatibility. //inputPreset._inputAssetName = _inputAsset != null ? _inputAsset.name : ""; inputPreset._inputIndex = _inputIndex; inputPreset._inputName = _inputName; inputPreset._keepWorldTransform = _keepWorldTransform; inputPreset._packGeometryBeforeMerging = _packGeometryBeforeMerging; foreach (HEU_InputObjectInfo inputObject in _inputObjects) { HEU_InputObjectPreset inputObjectPreset = new HEU_InputObjectPreset(); if (inputObject._gameObject != null) { inputObjectPreset._gameObjectName = inputObject._gameObject.name; // Tag whether scene or project input object inputObjectPreset._isSceneObject = !HEU_GeneralUtility.IsGameObjectInProject(inputObject._gameObject); if (!inputObjectPreset._isSceneObject) { // For inputs in project, use the project path as name inputObjectPreset._gameObjectName = HEU_AssetDatabase.GetAssetOrScenePath(inputObject._gameObject); } } else { inputObjectPreset._gameObjectName = ""; } inputObjectPreset._useTransformOffset = inputObject._useTransformOffset; inputObjectPreset._translateOffset = inputObject._translateOffset; inputObjectPreset._rotateOffset = inputObject._rotateOffset; inputObjectPreset._scaleOffset = inputObject._scaleOffset; inputPreset._inputObjectPresets.Add(inputObjectPreset); } foreach (HEU_InputHDAInfo hdaInfo in _inputAssetInfos) { HEU_InputAssetPreset inputAssetPreset = new HEU_InputAssetPreset(); if (hdaInfo._connectedGO != null) { if (!HEU_GeneralUtility.IsGameObjectInProject(hdaInfo._connectedGO)) { inputAssetPreset._gameObjectName = hdaInfo._connectedGO.name; } else { inputAssetPreset._gameObjectName = ""; } inputPreset._inputAssetPresets.Add(inputAssetPreset); } } }
/// <summary> /// Returns HEU_UploadMeshData with mesh data found on meshGameObject. /// </summary> /// <param name="meshGameObject">The GameObject to query mesh data from</param> /// <returns>A valid HEU_UploadMeshData if mesh data found or null</returns> public static HEU_InputDataMesh CreateSingleMeshData(GameObject meshGameObject, bool bExportColliders) { HEU_InputDataMesh meshData = new HEU_InputDataMesh(); if (meshGameObject == null) { return null; } Mesh sharedMesh = GetMeshFromObject(meshGameObject); if (sharedMesh == null) { return null; } meshData._mesh = sharedMesh; meshData._numVertices = meshData._mesh.vertexCount; meshData._numSubMeshes = meshData._mesh.subMeshCount; meshData._meshName = meshGameObject.name; // Use project path is not saved in scene, otherwise just use name if (HEU_GeneralUtility.IsGameObjectInProject(meshGameObject)) { meshData._meshPath = HEU_AssetDatabase.GetAssetOrScenePath(meshGameObject); if (string.IsNullOrEmpty(meshData._meshPath)) { meshData._meshPath = meshGameObject.name; } } else { meshData._meshPath = meshGameObject.name; } //HEU_Logger.Log("Mesh Path: " + meshData._meshPath); MeshRenderer meshRenderer = meshGameObject.GetComponent<MeshRenderer>(); if (meshRenderer != null) { meshData._materials = meshRenderer.sharedMaterials; } meshData._transform = meshGameObject.transform; if (bExportColliders && meshGameObject != null) { meshData._colliders = new List<HEU_InputDataCollider>(); Collider[] colliders = meshGameObject.GetComponents<Collider>(); if (colliders != null) { for (int i = 0; i < colliders.Length; i++) { Collider collider = colliders[i]; if (collider == null) continue; HEU_InputDataCollider newCollider = new HEU_InputDataCollider(); newCollider._collider = collider; if (collider.GetType() == typeof(BoxCollider)) { newCollider._colliderType = HEU_InputColliderType.BOX; } else if (collider.GetType() == typeof(SphereCollider)) { newCollider._colliderType = HEU_InputColliderType.SPHERE; } else if (collider.GetType() == typeof(CapsuleCollider)) { newCollider._colliderType = HEU_InputColliderType.CAPSULE; } else if (collider.GetType() == typeof(MeshCollider)) { newCollider._colliderType = HEU_InputColliderType.MESH; } else { HEU_Logger.LogWarningFormat("Collider type not supported: {0}", meshGameObject.name); newCollider._collider = null; newCollider._colliderType = HEU_InputColliderType.NONE; } if (newCollider._colliderType != HEU_InputColliderType.NONE) { meshData._colliders.Add(newCollider); } } } } return meshData; }
private void PopulateFromScene() { // Populate selection state for specified objects (scene, project, filtered, etc). // Copy over selection state from previous population if we have them. Object[] foundObjects = Resources.FindObjectsOfTypeAll(_selectionType); if (foundObjects == null || foundObjects.Length == 0) { _sceneObjectState.Clear(); } else { Dictionary <GameObject, bool> newState = new Dictionary <GameObject, bool>(); _sortedObjects.Clear(); System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CurrentCulture; bool bInScene = false; bool bActive = false; bool bSelected = false; bool bUseName = _filterName.Length > 0; foreach (Object obj in foundObjects) { GameObject go = GetGameObjectFromType(obj, _selectionType); if (go != null) { if (bUseName && culture.CompareInfo.IndexOf(go.name, _filterName, System.Globalization.CompareOptions.IgnoreCase) < 0) { continue; } bInScene = !HEU_GeneralUtility.IsGameObjectInProject(go); bActive = go.activeInHierarchy; if (_filterRoots && go.transform.parent != null) { continue; } if (bInScene) { if (_filterLocation == FilterLocationType.Project) { continue; } // Filter out scene objects that are hidden or internal if ((go.hideFlags & HideFlags.NotEditable) == HideFlags.NotEditable || (go.hideFlags & HideFlags.HideAndDontSave) == HideFlags.HideAndDontSave || (go.hideFlags & HideFlags.HideInInspector) == HideFlags.HideInInspector) { continue; } // Filter out by active state if ((_filterActive == FilterActiveType.Active && !bActive) || (_filterActive == FilterActiveType.Disabled && bActive)) { continue; } } else if (_filterLocation == FilterLocationType.Scene) { continue; } if (!_sceneObjectState.TryGetValue(go, out bSelected)) { bSelected = false; } newState.Add(go, bSelected); _sortedObjects.Add(go); } } _sceneObjectState = newState; _sortedObjects.Sort(delegate(GameObject a, GameObject b) { return(a.name.CompareTo(b.name)); }); } }