Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Physics Asset Cleanup #875

Merged
merged 4 commits into from
Jan 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions docs/nc-convert.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,10 @@ There is also support for external animations such as Mixamo.
- [.nca File Format](#nca-file-format)
- [Blob Formats](#blob-formats)
- [AudioClip](#audioclip-blob-format)
- [ConcaveCollider](#concavecollider-blob-format)
- [ConvexHull](#convexhull-blob-format)
- [Cubemap](#cubemap-blob-format)
- [HullCollider](#hullcollider-blob-format)
- [Mesh](#mesh-blob-format)
- [MeshCollider](#meshcollider-blob-format)
- [Shader](#shader-blob-format)
- [SkeletalAnimation](#skeletalanimation-blob-format)
- [Texture](#texture-blob-format)
Expand All @@ -192,16 +192,6 @@ an asset blob, the layout of which is determined by the asset type.
| left channel | double[] | 8 * samples per channel |
| right channel | double[] | 8 * samples per channel |

### ConcaveCollider Blob Format
> Magic Number: 'CONC'

| Name | Type | Size |
|----------------|------------|---------------------|
| extents | Vector3 | 12 |
| max extent | float | 4 |
| triangle count | u64 | 8 |
| triangles | Triangle[] | triangle count * 36 |

### Cubemap Blob Format
> Magic Number: 'CUBE'

Expand All @@ -212,15 +202,15 @@ an asset blob, the layout of which is determined by the asset type.

CubeMap faces in pixel data array are ordered: front, back, up, down, right, left.

### HullCollider Blob Format
### ConvexHull Blob Format
> Magic number: 'HULL'

| Name | Type | Size |
|--------------|-----------|-------------------|
| extents | Vector3 | 12 |
| max extent | float | 4 |
| vertex count | u64 | 8 |
| vertex list | Vector3[] | vertex count * 12 |
| byte count | u64 | 8 |
| bytes | u8[] | byte count |

### Mesh Blob Format
> Magic Number: 'MESH'
Expand All @@ -246,6 +236,17 @@ CubeMap faces in pixel data array are ordered: front, back, up, down, right, lef
| vertexSpaceToBoneSpace | VertexSpaceToBoneSpace[] | (72 + sizeof(boneName)) * vertexSpaceToBoneSpace count |
| boneSpaceToParentSpace | BoneSpaceToParentSpace[] | (136 + sizeof(boneName)) * vertexSpaceToBoneSpace count |


### MeshCollider Blob Format
> Magic Number: 'CONC'

| Name | Type | Size |
|----------------|------------|---------------------|
| extents | Vector3 | 12 |
| max extent | float | 4 |
| byte count | u64 | 8 |
| bytes | u8[] | byte count |

### Shader Blob Format
> Magic Number: 'SHAD'

Expand Down
4 changes: 2 additions & 2 deletions include/ncasset/AssetType.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace nc::asset
enum class AssetType
{
AudioClip,
ConvexHull,
CubeMap,
ConcaveCollider,
HullCollider,
Mesh,
MeshCollider,
Shader,
SkeletalAnimation,
Texture,
Expand Down
2 changes: 1 addition & 1 deletion include/ncasset/NcaHeader.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ constexpr auto currentVersion = version4;
struct MagicNumber
{
static constexpr auto audioClip = std::string_view{"CLIP"};
static constexpr auto concaveCollider = std::string_view{"CONC"};
static constexpr auto cubeMap = std::string_view{"CUBE"};
static constexpr auto convexHull = std::string_view{"HULL"};
static constexpr auto mesh = std::string_view{"MESH"};
static constexpr auto meshCollider = std::string_view{"CONC"};
static constexpr auto shader = std::string_view{"SHAD"};
static constexpr auto skeletalAnimation = std::string_view{"SKEL"};
static constexpr auto texture = std::string_view{"TEXT"};
Expand Down
18 changes: 9 additions & 9 deletions include/ncengine/asset/AssetViews.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@ struct AudioClipView
size_t samplesPerChannel = 0ull;
};

struct ConcaveColliderView
{
AssetId id = NullAssetId;
};

struct ConvexHullView
{
AssetId id = NullAssetId;
Expand Down Expand Up @@ -62,6 +57,11 @@ struct MeshView
float maxExtent = 0.0f;
};

struct MeshColliderView
{
AssetId id = NullAssetId;
};

struct TextureView
{
AssetId id = NullAssetId;
Expand Down Expand Up @@ -122,11 +122,11 @@ struct FontView
template<class T>
concept AssetView = std::same_as<T, AudioClipView> ||
std::same_as<T, ConvexHullView> ||
std::same_as<T, ConcaveColliderView> ||
std::same_as<T, MeshView> ||
std::same_as<T, TextureView> ||
std::same_as<T, CubeMapView> ||
std::same_as<T, FontView> ||
std::same_as<T, MeshColliderView> ||
std::same_as<T, MeshView> ||
std::same_as<T, ShaderView> ||
std::same_as<T, SkeletalAnimationView> ||
std::same_as<T, FontView>;
std::same_as<T, TextureView>;
} // namespace nc::asset
12 changes: 6 additions & 6 deletions include/ncengine/asset/Assets.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ auto AcquireAudioClipAsset(const std::string& path) -> AudioClipView;
auto AcquireAudioClipAsset(AssetId id) -> AudioClipView;

/** Supported file types: .nca */
bool LoadConcaveColliderAsset(const std::string& path, bool isExternal = false, asset_flags_type flags = AssetFlags::None);
bool LoadConcaveColliderAssets(std::span<const std::string> paths, bool isExternal = false, asset_flags_type flags = AssetFlags::None);
bool UnloadConcaveColliderAsset(const std::string& path, asset_flags_type flags = AssetFlags::None);
void UnloadAllConcaveColliderAssets(asset_flags_type flags = AssetFlags::None);
auto AcquireConcaveColliderAsset(const std::string& path) -> ConcaveColliderView;
auto AcquireConcaveColliderAsset(AssetId id) -> ConcaveColliderView;
bool LoadMeshColliderAsset(const std::string& path, bool isExternal = false, asset_flags_type flags = AssetFlags::None);
bool LoadMeshColliderAssets(std::span<const std::string> paths, bool isExternal = false, asset_flags_type flags = AssetFlags::None);
bool UnloadMeshColliderAsset(const std::string& path, asset_flags_type flags = AssetFlags::None);
void UnloadAllMeshColliderAssets(asset_flags_type flags = AssetFlags::None);
auto AcquireMeshColliderAsset(const std::string& path) -> MeshColliderView;
auto AcquireMeshColliderAsset(AssetId id) -> MeshColliderView;

/** Supported file types: .nca */
bool LoadConvexHullAsset(const std::string& path, bool isExternal = false, asset_flags_type flags = AssetFlags::None);
Expand Down
8 changes: 4 additions & 4 deletions include/ncengine/asset/DefaultAssets.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ constexpr auto DefaultSkyboxCubeMap = "DefaultSkyboxCubeMap.nca";
/** @brief Name of the default empty audio clip asset. */
constexpr auto DefaultAudioClip = "DefaultAudioClip.nca";

/** @brief Name of the default plane-shaped concave collider asset. */
constexpr auto DefaultConcaveCollider = "DefaultConcaveCollider.nca";
/** @brief Name of the default plane-shaped mesh collider asset. */
constexpr auto DefaultMeshCollider = "DefaultMeshCollider.nca";

/** @brief Name of the default cube-shaped hull collider asset. */
constexpr auto DefaultHullCollider = "DefaultHullCollider.nca";
/** @brief Name of the default cube-shaped convex hull asset. */
constexpr auto DefaultConvexHull = "DefaultConvexHull.nca";
} // namespace nc::asset
18 changes: 9 additions & 9 deletions include/ncengine/config/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ struct EngineSettings
*/
struct AssetSettings
{
std::string audioClipsPath = "assets/audio_clips/";
std::string concaveCollidersPath = "assets/concave_colliders/";
std::string hullCollidersPath = "assets/hull_colliders/";
std::string meshesPath = "assets/meshes/";
std::string shadersPath = "assets/shaders/";
std::string skeletalAnimationsPath = "assets/skeletal_animations/";
std::string texturesPath = "assets/textures/";
std::string cubeMapsPath = "assets/cube_maps";
std::string fontsPath = "assets/fonts";
std::string audioClipsPath = "assets/audio_clip/";
std::string convexHullsPath = "assets/convex_hull/";
std::string cubeMapsPath = "assets/cube_map";
std::string fontsPath = "assets/font";
std::string meshesPath = "assets/mesh/";
std::string meshCollidersPath = "assets/mesh_collider/";
std::string shadersPath = "assets/shader/";
std::string skeletalAnimationsPath = "assets/skeletal_animation/";
std::string texturesPath = "assets/texture/";
};

/**
Expand Down
18 changes: 9 additions & 9 deletions resources/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
"assetName": "audio_clip/DefaultAudioClip"
}
],
"concave-collider": [
"convex-hull": [
{
"sourcePath": "raw/model/DefaultPlane.fbx",
"assetName": "concave_collider/DefaultConcaveCollider"
"sourcePath": "raw/model/DefaultCube.fbx",
"assetName": "convex_hull/DefaultConvexHull"
}
],
"cube-map": [
Expand All @@ -20,12 +20,6 @@
"assetName": "cube_map/DefaultSkyboxCubeMap"
}
],
"hull-collider": [
{
"sourcePath": "raw/model/DefaultCube.fbx",
"assetName": "hull_collider/DefaultHullCollider"
}
],
"mesh": [
{
"sourcePath": "raw/model/DefaultCapsule.fbx",
Expand Down Expand Up @@ -70,6 +64,12 @@
}
}
],
"mesh-collider": [
{
"sourcePath": "raw/model/DefaultPlane.fbx",
"assetName": "mesh_collider/DefaultMeshCollider"
}
],
"texture": [
{
"sourcePath": "raw/image/DefaultBaseColor.png",
Expand Down
18 changes: 9 additions & 9 deletions sample/assets/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
"assetName": "audio_clip/hit"
}
],
"concave-collider": [
"convex-hull": [
{
"sourcePath": "raw/model/halfpipe.fbx",
"assetName": "concave_collider/halfpipe"
"sourcePath": "raw/model/ramp.fbx",
"assetName": "convex_hull/ramp"
}
],
"cube-map": [
Expand All @@ -24,12 +24,6 @@
"assetName": "cube_map/night_sky.nca"
}
],
"hull-collider": [
{
"sourcePath": "raw/model/ramp.fbx",
"assetName": "hull_collider/ramp"
}
],
"mesh": [
{
"sourcePath": "raw/model/ogre.fbx",
Expand Down Expand Up @@ -67,6 +61,12 @@
}
}
],
"mesh-collider": [
{
"sourcePath": "raw/model/halfpipe.fbx",
"assetName": "mesh_collider/halfpipe"
}
],
"skeletal-animation": [
{
"sourcePath": "raw/skeletal_animation/skeleton.fbx",
Expand Down
8 changes: 4 additions & 4 deletions sample/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ thread_count=8
build_tasks_on_init=1
[asset_settings]
audio_clips_path=nca/audio_clip/
concave_colliders_path=nca/concave_collider/
hull_colliders_path=nca/hull_collider/
convex_hulls_path=nca/convex_hull/
cubemaps_path=nca/cube_map/
fonts_path=nca/font/
mesh_colliders_path=nca/mesh_collider/
meshes_path=nca/mesh/
shaders_path=nca/shaders/
skeletal_animations_path=nca/skeletal_animation/
textures_path=nca/texture/
cubemaps_path=nca/cube_map/
fonts_path=nca/font/
[memory_settings]
max_rigid_bodies=15000
max_particle_emitters=1000
Expand Down
4 changes: 2 additions & 2 deletions sample/source/scenes/SmokeTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@ void SmokeTest::Load(ecs::Ecs world, ModuleProvider modules)
if (isSecondPass)
{
asset::UnloadAllAudioClipAssets();
asset::UnloadAllConcaveColliderAssets();
asset::UnloadAllConvexHullAssets();
asset::UnloadAllCubeMapAssets();
asset::UnloadAllMeshAssets();
asset::UnloadAllTextureAssets();
asset::UnloadAllMeshColliderAssets();
asset::UnloadAllSkeletalAnimationAssets();
asset::UnloadAllTextureAssets();
::LoadScene(world, modules);
}
else
Expand Down
4 changes: 2 additions & 2 deletions sample/source/shared/Prefabs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,10 @@ void InitializeResources()

const auto& assetSettings = config::GetAssetSettings();
LoadAssets(assetSettings.audioClipsPath, asset::AssetFlags::None, &asset::LoadAudioClipAssets);
LoadAssets(assetSettings.concaveCollidersPath, asset::AssetFlags::None, &asset::LoadConcaveColliderAssets);
LoadAssets(assetSettings.convexHullsPath, asset::AssetFlags::None, &asset::LoadConvexHullAssets);
LoadAssets(assetSettings.cubeMapsPath, asset::AssetFlags::None, &asset::LoadCubeMapAssets);
LoadAssets(assetSettings.hullCollidersPath, asset::AssetFlags::None, &asset::LoadConvexHullAssets);
LoadAssets(assetSettings.meshesPath, asset::AssetFlags::None, &asset::LoadMeshAssets);
LoadAssets(assetSettings.meshCollidersPath, asset::AssetFlags::None, &asset::LoadMeshColliderAssets);
LoadAssets(assetSettings.skeletalAnimationsPath, asset::AssetFlags::None, &asset::LoadSkeletalAnimationAssets);
LoadFont(UIFont);

Expand Down
2 changes: 1 addition & 1 deletion source/ncasset/Deserialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ auto DeserializeAudioClip(std::istream& stream) -> DeserializedResult<AudioClip>

auto DeserializeMeshCollider(std::istream& stream) -> DeserializedResult<MeshCollider>
{
return DeserializeImpl<MeshCollider>(stream, MagicNumber::concaveCollider);
return DeserializeImpl<MeshCollider>(stream, MagicNumber::meshCollider);
}

auto DeserializeCubeMap(std::istream& stream) -> DeserializedResult<CubeMap>
Expand Down
12 changes: 6 additions & 6 deletions source/ncasset/NcaHeader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ auto GetAssetType(const NcaHeader& header) -> AssetType
{
return AssetType::AudioClip;
}
else if (magicNumber == MagicNumber::concaveCollider)
else if (magicNumber == MagicNumber::convexHull)
{
return AssetType::ConcaveCollider;
return AssetType::ConvexHull;
}
else if (magicNumber == MagicNumber::cubeMap)
{
return AssetType::CubeMap;
}
else if (magicNumber == MagicNumber::convexHull)
{
return AssetType::HullCollider;
}
else if (magicNumber == MagicNumber::mesh)
{
return AssetType::Mesh;
}
else if (magicNumber == MagicNumber::meshCollider)
{
return AssetType::MeshCollider;
}
else if (magicNumber == MagicNumber::shader)
{
return AssetType::Shader;
Expand Down
8 changes: 4 additions & 4 deletions source/ncconvert/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ Options
-i <assetPath> Print details about an existing asset file.

Asset types Supported file types Can produce multiple assets
audio-clip wav false
convex-hull fbx, obj false
cube-map jpg, png, bmp false
mesh fbx, obj true
hull-collider fbx, obj false
concave-collider fbx, obj false
mesh-collider fbx, obj false
texture jpg, png, bmp false
cube-map jpg, png, bmp false
audio-clip wav false

Asset names
The provided asset name is used to construct the output file path. It may
Expand Down
4 changes: 2 additions & 2 deletions source/ncconvert/builder/BuildInstructions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ auto BuildTargetMap() -> std::unordered_map<nc::asset::AssetType, std::vector<nc
{
auto out = std::unordered_map<nc::asset::AssetType, std::vector<nc::convert::Target>>{};
out.emplace(nc::asset::AssetType::AudioClip, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::ConvexHull, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::CubeMap, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::ConcaveCollider, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::HullCollider, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::Mesh, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::MeshCollider, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::SkeletalAnimation, std::vector<nc::convert::Target>{});
out.emplace(nc::asset::AssetType::Texture, std::vector<nc::convert::Target>{});
return out;
Expand Down
4 changes: 2 additions & 2 deletions source/ncconvert/builder/BuildOrchestrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ namespace
{
constexpr auto assetTypes = std::array<nc::asset::AssetType, 7>{
nc::asset::AssetType::AudioClip,
nc::asset::AssetType::ConvexHull,
nc::asset::AssetType::CubeMap,
nc::asset::AssetType::ConcaveCollider,
nc::asset::AssetType::HullCollider,
nc::asset::AssetType::Mesh,
nc::asset::AssetType::MeshCollider,
nc::asset::AssetType::SkeletalAnimation,
nc::asset::AssetType::Texture
};
Expand Down
Loading
Loading