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 <[email protected]> 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 <[email protected]> wrote:
>
>
>
>
>
>
>
> > Great, thanks a ton Ross.  I'll take a look at the code now.
>
> > Matt
>
> > On Jun 22, 1:40 pm, Ross Smith <[email protected]> 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 
> > > <[email protected]>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 <[email protected]> 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 <
> > > > [email protected]>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 <[email protected]> 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
> > > > > [email protected]
>
> > > --
> > > Ross Smith
> > > [email protected]

Reply via email to