diff --git a/GammaRay.pro b/GammaRay.pro
index 050cd9ab..569cb7b1 100644
--- a/GammaRay.pro
+++ b/GammaRay.pro
@@ -689,7 +689,7 @@ isEmpty(_QWT_LIB){
}
INCLUDEPATH += $$_QWT_INCLUDE
LIBPATH += $$_QWT_LIB
-LIBS += -lqwt
+LIBS += -lqwt-qt5
#==============================================================
#========== The VTK include and lib paths and libraries==================
@@ -744,7 +744,6 @@ LIBS += -lvtkGUISupportQt$$_VTK_VERSION_SUFFIX \
-lvtkImagingGeneral$$_VTK_VERSION_SUFFIX \
-lvtkRenderingVolume$$_VTK_VERSION_SUFFIX \
-lvtkFiltersStatistics$$_VTK_VERSION_SUFFIX \
- -lvtkalglib$$_VTK_VERSION_SUFFIX \
-lvtkImagingStencil$$_VTK_VERSION_SUFFIX \
-lvtkImagingHybrid$$_VTK_VERSION_SUFFIX \
-lvtkRenderingContext2D$$_VTK_VERSION_SUFFIX \
@@ -778,7 +777,8 @@ LIBS += -lITKCommon$$_ITK_VERSION_SUFFIX \
-litkvnl$$_ITK_VERSION_SUFFIX \
-litkvnl_algo$$_ITK_VERSION_SUFFIX \
-lITKIOPNG$$_ITK_VERSION_SUFFIX \
- -lITKTransform$$_ITK_VERSION_SUFFIX
+ -lITKTransform$$_ITK_VERSION_SUFFIX \
+ -lITKSmoothing$$_ITK_VERSION_SUFFIX
#=============================================================================
@@ -824,7 +824,7 @@ win32 {
# The application version
# Don't forget to update the Util::importSettingsFromPreviousVersion() method to
# enable the import of registry/user settings of previous versions.
-VERSION = 6.14
+VERSION = 6.16
# Define a preprocessor macro so we can get the application version in application code.
DEFINES += APP_VERSION=\\\"$$VERSION\\\"
diff --git a/README.md b/README.md
index 89c29749..4235a779 100644
--- a/README.md
+++ b/README.md
@@ -15,6 +15,7 @@ If you enjoyed this project, you might also enjoy GeostatsPy: https://github.com
Python script to convert Eclipse grids to Paraview-compatible VTU format: https://github.com/BinWang0213/PyGRDECL
VERSION HISTORY:
+ Version 6.16 - Upgrade of VTK to 9.1 and other years-old dependencies; some fixes.
Version 6.14 - Several improvements mainly involving the 3D Viewer and dataset processing.
Version 6.12 - Several new methods to work with grids. Several fixes and enhancements.
Version 6.9 - Export geologic grids as Eclipse grids, multiple other new features, enhancements and fixes.
diff --git a/dialogs/dynamicfaciesrelationshipdiagramdialog.cpp b/dialogs/dynamicfaciesrelationshipdiagramdialog.cpp
index 6a97659b..e2d01ebb 100644
--- a/dialogs/dynamicfaciesrelationshipdiagramdialog.cpp
+++ b/dialogs/dynamicfaciesrelationshipdiagramdialog.cpp
@@ -12,6 +12,7 @@
#include
#include
#include
+#include
DynamicFaciesRelationshipDiagramDialog::DynamicFaciesRelationshipDiagramDialog(
std::vector &categoricalAttributes,
diff --git a/dialogs/krigingdialog.cpp b/dialogs/krigingdialog.cpp
index 9c83f37b..bf80d1ad 100644
--- a/dialogs/krigingdialog.cpp
+++ b/dialogs/krigingdialog.cpp
@@ -18,6 +18,7 @@
#include
#include
+#include
#include
KrigingDialog::KrigingDialog(QWidget *parent) :
diff --git a/dialogs/mcrfsimdialog.cpp b/dialogs/mcrfsimdialog.cpp
index 28c4a47c..3afcc6f2 100644
--- a/dialogs/mcrfsimdialog.cpp
+++ b/dialogs/mcrfsimdialog.cpp
@@ -174,7 +174,7 @@ void MCRFSimDialog::onRun()
Application::instance()->logError( " Last error:" + markovSim.getLastError() );
} else {
int realNum = 1;
- for( const spectral::arrayPtr& simValues : markovSim.getRealizations() ){
+ for( spectral::arrayPtr simValues : markovSim.getRealizations() ){
markovSim.m_cgSim->append( m_commonSimulationParameters->getBaseNameForRealizationVariables() + QString::number(realNum),
*simValues,
markovSim.m_pdf->getCategoryDefinition() );
diff --git a/docs/GammaRayManual.docx b/docs/GammaRayManual.docx
index f1719a24..dead3c8d 100755
Binary files a/docs/GammaRayManual.docx and b/docs/GammaRayManual.docx differ
diff --git a/docs/figures.pptx b/docs/figures.pptx
index c02e4e7e..626cb4c7 100755
Binary files a/docs/figures.pptx and b/docs/figures.pptx differ
diff --git a/imagejockey/gabor/gaborfilterdialog.cpp b/imagejockey/gabor/gaborfilterdialog.cpp
index dfd9bd16..05da6b6a 100644
--- a/imagejockey/gabor/gaborfilterdialog.cpp
+++ b/imagejockey/gabor/gaborfilterdialog.cpp
@@ -19,7 +19,7 @@ VTK_MODULE_INIT(vtkRenderingFreeType)
#include "imagejockey/paraviewscalarbar/vtkParaViewScalarBar.h"
#include "util.h"
#include
-#include
+#include
#include
#include
#include
@@ -64,15 +64,15 @@ GaborFilterDialog::GaborFilterDialog(IJAbstractCartesianGrid *inputGrid,
}
///-------------------setup the 3D viewer-------------------
- _vtkwidget = new QVTKOpenGLWidget();
+ _vtkwidget = new QVTKOpenGLNativeWidget();
_renderer = vtkSmartPointer::New();
// enable antialiasing
_renderer->SetUseFXAA( true );
- _vtkwidget->SetRenderWindow(vtkGenericOpenGLRenderWindow::New());
- _vtkwidget->GetRenderWindow()->AddRenderer(_renderer);
+ _vtkwidget->setRenderWindow(vtkGenericOpenGLRenderWindow::New());
+ _vtkwidget->renderWindow()->AddRenderer(_renderer);
_vtkwidget->setFocusPolicy(Qt::StrongFocus);
//----------------------adding the orientation axes-------------------------
@@ -80,7 +80,7 @@ GaborFilterDialog::GaborFilterDialog(IJAbstractCartesianGrid *inputGrid,
_vtkAxesWidget = vtkSmartPointer::New();
_vtkAxesWidget->SetOutlineColor(0.9300, 0.5700, 0.1300);
_vtkAxesWidget->SetOrientationMarker(axes);
- _vtkAxesWidget->SetInteractor(_vtkwidget->GetRenderWindow()->GetInteractor());
+ _vtkAxesWidget->SetInteractor(_vtkwidget->renderWindow()->GetInteractor());
_vtkAxesWidget->SetViewport(0.0, 0.0, 0.2, 0.2);
_vtkAxesWidget->SetEnabled(1);
_vtkAxesWidget->InteractiveOn();
@@ -155,7 +155,8 @@ void GaborFilterDialog::updateDisplay()
double featureSizeFinal = ( featureSizeXFinal + featureSizeYFinal ) / 2;
//get the feature size step size (intial size is greater because initial frequency is lower)
double dFeatureSize = ( featureSizeInitial - featureSizeFinal ) / ( s1 - s0 ) ;
-
+ //get the z coordinate of the origin of the spectrogram
+ double spectrogramOriginZ = featureSizeFinal - 0.5 * dFeatureSize;
/////--------------------code to render the spectrogram cube-----------------------
vtkSmartPointer spectrogramActor = vtkSmartPointer::New();
@@ -182,7 +183,7 @@ void GaborFilterDialog::updateDisplay()
dFeatureSize);
spectrogramGridAsCellCentered->SetOrigin ( m_inputGrid->getOriginX() - m_inputGrid->getCellSizeI()/2,
m_inputGrid->getOriginY() - m_inputGrid->getCellSizeJ()/2,
- featureSizeFinal - 0.5 * dFeatureSize );
+ spectrogramOriginZ );
spectrogramGridAsCellCentered->SetExtent( extent[0], extent[1]+1,
extent[2], extent[3]+1,
extent[4], extent[5]+1 );
@@ -218,7 +219,8 @@ void GaborFilterDialog::updateDisplay()
vtkSmartPointer threshold = vtkSmartPointer::New();
{
threshold->SetInputData( spectrogramGridAsCellCentered );
- threshold->ThresholdByUpper(1); // Criterion is cells whose scalars are greater or equal to threshold.
+ threshold->SetUpperThreshold(1); // Criterion is cells whose scalars are greater or equal to threshold.
+ threshold->SetThresholdFunction( vtkThreshold::THRESHOLD_UPPER );
threshold->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_CELLS, "Visibility");
threshold->Update();
}
@@ -249,7 +251,7 @@ void GaborFilterDialog::updateDisplay()
_scalarBar->SetTitle("amplitude");
//scalarBar->SetNumberOfLabels( 4 );
_scalarBar->SetRenderer( _renderer );
- _scalarBar->SetInteractor( _vtkwidget->GetRenderWindow()->GetInteractor() );
+ _scalarBar->SetInteractor( _vtkwidget->renderWindow()->GetInteractor() );
// Create a text style for the cube axes
vtkSmartPointer tprop = vtkSmartPointer::New();
@@ -282,11 +284,18 @@ void GaborFilterDialog::updateDisplay()
spectral::arrayPtr gridData( m_inputGrid->createSpectralArray( m_inputVariableIndex ) );
ImageJockeyUtils::makeVTKImageDataFromSpectralArray( out, *gridData );
- //put the input grid a bit far from the spectrogram cube
+ //put the input grid a bit below from the spectrogram cube
double* origin = out->GetOrigin();
- origin[2] -= 10.0;
+ origin[0] = m_inputGrid->getOriginX();
+ origin[1] = m_inputGrid->getOriginY();
+ origin[2] = spectrogramOriginZ - 10.0;
out->SetOrigin( origin );
+ //render the input grid with the correct cell sizes
+ out->SetSpacing ( m_inputGrid->getCellSizeI(),
+ m_inputGrid->getCellSizeJ(),
+ m_inputGrid->getCellSizeK());
+
//Create a color table
vtkSmartPointer lut = vtkSmartPointer::New();
{
@@ -330,7 +339,7 @@ void GaborFilterDialog::updateDisplay()
_renderer->AddActor( gridActor );
_currentActors.push_back( gridActor );
_renderer->ResetCamera();
- _vtkwidget->GetRenderWindow()->Render();
+ _vtkwidget->renderWindow()->Render();
}
void GaborFilterDialog::onScan()
@@ -408,7 +417,7 @@ void GaborFilterDialog::onFreqAzSelectionsUpdated(const GaborFrequencyAzimuthSel
void GaborFilterDialog::onUserEditedAFrequency(QString freqValue)
{
- Q_UNUSED( freqValue );
+ Q_UNUSED( freqValue )
//get the user-entered topological frequencies
// the frequencies are topological (that is, inverse of cell counts)
// because the Gabor transform involves convolutions, which are cell-centered
diff --git a/imagejockey/gabor/gaborfilterdialog.h b/imagejockey/gabor/gaborfilterdialog.h
index 87eb903c..d5c512cb 100644
--- a/imagejockey/gabor/gaborfilterdialog.h
+++ b/imagejockey/gabor/gaborfilterdialog.h
@@ -12,7 +12,7 @@ class GaborFilterDialog;
class IJAbstractCartesianGrid;
class IJQuick3DViewer;
-class QVTKOpenGLWidget;
+class QVTKOpenGLNativeWidget;
class vtkRenderer;
class vtkOrientationMarkerWidget;
class vtkPolyData;
@@ -50,7 +50,7 @@ class GaborFilterDialog : public QDialog
////////-----members used for 3D display-------------------
// the Qt widget containing a VTK viewport
- QVTKOpenGLWidget *_vtkwidget;
+ QVTKOpenGLNativeWidget *_vtkwidget;
// the VTK renderer (add VTK actors to it to build the scene).
vtkSmartPointer _renderer;
// this must be class variable, otherwise a crash ensues due to smart pointer going
diff --git a/imagejockey/imagejockeygridplot.cpp b/imagejockey/imagejockeygridplot.cpp
index f5029b31..9db840fd 100644
--- a/imagejockey/imagejockeygridplot.cpp
+++ b/imagejockey/imagejockeygridplot.cpp
@@ -11,6 +11,8 @@
#include
#include
#include
+#include
+#include
#include
#include
@@ -41,8 +43,8 @@ class SpectrogramZoomer: public QwtPlotZoomer
}
};
-///////////////////////////////////////////RASTER DATA ADAPTER: QwtRasterData <-> CartesianGrid ///////////////////////
-class SpectrogramData: public QwtRasterData{
+///////////////////////////////////////////RASTER DATA ADAPTER: QwtMatrixRasterData <-> CartesianGrid ///////////////////////
+class SpectrogramData: public QwtMatrixRasterData{
public:
SpectrogramData() : m_var( nullptr ), m_cg( nullptr ), m_decibelRefValue(100.0) {
//set some default values before the user chooses a grid
@@ -105,8 +107,8 @@ class SpectrogramData: public QwtRasterData{
double m_decibelRefValue;
};
-///////////////////////////////////////////RASTER DATA ADAPTER: QwtRasterData <-> SVDFactor ///////////////////////
-class FactorData: public QwtRasterData{
+///////////////////////////////////////////RASTER DATA ADAPTER: QwtMatrixRasterData <-> SVDFactor ///////////////////////
+class FactorData: public QwtMatrixRasterData{
public:
FactorData() : m_factor( nullptr ), m_colorScaleForSVDFactor( ColorScaleForSVDFactor::LINEAR ) {
//set some default values before the user chooses a factor
diff --git a/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.cpp b/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.cpp
index de0c21d4..062009a7 100644
--- a/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.cpp
+++ b/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.cpp
@@ -98,7 +98,7 @@ void vtkBoundingRectContextDevice2D::DrawMathTextString(float* point, const vtkS
{
if (!this->DelegateDevice)
{
- vtkWarningMacro(<< "No DelegateDevice defined") return;
+ vtkWarningMacro(<< "No DelegateDevice defined"); return;
}
// Not sure if this will work for math text
diff --git a/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.h b/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.h
index f907c773..9de6a5b9 100644
--- a/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.h
+++ b/imagejockey/paraviewscalarbar/vtkBoundingRectContextDevice2D.h
@@ -58,7 +58,7 @@ class vtkBoundingRectContextDevice2D : public vtkContextDevice2D
{
public:
vtkTypeMacro(vtkBoundingRectContextDevice2D, vtkContextDevice2D) virtual void PrintSelf(
- ostream& os, vtkIndent indent) VTK_OVERRIDE;
+ ostream& os, vtkIndent indent) override;
static vtkBoundingRectContextDevice2D* New();
/**
@@ -86,27 +86,27 @@ class vtkBoundingRectContextDevice2D : public vtkContextDevice2D
/**
* Expand bounding box to contain the string's bounding box.
*/
- void DrawString(float* point, const vtkStdString& string) VTK_OVERRIDE;
+ void DrawString(float* point, const vtkStdString& string) override;
/**
* Expand bounding box to contain the string's bounding box.
*/
- void DrawString(float* point, const vtkUnicodeString& string) VTK_OVERRIDE;
+ void DrawString(float* point, const vtkUnicodeString& string) override;
/**
* Expand bounding box to contain the string's bounding box.
*/
- void DrawMathTextString(float* point, const vtkStdString& string) VTK_OVERRIDE;
+ void DrawMathTextString(float* point, const vtkStdString& string) override;
/**
* Expand bounding box to contain the image's bounding box.
*/
- void DrawImage(float p[2], float scale, vtkImageData* image) VTK_OVERRIDE;
+ void DrawImage(float p[2], float scale, vtkImageData* image) override;
/**
* Expand bounding box to contain the image's bounding box.
*/
- void DrawImage(const vtkRectf& pos, vtkImageData* image) VTK_OVERRIDE;
+ void DrawImage(const vtkRectf& pos, vtkImageData* image) override;
/**
* Draw the supplied PolyData at the given x, y (p[0], p[1]) (bottom corner),
@@ -122,173 +122,173 @@ class vtkBoundingRectContextDevice2D : public vtkContextDevice2D
/**
* Implement pure virtual member function. Does not affect bounding rect.
*/
- void SetColor4(unsigned char color[4]) VTK_OVERRIDE;
+ void SetColor4(unsigned char color[4]) override;
/**
* Implement pure virtual member function. Does not affect bounding rect.
*/
- void SetTexture(vtkImageData* image, int properties) VTK_OVERRIDE;
+ void SetTexture(vtkImageData* image, int properties) override;
/**
* Implement pure virtual member function. Does not affect bounding rect.
*/
- void SetPointSize(float size) VTK_OVERRIDE;
+ void SetPointSize(float size) override;
/**
* Implement pure virtual member function. Forward line width to
* delegate device.
*/
- void SetLineWidth(float width) VTK_OVERRIDE;
+ void SetLineWidth(float width) override;
/**
* Implement pure virtual member function. Forward line type to
* delegate device.
*/
- void SetLineType(int type) VTK_OVERRIDE;
+ void SetLineType(int type) override;
/**
* Forward current matrix to delegate device.
*/
- void SetMatrix(vtkMatrix3x3* m) VTK_OVERRIDE;
+ void SetMatrix(vtkMatrix3x3* m) override;
/**
* Get current matrix from delegate device.
*/
- void GetMatrix(vtkMatrix3x3* m) VTK_OVERRIDE;
+ void GetMatrix(vtkMatrix3x3* m) override;
/**
* Multiply the current matrix in the delegate device by this one.
*/
- void MultiplyMatrix(vtkMatrix3x3* m) VTK_OVERRIDE;
+ void MultiplyMatrix(vtkMatrix3x3* m) override;
/**
* Push matrix in the delegate device.
*/
- void PushMatrix() VTK_OVERRIDE;
+ void PushMatrix() override;
/**
* Pope matrix from the delegate device.
*/
- void PopMatrix() VTK_OVERRIDE;
+ void PopMatrix() override;
/**
* Implement pure virtual member function. Does nothing.
*/
- void EnableClipping(bool enable) VTK_OVERRIDE;
+ void EnableClipping(bool enable) override;
/**
* Implement pure virtual member function. Does nothing.
*/
- void SetClipping(int* x) VTK_OVERRIDE;
+ void SetClipping(int* x) override;
/**
* Forward the pen to the delegate device.
*/
- void ApplyPen(vtkPen* pen) VTK_OVERRIDE;
+ void ApplyPen(vtkPen* pen) override;
/**
* Get the pen from the delegate device.
*/
- vtkPen* GetPen() VTK_OVERRIDE;
+ vtkPen* GetPen() override;
/**
* Forward the brush to the delegate device.
*/
- void ApplyBrush(vtkBrush* brush) VTK_OVERRIDE;
+ void ApplyBrush(vtkBrush* brush) override;
/**
* Get the brush from the delegate device.
*/
- vtkBrush* GetBrush() VTK_OVERRIDE;
+ vtkBrush* GetBrush() override;
/**
* Forward the text property to the delegate device.
*/
- void ApplyTextProp(vtkTextProperty* prop) VTK_OVERRIDE;
+ void ApplyTextProp(vtkTextProperty* prop) override;
/**
* Get the text property from the delegate device.
*/
- vtkTextProperty* GetTextProp() VTK_OVERRIDE;
+ vtkTextProperty* GetTextProp() override;
/**
* Expand bounding box to contain the given polygon.
*/
- void DrawPoly(float* points, int n, unsigned char* colors = 0, int nc_comps = 0) VTK_OVERRIDE;
+ void DrawPoly(float* points, int n, unsigned char* colors = 0, int nc_comps = 0) override;
/**
* Expand bounding rect to contain the given lines.
*/
- void DrawLines(float* f, int n, unsigned char* colors = 0, int nc_comps = 0) VTK_OVERRIDE;
+ void DrawLines(float* f, int n, unsigned char* colors = 0, int nc_comps = 0) override;
/**
* Expand bounding rect to contain the given points.
*/
- void DrawPoints(float* points, int n, unsigned char* colors = 0, int nc_comps = 0) VTK_OVERRIDE;
+ void DrawPoints(float* points, int n, unsigned char* colors = 0, int nc_comps = 0) override;
/**
* Expand bounding rect to contain the point sprites.
*/
void DrawPointSprites(vtkImageData* sprite, float* points, int n, unsigned char* colors = 0,
- int nc_comps = 0) VTK_OVERRIDE;
+ int nc_comps = 0) override;
/**
* Expand bounding rect to contain the markers.
*/
void DrawMarkers(int shape, bool highlight, float* points, int n, unsigned char* colors = 0,
- int nc_comps = 0) VTK_OVERRIDE;
+ int nc_comps = 0) override;
/**
* Expand bounding rect to contain the ellipse.
*/
void DrawEllipseWedge(float x, float y, float outRx, float outRy, float inRx, float inRy,
- float startAngle, float stopAngle) VTK_OVERRIDE;
+ float startAngle, float stopAngle) override;
/**
* Expand bounding rect to contain the elliptic arc.
*/
void DrawEllipticArc(
- float x, float y, float rX, float rY, float startAngle, float stopAngle) VTK_OVERRIDE;
+ float x, float y, float rX, float rY, float startAngle, float stopAngle) override;
/**
* Forward string bounds calculation to the delegate device.
*/
- void ComputeStringBounds(const vtkStdString& string, float bounds[4]) VTK_OVERRIDE;
+ void ComputeStringBounds(const vtkStdString& string, float bounds[4]) override;
/**
* Forward string bounds calculation to the delegate device.
*/
- void ComputeStringBounds(const vtkUnicodeString& string, float bounds[4]) VTK_OVERRIDE;
+ void ComputeStringBounds(const vtkUnicodeString& string, float bounds[4]) override;
/**
* Forward string bounds calculation to the delegate device.
*/
- void ComputeJustifiedStringBounds(const char* string, float bounds[4]) VTK_OVERRIDE;
+ void ComputeJustifiedStringBounds(const char* string, float bounds[4]) override;
/**
* Call before drawing to this device.
*/
- void Begin(vtkViewport*) VTK_OVERRIDE;
+ void Begin(vtkViewport*) override;
/**
* Call after drawing to this device.
*/
- void End() VTK_OVERRIDE;
+ void End() override;
/**
* Get value from delegate device.
*/
- bool GetBufferIdMode() const VTK_OVERRIDE;
+ bool GetBufferIdMode() const override;
/**
* Begin ID buffering mode.
*/
- void BufferIdModeBegin(vtkAbstractContextBufferId* bufferId) VTK_OVERRIDE;
+ void BufferIdModeBegin(vtkAbstractContextBufferId* bufferId) override;
/**
* End ID buffering mode.
*/
- void BufferIdModeEnd() VTK_OVERRIDE;
+ void BufferIdModeEnd() override;
protected:
vtkBoundingRectContextDevice2D();
@@ -321,8 +321,8 @@ class vtkBoundingRectContextDevice2D : public vtkContextDevice2D
void AddRect(const vtkRectf& rect);
private:
- vtkBoundingRectContextDevice2D(const vtkBoundingRectContextDevice2D&) VTK_DELETE_FUNCTION;
- void operator=(const vtkBoundingRectContextDevice2D&) VTK_DELETE_FUNCTION;
+ vtkBoundingRectContextDevice2D(const vtkBoundingRectContextDevice2D&) = delete;
+ void operator=(const vtkBoundingRectContextDevice2D&) = delete;
};
#endif // vtkBoundingRectContextDevice2D
diff --git a/imagejockey/paraviewscalarbar/vtkContext2DScalarBarActor.cpp b/imagejockey/paraviewscalarbar/vtkContext2DScalarBarActor.cpp
index 23a439ae..9fa2c1ec 100644
--- a/imagejockey/paraviewscalarbar/vtkContext2DScalarBarActor.cpp
+++ b/imagejockey/paraviewscalarbar/vtkContext2DScalarBarActor.cpp
@@ -32,6 +32,7 @@
#include
#include