Add ship graphics assets and shader graphs#505
Conversation
The Odin Inspector package is not included in this project, causing CS0246 build errors. Remove the #if ODIN_INSPECTOR blocks with Sirenix.OdinInspector.DrawWithUnity attributes from ScriptableEvent and VariableReference. https://claude.ai/code/session_01F9tetBC6fxV83GykQGmYNM
…nce-d7gMi Remove Odin Inspector DrawWithUnity attributes
LeaderboardConfigSOEditor.cs and ActiveGameModesWindow.cs use UnityEditor types (Editor, EditorWindow, SerializedObject, etc.) which are not available in player builds. Moving them to an Editor folder ensures Unity excludes them from player compilation. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
The Editor folder introduces a namespace that shadows the UnityEditor.Editor type. Using the fully qualified name resolves the CS0118 error. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
HexRaceHUDView re-declared playerScoreContainer, playerScoreCardPrefab, and domainColors which are already defined in its parent MiniGameHUDView. Unity does not support the same serialized field name in both a class and its parent, causing build failures. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
androidx.credentials:credentials:1.2.0-rc01 requires compileSdk 34+. The project was set to android-33, causing checkReleaseAarMetadata to fail during Gradle build. Bumping to 35 satisfies the requirement and aligns with current Google Play target API level recommendations. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
Cherry-picked the minimum set of changes needed to get touch input working on mobile: - InputController: enable TouchInputStrategy, wire it into strategy selection for handheld devices - TouchInputStrategy: add drift detection (finger-lift transitions), touch-tuned easing curve, and OnlyLeft/OnlyRight stick actions - InputStatus: add LeftTriggerAnalog, RightTriggerAnalog properties and ActiveInputDevice tracking - ControllerButtonPress: fix button firing across all contexts, add modal-aware dispatch and interactability guards - InputDeviceType enum: new file for touch/gamepad/keyboard detection - CSDebug: centralized logger (dependency of updated input files) https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
TouchInputStrategy provides a touch-tuned easing curve that differs from the gamepad cosine curve in the base class. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
…creenSwitcher IInputStatus was missing the ActiveInputDevice property that InputStatus already implements and TouchInputStrategy uses. ScreenSwitcher was missing HasActiveModal, needed by ControllerButtonPress to gate input when modals are open. https://claude.ai/code/session_01DcoiifZjHcALmV4anypoPN
…ce-aWFjF Reorganize editor scripts to UI/Editor directory
changed crystal impact and boost sounds to what i demoed last week.
Projectile SFX was originally the fly by. made a noise more suited for a laser
Resolves conflict between master and bleeding-edge (orphan/unrelated
histories) by taking bleeding-edge as the source of truth on conflicting
files (-X theirs) and removing master's pre-reorganization layout that
bleeding-edge already moved to new locations.
Removed (master-only paths superseded by bleeding-edge reorganization):
- Assets/_Scripts/App/ -> System/, UI/, Controller/
- Assets/_Scripts/Game/ (C# files only) -> Controller/, UI/, Data/, ...
- Assets/_Scripts/MinigameHUD/ -> UI/
- Assets/_Scripts/Models/ -> Data/, ScriptableObjects/
- Assets/_Scripts/VesselHUD/ -> UI/Controller/, UI/View/
- Assets/_Scripts/~ChoppingBlock/ (deleted)
- Assets/_Scripts/Integrations/Architectures/ -> System/Architectures/
- Assets/_Scripts/Integrations/Instrumentation/ -> System/Instrumentation/
- Assets/_Scripts/Integrations/Playfab/{Authentication,CloudScripts,
Economy,Groups,PlayStream,PlayerData,Utility}/ -> System/Playfab/
- Assets/_Scripts/Integrations/SnsShare.cs (removed)
- Assets/_Scripts/SSUScripts/Editor/*.cs -> Editor/ (top-level)
- Assets/_Scripts/DialogueSystem/{Runtime,Editor}/ -> System/Runtime/, Editor/
- Assets/_Scripts/Utility/SOAP/Scriptable* -> ScriptableObjects/SOAP/
- Assets/_Scripts/Utility/{NetworkMonitor,ProfileImage,FireTrailBlock*,
Recording/VCamRecorderController}.cs -> moved in bleeding-edge
- Assets/_Scripts/SSUScripts/{ImageSSU,InstancerSSU,InteractiveSquishSSU,
InteractiveWindSSU,MaterialInstancerSSU,ShaderFaderSSU,SpriteSheetSSU,
UnscaledTimeSSU,WindManagerSSU,WindParallaxSSU}.cs -> moved in bleeding-edge
- Assets/_Scripts/ScriptableEventNotificationPayload.cs -> System/
- Orphaned .meta files for now-empty directories
Kept Assets/_Scripts/Game/ for non-code assets (compute shaders, input
action mappings, materials, FlowData/WarpData assets, PRISM_PERFORMANCE_AUDIT.md)
per CLAUDE.md guidance that the directory remains as vestigial for
non-code assets only.
https://claude.ai/code/session_01MjFD7vxrj1nAKtsRiPFeGt
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e7e083283d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| /// The component generates icosphere vertex positions at the configured subdivision level, | ||
| /// places one capsule at each vertex oriented radially, and renders them every frame. | ||
| /// </summary> | ||
| public class CapsuleMembrane : MonoBehaviour |
There was a problem hiding this comment.
Keep CapsuleMembrane type available to gameplay code
This commit removes CapsuleMembrane, but gameplay still depends on it: Cell.MembraneRadius calls membrane.TryGetComponent<CapsuleMembrane>(...) in Assets/_Scripts/Controller/Environment/Cell.cs and the Assets/_Prefabs/Environment/CapsuleMembrane.prefab asset still exists. With no remaining class CapsuleMembrane definition in this commit, the project hits a missing-type compile break and leaves membrane prefab references as missing scripts.
Useful? React with 👍 / 👎.
| [AddComponentMenu("Soap/EventListeners/EventListener"+nameof(VesselClassType))] | ||
| public class EventListenerShipClassType : EventListenerGeneric<VesselClassType> |
There was a problem hiding this comment.
Import VesselClassType namespace before using SOAP generics
This new event-listener script uses VesselClassType in attributes and generic type parameters, but the file does not import CosmicShore.Data (where the enum is declared in Assets/_Scripts/Data/Enums/VesselClassType.cs). That causes an immediate compile error; the paired ScriptableEventShipClassType.cs added in the same folder has the same unresolved-type issue.
Useful? React with 👍 / 👎.
| @@ -0,0 +1,11 @@ | |||
| using System; | |||
| using CosmicShore.Game.UI; | |||
There was a problem hiding this comment.
Reference MiniGameHUD from the correct namespace
ShipHUDData imports CosmicShore.Game.UI, but MiniGameHUD is defined under CosmicShore.UI (Assets/_Scripts/UI/MiniGameHUD.cs). This mismatch makes MiniGameHUD unresolved in the new struct, producing a compile-time failure until the namespace/type reference is corrected.
Useful? React with 👍 / 👎.
Summary
This PR adds comprehensive graphics assets for spaceship rendering, including shader graphs for ship materials and textures, along with 3D models, materials, and visual preview assets for multiple ship types.
Key Changes
Shader Graphs: Added two new shader graph files:
ShipGraph.shadergraph- Main ship material shader with properties for base colors and effectsShipTextureGraph.shadergraph- Texture generation shader for procedural ship surface detailsShip Materials: Created 12 material variants for different ship color schemes:
3D Models: Added FBX models for multiple ship types:
Visual Assets:
Audio Assets: Added sound effects for ship interactions (boost, laser, collision, etc.)
Editor Tools: Added color palette configuration for ship colors
Implementation Details
https://claude.ai/code/session_01MjFD7vxrj1nAKtsRiPFeGt