Comments (5)
If you dont need to sort through the tree, you can code it on your own: https://github.com/pixijs/pixi-display/wiki#how-to-not-use-pixi-display
As you see, I favor gradual approach.
from layers.
Ahh, thanks I missed the wiki.
Then I go for just sorting on each update and re-adding them to the list.
from layers.
I'm sure you will figure out the best sorting algorithm for your game. When you actually need to sort through the tree, give me your cirrent algorithm and i'll tell you how to embed it into pixi-display.
from layers.
In my case the displaylist is really shallow.
I just have one object (this.display) where I keep everything.
Below my render method, in the end I have added the sorting stuff (not tested yet).
Don't know if .sort is bad for performance.
render() {
const startCol = Math.floor(this.cameraX / MapConfig.tileSize.width);
const startRow = Math.floor(this.cameraY / MapConfig.tileSize.height);
const endCol = Math.ceil(startCol + (this.cameraWidth / MapConfig.tileSize.width));
const endRow = Math.ceil(startRow + (this.cameraHeight / MapConfig.tileSize.height));
const offsetX = -this.cameraX + startCol * MapConfig.tileSize.width;
const offsetY = -this.cameraY + startRow * MapConfig.tileSize.height;
// Mark previously moved items.
for (let i = this.activeItems.length - 1; i >= 0; i--) {
this.activeItems[i].remove = true;
}
// Compensate for none tiled layers.
this.playerContainer.x = -Math.abs(this.cameraX);
this.playerContainer.y = -Math.abs(this.cameraY);
// Move items that are visible
for (let c = startCol; c <= endCol; c++) {
for (let r = startRow; r <= endRow; r++) {
const x = (c - startCol) * MapConfig.tileSize.width + offsetX;
const y = (r - startRow) * MapConfig.tileSize.height + offsetY;
// If item has been moved previously
const item = this.itemList[`${c}_${r}`];
if (item) {
item.x = x;
item.y = y;
item.remove = false;
} else {
this.addItem(c, r, { x, y }, MapConfig.tileSize);
}
}
}
// Remove items that has not moved
for (let i = this.activeItems.length - 1; i >= 0; i--) {
if (this.activeItems[i].remove) {
this.removeItem(i);
}
}
// Depth sorting
this.activeItems.sort((obj1, obj2) => obj1.display.y - obj2.display.y);
for (let i = this.activeItems.length - 1; i >= 0; i--) {
this.display.addChild(this.activeItems[i].display);
}
}
from layers.
That page was updated. I suggest to look at new version, it has faster sorting.
from layers.
Related Issues (20)
- A bit confused about how to use HOT 3
- PIXI Events propagation bug with zOrder HOT 2
- Z-Index change has no effect HOT 1
- Masking don't work with pixi/layers
- Bug: PIXI Events not respecting zOrder hierarchy of PIXI Layers plugin HOT 2
- Uncaught TypeError: renderer.incDisplayOrder is not a function HOT 6
- InteractionCallback getting passed as null to pixi layers findHit, resulting in error HOT 1
- Objects disappear when setting clearing parentGroup/parentLayer
- TS error: Can't assign Layer to Container HOT 4
- Uncaught TypeError: this.applyRenderMixing is not a function HOT 4
- Calling InteractionManager.hitTest throws an exception HOT 3
- Layers cannot be masked ? HOT 9
- I've read through all the documentation / examples and still don't understand how to use this plugin. HOT 13
- how to use webpack pixi-layers HOT 3
- Renderer mixin not applied properly
- How to Set a Clear Colour
- Examples are not working
- After upgrade to v1.0.11, compile to commonjs modules no longer possible in tsConfig HOT 3
- No output with webworkers HOT 1
- support @pixi/events
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from layers.