// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System;
using Flax.Build;
using Flax.Build.NativeCpp;
///
/// Physics module.
///
public class Physics : EngineModule
{
///
/// Enables using collisions cooking.
///
public static bool WithCooking = true;
///
/// Enables using PhysX library. Can be overriden by SetupPhysicsBackend.
///
public static bool WithPhysX = true;
///
/// Physics system extension event to override for custom physics backend plugin.
///
public static Action SetupPhysicsBackend = SetupPhysicsBackendPhysX;
///
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");
}
else
{
options.PrivateDefinitions.Add("COMPILE_WITH_EMPTY_PHYSICS");
}
}
}