From f9d0659bd4d977209e7d066c2a66ff065d879331 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com>
Date: Wed, 10 Jan 2024 17:29:49 -0600
Subject: [PATCH] feat: opaque amror
---
.vscode/settings.json | 1 +
.../[id]/components/Model/TankDisplay.tsx | 54 ++++++++++++++-----
.../components/Model/components/TankArmor.tsx | 3 ++
src/components/ArmorMesh/index.tsx | 13 +++--
.../ArmorMesh/shaders/fragment.glsl | 16 +++---
.../ArmorMesh/shaders/fragmentOpaque.glsl | 52 ++++++++++++++++++
src/components/ArmorMesh/shaders/vertex.glsl | 6 +--
src/stores/tankopedia.ts | 2 +
8 files changed, 119 insertions(+), 28 deletions(-)
create mode 100644 src/components/ArmorMesh/shaders/fragmentOpaque.glsl
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 0ca7d3e4e..eed8bbe76 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -37,6 +37,7 @@
"fullstats",
"fuzzysort",
"gamemode",
+ "glsl",
"GLTF",
"immer",
"JOINTINDEX",
diff --git a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx
index 73183d7de..d9d8e5076 100644
--- a/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx
+++ b/src/app/tools/tankopedia/[id]/components/Model/TankDisplay.tsx
@@ -1,9 +1,16 @@
import {
EnterFullScreenIcon,
ExitFullScreenIcon,
- FrameIcon,
+ GearIcon,
} from '@radix-ui/react-icons';
-import { Button, Card, Flex, Tabs, Theme } from '@radix-ui/themes';
+import {
+ Button,
+ Card,
+ DropdownMenu,
+ Flex,
+ Tabs,
+ Theme,
+} from '@radix-ui/themes';
import { Html } from '@react-three/drei';
import { Canvas } from '@react-three/fiber';
import { Suspense, use, useEffect, useRef, useState } from 'react';
@@ -29,6 +36,7 @@ export function TankDisplay() {
const [isFullScreen, setIsFullScreen] = useState(false);
const mode = useTankopedia((state) => state.mode);
const showGrid = useTankopedia((state) => state.model.showGrid);
+ const opaqueArmor = useTankopedia((state) => state.model.opaqueArmor);
const protagonist = useTankopedia((state) => {
if (!state.areTanksAssigned) return;
return state.protagonist;
@@ -147,17 +155,37 @@ export function TankDisplay() {
right: 18,
}}
>
-
+
+
+
+
+
+
+ {
+ mutateTankopedia((draft) => {
+ draft.model.showGrid = checked;
+ });
+ }}
+ >
+ Show grid
+
+
+ {
+ mutateTankopedia((draft) => {
+ draft.model.opaqueArmor = checked;
+ });
+ }}
+ >
+ Opaque armor
+
+
+