void Collider::_copyFrom(const ComponentBase *model) { auto m = (Collider*)model; if (m->getColliderType() == Physics::ColliderType::Mesh) { init(m->getColliderType(), m->getMesh()); } else { init(m->getColliderType(), ""); } #ifdef EDITOR_ENABLED editorUpdate(); if (editorStruct) { editorStruct->copyDatas(m); } Link *link = entity.getLinkPtr(); auto p = scaleFromMat4(link->getGlobalTransform()); //scale(p / getSize()); #else setMaterial(m->getMaterial()->getName()); setAsTrigger(m->isATrigger()); setFilterGroup(m->getFilterGroup()); setCenter(m->getCenter()); setHeight(m->getHeight()); setRadius(m->getRadius()); setSize(m->getSize()); setMesh(m->getMesh()); if (m->isConvex()) setAsConvex(); else if (m->isConcave()) setAsConcave(); #endif }
void Collider::_copyFrom(const ComponentBase *model) { auto m = (Collider*)model; if (m->getColliderType() == Physics::ColliderType::Mesh) { init(m->getColliderType(), m->getMesh()); } else { init(m->getColliderType(), ""); } #ifdef EDITOR_ENABLED editorUpdate(); if (editorStruct) { editorStruct->copyDatas(m); } Link *link = entity.getLinkPtr(); auto p = scaleFromMat4(link->getGlobalTransform()); //scale(p / getSize()); #endif }
void RigidBody::_copyFrom(const ComponentBase *model) { init(); auto m = (RigidBody*)model; #ifdef EDITOR_ENABLED editorUpdate(); if (editorStruct) { editorStruct->copyDatas(m); editorStruct->refreshDatas(this); Link *link = entity.getLinkPtr(); if (isKinematic()) { auto p = posFromMat4(link->getGlobalTransform()); setPosition(posFromMat4(link->getGlobalTransform())); setRotation(link->getOrientation()); // global orientation not supported } } #else setAngularDrag(m->getAngularDrag()); setAngularVelocity(m->getAngularVelocity()); setCenterOfMass(m->getCenterOfMass()); setLinearDrag(m->getLinearDrag()); setLinearVelocity(m->getLinearVelocity()); setMass(m->getMass()); setDiagonalInertiaTensor(m->getDiagonalInertiaTensor()); setMaxAngularVelocity(m->getMaxAngularVelocity()); setMaxDepenetrationVelocity(m->getMaxDepenetrationVelocity()); affectByGravity(m->isAffectedByGravity()); setPosition(m->getPosition()); setRotation(m->getRotation()); setAsKinematic(m->isKinematic()); setCollisionDetectionMode(m->getCollisionDetectionMode()); #endif }