Made anchoring togglable in play mode

This commit is contained in:
Vulpovile
2022-10-02 16:44:59 -07:00
parent 8c47024960
commit df77572fe7
5 changed files with 20 additions and 8 deletions

View File

@@ -29,7 +29,6 @@ public:
//Variables
Color3 color;
bool canCollide;
bool anchored;
dBodyID physBody;
dGeomID physGeom[3];
@@ -54,6 +53,8 @@ public:
void setShape(Enum::Shape::Value shape);
void setChanged();
void setSurface(int face, Enum::SurfaceType::Value surface);
void setAnchored(bool anchored);
bool isAnchored();
float getMass();
//Collision
@@ -64,6 +65,7 @@ public:
virtual std::vector<PROPGRIDITEM> getProperties();
virtual void PropUpdate(LPPROPGRIDITEM &pItem);
private:
bool anchored;
Vector3 position;
Vector3 size;
Vector3 velocity;

View File

@@ -198,7 +198,7 @@ void Application::onInit() {
test->setPosition(Vector3(0,0,0));
test->setCFrame(test->getCFrame() * Matrix3::fromEulerAnglesXYZ(0,toRadians(0),toRadians(0)));
test->setSurface(TOP, Enum::SurfaceType::Bumps);
test->anchored = true;
test->setAnchored(true);
test = makePart();
test->setParent(_dataModel->getWorkspace());

View File

@@ -425,8 +425,7 @@ bool DataModelInstance::scanXMLObject(xml_node<> * scanNode)
}
if(anchoredNode)
{
printf("AAAAAAAAAAAAAAAAAAAA %s\n", anchoredNode->value());
test->anchored = stricmp(anchoredNode->value(), "true") == 0;
test->setAnchored(stricmp(anchoredNode->value(), "true") == 0);
}
test->setSize(Vector3(sizeX,sizeY+_modY,sizeZ));
test->setName(newName);

View File

@@ -230,9 +230,20 @@ void PartInstance::setPosition(Vector3 pos)
{
position = pos;
setCFrame(CoordinateFrame(cFrame.rotation, pos));
changed = true;
}
void PartInstance::setAnchored(bool anchored)
{
this->anchored = anchored;
g_dataModel->getEngine()->deleteBody(this);
}
bool PartInstance::isAnchored()
{
return this->anchored;
}
CoordinateFrame PartInstance::getCFrame()
{
return cFrame;
@@ -359,7 +370,7 @@ void PartInstance::PropUpdate(LPPROPGRIDITEM &item)
}
else if(strcmp(item->lpszPropName, "Anchored") == 0)
{
anchored= item->lpCurValue == TRUE;
setAnchored(item->lpCurValue == TRUE);
}
else if(strcmp(item->lpszPropName, "Offset") == 0)
{

View File

@@ -141,11 +141,11 @@ void XplicitNgine::createBody(PartInstance* partInstance, float stepSize)
//printf("[XplicitNgine] Created Body for PartInstance\n");
if(!partInstance->anchored)
if(!partInstance->isAnchored())
dGeomSetBody(partInstance->physGeom[0], partInstance->physBody);
} else {
if(!partInstance->anchored)
if(!partInstance->isAnchored())
{
const dReal* physPosition = dBodyGetPosition(partInstance->physBody);