Edit:
CollisionSystem.cs
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BulletSharp;
using Naps.Game.Math;
using OpenTK;
namespace Naps.Game.Systems
{
public class CollisionSystem
{
DbvtBroadphase broadphase;
DefaultCollisionConfiguration configuration;
CollisionDispatcher dispatcher;
SequentialImpulseConstraintSolver solver;
public DiscreteDynamicsWorld world;
public void Initialize()
{
broadphase = new DbvtBroadphase();
configuration = new DefaultCollisionConfiguration();
dispatcher = new CollisionDispatcher(configuration);
solver = new SequentialImpulseConstraintSolver();
world = new DiscreteDynamicsWorld(dispatcher, broadphase, solver, configuration);
world.Gravity = new OpenTK.Vector3(0, -9.81f, 0);
}
public BulletSharp.CollisionWorld.RayResultCallback Raycast(Ray ray)
{
Vector3 start = new Vector3(ray.position);
Vector3 end = new Vector3(start + ray.direction * ray.length);
BulletSharp.CollisionWorld.ClosestRayResultCallback callback = new CollisionWorld.ClosestRayResultCallback(start,end);
world.RayTest(start, end, callback);
return callback;
}
public void Update()
{
}
public void Dispose()
{
broadphase.Dispose();
configuration.Dispose();
dispatcher.Dispose();
solver.Dispose();
world.Dispose();
}
}
}
Code: Select all
CollisionShape box = new BoxShape(0.5f);
Matrix4 mat = model.bone.CalculateTransformation();
DefaultMotionState state = new DefaultMotionState(mat);
RigidBodyConstructionInfo ci = new RigidBodyConstructionInfo(0, state, box);
body = new RigidBody(ci);