mirror of
https://github.com/misskey-dev/misskey.git
synced 2026-03-21 03:30:42 +00:00
wip
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 30 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -61,6 +61,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
<MkButton :primary="engine.isEditMode.value" @click="toggleEditMode">Edit mode: {{ engine.isEditMode.value ? 'on' : 'off' }}</MkButton>
|
<MkButton :primary="engine.isEditMode.value" @click="toggleEditMode">Edit mode: {{ engine.isEditMode.value ? 'on' : 'off' }}</MkButton>
|
||||||
<MkButton @click="addObject">addObject</MkButton>
|
<MkButton @click="addObject">addObject</MkButton>
|
||||||
<MkButton primary @click="save">save</MkButton>
|
<MkButton primary @click="save">save</MkButton>
|
||||||
|
<MkButton @click="showBoundingBox">showBoundingBox</MkButton>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
@@ -578,6 +579,11 @@ function removeSelectedObject() {
|
|||||||
canvas.value!.focus();
|
canvas.value!.focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function showBoundingBox() {
|
||||||
|
engine.value?.showBoundingBox();
|
||||||
|
canvas.value!.focus();
|
||||||
|
}
|
||||||
|
|
||||||
function getHex(c: [number, number, number]) {
|
function getHex(c: [number, number, number]) {
|
||||||
return `#${c.map(x => Math.round(x * 255).toString(16).padStart(2, '0')).join('')}`;
|
return `#${c.map(x => Math.round(x * 255).toString(16).padStart(2, '0')).join('')}`;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,8 +48,35 @@ type RoomStateObject<Options = any> = {
|
|||||||
sticky?: string | null;
|
sticky?: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type SimpleHeyaWallBase = {
|
||||||
|
material: null | 'wood' | 'concrete';
|
||||||
|
color: [number, number, number];
|
||||||
|
};
|
||||||
|
|
||||||
|
type Heya = {
|
||||||
|
type: 'simple';
|
||||||
|
options: {
|
||||||
|
size: [number, number];
|
||||||
|
window: 'none' | 'kosidakamado' | 'demado' | 'hakidasimado';
|
||||||
|
wallN: SimpleHeyaWallBase;
|
||||||
|
wallE: SimpleHeyaWallBase;
|
||||||
|
wallS: SimpleHeyaWallBase;
|
||||||
|
wallW: SimpleHeyaWallBase;
|
||||||
|
flooring: {
|
||||||
|
material: null | 'wood' | 'concrete';
|
||||||
|
color: [number, number, number];
|
||||||
|
};
|
||||||
|
ceiling: {
|
||||||
|
material: null | 'wood' | 'concrete';
|
||||||
|
color: [number, number, number];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} | {
|
||||||
|
type: 'japanese';
|
||||||
|
};
|
||||||
|
|
||||||
type RoomState = {
|
type RoomState = {
|
||||||
roomType: 'default';
|
heya: Heya;
|
||||||
installedObjects: RoomStateObject<any>[];
|
installedObjects: RoomStateObject<any>[];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -865,7 +892,6 @@ export class RoomEngine {
|
|||||||
|
|
||||||
// シェイプキー(morph)を考慮してbounding boxを更新するために必要
|
// シェイプキー(morph)を考慮してbounding boxを更新するために必要
|
||||||
mesh.refreshBoundingInfo({ applyMorph: true });
|
mesh.refreshBoundingInfo({ applyMorph: true });
|
||||||
//mesh.showBoundingBox = _DEV_;
|
|
||||||
|
|
||||||
mesh.metadata = metadata;
|
mesh.metadata = metadata;
|
||||||
mesh.checkCollisions = !hasCollisionMesh;
|
mesh.checkCollisions = !hasCollisionMesh;
|
||||||
@@ -1289,6 +1315,14 @@ export class RoomEngine {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public showBoundingBox() {
|
||||||
|
for (const mesh of this.objectMeshs.values()) {
|
||||||
|
for (const m of mesh.getChildMeshes()) {
|
||||||
|
m.showBoundingBox = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public resize() {
|
public resize() {
|
||||||
this.engine.resize();
|
this.engine.resize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ export const pictureFrame = defineObject({
|
|||||||
matMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
|
matMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
|
||||||
pictureMesh.morphTargetManager!.getTargetByName('Width')!.influence = options.width * (1 - options.matHThickness);
|
pictureMesh.morphTargetManager!.getTargetByName('Width')!.influence = options.width * (1 - options.matHThickness);
|
||||||
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
|
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
|
||||||
|
matMesh.isVisible = options.matHThickness > 0 || options.matVThickness > 0;
|
||||||
meshUpdated();
|
meshUpdated();
|
||||||
|
|
||||||
applyFit();
|
applyFit();
|
||||||
|
|||||||
@@ -130,6 +130,7 @@ export const tabletopPictureFrame = defineObject({
|
|||||||
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
|
pictureMesh.morphTargetManager!.getTargetByName('Height')!.influence = options.height * (1 - options.matVThickness);
|
||||||
pictureMesh.morphTargetManager!.getTargetByName('MatH')!.influence = options.matHThickness * options.width;
|
pictureMesh.morphTargetManager!.getTargetByName('MatH')!.influence = options.matHThickness * options.width;
|
||||||
pictureMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
|
pictureMesh.morphTargetManager!.getTargetByName('MatV')!.influence = options.matVThickness * options.height;
|
||||||
|
matMesh.isVisible = options.matHThickness > 0 || options.matVThickness > 0;
|
||||||
meshUpdated();
|
meshUpdated();
|
||||||
|
|
||||||
applyFit();
|
applyFit();
|
||||||
|
|||||||
Reference in New Issue
Block a user