public BEPUikJoint(BEPUikBone connectionA, BEPUikBone connectionB, String name, SimObject instance) : base(name) { this.connectionA = connectionA; this.connectionB = connectionB; connectionAPositionOffset = instance.Translation - connectionA.Owner.Translation; }
public BEPUikDragControl(BEPUikBone bone, BEPUikScene scene, BEPUikDragControlDefinition definition, SimObjectBase instance) : base(scene, definition.Name) { this.bone = bone; dragControl = new DragControl(); dragControl.TargetBone = bone.IkBone; dragControl.LinearMotor.Offset = (instance.Translation - bone.Owner.Translation).toBepuVec3(); dragControl.MaximumForce = definition.MaximumForce; }
internal override void createProduct(SimObjectBase instance, BEPUikScene scene) { BEPUikBone bone; if (LocalRotQuat.HasValue) { bone = new BEPUikBoneLocalRot(this, instance, scene); } else { bone = new BEPUikBone(this, instance, scene); } instance.addElement(bone); }
public BEPUikTwistLimit(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikTwistLimitDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { limit = new IKTwistLimit(connectionA.IkBone, connectionB.IkBone, definition.AxisA.toBepuVec3(), definition.AxisB.toBepuVec3(), definition.MaximumAngle); if (definition.MeasurementAxisA.HasValue) { limit.MeasurementAxisA = definition.MeasurementAxisA.Value.toBepuVec3(); } if (definition.MeasurementAxisB.HasValue) { limit.MeasurementAxisB = definition.MeasurementAxisB.Value.toBepuVec3(); } setupLimit(definition); }
internal void addBone(BEPUikBone bone) { BEPUikSolver solver; if (namedSolvers.TryGetValue(bone.SolverName, out solver)) { solver.addBone(bone); } else { SimObjectErrorManager.AddAndLogError(new SimObjectError() { Subsystem = BEPUikInterface.PluginName, ElementName = bone.Name, Type = bone.GetType().Name, SimObject = bone.Owner.Name, Message = String.Format("Cannot find an IKSolver named '{0}' Bone not added to scene.", bone.SolverName) }); } }
internal override void createProduct(SimObjectBase instance, BEPUikScene scene) { BEPUikBone connectionA = null; BEPUikBone connectionB = null; SimObject other = instance.getOtherSimObject(ConnectionASimObjectName); if (other == null) { throw new BEPUikBlacklistException("Cannot find ConnectionA SimObject named '{0}'", ConnectionASimObjectName); } connectionA = other.getElement(ConnectionABoneName) as BEPUikBone; if (connectionA == null) { throw new BEPUikBlacklistException("Cannot find ConnectionA bone named '{0}' in '{1}'", ConnectionABoneName, ConnectionASimObjectName); } other = instance.getOtherSimObject(ConnectionBSimObjectName); if (other == null) { throw new BEPUikBlacklistException("Cannot find ConnectionB SimObject named '{0}'", ConnectionBSimObjectName); } connectionB = other.getElement(ConnectionBBoneName) as BEPUikBone; if (connectionB == null) { throw new BEPUikBlacklistException("Cannot find ConnectionB bone named '{0}' in '{1}'", ConnectionBBoneName, ConnectionBSimObjectName); } SimElement element = createConstraint(connectionA, connectionB, instance); if (element != null) { instance.addElement(element); } }
internal void addBone(BEPUikBone bone) { bones.Add(bone); solveBones.Add(bone.IkBone); }
public BEPUikPointOnLineJoint(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikPointOnLineJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKPointOnLineJoint(connectionA.IkBone, connectionB.IkBone, instance.Translation.toBepuVec3(), definition.LineDirection.toBepuVec3(), instance.Translation.toBepuVec3()); setupJoint(definition); }
public BEPUikBallSocketJoint(BEPUikBone connectionA, BEPUikBone connectionB, Vector3 anchor, BEPUikBallSocketJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKBallSocketJoint(connectionA.IkBone, connectionB.IkBone, anchor.toBepuVec3()); setupJoint(definition); }
protected override SimElement createConstraint(BEPUikBone connectionA, BEPUikBone connectionB, SimObjectBase instance) { return(new BEPUikSwivelHingeJoint(connectionA, connectionB, this, Name, instance)); }
protected override SimElement createConstraint(BEPUikBone connectionA, BEPUikBone connectionB, SimObjectBase instance) { return(new BEPUikDistanceLimit(connectionA, connectionB, instance.Translation, this, Name, instance)); }
public BEPUikRevoluteJoint(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikRevoluteJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKRevoluteJoint(connectionA.IkBone, connectionB.IkBone, definition.WorldFreeAxis.toBepuVec3()); setupJoint(definition); }
public BEPUikSwingLimit(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikSwingLimitDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { limit = new IKSwingLimit(connectionA.IkBone, connectionB.IkBone, definition.AxisA.toBepuVec3(), definition.AxisB.toBepuVec3(), definition.MaximumAngle); setupLimit(definition); }
protected abstract SimElement createConstraint(BEPUikBone connectionA, BEPUikBone connectionB, SimObjectBase instance);
internal void removeBone(BEPUikBone bone) { bones.Remove(bone); solveBones.Remove(bone.IkBone); }
public BEPUikSwivelHingeJoint(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikSwivelHingeJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKSwivelHingeJoint(connectionA.IkBone, connectionB.IkBone, definition.WorldHingeAxis.toBepuVec3(), definition.WorldTwistAxis.toBepuVec3()); setupJoint(definition); }
public BEPUikAngularJoint(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikAngularJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKAngularJoint(connectionA.IkBone, connectionB.IkBone); setupJoint(definition); }
public BEPUikDistanceJoint(BEPUikBone connectionA, BEPUikBone connectionB, BEPUikDistanceJointDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { joint = new IKDistanceJoint(connectionA.IkBone, connectionB.IkBone, connectionA.Owner.Translation.toBepuVec3(), connectionB.Owner.Translation.toBepuVec3()); setupJoint(definition); }
public BEPUikLimit(BEPUikBone connectionA, BEPUikBone connectionB, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { }
public BEPUikDistanceLimit(BEPUikBone connectionA, BEPUikBone connectionB, Vector3 anchor, BEPUikDistanceLimitDefinition definition, String name, SimObject instance) : base(connectionA, connectionB, name, instance) { limit = new IKDistanceLimit(connectionA.IkBone, connectionB.IkBone, anchor.toBepuVec3(), anchor.toBepuVec3(), definition.MinimumDistance, definition.MaximumDistance); setupLimit(definition); }