mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 12:37:51 +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 ignoreIK;
|
||||||
bool needUpdate = false;
|
bool needUpdate = false;
|
||||||
|
|
||||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
relativePosition = EntityDynamicInterface::extractVec3Argument("hold", arguments, "relativePosition", ok, false);
|
relativePosition = EntityDynamicInterface::extractVec3Argument("hold", arguments, "relativePosition", ok, false);
|
||||||
|
@ -410,7 +410,7 @@ bool AvatarActionHold::updateArguments(QVariantMap arguments) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap AvatarActionHold::getArguments() {
|
QVariantMap AvatarActionHold::getArguments() {
|
||||||
QVariantMap arguments = ObjectAction::getArguments();
|
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
arguments["holderID"] = _holderID;
|
arguments["holderID"] = _holderID;
|
||||||
arguments["relativePosition"] = glmToQMap(_relativePosition);
|
arguments["relativePosition"] = glmToQMap(_relativePosition);
|
||||||
|
|
|
@ -88,7 +88,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) {
|
||||||
float linearDistance;
|
float linearDistance;
|
||||||
|
|
||||||
bool needUpdate = false;
|
bool needUpdate = false;
|
||||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||||
|
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
@ -143,7 +143,7 @@ bool ObjectActionOffset::updateArguments(QVariantMap arguments) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap ObjectActionOffset::getArguments() {
|
QVariantMap ObjectActionOffset::getArguments() {
|
||||||
QVariantMap arguments = ObjectAction::getArguments();
|
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||||
withReadLock([&] {
|
withReadLock([&] {
|
||||||
arguments["pointToOffsetFrom"] = glmToQMap(_pointToOffsetFrom);
|
arguments["pointToOffsetFrom"] = glmToQMap(_pointToOffsetFrom);
|
||||||
arguments["linearTimeScale"] = _linearTimeScale;
|
arguments["linearTimeScale"] = _linearTimeScale;
|
||||||
|
|
|
@ -190,7 +190,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) {
|
||||||
float angularTimeScale;
|
float angularTimeScale;
|
||||||
|
|
||||||
bool needUpdate = false;
|
bool needUpdate = false;
|
||||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
// targets are required, spring-constants are optional
|
// targets are required, spring-constants are optional
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
@ -248,7 +248,7 @@ bool ObjectActionSpring::updateArguments(QVariantMap arguments) {
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap ObjectActionSpring::getArguments() {
|
QVariantMap ObjectActionSpring::getArguments() {
|
||||||
QVariantMap arguments = ObjectAction::getArguments();
|
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||||
withReadLock([&] {
|
withReadLock([&] {
|
||||||
arguments["linearTimeScale"] = _linearTimeScale;
|
arguments["linearTimeScale"] = _linearTimeScale;
|
||||||
arguments["targetPosition"] = glmToQMap(_desiredPositionalTarget);
|
arguments["targetPosition"] = glmToQMap(_desiredPositionalTarget);
|
||||||
|
|
|
@ -106,7 +106,7 @@ bool ObjectActionTravelOriented::updateArguments(QVariantMap arguments) {
|
||||||
float angularTimeScale;
|
float angularTimeScale;
|
||||||
|
|
||||||
bool needUpdate = false;
|
bool needUpdate = false;
|
||||||
bool somethingChanged = ObjectAction::updateArguments(arguments);
|
bool somethingChanged = ObjectDynamic::updateArguments(arguments);
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
forward = EntityDynamicInterface::extractVec3Argument("travel oriented action", arguments, "forward", 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 ObjectActionTravelOriented::getArguments() {
|
||||||
QVariantMap arguments = ObjectAction::getArguments();
|
QVariantMap arguments = ObjectDynamic::getArguments();
|
||||||
withReadLock([&] {
|
withReadLock([&] {
|
||||||
arguments["forward"] = glmToQMap(_forward);
|
arguments["forward"] = glmToQMap(_forward);
|
||||||
arguments["angularTimeScale"] = _angularTimeScale;
|
arguments["angularTimeScale"] = _angularTimeScale;
|
||||||
|
|
|
@ -42,6 +42,7 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() {
|
||||||
|
|
||||||
btRigidBody* rigidBodyA = getRigidBody();
|
btRigidBody* rigidBodyA = getRigidBody();
|
||||||
if (!rigidBodyA) {
|
if (!rigidBodyA) {
|
||||||
|
qCDebug(physics) << "ObjectConstraintHinge::getConstraint -- no rigidBodyA";
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,8 +50,14 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() {
|
||||||
|
|
||||||
btTransform rigidBodyAFrame(glmToBullet(_rbARotation), glmToBullet(_rbATranslation));
|
btTransform rigidBodyAFrame(glmToBullet(_rbARotation), glmToBullet(_rbATranslation));
|
||||||
|
|
||||||
_constraint = new btHingeConstraint(*rigidBodyA, rigidBodyAFrame, useReferenceFrameA);
|
btHingeConstraint* constraint = new btHingeConstraint(*rigidBodyA, rigidBodyAFrame, useReferenceFrameA);
|
||||||
return _constraint;
|
_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 needUpdate = false;
|
||||||
bool somethingChanged = ObjectConstraint::updateArguments(arguments);
|
bool somethingChanged = ObjectConstraint::updateArguments(arguments);
|
||||||
withReadLock([&]{
|
withReadLock([&]{
|
||||||
// targets are required, hinge-constants are optional
|
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
rbATranslation = EntityDynamicInterface::extractVec3Argument("hinge constraint", arguments, "targetPosition", ok, false);
|
rbATranslation = EntityDynamicInterface::extractVec3Argument("hinge constraint", arguments, "aTranslation", ok, false);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
rbATranslation = _rbATranslation;
|
rbATranslation = _rbATranslation;
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = true;
|
ok = true;
|
||||||
rbARotation = EntityDynamicInterface::extractQuatArgument("hinge constraint", arguments, "targetRotation", ok, false);
|
rbARotation = EntityDynamicInterface::extractQuatArgument("hinge constraint", arguments, "aRotation", ok, false);
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
rbARotation = _rbARotation;
|
rbARotation = _rbARotation;
|
||||||
}
|
}
|
||||||
|
@ -94,7 +100,7 @@ bool ObjectConstraintHinge::updateArguments(QVariantMap arguments) {
|
||||||
ownerEntity->setDynamicDataNeedsTransmit(true);
|
ownerEntity->setDynamicDataNeedsTransmit(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
activateBody();
|
// activateBody();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -103,8 +109,8 @@ bool ObjectConstraintHinge::updateArguments(QVariantMap arguments) {
|
||||||
QVariantMap ObjectConstraintHinge::getArguments() {
|
QVariantMap ObjectConstraintHinge::getArguments() {
|
||||||
QVariantMap arguments = ObjectConstraint::getArguments();
|
QVariantMap arguments = ObjectConstraint::getArguments();
|
||||||
withReadLock([&] {
|
withReadLock([&] {
|
||||||
arguments["targetPosition"] = glmToQMap(_rbATranslation);
|
arguments["aTranslation"] = glmToQMap(_rbATranslation);
|
||||||
arguments["targetRotation"] = glmToQMap(_rbARotation);
|
arguments["aRotation"] = glmToQMap(_rbARotation);
|
||||||
});
|
});
|
||||||
return arguments;
|
return arguments;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue