public FreeCamera(float aspectRatio, float fov) { Cam = new Camera(new Vector3(20, 20, 20), new Vector3(0, 2, 0), aspectRatio, fov, 1.0f, 10000.0f); collisionShape = new SphereShape(0.8f); //collisionShape.LinearDamping = 0.5f; rigidBody = World.Root.CreateRigidBody(0.01f, Matrix4.CreateTranslation(Cam.Transformation.GetPosition()), collisionShape, null); rigidBody.SetSleepingThresholds(0, 0); rigidBody.ContactProcessingThreshold = 0; rigidBody.CcdMotionThreshold = 0; World.Root.PhysicalWorld.AddRigidBody(rigidBody); rigidBody.Gravity = Vector3.Zero; rigidBody.ApplyGravity(); rigidBody.SetDamping(0.5f, 0.01f); GLThread.OnUpdate += UpdateSterring; GLThread.OnMouseMove += OnMouseMove; }
public FreeCamera(float aspectRatio, float fov) { Cam = new Camera(new Vector3(20, 20, 20), new Vector3(0, 2, 0), aspectRatio, fov, 0.1f, 10000.0f); Camera.MainDisplayCamera = Cam; collisionShape = new SphereShape(0.8f); //collisionShape.LinearDamping = 0.5f; rigidBody = World.Root.CreateRigidBody(0.01f, Matrix4.CreateTranslation(Cam.Transformation.GetPosition()), collisionShape, null); rigidBody.SetSleepingThresholds(0, 0); rigidBody.ContactProcessingThreshold = 0; rigidBody.CcdMotionThreshold = 0; World.Root.PhysicalWorld.AddRigidBody(rigidBody); rigidBody.Gravity = Vector3.Zero; rigidBody.ApplyGravity(); rigidBody.SetDamping(0.5f, 0.01f); GLThread.OnUpdate += UpdateSterring; GLThread.OnMouseMove += OnMouseMove; GLThread.OnKeyUp += (o, e) => { if(e.Key == OpenTK.Input.Key.P) { GravityEnabled = !GravityEnabled; if(GravityEnabled) { rigidBody.Gravity = new Vector3(0, -9.81f, 0); rigidBody.ApplyGravity(); rigidBody.SetDamping(0.8f, 0.01f); } else { rigidBody.Gravity = Vector3.Zero; rigidBody.ApplyGravity(); rigidBody.SetDamping(0.5f, 0.01f); } } }; }
private RigidBody CreateRigidBody(float mass, Matrix4 startTransform, CollisionShape shape) { bool isDynamic = (mass != 0.0f); Vector3 localInertia = Vector3.Zero; if(isDynamic) shape.CalculateLocalInertia(mass, out localInertia); DefaultMotionState myMotionState = new DefaultMotionState(startTransform); RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, shape, localInertia); RigidBody body = new RigidBody(rbInfo); body.SetSleepingThresholds(0, 0); body.ContactProcessingThreshold = 0; body.CcdMotionThreshold = 0; //World.AddRigidBody(body); return body; }
public void SetupBody() { RigidBody.SetSleepingThresholds(0.0f, 0.0f); RigidBody.AngularFactor = Vector3.Zero; }