예제 #1
0
        public override void UpdateOnceBeforeFrame()
        {
            base.UpdateOnceBeforeFrame();

            Physics.Enabled = true;
            Physics.RigidBody.Activate();
            Physics.RigidBody.ContactPointCallbackDelay   = 0;
            Physics.RigidBody.ContactSoundCallbackEnabled = true;

            //return;
            if (InitialHit != null)
            {
                Physics.ApplyImpulse(InitialHit.Impulse, Physics.CenterOfMassWorld);

                MyPhysics.FractureImpactDetails fid = new Sandbox.Engine.Physics.MyPhysics.FractureImpactDetails();
                fid.Entity         = this;
                fid.World          = Physics.HavokWorld;
                fid.ContactInWorld = InitialHit.Position;

                HkdFractureImpactDetails details = HkdFractureImpactDetails.Create();
                details.SetBreakingBody(Physics.RigidBody);
                details.SetContactPoint(Physics.WorldToCluster(InitialHit.Position));
                details.SetDestructionRadius(0.05f);
                details.SetBreakingImpulse(30000);
                details.SetParticleVelocity(InitialHit.Impulse);
                details.SetParticlePosition(Physics.WorldToCluster(InitialHit.Position));
                details.SetParticleMass(500);

                fid.Details = details;
                MyPhysics.EnqueueDestruction(fid);
            }
        }