private void GenerateUVMap(GeneratedRect targetRect) { UVBitmapGenerator generator = new UVBitmapGenerator(); output = generator.StoreUVMap(targetRect.Uvs, targetRect.UvSize); AssetDatabase.Refresh(); }
private void AssignSizeValues(GeneratedRect targetRect, out float x, out float z, out float height) { if (xProperty.hasMultipleDifferentValues) { x = targetRect.X; } else { x = xProperty.floatValue; } if (zProperty.hasMultipleDifferentValues) { z = targetRect.Z; } else { z = zProperty.floatValue; } if (heightProperty.hasMultipleDifferentValues) { height = targetRect.ColliderHeight; } else { height = heightProperty.floatValue; } }
private void SetNewMesh(GeneratedRect targetRect, Mesh newMesh) { MeshFilter meshFilter = targetRect.GetComponent <MeshFilter>(); if (meshFilter != null) { Undo.RecordObject(meshFilter, "MeshFilter mesh change"); meshFilter.mesh = newMesh; } }
public void AssignRectVariables(BoxCollider col) { GeneratedRect generatedRect = col.GetComponent <GeneratedRect>(); generatedRect.X = x; generatedRect.Z = z; generatedRect.ColliderHeight = colliderHeight; generatedRect.ColliderCenter = col.transform.TransformPoint(col.center); lastCreatedRect = generatedRect; }
private void AdaptCollider(GeneratedRect targetRect, RectMeshGenerator meshGenerator) { BoxCollider col = targetRect.GetComponent <BoxCollider>(); if (col != null) { Undo.RecordObject(col, "Collider bounds change"); meshGenerator.AssignRectVariables(col); meshGenerator.AdjustCollider(col, heightProperty.floatValue); } }
private void RecreateRectAndSetColliderCenter(GeneratedRect targetRect) { RecreateRect(targetRect); BoxCollider col = targetRect.GetComponent <BoxCollider>(); if (col != null) { targetRect.ColliderCenter = col.transform.TransformPoint(col.center); } }
private void ResizeToColliderBounds(GeneratedRect targetRect) { BoxCollider col = targetRect.GetComponent <BoxCollider>(); if (col != null) { Vector3 newCenter = col.transform.TransformPoint(col.center); xProperty.floatValue = col.size.x; zProperty.floatValue = col.size.z; heightProperty.floatValue = col.size.y; RecreateRect(targetRect); targetRect.MoveToColliderCenter(newCenter); } }
void OnEnable() { xProperty = serializedObject.FindProperty("x"); zProperty = serializedObject.FindProperty("z"); heightProperty = serializedObject.FindProperty("colliderHeight"); targetRects = System.Array.ConvertAll(targets, item => (GeneratedRect)item); firstTargetRect = targetRects[0]; if (!firstTargetRect.Output.Equals(string.Empty)) { output = firstTargetRect.Output; } }
private void RecreateRect(GeneratedRect targetRect) { float x, z, height; AssignSizeValues(targetRect, out x, out z, out height); RectMeshGenerator meshGenerator = new RectMeshGenerator(x, z, height); meshGenerator.CreateRect(); Mesh newMesh = meshGenerator.GetMesh(); SetNewMesh(targetRect, newMesh); AdaptCollider(targetRect, meshGenerator); targetRect.Uvs = meshGenerator.GetUVs(); }