Merge pull request #2810 from shun-iwasawa/g/fix_camera_column_handling

Fix Assertion Failure on Selecting Camera Column
This commit is contained in:
Rodney 2019-10-19 11:24:05 -05:00 committed by GitHub
commit eb04b70f37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -700,16 +700,19 @@ TAffine TTool::getColumnMatrix(int columnIndex) const {
if (fh->isEditingLevel()) return TAffine();
int frame = fh->getFrame();
TXsheet *xsh = m_application->getCurrentXsheet()->getXsheet();
TStageObjectId columnId = TStageObjectId::ColumnId(columnIndex);
TAffine columnPlacement = xsh->getPlacement(columnId, frame);
double columnZ = xsh->getZ(columnId, frame);
TStageObjectId columnObjId =
(columnIndex >= 0)
? TStageObjectId::ColumnId(columnIndex)
: TStageObjectId::CameraId(xsh->getCameraColumnIndex());
TAffine columnPlacement = xsh->getPlacement(columnObjId, frame);
double columnZ = xsh->getZ(columnObjId, frame);
TStageObjectId cameraId = xsh->getStageObjectTree()->getCurrentCameraId();
TStageObject *camera = xsh->getStageObject(cameraId);
TAffine cameraPlacement = camera->getPlacement(frame);
double cameraZ = camera->getZ(frame);
TStageObject *object = xsh->getStageObject(columnId);
TStageObject *object = xsh->getStageObject(columnObjId);
TAffine placement;
TStageObject::perspective(placement, cameraPlacement, cameraZ,
columnPlacement, columnZ,
@ -831,8 +834,6 @@ QString TTool::updateEnabled() {
}
}
TStageObject *obj =
xsh->getStageObject(TStageObjectId::ColumnId(columnIndex));
bool spline = m_application->getCurrentObject()->isSpline();
bool filmstrip = m_application->getCurrentFrame()->isEditingLevel();
@ -947,7 +948,9 @@ QString TTool::updateEnabled() {
}
// Check against impossibly traceable movements on the column
if ((levelType & LEVELCOLUMN_XSHLEVEL) && !filmstrip) {
if ((levelType & LEVELCOLUMN_XSHLEVEL) && !filmstrip && columnIndex >= 0) {
TStageObject *obj =
xsh->getStageObject(TStageObjectId::ColumnId(columnIndex));
// Test for Mesh-deformed levels
const TStageObjectId &parentId = obj->getParent();
if (parentId.isColumn() && obj->getParentHandle()[0] != 'H') {