64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
|
|
|
|
using System;
|
|
using Flax.Build;
|
|
using Flax.Build.NativeCpp;
|
|
|
|
/// <summary>
|
|
/// Physics module.
|
|
/// </summary>
|
|
public class Physics : EngineModule
|
|
{
|
|
/// <summary>
|
|
/// Enables using collisions cooking.
|
|
/// </summary>
|
|
public static bool WithCooking = true;
|
|
|
|
/// <summary>
|
|
/// Enables using vehicles simulation.
|
|
/// </summary>
|
|
public static bool WithVehicle = true;
|
|
|
|
/// <summary>
|
|
/// Enables using cloth simulation.
|
|
/// </summary>
|
|
public static bool WithCloth = true;
|
|
|
|
/// <summary>
|
|
/// Enables using PhysX library. Can be overriden by SetupPhysicsBackend.
|
|
/// </summary>
|
|
public static bool WithPhysX = true;
|
|
|
|
/// <summary>
|
|
/// Physics system extension event to override for custom physics backend plugin.
|
|
/// </summary>
|
|
public static Action<Physics, BuildOptions> SetupPhysicsBackend = SetupPhysicsBackendPhysX;
|
|
|
|
/// <inheritdoc />
|
|
public override void Setup(BuildOptions options)
|
|
{
|
|
base.Setup(options);
|
|
|
|
SetupPhysicsBackend(this, options);
|
|
|
|
if (WithCooking)
|
|
{
|
|
options.PublicDefinitions.Add("COMPILE_WITH_PHYSICS_COOKING");
|
|
}
|
|
}
|
|
|
|
private static void SetupPhysicsBackendPhysX(Physics physics, BuildOptions options)
|
|
{
|
|
if (WithPhysX)
|
|
{
|
|
options.PrivateDependencies.Add("PhysX");
|
|
if (WithCloth && options.Platform.Target != TargetPlatform.PS4) // TODO: build nvcloth for ps4 with vs2017
|
|
options.PrivateDependencies.Add("NvCloth");
|
|
}
|
|
else
|
|
{
|
|
options.PrivateDefinitions.Add("COMPILE_WITH_EMPTY_PHYSICS");
|
|
}
|
|
}
|
|
}
|