feat: part 2 of redesign of open image dialog

This commit is contained in:
trafficlunar 2024-12-28 21:46:52 +00:00
parent 9833f8a63c
commit 6996c9a310
6 changed files with 73 additions and 24 deletions

View file

@ -16,6 +16,7 @@ interface Props {
solidTextures: Record<string, PIXI.Texture>;
image: HTMLImageElement | undefined;
imageDimensions: Dimension;
usableBlocks: string[];
coords: Position;
scale: number;
version: number;
@ -25,7 +26,20 @@ interface Props {
// Lifts 16,000 tiles limit
settings.use32bitIndex = true;
function Blocks({ blocks, setBlocks, missingTexture, textures, solidTextures, image, imageDimensions, coords, scale, version, setLoading }: Props) {
function Blocks({
blocks,
setBlocks,
missingTexture,
textures,
solidTextures,
image,
imageDimensions,
usableBlocks,
coords,
scale,
version,
setLoading,
}: Props) {
const app = useApp();
const tilemapRef = useRef<CompositeTilemap>();
@ -84,7 +98,7 @@ function Blocks({ blocks, setBlocks, missingTexture, textures, solidTextures, im
const newBlocks: Block[] = [];
for (let i = 0; i < imageData.data.length; i += 4) {
const block = findBlockFromRgb(blockData, imageData.data[i], imageData.data[i + 1], imageData.data[i + 2], imageData.data[i + 3]);
const block = findBlockFromRgb(usableBlocks, imageData.data[i], imageData.data[i + 1], imageData.data[i + 2], imageData.data[i + 3]);
if (block == "air") continue;
const x = Math.floor((i / 4) % imageData.width);

View file

@ -26,7 +26,7 @@ PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;
function Canvas() {
const { stageSize, canvasSize, blocks, coords, scale, version, setStageSize, setBlocks, setCoords, setScale } = useContext(CanvasContext);
const { image, imageDimensions } = useContext(ImageContext);
const { image, imageDimensions, usableBlocks } = useContext(ImageContext);
const { setLoading } = useContext(LoadingContext);
const { settings } = useContext(SettingsContext);
const { missingTexture, textures, solidTextures } = useContext(TexturesContext);
@ -308,6 +308,7 @@ function Canvas() {
solidTextures={solidTextures}
image={image}
imageDimensions={imageDimensions}
usableBlocks={usableBlocks}
coords={coords}
scale={scale}
version={version}