Meh WIP 2
This commit is contained in:
+37
-29
@@ -4,7 +4,6 @@ import { render } from "solid-js/web";
|
|||||||
import { InputField } from "#/dev/controls/InputField.tsx";
|
import { InputField } from "#/dev/controls/InputField.tsx";
|
||||||
import { RangeSlider } from "#/dev/controls/RangeSlider.tsx";
|
import { RangeSlider } from "#/dev/controls/RangeSlider.tsx";
|
||||||
import { type BrowserFolder, FileBrowser } from "#/dev/FileBrowser.tsx";
|
import { type BrowserFolder, FileBrowser } from "#/dev/FileBrowser.tsx";
|
||||||
import type { ListItem } from "#/dev/ItemList.tsx";
|
|
||||||
import {
|
import {
|
||||||
ArrowAutofitHeightIcon,
|
ArrowAutofitHeightIcon,
|
||||||
ArrowAutofitWidthIcon,
|
ArrowAutofitWidthIcon,
|
||||||
@@ -14,6 +13,7 @@ import {
|
|||||||
import type { Entity } from "#/engine/Entity";
|
import type { Entity } from "#/engine/Entity";
|
||||||
import { currentScene, loadScene, type SceneData } from "#/engine/Scene.ts";
|
import { currentScene, loadScene, type SceneData } from "#/engine/Scene.ts";
|
||||||
import { setScale, viewport } from "#/engine/Viewport.ts";
|
import { setScale, viewport } from "#/engine/Viewport.ts";
|
||||||
|
import type { ListItem } from "./ItemList";
|
||||||
import { RemoteItemList } from "./RemoteItemList";
|
import { RemoteItemList } from "./RemoteItemList";
|
||||||
|
|
||||||
async function fetchBrowserData(dir: string): Promise<BrowserFolder> {
|
async function fetchBrowserData(dir: string): Promise<BrowserFolder> {
|
||||||
@@ -29,13 +29,13 @@ async function fetchBrowserData(dir: string): Promise<BrowserFolder> {
|
|||||||
return new Map([[dir, scenes]]);
|
return new Map([[dir, scenes]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapSceneEntities(sceneData: SceneData): BrowserFolder {
|
function mapSceneEntitiesOld(sceneData: SceneData): BrowserFolder {
|
||||||
const sets: Record<string, number> = {};
|
const sets: Record<string, number> = {};
|
||||||
const entites = sceneData.entities.reduce((root, entiry) => {
|
const entites = sceneData.entities.reduce((root, entity) => {
|
||||||
sets[entiry.name] =
|
sets[entity.name] =
|
||||||
sets[entiry.name] === undefined ? 0 : sets[entiry.name] + 1;
|
sets[entity.name] === undefined ? 0 : sets[entity.name] + 1;
|
||||||
root.set(`${entiry.name}:${sets[entiry.name]}`, {
|
root.set(`${entity.name}:${sets[entity.name]}`, {
|
||||||
path: `${entiry.name}:${sets[entiry.name]}`,
|
path: `${entity.name}:${sets[entity.name]}`,
|
||||||
isActive: false,
|
isActive: false,
|
||||||
});
|
});
|
||||||
return root;
|
return root;
|
||||||
@@ -46,6 +46,19 @@ function mapSceneEntities(sceneData: SceneData): BrowserFolder {
|
|||||||
|
|
||||||
const scenesRaw = await fetchBrowserData("scenes");
|
const scenesRaw = await fetchBrowserData("scenes");
|
||||||
|
|
||||||
|
function mapSceneEntities(sceneData: SceneData): Array<ListItem> {
|
||||||
|
const sets: Record<string, number> = {};
|
||||||
|
return sceneData.entities.map((entity, index) => {
|
||||||
|
sets[entity.name] =
|
||||||
|
sets[entity.name] === undefined ? 0 : sets[entity.name] + 1;
|
||||||
|
return {
|
||||||
|
label: entity.name,
|
||||||
|
isActive: false,
|
||||||
|
index,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function adjustGameContainer(gameContainer: HTMLElement, width: number): void {
|
function adjustGameContainer(gameContainer: HTMLElement, width: number): void {
|
||||||
gameContainer.style = `position: relative; top: 0; left: ${width}px; width: ${document.body.offsetWidth - width}px;`;
|
gameContainer.style = `position: relative; top: 0; left: ${width}px; width: ${document.body.offsetWidth - width}px;`;
|
||||||
}
|
}
|
||||||
@@ -101,13 +114,22 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
let activeEntity = null;
|
let activeEntity = null;
|
||||||
const setActiveEntity = (path: string): void => {
|
const setActiveEntity = (entityItem: ListItem & { index: number }): void => {
|
||||||
const [id, index] = path.split(":");
|
const instances = currentScene.entityInstanceMap.get(
|
||||||
const instances = currentScene.entityInstanceMap.get(id)!.instances;
|
entityItem.label,
|
||||||
activeEntity = instances[parseInt(index)] as Entity<unknown>;
|
)!.instances;
|
||||||
setEntities(mapActive("entities", path, entities));
|
console.log(entityItem);
|
||||||
|
activeEntity = instances[entityItem.index] as Entity<unknown>;
|
||||||
|
// setEntities(mapActive("entities", path, entities));
|
||||||
console.log(activeEntity);
|
console.log(activeEntity);
|
||||||
};
|
};
|
||||||
|
// const setActiveEntity = (path: string): void => {
|
||||||
|
// const [id, index] = path.split(":");
|
||||||
|
// const instances = currentScene.entityInstanceMap.get(id)!.instances;
|
||||||
|
// activeEntity = instances[parseInt(index)] as Entity<unknown>;
|
||||||
|
// setEntities(mapActive("entities", path, entities));
|
||||||
|
// console.log(activeEntity);
|
||||||
|
// };
|
||||||
|
|
||||||
const [scenes, setScenes] = createSignal(scenesRaw);
|
const [scenes, setScenes] = createSignal(scenesRaw);
|
||||||
|
|
||||||
@@ -170,25 +192,11 @@ const DevTools: Component<{ gameContainer: HTMLElement }> = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FileBrowser root={scenes} handler={setCurrentScene} />
|
<FileBrowser root={scenes} handler={setCurrentScene} />
|
||||||
<FileBrowser root={entities} handler={setActiveEntity} />
|
|
||||||
|
|
||||||
<RemoteItemList
|
<RemoteItemList
|
||||||
name={"Sample list"}
|
name={"Entities"}
|
||||||
handler={console.log}
|
handler={setActiveEntity}
|
||||||
fetch={async () => [
|
fetch={async () => entities()}
|
||||||
{
|
|
||||||
label: "foo",
|
|
||||||
isActive: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "bar",
|
|
||||||
isActive: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "lol",
|
|
||||||
isActive: true,
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="tool-bar-resize" onMouseDown={startResizing}></div>
|
<div class="tool-bar-resize" onMouseDown={startResizing}></div>
|
||||||
|
|||||||
Reference in New Issue
Block a user