private void GenerateUVMap(GeneratedCuboid targetCuboid) { UVBitmapGenerator generator = new UVBitmapGenerator(); output = generator.StoreUVMap(targetCuboid.Uvs, targetCuboid.UvSize); AssetDatabase.Refresh(); }
private void RecreateCuboid(GeneratedCuboid targetCuboid) { float x, y, z; bool forceVertical; AssignSizeValues(targetCuboid, out x, out y, out z, out forceVertical); AbstractCuboidMeshGenerator meshGenerator; if (forceVertical) { meshGenerator = new VerticalCuboidMeshGenerator(x, y, z); } else { meshGenerator = AbstractCuboidMeshGenerator.ConstructOptimalGenerator(x, y, z); } meshGenerator.CreateCuboid(); Mesh newMesh = meshGenerator.GetMesh(); SetNewMesh(targetCuboid, newMesh); AdaptCollider(targetCuboid, meshGenerator); targetCuboid.Uvs = meshGenerator.GetUVs(); }
private void SetNewMesh(GeneratedCuboid targetCuboid, Mesh newMesh) { MeshFilter meshFilter = targetCuboid.GetComponent <MeshFilter>(); if (meshFilter != null) { Undo.RecordObject(meshFilter, "MeshFilter mesh change"); meshFilter.mesh = newMesh; } }
public void AssignCuboidVariables(BoxCollider col) { GeneratedCuboid generatedCuboid = col.GetComponent <GeneratedCuboid>(); generatedCuboid.X = x; generatedCuboid.Y = y; generatedCuboid.Z = z; generatedCuboid.ColliderCenter = col.transform.TransformPoint(col.center); generatedCuboid.Uvs = uvs; lastCreatedCuboid = generatedCuboid; }
private void AdaptCollider(GeneratedCuboid targetCuboid, AbstractCuboidMeshGenerator meshGenerator) { BoxCollider col = targetCuboid.GetComponent <BoxCollider>(); if (col != null) { Undo.RecordObject(col, "Collider bounds change"); meshGenerator.AssignCuboidVariables(col); meshGenerator.AdjustCollider(col); } }
private void RecreateCuboidAndSetColliderCenter(GeneratedCuboid targetCuboid) { RecreateCuboid(targetCuboid); BoxCollider col = targetCuboid.GetComponent <BoxCollider>(); if (col != null) { targetCuboid.ColliderCenter = col.transform.TransformPoint(col.center); } }
private void ResizeToColliderBounds(GeneratedCuboid targetCuboid) { BoxCollider col = targetCuboid.GetComponent <BoxCollider>(); if (col != null) { Vector3 newCenter = col.transform.TransformPoint(col.center); xProperty.floatValue = col.size.x; yProperty.floatValue = col.size.y; zProperty.floatValue = col.size.z; RecreateCuboid(targetCuboid); targetCuboid.MoveToColliderCenter(newCenter); } }
void OnEnable() { xProperty = serializedObject.FindProperty("x"); yProperty = serializedObject.FindProperty("y"); zProperty = serializedObject.FindProperty("z"); forceVerticalMapProperty = serializedObject.FindProperty("forceVerticalMap"); targetCuboids = System.Array.ConvertAll(targets, item => (GeneratedCuboid)item); firstTargetCuboid = targetCuboids[0]; if (!firstTargetCuboid.Output.Equals(string.Empty)) { output = firstTargetCuboid.Output; } }
private void AssignSizeValues(GeneratedCuboid targetCuboid, out float x, out float y, out float z, out bool forceVertical) { if (xProperty.hasMultipleDifferentValues) { x = targetCuboid.X; } else { x = xProperty.floatValue; } if (yProperty.hasMultipleDifferentValues) { y = targetCuboid.Y; } else { y = yProperty.floatValue; } if (zProperty.hasMultipleDifferentValues) { z = targetCuboid.Z; } else { z = zProperty.floatValue; } if (forceVerticalMapProperty.hasMultipleDifferentValues) { forceVertical = targetCuboid.ForceVerticalMap; } else { forceVertical = forceVerticalMapProperty.boolValue; } }