Exemple #1
0
        public EngineScene()
        {
            //инит ФизиХ-а
            var coreDesc = new CoreDescription();
            var output = new UserOutput();

            Core = new Core(coreDesc, output);
            Core.SetParameter(PhysicsParameter.ContinuousCollisionDetection, false);
            Core.SetParameter(PhysicsParameter.ContinuousCollisionDetectionEpsilon, 0.01f);

            var sceneDesc = new SceneDescription
            {
                SimulationType = SimulationType.Software, //Hardware,
                MaximumBounds = new Bounds3(-1000, -1000, -1000, 1000, 1000, 1000),
                UpAxis = 2,
                Gravity = new StillDesign.PhysX.MathPrimitives.Vector3(0.0f, -9.81f * 1.7f, 0.0f),
                GroundPlaneEnabled = false
            };
            Scene = Core.CreateScene(sceneDesc);
            //для обработки столкновений
            Scene.UserContactReport = new ContactReport(MyGame.Instance);

            _objects = new MyContainer<PivotObject>(100, 10, true);
            _visibleObjects = new MyContainer<PivotObject>(100, 2);
            _shadowObjects = new MyContainer<PivotObject>(100, 2);
            _sceneGraph = new SceneGraph.SceneGraph(this);
        }
Exemple #2
0
        protected Core iniPhysics()
        {
            CoreDescription coreDesc = new CoreDescription();
            Core            core     = new Core(coreDesc, null);

            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            RemoteDebugger debugger = core.Foundation.RemoteDebugger;

            debugger.Connect("localhost");
            if (debugger.IsConnected)
            {
                Console.Write("Debugger connected\n");
            }

            SceneDescription sceneDesc = new SceneDescription();

            sceneDesc.Gravity = new StillDesign.PhysX.MathPrimitives.Vector3(0, -10.0f, 0);
            scene             = core.CreateScene(sceneDesc);


            return(core);
        }
        public PhysxPhysicWorld(CoreDescription CoreDescription, SceneDescription SceneDescription, bool connectToRemoteDebugger = false, bool safeAndSlowUpdate = true)
        {
            this.safeAndSlowUpdate = safeAndSlowUpdate;
            UserOutput output = new UserOutput();
            this.Core = new Core(CoreDescription, output);

            Core core = this.Core;
            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            this.Scene = core.CreateScene(SceneDescription);

            // Connect to the remote debugger if it's there
            if (connectToRemoteDebugger)
                core.Foundation.RemoteDebugger.Connect("localhost");

            ControllerManager = Scene.CreateControllerManager();
            objs = new List<IPhysicObject>();
            ctns = new List<IPhysicConstraint>();
            TriggerReport = new Physics.TriggerReport();
            Scene.UserTriggerReport = TriggerReport;
            Utilities.ErrorReport = errorReport;
        }
Exemple #4
0
        public PhysxPhysicWorld(CoreDescription CoreDescription, SceneDescription SceneDescription, bool connectToRemoteDebugger = false, bool safeAndSlowUpdate = true)
        {
            this.safeAndSlowUpdate = safeAndSlowUpdate;
            UserOutput output = new UserOutput();

            this.Core = new Core(CoreDescription, output);

            Core core = this.Core;

            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            this.Scene = core.CreateScene(SceneDescription);

            // Connect to the remote debugger if it's there
            if (connectToRemoteDebugger)
            {
                core.Foundation.RemoteDebugger.Connect("localhost");
            }

            ControllerManager = Scene.CreateControllerManager();
            objs                    = new List <IPhysicObject>();
            ctns                    = new List <IPhysicConstraint>();
            TriggerReport           = new Physics.TriggerReport();
            Scene.UserTriggerReport = TriggerReport;
            Utilities.ErrorReport   = errorReport;
        }
Exemple #5
0
        /// <summary>
        /// Allows physics to initialize itself and its parameters
        /// </summary>
        public void Initialize(GraphicsDevice graphicsDevice)
        {
            this.graphicsDevice  = graphicsDevice;
            _visualizationEffect = new BasicEffect(this.graphicsDevice, null)
            {
                VertexColorEnabled = true
            };
            _bCCDEnabled = false;
            //_visualizationEffect.EnableDefaultLighting();

            var coreDesc = new CoreDescription();
            var output   = new UserOutput();

            Core = new Core(coreDesc, output);

//#if DEBUG
            //_core.SetParameter( PhysicsParameter.VisualizationScale, 2.0f );
            Core.SetParameter(PhysicsParameter.VisualizationScale, 1.0f);
            Core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            Core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            Core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            Core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            Core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            Core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit to much
            Core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            Core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);
            Core.SetParameter(PhysicsParameter.DefaultSleepLinearVelocitySquared, 2.0f * 2.0f);
            Core.SetParameter(PhysicsParameter.DefaultSleepAngularVelocitySquared, 2.0f * 2.0f);
            Core.SetParameter(PhysicsParameter.VisualizeCollisionFaceNormals, true);
//#endif

            //aLk's Data INIT
            Core.SetParameter(PhysicsParameter.SkinWidth, 0.01f);
            Core.SetParameter(PhysicsParameter.VisualizeActorAxes, true);
            //aLk's Data END

            var sceneDesc = new SceneDescription
            {
                SimulationType = SimulationType.Software,
                Gravity        = new Vector3(0.0f, -9.81f, 0.0f)
            };

            Scene = Core.CreateScene(sceneDesc);

            ControllerManager = Scene.CreateControllerManager();

            //Lesson 05: Materials
            //Material defaultMat = _scene.Materials[0];

            //defaultMat.Restitution = 0.25f;
            //defaultMat.StaticFriction = 0.5f;
            //defaultMat.DynamicFriction = 0.5f;
            //end lesson

            // Connect to the remote debugger if its there
            Core.Foundation.RemoteDebugger.Connect("localhost");
            Core.SetParameter(PhysicsParameter.ContinuousCollisionDetection, true);
        }
Exemple #6
0
 private void CreateCoreAndScene(out Core core, out Scene scene)
 {
     var coreDesc = new CoreDescription();
     core = new Core(coreDesc, null);
     var sceneDesc = new SceneDescription
     {
         SimulationType = SimulationType.Software//todo: ver cual es el lio con hardware
     };
     scene = _wrappedCore.CreateScene(sceneDesc);
 }
Exemple #7
0
 private void CreateScene()
 {
     var coreDesc = new CoreDescription();
     var core = new Core(coreDesc, null);
     var sceneDesc = new SceneDescription
                         {
                             Gravity = new NxVector3(0, -9.81f, 0),
                             SimulationType = SimulationType.Software
                         };
     _scene = core.CreateScene(sceneDesc);
 }
Exemple #8
0
        private void CreateScene()
        {
            var coreDesc  = new CoreDescription();
            var core      = new Core(coreDesc, null);
            var sceneDesc = new SceneDescription
            {
                Gravity        = new NxVector3(0, -9.81f, 0),
                SimulationType = SimulationType.Software
            };

            _scene = core.CreateScene(sceneDesc);
        }
Exemple #9
0
        private void CreateCoreAndScene(out Core core, out Scene scene)
        {
            var coreDesc = new CoreDescription();

            core = new Core(coreDesc, null);
            var sceneDesc = new SceneDescription
            {
                SimulationType = SimulationType.Software//todo: ver cual es el lio con hardware
            };

            scene = _wrappedCore.CreateScene(sceneDesc);
        }
Exemple #10
0
        public void InitalizePhysics()
        {
            // Construct engine objects
            this.Camera = new Camera(this);

            //_visualizationEffect = new BasicEffect(this.Device)
            //{
            //    VertexColorEnabled = true
            //};
            //_vertexDeclaration = VertexPositionColor.VertexDeclaration;

            // Construct physics objects
            CoreDescription coreDesc = new CoreDescription();
            UserOutput      output   = new UserOutput();

            this.Core = new Core(coreDesc, output);

            Core core = this.Core;

            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false);             // Slows down rendering a bit too much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            SceneDescription sceneDesc = new SceneDescription()
            {
                //SimulationType = SimulationType.Hardware,
                Gravity            = new Vector3(0, -9.81f, 0).AsPhysX(),
                GroundPlaneEnabled = true
            };

            this.Scene = core.CreateScene(sceneDesc);

            HardwareVersion ver     = Core.HardwareVersion;
            SimulationType  simType = this.Scene.SimulationType;

            // Connect to the remote debugger if it's there
            core.Foundation.RemoteDebugger.Connect("localhost");
        }
        public override void Initialize()
        {
            this.Camera = new Camera(this);

            _visualizationEffect = new BasicEffect(this.Device, null);

            _visualizationEffect.VertexColorEnabled = true;

            //

            CoreDescription coreDesc = new CoreDescription();
            UserOutput      output   = new UserOutput();

            this.Core = new Core(coreDesc, output);

            Core core = this.Core;

            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit to much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            SceneDescription sceneDesc = new SceneDescription();

            //SimulationType = SimulationType.Hardware,
            sceneDesc.Gravity            = new Vector3(0.0f, -9.81f, 0.0f);
            sceneDesc.GroundPlaneEnabled = true;

            this.Scene = core.CreateScene(sceneDesc);

            HardwareVersion ver     = Core.HardwareVersion;
            SimulationType  simType = this.Scene.SimulationType;

            // Connect to the remote debugger if its there
            core.Foundation.RemoteDebugger.Connect("localhost");
        }
Exemple #12
0
        /// <summary>
        /// 物理ワールドの初期化
        /// </summary>
        public void init(CollisionDispatcher d, IBroadphaseInterface b, IConstraintSolver s, ICollisionConfiguration c)
        {
            // Construct physics objects
            CoreDescription coreDesc = new CoreDescription();
            UserOutput      output   = new UserOutput();

            this.Core = new Core(coreDesc, output);

            Core core = this.Core;

            // デバッグ描画用の設定
            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);

            /*
             * core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
             * //core.SetParameter(PhysicsParameter.VisualizeJointWorldAxes, true);
             *          core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
             *          core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
             *          core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
             *          core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);
             */

            // シーンの設定
            SceneDescription sceneDesc = new SceneDescription()
            {
                //SimulationType = SimulationType.Hardware,
                Gravity            = new Vector3(0, -9.81f, 0),
                GroundPlaneEnabled = true
            };

            this.scene = core.CreateScene(sceneDesc);

            HardwareVersion ver     = Core.HardwareVersion;
            SimulationType  simType = this.scene.SimulationType;

            // Connect to the remote debugger if it's there
            //core.Foundation.RemoteDebugger.Connect("localhost");
        }
Exemple #13
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            //Initialize the core of physics engine
            CoreDescription coreDesc = new CoreDescription();

            _core = new Core(coreDesc, null);
            //Create a physics scene
            _scene = _core.CreateScene(new StillDesign.PhysX.MathPrimitives.Vector3(0, -9.81f, 0), true);

            _boxActor = new List <Actor>();
            _wheel    = new List <Actor>();
            wheelj    = new List <RevoluteJoint>();
            boxes     = new List <FixedJoint>();

            //Create a material
            MaterialDescription materialDec = new MaterialDescription();

            materialDec.DirectionOfAnisotropy = new StillDesign.PhysX.MathPrimitives.Vector3(0, 0, 1);
            materialDec.DynamicFriction       = 0.5f;
            materialDec.DynamicFrictionV      = 0.5f;
            materialDec.StaticFriction        = 0.5f;
            materialDec.StaticFrictionV       = 0.5f;
            materialDec.Restitution           = 0.8f;
            materialDec.Flags = MaterialFlag.Ansiotropic;

            Material material1 = _scene.CreateMaterial(materialDec);

            ActorDescription boxADec = new ActorDescription();

            boxADec.BodyDescription = new BodyDescription(5);
            boxADec.Shapes.Add(new BoxShapeDescription(2, 2, 2)
            {
                LocalPosition = new StillDesign.PhysX.MathPrimitives.Vector3(0, 1, 0), Material = material1
            });
            boxADec.Shapes.Add(new BoxShapeDescription(1, 3, 1)
            {
                LocalPosition = new StillDesign.PhysX.MathPrimitives.Vector3(0, 3f, 0), Material = material1
            });
            boxADec.Shapes.Add(new BoxShapeDescription(3, 1, 1)
            {
                LocalPosition = new StillDesign.PhysX.MathPrimitives.Vector3(-1f, 5, 0), Material = material1
            });
            boxADec.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(47f, 1f, 6f);
            _boxActor.Add(_scene.CreateActor(boxADec));

            ActorDescription wheel1 = new ActorDescription();

            wheel1.BodyDescription = new BodyDescription(5);
            wheel1.Shapes.Add(new SphereShapeDescription(1)
            {
                Material = material1
            });
            wheel1.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(45.3f, 1f, 4.3f);
            _wheel.Add(_scene.CreateActor(wheel1));

            ActorDescription wheel2 = new ActorDescription();

            wheel2.BodyDescription = new BodyDescription(5);
            wheel2.Shapes.Add(new SphereShapeDescription(1)
            {
                Material = material1
            });
            wheel2.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(45.3f, 1, 7.8f);
            _wheel.Add(_scene.CreateActor(wheel2));

            ActorDescription wheel3 = new ActorDescription();

            wheel3.BodyDescription = new BodyDescription(5);
            wheel3.Shapes.Add(new SphereShapeDescription(1)
            {
                Material = material1
            });
            wheel3.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(48.7f, 1, 4.3f);
            _wheel.Add(_scene.CreateActor(wheel3));

            ActorDescription wheel4 = new ActorDescription();

            wheel4.BodyDescription = new BodyDescription(5);
            wheel4.Shapes.Add(new SphereShapeDescription(1)
            {
                Material = material1
            });
            wheel4.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(48.7f, 1, 7.8f);
            _wheel.Add(_scene.CreateActor(wheel4));

            ActorDescription boxADec1 = new ActorDescription();

            boxADec1.BodyDescription = new BodyDescription(1000);
            boxADec1.Shapes.Add(new BoxShapeDescription(35, 10, 1));
            boxADec1.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(33f, 5, 12.1f);
            _boxActor.Add(_scene.CreateActor(boxADec1));

            ActorDescription boxADec2 = new ActorDescription();

            boxADec2.BodyDescription = new BodyDescription(1000);
            boxADec2.Shapes.Add(new BoxShapeDescription(1, 10, 25.5f));
            boxADec2.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(15f, 5, 24.4f);
            _boxActor.Add(_scene.CreateActor(boxADec2));

            ActorDescription boxADec3 = new ActorDescription();

            boxADec3.BodyDescription = new BodyDescription(1000);
            boxADec3.Shapes.Add(new BoxShapeDescription(4f, 10, 1f));
            boxADec3.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(49f, 5, -1f);
            _boxActor.Add(_scene.CreateActor(boxADec3));

            ActorDescription boxADec4 = new ActorDescription();

            boxADec4.BodyDescription = new BodyDescription(1000);
            boxADec4.Shapes.Add(new BoxShapeDescription(1f, 10, 70f));
            boxADec4.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(51f, 5, -3f);
            _boxActor.Add(_scene.CreateActor(boxADec4));

            ActorDescription boxADec5 = new ActorDescription();

            boxADec5.BodyDescription = new BodyDescription(1000);
            boxADec5.Shapes.Add(new BoxShapeDescription(105f, 10, 1f));
            boxADec5.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(0f, 5, 37.7f);
            _boxActor.Add(_scene.CreateActor(boxADec5));

            ActorDescription boxADec6 = new ActorDescription();

            boxADec6.BodyDescription = new BodyDescription(1000);
            boxADec6.Shapes.Add(new BoxShapeDescription(1, 10, 25.5f));
            boxADec6.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-16.6f, 5, 24.4f);
            _boxActor.Add(_scene.CreateActor(boxADec6));

            ActorDescription boxADec7 = new ActorDescription();

            boxADec7.BodyDescription = new BodyDescription(1000);
            boxADec7.Shapes.Add(new BoxShapeDescription(1, 10, 42f));
            boxADec7.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-51f, 5, 16.5f);
            _boxActor.Add(_scene.CreateActor(boxADec7));

            ActorDescription boxADec8 = new ActorDescription();

            boxADec8.BodyDescription = new BodyDescription(1000);
            boxADec8.Shapes.Add(new BoxShapeDescription(8.5f, 10, 1f));
            boxADec8.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-46.25f, 5, 12.15f);
            _boxActor.Add(_scene.CreateActor(boxADec8));

            ActorDescription boxADec9 = new ActorDescription();

            boxADec9.BodyDescription = new BodyDescription(1000);
            boxADec9.Shapes.Add(new BoxShapeDescription(8.5f, 10, 1f));
            boxADec9.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-21f, 5, 12.15f);
            _boxActor.Add(_scene.CreateActor(boxADec9));

            ActorDescription boxADec10 = new ActorDescription();

            boxADec10.BodyDescription = new BodyDescription(1);
            boxADec10.Shapes.Add(new BoxShapeDescription(1, 1, 1));
            boxADec10.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-20, 0.5f, 30);
            _boxActor.Add(_scene.CreateActor(boxADec10));

            ActorDescription boxADec11 = new ActorDescription();

            boxADec11.BodyDescription = new BodyDescription(5);
            boxADec11.Shapes.Add(new BoxShapeDescription(1, 1, 1)
            {
                Material = material1
            });
            boxADec11.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(45, 4, 6);
            box11 = _scene.CreateActor(boxADec11);

            ActorDescription boxADec12 = new ActorDescription();

            boxADec12.BodyDescription = new BodyDescription(1000);
            boxADec12.Shapes.Add(new BoxShapeDescription(4f, 10, 1f));
            boxADec12.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(27.5f, 5, -1f);
            _boxActor.Add(_scene.CreateActor(boxADec12));

            ActorDescription boxADec13 = new ActorDescription();

            boxADec13.BodyDescription = new BodyDescription(1000);
            boxADec13.Shapes.Add(new BoxShapeDescription(21.5f, 10, 1f));
            boxADec13.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(36f, 5, -26.8f);
            _boxActor.Add(_scene.CreateActor(boxADec13));

            ActorDescription boxADec14 = new ActorDescription();

            boxADec14.BodyDescription = new BodyDescription(1000);
            boxADec14.Shapes.Add(new BoxShapeDescription(4f, 10, 1f));
            boxADec14.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(49f, 5, -26.8f);
            _boxActor.Add(_scene.CreateActor(boxADec14));

            ActorDescription boxADec15 = new ActorDescription();

            boxADec15.BodyDescription = new BodyDescription(1000);
            boxADec15.Shapes.Add(new BoxShapeDescription(106f, 10, 1f));
            boxADec15.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(0f, 5, -38.1f);
            _boxActor.Add(_scene.CreateActor(boxADec15));

            ActorDescription boxADec16 = new ActorDescription();

            boxADec16.BodyDescription = new BodyDescription(1000);
            boxADec16.Shapes.Add(new BoxShapeDescription(1, 10, 26.8f));
            boxADec16.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(25f, 5, -13.9f);
            _boxActor.Add(_scene.CreateActor(boxADec16));

            ActorDescription boxADec17 = new ActorDescription();

            boxADec17.BodyDescription = new BodyDescription(1000);
            boxADec17.Shapes.Add(new BoxShapeDescription(17.2f, 0.25f, 1f));
            boxADec17.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38.1f, 0.125f, -1f);
            _boxActor.Add(_scene.CreateActor(boxADec17));

            ActorDescription boxADec18 = new ActorDescription();

            boxADec18.BodyDescription = new BodyDescription(1000);
            boxADec18.Shapes.Add(new BoxShapeDescription(25f, 0.25f, 24.5f));
            boxADec18.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38f, 0.25f, -14f);
            _boxActor.Add(_scene.CreateActor(boxADec18));

            ActorDescription boxADec19 = new ActorDescription();

            boxADec19.BodyDescription = new BodyDescription(1000);
            boxADec19.Shapes.Add(new BoxShapeDescription(17.2f, 0.25f, 1f));
            boxADec19.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38.1f, 0.5f, -2f);
            _boxActor.Add(_scene.CreateActor(boxADec19));

            ActorDescription boxADec20 = new ActorDescription();

            boxADec20.BodyDescription = new BodyDescription(1000);
            boxADec20.Shapes.Add(new BoxShapeDescription(17.2f, 0.5f, 1f));
            boxADec20.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38.1f, 0.5f, -3f);
            _boxActor.Add(_scene.CreateActor(boxADec20));

            ActorDescription boxADec21 = new ActorDescription();

            boxADec21.BodyDescription = new BodyDescription(1000);
            boxADec21.Shapes.Add(new BoxShapeDescription(17.2f, 0.75f, 1f));
            boxADec21.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38.1f, 1f, -4f);
            _boxActor.Add(_scene.CreateActor(boxADec21));

            ActorDescription boxADec22 = new ActorDescription();

            boxADec22.BodyDescription = new BodyDescription(1000);
            boxADec22.Shapes.Add(new BoxShapeDescription(17.2f, 1f, 1f));
            boxADec22.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38.1f, 1.25f, -5f);
            _boxActor.Add(_scene.CreateActor(boxADec22));

            ActorDescription boxADec23 = new ActorDescription();

            boxADec23.BodyDescription = new BodyDescription(1000);
            boxADec23.Shapes.Add(new BoxShapeDescription(25f, 1f, 20.5f));
            boxADec23.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(38f, 1.5f, -16f);
            _boxActor.Add(_scene.CreateActor(boxADec23));

            ActorDescription boxADec24 = new ActorDescription();

            boxADec24.BodyDescription = new BodyDescription(1000);
            boxADec24.Shapes.Add(new BoxShapeDescription(75f, 10, 1f));
            boxADec24.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(-13f, 5, -1f);
            _boxActor.Add(_scene.CreateActor(boxADec24));

            ActorDescription boxADec25 = new ActorDescription();

            boxADec25.BodyDescription = new BodyDescription(5);
            boxADec25.Shapes.Add(new BoxShapeDescription(1, 1, 1)
            {
                Material = material1
            });
            boxADec25.GlobalPose = StillDesign.PhysX.MathPrimitives.Matrix.Translation(48, 4, 6);
            box12 = _scene.CreateActor(boxADec25);

            RevoluteJointDescription jointDec = new RevoluteJointDescription();

            jointDec.Actor1 = _boxActor[0];
            jointDec.Actor2 = _wheel[0];
            jointDec.SetGlobalAnchor(new StillDesign.PhysX.MathPrimitives.Vector3(45.3f, 1f, 4.3f));
            jointDec.SetGlobalAxis(new StillDesign.PhysX.MathPrimitives.Vector3(0, 0, 1));
            wheelj.Add(_scene.CreateJoint <RevoluteJoint>(jointDec));

            RevoluteJointDescription jointDec1 = new RevoluteJointDescription();

            jointDec1.Actor1 = _boxActor[0];
            jointDec1.Actor2 = _wheel[1];
            jointDec1.SetGlobalAnchor(new StillDesign.PhysX.MathPrimitives.Vector3(45.3f, 1, 7.8f));
            jointDec1.SetGlobalAxis(new StillDesign.PhysX.MathPrimitives.Vector3(0, 0, -1));
            wheelj.Add(_scene.CreateJoint <RevoluteJoint>(jointDec1));

            RevoluteJointDescription jointDec2 = new RevoluteJointDescription();

            jointDec2.Actor1 = _boxActor[0];
            jointDec2.Actor2 = _wheel[2];
            jointDec2.SetGlobalAnchor(new StillDesign.PhysX.MathPrimitives.Vector3(48.7f, 1, 4.3f));
            jointDec2.SetGlobalAxis(new StillDesign.PhysX.MathPrimitives.Vector3(0, 0, 1));
            wheelj.Add(_scene.CreateJoint <RevoluteJoint>(jointDec2));

            RevoluteJointDescription jointDec3 = new RevoluteJointDescription();

            jointDec3.Actor1 = _boxActor[0];
            jointDec3.Actor2 = _wheel[3];
            jointDec3.SetGlobalAnchor(new StillDesign.PhysX.MathPrimitives.Vector3(48.7f, 1, 7.8f));
            jointDec3.SetGlobalAxis(new StillDesign.PhysX.MathPrimitives.Vector3(0, 0, -1));
            wheelj.Add(_scene.CreateJoint <RevoluteJoint>(jointDec3));

            DistanceJointDescription jointDec4 = new DistanceJointDescription();

            jointDec4.Actor1          = _boxActor[10];
            jointDec4.Actor2          = box11;
            jointDec4.MaximumDistance = 1000000;
            jointDec4.MinimumDistance = 1;
            jointDec4.Flags           = DistanceJointFlag.EnforceMaximumDistance | DistanceJointFlag.EnforceMinimumDistance;
            boxpick = _scene.CreateJoint <DistanceJoint>(jointDec4);

            FixedJointDescription jointDec5 = new FixedJointDescription();

            jointDec5.Actor1 = _boxActor[0];
            jointDec5.Actor2 = box11;
            boxes.Add(_scene.CreateJoint <FixedJoint>(jointDec5));

            FixedJointDescription jointDec6 = new FixedJointDescription();

            jointDec6.Actor1 = _boxActor[0];
            jointDec6.Actor2 = box12;
            boxes.Add(_scene.CreateJoint <FixedJoint>(jointDec6));

            view1        = graphics.GraphicsDevice.Viewport;
            view2        = view1;
            view1.Height = 480;
            view1.Width  = 400;
            view1.X      = 400;
            view1.Y      = 0;
            view2.Height = 480;
            view2.Width  = 400;
            view2.X      = 0;
            view2.Y      = 0;

            _camera1 = new Camera("camera1", 1024, 768, 1024f / 768f, 1, 1f, 100000, true, view1);
            _camera1.Initialize(new Vector3(_boxActor[0].GlobalPosition.X, _boxActor[0].GlobalPosition.Y + 3, _boxActor[0].GlobalPosition.Z), new Vector3(0, 4, 6));

            _camera2 = new Camera("camera2", 1024, 768, 1024f / 768f, 1, 1f, 100000, true, view2);
            _camera2.Initialize(new Vector3(_boxActor[0].GlobalPosition.X, _boxActor[0].GlobalPosition.Y + 3, _boxActor[0].GlobalPosition.Z), new Vector3(100, 4, 6));
            this.IsMouseVisible = true;
            base.Initialize();
        }
Exemple #14
0
        protected Core iniPhysics()
        {
            CoreDescription coreDesc = new CoreDescription();
            Core core = new Core(coreDesc, null);
            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
            core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
            core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
            core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
            core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
            core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

            RemoteDebugger debugger = core.Foundation.RemoteDebugger;
            debugger.Connect("localhost");
            if (debugger.IsConnected)
            {
                Console.Write("Debugger connected\n");
            }

            SceneDescription sceneDesc = new SceneDescription();
            sceneDesc.Gravity = new StillDesign.PhysX.MathPrimitives.Vector3(0, -10.0f, 0);
            scene = core.CreateScene(sceneDesc);

            return core;
        }
Exemple #15
0
		public void InitalizePhysics()
		{
			// Construct engine objects
			this.Camera = new Camera(this);

			//_visualizationEffect = new BasicEffect(this.Device)
			//{
			//    VertexColorEnabled = true
			//};
			//_vertexDeclaration = VertexPositionColor.VertexDeclaration;

			// Construct physics objects
			CoreDescription coreDesc = new CoreDescription();
			UserOutput output = new UserOutput();

			this.Core = new Core(coreDesc, output);

			Core core = this.Core;
			core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
			core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);
			core.SetParameter(PhysicsParameter.VisualizeClothMesh, true);
			core.SetParameter(PhysicsParameter.VisualizeJointLocalAxes, true);
			core.SetParameter(PhysicsParameter.VisualizeJointLimits, true);
			core.SetParameter(PhysicsParameter.VisualizeFluidPosition, true);
			core.SetParameter(PhysicsParameter.VisualizeFluidEmitters, false); // Slows down rendering a bit too much
			core.SetParameter(PhysicsParameter.VisualizeForceFields, true);
			core.SetParameter(PhysicsParameter.VisualizeSoftBodyMesh, true);

			SceneDescription sceneDesc = new SceneDescription()
			{
				//SimulationType = SimulationType.Hardware,
				Gravity = new Vector3(0, -9.81f, 0).AsPhysX(),
				GroundPlaneEnabled = true
			};

			this.Scene = core.CreateScene(sceneDesc);

			HardwareVersion ver = Core.HardwareVersion;
			SimulationType simType = this.Scene.SimulationType;

			// Connect to the remote debugger if it's there
			core.Foundation.RemoteDebugger.Connect("localhost");
		}
Exemple #16
0
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            base.Initialize();

            CoreDescription coreDesc = new CoreDescription();
            this.PhysXCore = new Core(coreDesc, new ConsoleOutputStream());

            var core = this.PhysXCore;
            core.SetParameter(PhysicsParameter.VisualizationScale, 2.0f);
            core.SetParameter(PhysicsParameter.VisualizeCollisionShapes, true);

            SimulationType hworsw = (core.HardwareVersion == HardwareVersion.None ? SimulationType.Software : SimulationType.Hardware);
            Console.WriteLine("PhysX Acceleration Type: " + hworsw);

            SceneDescription sceneDesc = new SceneDescription()
            {
                SimulationType = hworsw,
                Gravity = new Vector3(0.0f, -9.81f, 0.0f)
            };

            this.Scene = core.CreateScene(sceneDesc);

            // If there's a remote debugger, connect to it.
            core.Foundation.RemoteDebugger.Connect("localhost");

            // Create the camera.
            _camera = new Camera(this);

            // Let's create physics objects!
            InitializeObjects();
        }