- Home /
Is a Bounds Aligner Tool even a feasible idea?
I tried writing an Editor which would allow the user to align the min, max or center points of the Collider.Bounds, Mesh.Bounds and Renderer.Bounds of one game object with another's along any of the 3 world axes. After I finished writing the code, I then found out that the Bounds properties are pretty much either read-only values or simply unchangeable for some reason or other. So now I pose this question: is a Bounds Aligner Tool even a feasible idea to begin with? Or is manually aligning colliders and moving transforms truly the only way to align objects and components with other objects and components?
Answer by TowerOfBricks · May 28, 2011 at 07:46 PM
Bounds is a struct which means it is passed by value, if you change it, you have to pass it back again to where you "took" it from.
Bounds a = new Bounds ();
b = a;
b.center = Vector3.one;
//Now 'a' won't be equal to 'b' since you have only modified the copy 'b' has.
//So let's pass it back.
a = b;
//Now a == b again.
In your case it seems like you want to:
Calculate difference between bounds.center and transform.position;
Align bounds.
Set transform.position = bounds.center+difference.
That's not really an issue in my code. $$anonymous$$y code modifies the actual .Bounds of the selected game object and not a copy. And the error logs clearly say that the values that I am trying to change are read-only, which implies 2 things: 1) I'm accessing the actual Bounds values and not a copy; and 2) somewhere between the instantiation of Bounds and initializing its values, the engine makes it inaccessible to other scripts directly. Also, the main point of my code is to avoid using transform.position and rather, to modify the actual Bounds of the components. The idea is to be able to zero out the tranform.position of the game object, and then move the other components relative to it, thereby effectively "modifying the pivot point" without actually ai$$anonymous$$g to do so. Its main practical application for me would be perfectly aligning a collider with a mesh. Other obvious applications would be vertex snap and edge snap alignments. Anyway, like I said, I don't really care about transform.position. (If all I was doing was changing transform.position, then I wouldn't have written an alignment editor in the first place since I could adjust that on my own with two hands tied behind my back and my third hand doing the typing. XD)
Your answer
Follow this Question
Related Questions
Custom Inspector. Aligning properties? 1 Answer
Editor Script renderer.bounds.intersect does not work 0 Answers
Bounds handle 0 Answers
How to keep game object aligned with text mesh 1 Answer
Align with view programmatically 9 Answers