Skip to content

Commit aff925e

Browse files
committed
️🚧🍾 ↝ [SSP-79]: Updating physics of planet generator to allow for structures to be embedded in landmarks
1 parent 6f402db commit aff925e

File tree

5 files changed

+61
-52
lines changed

5 files changed

+61
-52
lines changed

components/Data/Generator/Astronomers/PlanetHunters/SettingsPanel.tsx

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
"use client";
1+
"use client"
22

3-
import { useState } from "react";
4-
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
5-
import type { PlanetStats } from "@/lib/planet-physics";
6-
import { PhysicalTab } from "./Settings/physical-tab";
7-
import { SurfaceTab } from "./Settings/surface-tab";
8-
import { BiomeTab } from "./Settings/biome-tab";
9-
import { LandmarksTab } from "./Settings/landmarks-tab";
10-
import { ImportExportTab } from "./Settings/import-export-tab";
3+
import { useState } from "react"
4+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
5+
import type { PlanetStats } from "@/lib/planet-physics"
6+
import { PhysicalTab } from "./Settings/physical-tab"
7+
import { SurfaceTab } from "./Settings/surface-tab"
8+
import { BiomeTab } from "./Settings/biome-tab"
9+
import { LandmarksTab } from "./Settings/landmarks-tab"
10+
import { ImportExportTab } from "./Settings/import-export-tab"
1111

1212
interface SettingsPanelProps {
1313
planetStats: PlanetStats
@@ -31,51 +31,52 @@ export function SettingsPanel({
3131
})
3232

3333
return (
34-
<div className="absolute top-0 left-0 bottom-0 w-96 bg-black/90 text-green-400 p-6 overflow-y-auto font-mono border-r border-green-500/30">
35-
<h2 className="text-2xl font-bold mb-6 tracking-wider border-b border-green-500/30 pb-2">PLANET SETTINGS</h2>
34+
<div className="absolute top-0 left-0 h-full w-96 bg-slate-800/90 text-blue-100 p-6 overflow-y-auto font-mono border-r border-slate-600/60">
35+
<h2 className="text-2xl font-bold mb-6 tracking-wider border-b border-slate-600/60 pb-2">PLANET SETTINGS</h2>
3636

37-
<div className="mb-6 p-3 bg-black/60 border border-green-500/30 rounded-md">
37+
{/* Hidden but not removed */}
38+
<div className="mb-6 p-3 bg-slate-700/60 border border-slate-600/60 rounded-md hidden">
3839
<div className="grid grid-cols-2 gap-2 text-sm">
39-
<div className="text-green-500/70">CLASSIFICATION:</div>
40+
<div className="text-slate-400">CLASSIFICATION:</div>
4041
<div>{classificationId}</div>
41-
<div className="text-green-500/70">AUTHOR:</div>
42+
<div className="text-slate-400">AUTHOR:</div>
4243
<div>{author}</div>
4344
</div>
4445
</div>
4546

4647
<Tabs defaultValue="physical" className="space-y-6">
47-
<TabsList className="grid w-full grid-cols-5 mb-6 bg-black border border-green-500/30">
48-
<TabsTrigger
49-
value="physical"
50-
className="data-[state=active]:bg-green-900/20 data-[state=active]:text-green-300"
51-
>
48+
<TabsList className="grid w-full grid-cols-4 mb-6 bg-slate-700 border border-slate-600">
49+
<TabsTrigger value="physical" className="data-[state=active]:bg-cyan-800/40 data-[state=active]:text-cyan-50">
5250
PHYSICAL
5351
</TabsTrigger>
54-
<TabsTrigger
55-
value="surface"
56-
className="data-[state=active]:bg-green-900/20 data-[state=active]:text-green-300"
57-
>
52+
<TabsTrigger value="surface" className="data-[state=active]:bg-cyan-800/40 data-[state=active]:text-cyan-50">
5853
SURFACE
5954
</TabsTrigger>
60-
<TabsTrigger value="biome" className="data-[state=active]:bg-green-900/20 data-[state=active]:text-green-300">
55+
<TabsTrigger value="biome" className="data-[state=active]:bg-cyan-800/40 data-[state=active]:text-cyan-50">
6156
BIOME
6257
</TabsTrigger>
6358
<TabsTrigger
6459
value="landmarks"
65-
className="data-[state=active]:bg-green-900/20 data-[state=active]:text-green-300"
60+
className="data-[state=active]:bg-cyan-800/40 data-[state=active]:text-cyan-50"
6661
>
6762
LANDMARKS
6863
</TabsTrigger>
69-
<TabsTrigger
70-
value="import-export"
71-
className="data-[state=active]:bg-green-900/20 data-[state=active]:text-green-300"
72-
>
73-
I/O
74-
</TabsTrigger>
7564
</TabsList>
7665

7766
<TabsContent value="physical">
7867
<PhysicalTab planetStats={planetStats} setPlanetStats={setPlanetStats} />
68+
69+
{/* Export section moved to Physical tab */}
70+
<div className="mt-6">
71+
<ImportExportTab
72+
planetStats={planetStats}
73+
setPlanetStats={setPlanetStats}
74+
classificationId={classificationId}
75+
author={author}
76+
setSelectedBiome={setSelectedBiome}
77+
setCustomColors={setCustomColors}
78+
/>
79+
</div>
7980
</TabsContent>
8081

8182
<TabsContent value="surface">
@@ -96,17 +97,6 @@ export function SettingsPanel({
9697
<TabsContent value="landmarks">
9798
<LandmarksTab planetStats={planetStats} setPlanetStats={setPlanetStats} />
9899
</TabsContent>
99-
100-
<TabsContent value="import-export">
101-
<ImportExportTab
102-
planetStats={planetStats}
103-
setPlanetStats={setPlanetStats}
104-
classificationId={classificationId}
105-
author={author}
106-
setSelectedBiome={setSelectedBiome}
107-
setCustomColors={setCustomColors}
108-
/>
109-
</TabsContent>
110100
</Tabs>
111101
</div>
112102
)

components/Research/UpgradeItem.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ interface UpgradeItemProps {
1111
onUpgrade: () => void;
1212
color: string;
1313
disabled?: boolean;
14-
}
14+
};
1515

1616
export const UpgradeItem: React.FC<UpgradeItemProps> = ({
1717
title,

lib/biome-data.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -431,5 +431,4 @@ export function getBiomeColors(biome: string): BiomeColors {
431431
mountain: "#E0E0E0", // Light gray
432432
}
433433
)
434-
}
435-
434+
};

lib/noise.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ export function noise(x: number, y: number, z: number): number {
7575
v,
7676
),
7777
w,
78-
);
78+
)
7979
};

lib/planet-physics.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as THREE from "three"
1+
import * as THREE from "three";
22

33
export interface Landmark {
44
classification_id: string
@@ -11,6 +11,7 @@ export interface Landmark {
1111
z: number
1212
}
1313
events?: LandmarkEvent[] // New field for replayable events
14+
structures?: LandmarkStructure[] // New field for 3D structures
1415
influence_type?:
1516
| "crater"
1617
| "mountain"
@@ -30,10 +31,13 @@ export interface Landmark {
3031
| "canyon"
3132
| "ocean_ridge"
3233
| "trench"
34+
| "ice_patch"
35+
| "lava_flow"
3336
influence_radius?: number
3437
influence_strength?: number
3538
influence_roughness?: number
3639
category?: "terrestrial" | "gaseous" // New field to categorize landmarks
40+
isActive?: boolean
3741
}
3842

3943
export interface LandmarkEvent {
@@ -45,8 +49,25 @@ export interface LandmarkEvent {
4549
// Additional fields can be added for event configuration
4650
}
4751

48-
export interface PlanetStats {
52+
// Add this interface after the LandmarkEvent interface
53+
export interface LandmarkStructure {
54+
id: string
4955
type: string
56+
name: string
57+
description?: string
58+
scale: { x: number; y: number; z: number }
59+
position: { x: number; y: number; z: number }
60+
rotation: { x: number; y: number; z: number }
61+
color: string
62+
emissive?: string
63+
emissiveIntensity?: number
64+
metalness?: number
65+
roughness?: number
66+
opacity?: number
67+
wireframe?: boolean
68+
}
69+
70+
export interface PlanetStats {
5071
mass: number
5172
radius: number
5273
density?: number
@@ -116,7 +137,6 @@ export const defaultPlanetStats: PlanetStats = {
116137
category: "terrestrial", // Add category
117138
},
118139
],
119-
type: ""
120140
}
121141

122142
export function calculateDensity(mass: number, radius: number): number {
@@ -156,15 +176,15 @@ export enum TerrainType {
156176
Beach = 1,
157177
Regular = 2,
158178
Mountain = 3,
159-
};
179+
}
160180

161181
export function getSoilTextureParams(texture: string): {
162182
scale: number
163183
depth: number
164184
irregularity: number
165185
pattern: "noise" | "cracks" | "layers" | "crystals" | "pores" | "grains"
166186
} {
167-
const params: Record<string, { scale: number; depth: number; irregularity: number; pattern: "noise" | "cracks" | "layers" | "crystals" | "pores" | "grains" }> = {
187+
const params: Record<string, { scale: number; depth: number; irregularity: number; pattern: "layers" | "noise" | "cracks" | "crystals" | "pores" | "grains" }> = {
168188
smooth: { scale: 5, depth: 0.01, irregularity: 0.1, pattern: "noise" },
169189
rough: { scale: 15, depth: 0.05, irregularity: 0.7, pattern: "noise" },
170190
cracked: { scale: 20, depth: 0.08, irregularity: 0.6, pattern: "cracks" },
@@ -463,5 +483,5 @@ export function calculateLandmarkTerrainInfluence(
463483
return {
464484
height: totalHeightInfluence,
465485
roughness: totalRoughnessInfluence,
466-
};
486+
}
467487
};

0 commit comments

Comments
 (0)