예제 #1
0
파일: FreeCamera.cs 프로젝트: yanko/vengine
 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;
 }
예제 #2
0
파일: FreeCamera.cs 프로젝트: yanko/vengine
 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);
             }
         }
     };
 }
예제 #3
0
파일: Physics.cs 프로젝트: whztt07/vengine
        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;
        }
예제 #4
0
 public void SetupBody()
 {
     RigidBody.SetSleepingThresholds(0.0f, 0.0f);
     RigidBody.AngularFactor = Vector3.Zero;
 }