NerdyElf Posted September 20, 2019 Share Posted September 20, 2019 Okay, I have a peculiar issue. I'm trying to edit a particular sprite that will change it's image AND the atlas it uses. I have like six atlases, each of which focuses on different things (like Characters, Blocks, etc). However, the editor has a bunch of tiles that can be part of any of those atlases. So when I overwrite a tile, I need to also tell it which atlas to change to. Theoretically, not too much of a problem. As far as I can tell, PIXI allows this with a fairly straightforward technique: sprite.texture.baseTexture = getSheet( atlasGroup ); sprite.texture = PIXI.Texture.from(frameName); getSheet( atlasGroup: AtlasGroup ) { return this.loader.resources[atlasGroup].textures; } However, when I do this, it's actually misbehaving. It's almost like other tiles are suddenly having their baseTexture changed as well, which makes me suspect there's some things being changed by reference. Which isn't a problem, but I need a way to change *only* the sprite's atlas. TLDR: How do I change a sprite's atlas AND frame name in the correct way, without causing any by-reference texture updates that can affect other tile rendering? Quote Link to comment Share on other sites More sharing options...
NerdyElf Posted September 20, 2019 Author Share Posted September 20, 2019 Actually, a fluke test may have just shed some light on this. I was temporarily commenting out the baseTexture change just to avoid the bug, and it seems like it transferred between atlases automatically. So am I correct in thinking that all frame names are stored across all atlases, and will automatically assign the appropriate one? Thus also meaning that frame names would have to be unique per atlas? ivan.popelyshev 1 Quote Link to comment Share on other sites More sharing options...
ivan.popelyshev Posted September 20, 2019 Share Posted September 20, 2019 "textures" hashmap is not a magic object, its just collection of textures by names that no one changes after loading. Of course, if oyu dont make copies of certain texture - all sprites with that texture will use different baseTexture :) I implemented many hacks on texture frames and basetextures, and I didnt yet port my pixi-super-atlas plugin to v5. Its not a hard problem, not on the level of custom filters, but not an easy one too. However one of things i remember is that baseTexture change sometimes doesnt result in proper sprite change, we fixed it some time ago, i advice you to use dev version: pixijs.download/dev/pixi.js (pixi-legacy.js is also there) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.