mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:24:00 +02:00
hinge is sort-of working
This commit is contained in:
parent
2b0315645c
commit
cc77fce95f
5 changed files with 22 additions and 16 deletions
|
@ -323,7 +323,7 @@ bool AvatarActionHold::updateArguments(QVariantMap arguments) {
|
|||
bool ignoreIK;
|
||||
bool needUpdate = false;
|
||||
|
||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
||||
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||
withReadLock([&]{
|
||||
bool ok = true;
|
||||
relativePosition = EntityDynamicInterface::extractVec3Argument("hold", arguments, "relativePosition", ok, false);
|
||||
|
@ -410,7 +410,7 @@ bool AvatarActionHold::updateArguments(QVariantMap arguments) {
|
|||
}
|
||||
|
||||
QVariantMap AvatarActionHold::getArguments() {
|
||||
QVariantMap arguments = ObjectAction::getArguments();
|
||||
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||
withReadLock([&]{
|
||||
arguments["holderID"] = _holderID;
|
||||
arguments["relativePosition"] = glmToQMap(_relativePosition);
|
||||
|
|
|
@ -88,7 +88,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) {
|
|||
float linearDistance;
|
||||
|
||||
bool needUpdate = false;
|
||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
||||
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||
|
||||
withReadLock([&]{
|
||||
bool ok = true;
|
||||
|
@ -143,7 +143,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) {
|
|||
}
|
||||
|
||||
QVariantMap ObjectActionOffset::getArguments() {
|
||||
QVariantMap arguments = ObjectAction::getArguments();
|
||||
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||
withReadLock([&] {
|
||||
arguments["pointToOffsetFrom"] = glmToQMap(_pointToOffsetFrom);
|
||||
arguments["linearTimeScale"] = _linearTimeScale;
|
||||
|
|
|
@ -190,7 +190,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) {
|
|||
float angularTimeScale;
|
||||
|
||||
bool needUpdate = false;
|
||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
||||
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||
withReadLock([&]{
|
||||
// targets are required, spring-constants are optional
|
||||
bool ok = true;
|
||||
|
@ -248,7 +248,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) {
|
|||
}
|
||||
|
||||
QVariantMap ObjectActionSpring::getArguments() {
|
||||
QVariantMap arguments = ObjectAction::getArguments();
|
||||
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||
withReadLock([&] {
|
||||
arguments["linearTimeScale"] = _linearTimeScale;
|
||||
arguments["targetPosition"] = glmToQMap(_desiredPositionalTarget);
|
||||
|
|
|
@ -106,7 +106,7 @@ bool ObjectActionTravelOriented::updateArguments(QVariantMap arguments) {
|
|||
float angularTimeScale;
|
||||
|
||||
bool needUpdate = false;
|
||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
||||
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||
withReadLock([&]{
|
||||
bool ok = true;
|
||||
forward = EntityDynamicInterface::extractVec3Argument("travel oriented action", arguments, "forward", ok, true);
|
||||
|
@ -147,7 +147,7 @@ bool ObjectActionTravelOriented::updateArguments(QVariantMap arguments) {
|
|||
}
|
||||
|
||||
QVariantMap ObjectActionTravelOriented::getArguments() {
|
||||
QVariantMap arguments = ObjectAction::getArguments();
|
||||
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||
withReadLock([&] {
|
||||
arguments["forward"] = glmToQMap(_forward);
|
||||
arguments["angularTimeScale"] = _angularTimeScale;
|
||||
|
|
|
@ -42,6 +42,7 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() {
|
|||
|
||||
btRigidBody* rigidBodyA = getRigidBody();
|
||||
if (!rigidBodyA) {
|
||||
qCDebug(physics) << "ObjectConstraintHinge::getConstraint -- no rigidBodyA";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -49,8 +50,14 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() {
|
|||
|
||||
btTransform rigidBodyAFrame(glmToBullet(_rbARotation), glmToBullet(_rbATranslation));
|
||||
|
||||
_constraint = new btHingeConstraint(*rigidBodyA, rigidBodyAFrame, useReferenceFrameA);
|
||||
return _constraint;
|
||||
btHingeConstraint* constraint = new btHingeConstraint(*rigidBodyA, rigidBodyAFrame, useReferenceFrameA);
|
||||
_constraint = constraint;
|
||||
// constraint->setAngularOnly(true);
|
||||
|
||||
btVector3 axisInA = glmToBullet(glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
constraint->setAxis(axisInA);
|
||||
|
||||
return constraint;
|
||||
}
|
||||
|
||||
|
||||
|
@ -61,15 +68,14 @@ bool ObjectConstraintHinge::updateArguments(QVariantMap arguments) {
|
|||
bool needUpdate = false;
|
||||
bool somethingChanged = ObjectConstraint::updateArguments(arguments);
|
||||
withReadLock([&]{
|
||||
// targets are required, hinge-constants are optional
|
||||
bool ok = true;
|
||||
rbATranslation = EntityDynamicInterface::extractVec3Argument("hinge constraint", arguments, "targetPosition", ok, false);
|
||||
rbATranslation = EntityDynamicInterface::extractVec3Argument("hinge constraint", arguments, "aTranslation", ok, false);
|
||||
if (!ok) {
|
||||
rbATranslation = _rbATranslation;
|
||||
}
|
||||
|
||||
ok = true;
|
||||
rbARotation = EntityDynamicInterface::extractQuatArgument("hinge constraint", arguments, "targetRotation", ok, false);
|
||||
rbARotation = EntityDynamicInterface::extractQuatArgument("hinge constraint", arguments, "aRotation", ok, false);
|
||||
if (!ok) {
|
||||
rbARotation = _rbARotation;
|
||||
}
|
||||
|
@ -94,7 +100,7 @@ bool ObjectConstraintHinge::updateArguments(QVariantMap arguments) {
|
|||
ownerEntity->setDynamicDataNeedsTransmit(true);
|
||||
}
|
||||
});
|
||||
activateBody();
|
||||
// activateBody();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -103,8 +109,8 @@ bool ObjectConstraintHinge::updateArguments(QVariantMap arguments) {
|
|||
QVariantMap ObjectConstraintHinge::getArguments() {
|
||||
QVariantMap arguments = ObjectConstraint::getArguments();
|
||||
withReadLock([&] {
|
||||
arguments["targetPosition"] = glmToQMap(_rbATranslation);
|
||||
arguments["targetRotation"] = glmToQMap(_rbARotation);
|
||||
arguments["aTranslation"] = glmToQMap(_rbATranslation);
|
||||
arguments["aRotation"] = glmToQMap(_rbARotation);
|
||||
});
|
||||
return arguments;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue