@Matt, I guess I didn't really answer anything - sorry. :) I haven't tried cloning meshes after they've been added to a containing mesh - or I did when I was working this code out and I've since forgotten. It may be that the Mesh is attempting to merge the added mesh into its own geometry as a sub-geometry, which is why you aren't able to access it in a manner similar to how you added it.
Glad I was able to help. Yeah, my own solution is very far from ideal - I wrote it in "get it done" mode. On Wed, Jun 22, 2011 at 4:23 PM, Ross Smith <evolution...@gmail.com> wrote: > @Matt, I suppose the way I set up my code sidestepped the cloning of meshes > within meshes. I have groups of OBJ files with no mesh children, and I > simply clone those. In order to logically associate those OBJ meshes I > implemented the AssetManifest to map them to "game objects," conceptually > (so the barrel game object in the AssetManifest is made up of a barrel_rings > OBJ, barrel_top OBJ, and barrel_body OBJ). Also, in Broomstick you can only > have 1 material per OBJ file and my game objects have multiple materials > each. I don't know if this is true of other model file types, but it > figured largely in how I wrote these classes. > > Anyway, my code is cumbersome as a result, but it does obviate the need to > clone ObjectContainer3Ds or Meshes with Mesh children. I trust that a more > robust clone process is in Broomstick's future, and hasn't been written yet > as a matter of relative priority. > > On Wed, Jun 22, 2011 at 3:30 PM, Matt Przybylski > <m...@reintroducing.com>wrote: > >> Sorry, don't mean to spam the list, but even odder, this works if you >> replace the newChair line: >> >> var newChair:Mesh = Mesh(tempContainer.getChildAt(0).clone()); >> >> It just doesn't work when you try to clone containers as opposed to >> the Meshes that live inside those containers by themselves. Very, >> very odd. >> >> On Jun 22, 2:27 pm, Matt Przybylski <m...@reintroducing.com> wrote: >> > Actually, look at this, as it doesn't work either: >> > >> > var tempContainer:Mesh = new Mesh(); >> > tempContainer.addChild(AssetLibrary.getAsset(Constants.CHAIR) as >> > Mesh); >> > var newChair:Mesh = Mesh(tempContainer.clone()); >> > var newContainer:ObjectContainer3D = new ObjectContainer3D(); >> > newContainer.addChild(newChair); >> > >> > chairContainer.addChild(newContainer); >> > >> > So, if I access the AssetLibrary directly and pull the mesh out of >> > there, clone it, it works. If I put it inside another Mesh (which in >> > my case is necessary because I have 3 Meshes that go into the >> > container and then the container is to be cloned), clone that Mesh, it >> > no longer works. Very odd... >> > >> > Matt >> > >> > On Jun 22, 2:22 pm, Matt Przybylski <m...@reintroducing.com> wrote: >> > >> > >> > >> > >> > >> > >> > >> > > Ross, >> > > I simplified your code to apply to my app and got this to work: >> > >> > > var original:Object = AssetLibrary.getAsset(Constants.CHAIR); >> > > var newChair:Mesh = Mesh(original.clone()); >> > > var newContainer:ObjectContainer3D = new ObjectContainer3D(); >> > > newContainer.addChild(newChair); >> > >> > > This was great, however, when I substitute the Mesh that has 3 other >> > > meshes for original it no longer works: >> > >> > > chairSingleContainer = new Mesh(); >> > > chairSingleContainer.addChildren(chairCover.mesh, chairTie.mesh); >> > >> > > var original:Object = chairSingleContainer; >> > > var newChair:Mesh = Mesh(original.clone()); >> > > var newContainer:ObjectContainer3D = new ObjectContainer3D(); >> > > newContainer.addChild(newChair); >> > >> > > The reason why the addChildren call has chairCover.mesh and >> > > chairTie.mesh is because I've got another class that handles loading/ >> > > parsing of the assets and puts them in there and it's then accessed by >> > > calling instance.mesh (which normally works, it displays fine on >> > > screen). >> > >> > > So the conclusion here is that it seems you can only clone a single >> > > Mesh not a container with other Meshes inside of it. Is this true for >> > > your experience as well? >> > >> > > Matt >> > >> > > On Jun 22, 1:59 pm, Matt Przybylski <m...@reintroducing.com> wrote: >> > >> > > > Great, thanks a ton Ross. I'll take a look at the code now. >> > >> > > > Matt >> > >> > > > On Jun 22, 1:40 pm, Ross Smith <evolution...@gmail.com> wrote: >> > >> > > > > I gotcha. You may find my AssetFactory more useful than I >> thought. It >> > > > > wasn't meant to be library code so it has some hard-coded stuff >> pertaining >> > > > > to OBJ parsing in it, but that's a simple fix. Check it out. >> > >> > > > >http://www.evolutioneer.com/away3d/AssetFactory_OBJ.zip >> > >> > > > > HTH, >> > > > > Ross >> > >> > > > > On Wed, Jun 22, 2011 at 2:25 PM, Matt Przybylski < >> m...@reintroducing.com>wrote: >> > >> > > > > > Ross, >> > > > > > That would be very helpful if you could send it along. I >> switched my >> > > > > > OC3Ds to Meshes actually because I saw the Mesh class had a >> clone >> > > > > > method but was still unable to get it to work properly. I'd >> really be >> > > > > > interested in looking at your code if at all possible. >> > >> > > > > > What I'm doing is loading 3 3ds files, parsing the models and >> sticking >> > > > > > them into a mesh container, then trying to clone that mesh >> container >> > > > > > into four other meshes. I also need to retain mouse events if >> > > > > > possible but if not I suppose I can re-assign those to the >> children >> > > > > > meshes after the cloning takes place. >> > >> > > > > > Matt >> > >> > > > > > On Jun 22, 10:47 am, Ross Smith <evolution...@gmail.com> wrote: >> > > > > > > Matt, what does your clone operation need to accomplish? I >> noticed this >> > > > > > > function missing as well from ObjectContainer3D. >> > >> > > > > > > I got around it (and some other issues) by writing asset >> management >> > > > > > classes >> > > > > > > to walk a target "asset bundle", clone each of its mesh >> children, and >> > > > > > > perform an update method on each mesh's textures for lighting, >> etc. The >> > > > > > > code could be adapted to walk an ObjectContainer3D instead of >> my custom >> > > > > > > asset bundle object. >> > >> > > > > > > I will send the code to this list if you want to check it out. >> The code >> > > > > > > as-is only clones meshes. It does not recursively clone child >> non-mesh >> > > > > > > ObjectContainer3Ds. I don't know what your app needs in this >> sense. >> > >> > > > > > > Best, >> > > > > > > Ross >> > >> > > > > > > On Wed, Jun 22, 2011 at 11:35 AM, Matt Przybylski < >> > > > > > m...@reintroducing.com>wrote: >> > >> > > > > > > > anyone? :( >> > >> > > > > > > > really need this for a project i'm working on right now, >> would >> > > > > > > > appreciate if a core developer can take a look at this asap. >> > >> > > > > > > > Matt >> > >> > > > > > > > On Jun 21, 9:17 pm, Matt Przybylski <m...@reintroducing.com> >> wrote: >> > > > > > > > > Hey guys, >> > > > > > > > > I'm trying to clone an ObjectContainer3D in Broomstick and >> I noticed >> > > > > > > > > that method is not implemented yet. It's in Object3D but >> you can't >> > > > > > > > > use it with ObjectContainer3D. A quick scan of the code >> reveals this >> > > > > > > > > comment in Object3D's clone() method: >> > >> > > > > > > > > // todo: implement for all subtypes >> > >> > > > > > > > > Any idea when this will be implemented for >> ObjectContainer3D? I >> > > > > > tried >> > > > > > > > > to write a clone method for ObjectContainer3D but was >> unsuccessful in >> > > > > > > > > getting it to work. >> > >> > > > > > > > > Conversely, if anyone has run into this issue already and >> has a >> > > > > > > > > clone() method they used with ObjectContainer3D, please do >> post it if >> > > > > > > > > you could. It would be greatly appreciated. >> > >> > > > > > > > > Thanks, >> > > > > > > > > Matt >> > >> > > > > > > -- >> > > > > > > Ross Smith >> > > > > > > evolution...@gmail.com >> > >> > > > > -- >> > > > > Ross Smith >> > > > > evolution...@gmail.com >> > > > > -- > Ross Smith > evolution...@gmail.com > -- Ross Smith evolution...@gmail.com