예제 #1
0
        /// <summary>
        /// Handles Collision Event
        /// </summary>
        /// <param name="sender">Sender RigidBody3D</param>
        /// <param name="args">Event Args</param>
        private void rigidBody3D_OnPhysic3DCollision(object sender, Physic3DCollisionEventArgs args)
        {
            // Creates a normal line mark
            Line   l         = drawableLines.AddNewLine(args.Position, args.Normal);
            string timername = "RemoveLineTimer" + instances++;

            // Line Time To Live
            WaveServices.TimerFactory.CreateTimer(timername, TimeSpan.FromSeconds(1), () =>
            {
                drawableLines.Remove(l);
                WaveServices.TimerFactory.RemoveTimer(timername);
            });
        }
예제 #2
0
        /// <summary>
        /// Handles Collision Event
        /// </summary>
        /// <param name="sender">Sender RigidBody3D</param>
        /// <param name="args">Event Args</param>
        private void rigidBody3D_OnPhysic3DCollision(object sender, Physic3DCollisionEventArgs args)
        {
            // Creates a normal line mark
            Line l = drawableLines.AddNewLine(args.Position, args.Normal);
            string timername = "RemoveLineTimer" + instances++;

            // Line Time To Live
            WaveServices.TimerFactory.CreateTimer(timername, TimeSpan.FromSeconds(1), () =>
            {
                drawableLines.Remove(l);
                WaveServices.TimerFactory.RemoveTimer(timername);
            });
        }
예제 #3
0
 private void rigidBody_OnPhysic3DCollision(object sender, Physic3DCollisionEventArgs args)
 {
     this.drawableLines.AddNewLine(args.Position, args.Normal);
 }
예제 #4
0
 private void rigidBody_OnPhysic3DCollision(object sender, Physic3DCollisionEventArgs args)
 {
     this.drawableLines.AddNewLine(args.Position, args.Normal);
 }
예제 #5
0
 private void rigidBody3D_OnPhysic3DCollision(object sender, Physic3DCollisionEventArgs args)
 {
     Console.WriteLine("collision");
 }
예제 #6
0
        protected override void CreateScene()
        {
            Physic3DCollisionGroup DiceCollisionGroup = new Physic3DCollisionGroup();
            Physic3DCollisionGroup TableCollisionGroup = new Physic3DCollisionGroup();
            TableCollisionGroup.DefineCollisionWith(DiceCollisionGroup);
            DiceCollisionGroup.DefineCollisionWith(TableCollisionGroup);

            RenderManager.DebugLines = false;

            physicsArgs = new Physic3DCollisionEventArgs();

            RenderManager.BackgroundColor = Color.CornflowerBlue;
            CameraPoint point1 = new CameraPoint();
            CameraPoint point2 = new CameraPoint();
            CameraPoint point3 = new CameraPoint();
            CameraPoint point4 = new CameraPoint();

            Entity ground = this.CreateGround();
            this.Createwalls();
            ground.FindComponent<RigidBody3D>().CollisionGroup = TableCollisionGroup;

            //var AnimationCamera = new PathCamera("AnimationCamera", new Vector3(0, 50, 80), Vector3.Zero, );
            //var beh = new PathCameraBehavior(new List<point1,point2,point3,point4>());

            //EntityManager.Add(AnimationCamera);
            PhysicsManager.Gravity3D = new Vector3(0, -9.8f, 0);

            Entity Die1 = new Entity("Die1")
                .AddComponent(new Transform3D())
                .AddComponent(new RigidBody3D()
                {
                    Restitution = GenRand(0.4, 0.7),
                    AngularVelocity = new Vector3(2.5f, 0, 0)
                })
                .AddComponent(new MeshCollider())
                .AddComponent(new Model("Content/Dice_LowPoly_OBJ.wpk"))
                .AddComponent(
                    new MaterialsMap(new BasicMaterial("Content/Red_Diffuse.wpk")
                    {
                        ReferenceAlpha = 0.5f
                    }))
                //.AddComponent(new MaterialsMap(new BasicMaterial(Color.Black)))
                .AddComponent(new ModelRenderer());
            float scale = .005f;
            Die1.FindComponent<Transform3D>().Scale.X = scale;
            Die1.FindComponent<Transform3D>().Scale.Y = scale;
            Die1.FindComponent<Transform3D>().Scale.Z = scale;
            Die1.FindComponent<Transform3D>().Position.Y = 2f;
            Die1.FindComponent<Transform3D>().Position.X = 0f;
            Die1.FindComponent<RigidBody3D>().CollisionGroup = DiceCollisionGroup;
            //Die1.FindComponent<RigidBody3D>().EnableContinuousContact = true;
            Die1.FindComponent<RigidBody3D>().LinearVelocity = new Vector3(Getrandom(), 0f, -3f);
            Die1.FindComponent<MeshCollider>().IsActive = true;
            Console.WriteLine(Die1.FindComponent<RigidBody3D>().Restitution);
            EntityManager.Add(Die1);
            Thread.Sleep(new TimeSpan(1000));

            Entity Die2 = new Entity("Die2")
                .AddComponent(new Transform3D())
                .AddComponent(new RigidBody3D() {Restitution = GenRand(0.4, 0.7)})
                .AddComponent(new MeshCollider())
                .AddComponent(new Model("Content/Dice_LowPoly_OBJ.wpk"))
                .AddComponent(
                    new MaterialsMap(new BasicMaterial("Content/White_Diffuse.wpk")
                    {
                        ReferenceAlpha = 0.5f
                    }))
                //.AddComponent(new MaterialsMap(new BasicMaterial(Color.Black)))
                .AddComponent(new ModelRenderer());
            Die2.FindComponent<Transform3D>().Scale.X = scale;
            Die2.FindComponent<Transform3D>().Scale.Y = scale;
            Die2.FindComponent<Transform3D>().Scale.Z = scale;
            Die2.FindComponent<Transform3D>().Position.Y = 2f;
            Die2.FindComponent<Transform3D>().Position.X = 1f;
            Die2.FindComponent<RigidBody3D>().LinearVelocity = new Vector3(Getrandom(), 0f, -3f);
            Die2.FindComponent<RigidBody3D>().CollisionGroup = DiceCollisionGroup;
            //Die1.FindComponent<RigidBody3D>().EnableContinuousContact = true;
            Die2.FindComponent<MeshCollider>().IsActive = true;
            Console.WriteLine(Die2.FindComponent<RigidBody3D>().Restitution);
            EntityManager.Add(Die2);

            //var mainCamera = new ViewCamera("MainCamera", new Vector3(0, 3, 0),
            //    new Vector3(Die1.FindComponent<Transform3D>().Position.X,
            //        Die1.FindComponent<Transform3D>().Position.Y, Die1.FindComponent<Transform3D>().Position.Z)); //xyz
            //EntityManager.Add(mainCamera);
            //RenderManager.SetActiveCamera(mainCamera.Entity);

            var mainCamera = new FreeCamera("MainCamera", new Vector3(-10, 3, 0), Vector3.Zero);
            // new Vector3(Die1.FindComponent<Transform3D>().Position.X,
            //Die1.FindComponent<Transform3D>().Position.Y, Die1.FindComponent<Transform3D>().Position.Z));
            EntityManager.Add(mainCamera);
            RenderManager.SetActiveCamera(mainCamera.Entity);

            //mainCamera.Entity.AddComponent(new Cam(Die1));

            this.AddSceneBehavior(new sb(), sb.Order.PostUpdate);
        }