I have 2 scripts, one that is added straight to the GameObject to change its mesh,and the same script in a function and it changes the mesh of other game objects. the 2nd code changes the mesh but it seems to ignore the transform.transformpoint function.
This one works:
private var org = Vector3.zero;
var basescale =3;
//var currentobject = gameObject;
private var vtxArray : Vector3[];
var radius = 100;
var transition = 50;
function Start () {
var mesh : Mesh = GetComponent(MeshFilter).mesh;
var scale = basescale;
if (vtxArray == null)
vtxArray = mesh.vertices;
var objectscale = (gameObject.transform.localScale);
var vertices = new Vector3[vtxArray.Length];
for (var i=0;i<vertices.Length;i++)
{
//var vertex = vtxArray*;*
vtxArray = transform.TransformPoint(vtxArray*);*
_ var vertex = vtxArray*;
var dist = Vector3.Distance(org, vtxArray);//lines that set mutation in a bubble and smooth edges*
if ( dist > radius ){ scale = 0basescale;}
if ( dist <= radius && dist >= radius-transition) {scale = ((radius-dist)/transition)basescale;}
if ( dist < radius-transition ){ scale = 1basescale;}_
vertex.x += Mathf.Sin(vtxArray.y.1 + vtxArray_.z*.1) * scale;
vertex.y += Mathf.Sin(vtxArray.z*.1 + vtxArray.x*.1) * scale;
vertex.z += Mathf.Sin(vtxArray.x*.1 + vtxArray.y*.1) * scale;_
_ vertices = transform.InverseTransformPoint(vertex);
//Debug.Log (vtxArray*);
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
DestroyImmediate(collider);
gameObject.AddComponent(“MeshCollider”);
//gameObject.GetComponent(MeshCollider).sharedMesh = gameObject.GetComponent(MeshFilter).mesh;
}_
__________________________________________________________________________*
this one doesn’t work:
function sinus1 ( multiplier:int ){//this function takes mesh objects and changes their vertices in XY and Z into mountains
_ //var process : Collider = Physics.OverlapSphere(selzone.transform.position, selzone.transform.localScale1.1;);
var mymeshfilters : MeshFilter = FindObjectsOfType(MeshFilter) as MeshFilter;*_
* for (var mymeshfilter in mymeshfilters) {*
* var mydistance = Vector3.Distance(selzone.transform.position, mymeshfilter.transform.position);*
* //print( mydistance );*
_ if ( mydistance < selzone.transform.localScale.x * .5 && mydistance!= 0){
* //mymeshfilter.gameObject.AddComponent (“noisemesh”);*_
* var org = selzone.transform.position;*
* var basescale =3;*
* //var currentobject = gameObject;*
* var vtxArray : Vector3[];*
_ var radius = transform.localScale.x * .5;
var transition = transform.localScale.x * .25;_
var mesh : Mesh = mymeshfilter.mesh;
print( mesh.vertices.length );
* var scale = basescale;*
* if (vtxArray == null)*
* vtxArray = mesh.vertices;*
* var objectscale = (gameObject.transform.localScale);*
* var vertices = new Vector3[vtxArray.Length];*
* for (var i=0;i<vertices.Length;i++)*
* {*
_ //var vertex = vtxArray*;_
vtxArray _= transform.TransformPoint(vtxArray);
var vertex = vtxArray;
var dist = Vector3.Distance(org, vtxArray);//lines that set mutation in a bubble and smooth edges*
if ( dist > radius ){ scale = 0basescale;}
if ( dist <= radius && dist >= radius-transition) {scale = ((radius-dist)/transition)basescale;}
if ( dist < radius-transition ){ scale = 1basescale;}_
vertex.x += Mathf.Sin(vtxArray.y.1 + vtxArray_.z*.1) * scale;
vertex.y += Mathf.Sin(vtxArray.z*.1 + vtxArray.x*.1) * scale;
vertex.z += Mathf.Sin(vtxArray.x*.1 + vtxArray.y*.1) * scale;_
_ vertices = transform.InverseTransformPoint(vertex);
//Debug.Log (vtxArray*);
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
mesh.RecalculateBounds();
DestroyImmediate(collider);
gameObject.AddComponent(“MeshCollider”);
//gameObject.GetComponent(MeshCollider).sharedMesh = gameObject.GetComponent(MeshFilter).mesh;
}
}
}*_