internal RigidBody(RigidBodyDescriptor descriptor, Scene scene) { WrappedActor = CreateActor(descriptor, scene); Configurator = new RigidBodyConfigurator(this); FixtureFactory = new RigidBodyFixtureFactory(this); Forces = new RigidBodyForces(this); Velocity = new RigidBodyVelocity(this); MassFrame = new RigidBodyMassFrame(this); UserData = descriptor.UserData; }
internal RigidBody(RigidBodyDescriptor descriptor) { WrappedRigidBody = new DR.RigidBody {AutoUpdateMass = true, MotionType = descriptor.MotionType.ToDigitalRune()}; Configurator = new RigidBodyConfigurator(this); FixtureFactory = new RigidBodyFixtureFactory(this); Forces = new RigidBodyForces(this); Velocity = new RigidBodyVelocity(this); MassFrame = new RigidBodyMassFrame(this); Descriptor = descriptor; }
private Actor CreateActor(RigidBodyDescriptor descriptor, Scene scene) { var materialDesc = new MaterialDescription { DynamicFriction = 0.5f, StaticFriction = 0.5f, Restitution = 0.7f, FrictionCombineMode = CombineMode.Average, RestitutionCombineMode = CombineMode.Average }; DefaultMaterial = scene.CreateMaterial(materialDesc); var boxDesc = new BoxShapeDescription { Material = DefaultMaterial, Dimensions = new Vector3(1, 1, 1) }; /////////////////////////////////////////////// //resolve the motion type var rigidBodyDesc = descriptor.MotionType == MotionType.Static ? null : new BodyDescription(); if (descriptor.MotionType == MotionType.Kinematic) rigidBodyDesc.BodyFlags = BodyFlag.Kinematic; HasDefaultShape = true; var actorDesc = new ActorDescription(boxDesc) { BodyDescription = rigidBodyDesc, Density = 10.0f, GlobalPose = descriptor.Pose.ToPhysX(), UserData = descriptor.UserData }; return scene.CreateActor(actorDesc); }
CreateRigidBody(this IFactory<IActor> factory, RigidBodyDescriptor descriptor) { return factory.Create<IRigidBody, RigidBodyDescriptor>(descriptor); }
public DefaultRigidBody(RigidBodyDescriptor descriptor) { _motionType = descriptor.MotionType; }