public BEPUikBoneLocalRot(BEPUikBoneDefinition definition, SimObjectBase instance, BEPUikScene scene) : base(definition, instance, scene) { localRot = definition.LocalRotQuat.Value; localRotInverse = localRot.inverse(); IkBone.Orientation *= localRot.toBepuQuat(); }
internal override void createProduct(SimObjectBase instance, BulletScene scene) { btCompoundShape shape = new btCompoundShape(0.0f); ReshapeableRigidBody rigidBody = new ReshapeableRigidBody(this, scene, shape, instance.Translation, instance.Rotation); instance.addElement(rigidBody); }
public SimObjectBase createProp(String propName, Vector3 translation, Quaternion rotation) { if (subScene != null) { PropDefinition propDef; if (prototypes.TryGetValue(propName, out propDef)) { SimObjectDefinition definition = propDef.SimObject; Vector3 originalTranslation = definition.Translation; Quaternion originalRotation = definition.Rotation; definition.Name = UniqueKeyGenerator.generateStringKey(); definition.Translation = translation; definition.Rotation = rotation; SimObjectBase instance = definition.register(subScene); medicalController.addSimObject(instance); scene.buildScene(); definition.Translation = originalTranslation; definition.Rotation = originalRotation; return(instance); } else { Log.Error("Could not create prop {0}. The definition cannot be found.", propName); } } else { Log.Error("Could not create prop {0}. The subscene is null.", propName); } return(null); }
public BEPUikBone(BEPUikBoneDefinition definition, SimObjectBase instance, BEPUikScene scene) : base(definition.Name) { this.scene = scene; bone = new Bone(instance.Translation.toBepuVec3(), instance.Rotation.toBepuQuat(), definition.Radius, definition.Height, definition.Mass); bone.Pinned = definition.Pinned; solverName = definition.SolverName; }
public void editRotation(ref Quaternion rotation) { if (simObjectController != null) { SimObjectBase simObj = simObjectController.getSimObject(Name) as SimObjectBase; if (simObj != null) { simObj.updateRotation(ref rotation, null); } } instance.Definition.Rotation = rotation; Modified = true; }
public void editTranslation(ref Vector3 translation) { if (simObjectController != null) { SimObjectBase simObj = simObjectController.getSimObject(Name) as SimObjectBase; if (simObj != null) { simObj.updateTranslation(ref translation, null); } } instance.Translation = translation; Modified = true; }
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); } }