PC-20230316NUNE\Administrator b6461675a8 提交代码
2024-01-31 19:16:05 +08:00

46 lines
1.3 KiB
C#

using System.Collections.Generic;
using BepuPhysics;
using BepuPhysics.Collidables;
using BepuUtilities;
using BepuUtilities.Memory;
using Plugins.JNGame.BepuPhysics.Components;
using Plugins.JNGame.BepuPhysics.Utilities;
using UnityEngine;
using Vector3 = System.Numerics.Vector3;
namespace Plugins.JNGame.BepuPhysics
{
public class JNBepuPhysics
{
public static Dictionary<int,JNBepuPhysics> Physics = new();
private UnityEngine.Vector3 _gravity = new (0,10,0);
public Simulation Simulation { get; protected set; }
public BufferPool BufferPool { get; private set; }
public List<BPhysicsBase> Shapes = new();
public JNBepuPhysics(int index = 0)
{
Debug.Log($"初始化物理引擎");
Physics[index] = this;
BufferPool = new BufferPool();
Simulation = Simulation.Create(BufferPool,new JNNarrowPhaseCallbacks(),new JNPoseIntegratorCallbacks(new Vector3(_gravity.x, -_gravity.y, _gravity.z)),new PositionFirstTimestepper());
}
//更新
public void OnUpdate(float dt)
{
Simulation.Timestep(dt);
Shapes.ForEach(shapes =>
{
shapes.OnPhysicsUpdate(dt);
});
}
}
}