diff --git a/src/bin/3dView/Scene/Bin3dView.tsx b/src/bin/3dView/Scene/Bin3dView.tsx
index d14297d..0d15558 100644
--- a/src/bin/3dView/Scene/Bin3dView.tsx
+++ b/src/bin/3dView/Scene/Bin3dView.tsx
@@ -6,7 +6,7 @@ import { Bin } from "models";
import BinShell from "../BinParts/BinShell";
import GrainFillFlat from "../Systems/Inventory/GrainFillFlat";
import BinCables from "../Systems/Cables/BinCables";
-import { Vector3 } from "three";
+// import { Vector3 } from "three";
import { useMemo } from "react";
import { BuildCableData, CableData } from "../Data/BuildCableData";
import { BuildNodeData, NodeData } from "../Data/BuildNodeData";
@@ -14,10 +14,10 @@ import { pond } from "protobuf-ts/pond";
import GrainCableFill from "../Systems/Inventory/GrainCableFill";
import TempHeatMap from "../Systems/Heatmap/TempHeatMap";
import NodePointCloud from "../Systems/Heatmap/NodePointCloud";
-import { Box } from "@mui/material";
+// import { Box } from "@mui/material";
import MoistureHeatMap from "../Systems/Heatmap/MoistureHeatmap";
import { grainYBoundsFromFillPercent } from "../utils/grainFillBounds";
-import { RadiansToDegrees } from "common/TrigFunctions";
+// import { RadiansToDegrees } from "common/TrigFunctions";
// import { GrainCable } from "models/GrainCable"
// Fallback dimensions used when a bin has no advanced dimensions configured.
@@ -40,6 +40,10 @@ interface Props {
*/
fillPercent?: number
nodeClick?: (node: NodeData, cable: CableData) => void
+ /**
+ * When true, renders the basic fill and suppresses the heatmaps.
+ * Heatmaps already simulate the grain level so showing both is redundant.
+ */
showGrain?: boolean
showTempHeatmap?: boolean
showMoistureHeatmap?: boolean
@@ -108,25 +112,30 @@ export default function Bin3dView(props: Props) {
const resetCameraFn = React.useRef<(() => void) | null>(null);
const grainInventory = () => {
+ const grainColour = "#fff300";
+ //note that adjusting the opacity is how to adjust the brightness, less makes it dimmer
if (isCableInventory) {
return (
)
} else if (fillPercent) {
return (
)
}
@@ -155,8 +164,6 @@ export default function Bin3dView(props: Props) {
renderOrder={4}
/>
- {showGrain && grainInventory()}
-
}
{/* note that the heatmaps internally use render order 1,2, and 3 for the three separate coloured meshes */}
- {showTempHeatmap && (
- 0
+ ?
- )}
- {showMoistureHeatmap && (
-
- )}
+ : showMoistureHeatmap && nodeData.length > 0
+ ?
+ : grainInventory()
+ }
diff --git a/src/bin/3dView/Systems/Inventory/GrainCableFill.tsx b/src/bin/3dView/Systems/Inventory/GrainCableFill.tsx
index 3cb8cd7..f7b769b 100644
--- a/src/bin/3dView/Systems/Inventory/GrainCableFill.tsx
+++ b/src/bin/3dView/Systems/Inventory/GrainCableFill.tsx
@@ -16,6 +16,7 @@ interface Props {
* If undefined and no top nodes exist, nothing is rendered.
*/
fallbackFillPercent?: number;
+ colour?: string
}
// Tuning knobs
@@ -59,13 +60,13 @@ export default function GrainCableFill(props: Props) {
hopperHeight = 0,
nodes,
fallbackFillPercent,
- grainOpacity
+ grainOpacity,
+ colour
} = props;
const binRadius = diameter / 2;
// Slightly inset to avoid z-fighting with the shell
const grainRadius = binRadius * 0.98;
- const grainColour = "#fff302";
// --- Collect top nodes (non-excluded, inGrain) ---
const topNodes = useMemo(() =>
@@ -256,7 +257,7 @@ export default function GrainCableFill(props: Props) {
}}
position={new Vector3(0, -(sidewallHeight / 2 + hopperHeight) + hopperFillHeight / 2, 0)}
rotation={new Euler(Math.PI, 0, 0)}
- colour={grainColour}
+ colour={colour}
roughness={1}
metalness={0}
opacity={grainOpacity}
@@ -276,7 +277,7 @@ export default function GrainCableFill(props: Props) {
openEnded: false
}}
position={new Vector3(0, -sidewallHeight / 2 + cylinderFillHeight / 2, 0)}
- colour={grainColour}
+ colour={colour}
roughness={1}
metalness={0}
opacity={grainOpacity}
@@ -296,7 +297,7 @@ export default function GrainCableFill(props: Props) {
{surfaceGeometry && (
{/* Hopper fill */}
@@ -98,7 +97,7 @@ export default function GrainFillFlat(props: Props) {
}}
position={hopperPosition}
rotation={hopperRotation}
- colour={grainColour}
+ colour={colour}
roughness={1}
metalness={0}
opacity={grainOpacity}
@@ -119,7 +118,7 @@ export default function GrainFillFlat(props: Props) {
openEnded: false
}}
position={cylinderPosition}
- colour={grainColour}
+ colour={colour}
roughness={1}
metalness={0}
opacity={grainOpacity}
diff --git a/src/bin/bin3dVisualizer.tsx b/src/bin/bin3dVisualizer.tsx
index 06bc722..9bdfd0c 100644
--- a/src/bin/bin3dVisualizer.tsx
+++ b/src/bin/bin3dVisualizer.tsx
@@ -414,8 +414,6 @@ export default function bin3dVisualizer(props: Props){
showMoistureHeatmap={showMoistureHeatmap}
showTemp={showTemp && showLabels}
showMoisture={showMoisture && showLabels}
- // showGrain={showFill}
- // showHotspots={showHotspots}
xOffset={isMobile ? undefined : -120}
/>
{isMobile ? mobileHUD() : desktopHUD()}
diff --git a/src/bin/binSummary/BinSummary.tsx b/src/bin/binSummary/BinSummary.tsx
index 293a720..dcab089 100644
--- a/src/bin/binSummary/BinSummary.tsx
+++ b/src/bin/binSummary/BinSummary.tsx
@@ -71,6 +71,25 @@ export default function BinSummary(props: Props){
// }
// },[devices])
+ const inventoryControl = () => {
+ switch (bin.inventoryControl()) {
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_MANUAL:
+ return "Manual"
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_AUTOMATIC:
+ return "Auto Cable"
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_AUTOMATIC_LIDAR:
+ return "Auto Lidar"
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_HYBRID_CABLE:
+ return "Hybrid Cable"
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_HYBRID_LIDAR:
+ return "Hybrid Lidar"
+ case pond.BinInventoryControl.BIN_INVENTORY_CONTROL_LIBRACART:
+ return "Libra Cart"
+ default:
+ return "Not Set"
+ }
+ }
+
const activity = (reading: string) => {
//if the device hasnt checked in in 6 hours = missing 12 hours = inactive within 6 hours = live
let status = "Live"
@@ -139,7 +158,7 @@ export default function BinSummary(props: Props){
{/* Fill row */}
- Bin fill
+ Bin fill ({inventoryControl()})
{bin.inventoryControl() === pond.BinInventoryControl.BIN_INVENTORY_CONTROL_MANUAL
@@ -210,7 +229,7 @@ export default function BinSummary(props: Props){
{/* Bin Fill */}
- Bin Fill
+ Bin Fill ({inventoryControl()})
{/* hidden measuring span, renders off-screen */}