-
Notifications
You must be signed in to change notification settings - Fork 0
/
ActorHandler.cs
57 lines (55 loc) · 1.74 KB
/
ActorHandler.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System.Collections.Generic;
using Stride.Engine;
using Scene = Stride.Engine.Scene;
using NVIDIA.PhysX;
using System.IO;
using System.Reflection;
using System.Text;
namespace Stride.PhysX
{
public enum Shapes
{
Box,
Capsule,
}
class ActorHandler
{
Scene CurrentScene;
Game game;
PxFoundation foundation;
PxPhysics physics;
PxAllocatorCallback pxAllocatorCallback = default;
public ActorHandler(Game game)
{
foundation = PxFoundation.create(PxVersion.PX_PHYSICS_VERSION, pxAllocatorCallback, new ErrorPhysXHandler());
physics = foundation.createPhysics(PxVersion.PX_PHYSICS_VERSION);
this.game = game;
CurrentScene = game.SceneSystem.SceneInstance.RootScene;
}
public void AddShapeToEntity(Shapes type, Entity entity, PxMaterial material)
{
entity.Get<PhysXComponentBase>().AddShape(physics, type, material);
}
public void DeleteShapeFromEntity(Shapes type, Entity entity, PxMaterial material)
{
entity.Get<PhysXComponentBase>().AddShape(physics, type, material);
}
public void Release()
{
physics.release();
foundation.release();
}
}
public class ErrorPhysXHandler : PxDefaultErrorCallback
{
FileStream fs = File.Create(@"c:\3030Temp\physLog.txt");
public ErrorPhysXHandler() : base()
{
}
public override void reportError(PxErrorCode errorCode, string message, string file, int lineNumber)
{
byte[] b = new UTF8Encoding(true).GetBytes(errorCode.ToString() + " : " + message);
fs.Write(b, 0, b.Length);
}
}
}