Overrides - Fixed segfault in initialisation
Override definitions were being moved, so there was no pointer left to access the override on the next initialisation.
This commit is contained in:
parent
afe7c43351
commit
0e8c95f27e
4 changed files with 132 additions and 7 deletions
2
sync.cc
2
sync.cc
|
@ -440,7 +440,7 @@ void T_SyncOverrideSection::merge(
|
||||||
section( os->title ).merge( *os );
|
section( os->title ).merge( *os );
|
||||||
}
|
}
|
||||||
for ( auto& ov : other.overrides ) {
|
for ( auto& ov : other.overrides ) {
|
||||||
overrides.add( std::move( ov ) );
|
overrides.add( ov->clone( ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
sync.hh
3
sync.hh
|
@ -222,6 +222,9 @@ class A_SyncOverride
|
||||||
virtual void makeUI(
|
virtual void makeUI(
|
||||||
uint32_t& counter ,
|
uint32_t& counter ,
|
||||||
T_StringBuilder& sb ) noexcept;
|
T_StringBuilder& sb ) noexcept;
|
||||||
|
|
||||||
|
// Create a clone of the current override.
|
||||||
|
virtual T_OwnPtr< A_SyncOverride > clone( ) const noexcept = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Overrides section
|
// Overrides section
|
||||||
|
|
|
@ -659,6 +659,13 @@ void T_Float::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Float::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Float >( inputs_[ 0 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Float2 ===================================================================*/
|
/*= T_Float2 ===================================================================*/
|
||||||
|
|
||||||
|
@ -694,6 +701,13 @@ void T_Float2::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Float2::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Float2 >( inputs_[ 0 ] , inputs_[ 1 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Float3 ===================================================================*/
|
/*= T_Float3 ===================================================================*/
|
||||||
|
|
||||||
|
@ -731,6 +745,14 @@ void T_Float3::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Float3::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Float3 >( inputs_[ 0 ] , inputs_[ 1 ] ,
|
||||||
|
inputs_[ 2 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Float4 ===================================================================*/
|
/*= T_Float4 ===================================================================*/
|
||||||
|
|
||||||
|
@ -770,6 +792,14 @@ void T_Float4::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Float4::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Float4 >( inputs_[ 0 ] , inputs_[ 1 ] ,
|
||||||
|
inputs_[ 2 ] , inputs_[ 3 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= A_Integer ==================================================================*/
|
/*= A_Integer ==================================================================*/
|
||||||
|
|
||||||
|
@ -826,6 +856,13 @@ void T_Integer::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Integer::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Integer >( inputs_[ 0 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Integer2 =================================================================*/
|
/*= T_Integer2 =================================================================*/
|
||||||
|
|
||||||
|
@ -861,6 +898,13 @@ void T_Integer2::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Integer2::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Integer2 >( inputs_[ 0 ] , inputs_[ 1 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Integer3 =================================================================*/
|
/*= T_Integer3 =================================================================*/
|
||||||
|
|
||||||
|
@ -898,6 +942,14 @@ void T_Integer3::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Integer3::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Integer3 >( inputs_[ 0 ] , inputs_[ 1 ] ,
|
||||||
|
inputs_[ 2 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_Integer4 =================================================================*/
|
/*= T_Integer4 =================================================================*/
|
||||||
|
|
||||||
|
@ -937,6 +989,14 @@ void T_Integer4::makeEditWidgets(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_Integer4::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_Integer4 >( inputs_[ 0 ] , inputs_[ 1 ] ,
|
||||||
|
inputs_[ 2 ] , inputs_[ 3 ] , &title_[ 0 ] ) };
|
||||||
|
copyTo( *c );
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_ColorGrading =============================================================*/
|
/*= T_ColorGrading =============================================================*/
|
||||||
|
|
||||||
|
@ -989,6 +1049,16 @@ bool T_ColorGrading::setUnit(
|
||||||
M_SETOPT_( unit_ , v );
|
M_SETOPT_( unit_ , v );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
P_SyncOverride T_ColorGrading::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_ColorGrading >( inputs_[ 0 ] ,
|
||||||
|
inputs_[ 1 ] , inputs_[ 2 ] , &title_[ 0 ] ) };
|
||||||
|
c->location( ) = location( );
|
||||||
|
c->base_ = base_;
|
||||||
|
c->unit_ = unit_;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*= T_CamOverride ==============================================================*/
|
/*= T_CamOverride ==============================================================*/
|
||||||
|
|
||||||
|
@ -998,6 +1068,24 @@ T_CamOverride::T_CamOverride(
|
||||||
camMode_( CM_INVALID )
|
camMode_( CM_INVALID )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
P_SyncOverride T_CamOverride::clone( ) const noexcept
|
||||||
|
{
|
||||||
|
auto c{ NewOwned< T_CamOverride >( &title_[ 0 ] ) };
|
||||||
|
c->location( ) = location( );
|
||||||
|
const auto n{ inputs_.size( ) };
|
||||||
|
for ( auto i = 0u ; i < n ; i ++ ) {
|
||||||
|
c->inputs_.add( inputs_[ i ] );
|
||||||
|
}
|
||||||
|
c->fovConfig_ = fovConfig_;
|
||||||
|
c->target_ = target_;
|
||||||
|
c->upVector_ = upVector_;
|
||||||
|
c->position_ = position_;
|
||||||
|
c->angles_ = angles_;
|
||||||
|
c->distance_ = distance_;
|
||||||
|
c->camMode_ = camMode_;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
T_CamOverride::E_SetState T_CamOverride::setFieldOfView(
|
T_CamOverride::E_SetState T_CamOverride::setFieldOfView(
|
||||||
|
|
|
@ -23,10 +23,18 @@ class A_Float : public A_SyncOverride
|
||||||
: A_SyncOverride( type , title )
|
: A_SyncOverride( type , title )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public:
|
void copyTo( A_Float& other ) const noexcept
|
||||||
A_Float( T_String const& input ,
|
{
|
||||||
T_String const& title ) noexcept;
|
other.min_ = min_;
|
||||||
|
other.max_ = max_;
|
||||||
|
other.step_ = step_;
|
||||||
|
other.decimals_ = decimals_;
|
||||||
|
other.power_ = power_;
|
||||||
|
other.slider_ = slider_;
|
||||||
|
other.location( ) = location( );
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
bool setMin( const float v ) noexcept;
|
bool setMin( const float v ) noexcept;
|
||||||
bool setMax( const float v ) noexcept;
|
bool setMax( const float v ) noexcept;
|
||||||
bool setStep( const float v ) noexcept;
|
bool setStep( const float v ) noexcept;
|
||||||
|
@ -52,6 +60,8 @@ class T_Float : public A_Float
|
||||||
public:
|
public:
|
||||||
T_Float( T_String const& input ,
|
T_Float( T_String const& input ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 2 float values
|
// 2 float values
|
||||||
|
@ -65,6 +75,8 @@ class T_Float2 : public A_Float
|
||||||
T_Float2( T_String const& input0 ,
|
T_Float2( T_String const& input0 ,
|
||||||
T_String const& input1 ,
|
T_String const& input1 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 3 float values
|
// 3 float values
|
||||||
|
@ -79,6 +91,8 @@ class T_Float3 : public A_Float
|
||||||
T_String const& input1 ,
|
T_String const& input1 ,
|
||||||
T_String const& input2 ,
|
T_String const& input2 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 4 float values
|
// 4 float values
|
||||||
|
@ -94,6 +108,8 @@ class T_Float4 : public A_Float
|
||||||
T_String const& input2 ,
|
T_String const& input2 ,
|
||||||
T_String const& input3 ,
|
T_String const& input3 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -114,10 +130,16 @@ class A_Integer : public A_SyncOverride
|
||||||
: A_SyncOverride( type , title )
|
: A_SyncOverride( type , title )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public:
|
void copyTo( A_Integer& other ) const noexcept
|
||||||
A_Integer( T_String const& input ,
|
{
|
||||||
T_String const& title ) noexcept;
|
other.min_ = min_;
|
||||||
|
other.max_ = max_;
|
||||||
|
other.step_ = step_;
|
||||||
|
other.slider_ = slider_;
|
||||||
|
other.location( ) = location( );
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
bool setMin( const int32_t v ) noexcept;
|
bool setMin( const int32_t v ) noexcept;
|
||||||
bool setMax( const int32_t v ) noexcept;
|
bool setMax( const int32_t v ) noexcept;
|
||||||
bool setStep( const float v ) noexcept;
|
bool setStep( const float v ) noexcept;
|
||||||
|
@ -140,6 +162,8 @@ class T_Integer : public A_Integer
|
||||||
public:
|
public:
|
||||||
T_Integer( T_String const& input ,
|
T_Integer( T_String const& input ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 2 integers
|
// 2 integers
|
||||||
|
@ -153,6 +177,8 @@ class T_Integer2 : public A_Integer
|
||||||
T_Integer2( T_String const& input0 ,
|
T_Integer2( T_String const& input0 ,
|
||||||
T_String const& input1 ,
|
T_String const& input1 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 3 integers
|
// 3 integers
|
||||||
|
@ -167,6 +193,8 @@ class T_Integer3 : public A_Integer
|
||||||
T_String const& input1 ,
|
T_String const& input1 ,
|
||||||
T_String const& input2 ,
|
T_String const& input2 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
// 4 integers
|
// 4 integers
|
||||||
|
@ -182,6 +210,8 @@ class T_Integer4 : public A_Integer
|
||||||
T_String const& input2 ,
|
T_String const& input2 ,
|
||||||
T_String const& input3 ,
|
T_String const& input3 ,
|
||||||
T_String const& title ) noexcept;
|
T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,6 +239,8 @@ class T_ColorGrading : public A_SyncOverride
|
||||||
|
|
||||||
float base( ) const noexcept { return base_ ? *base_ : 0.f; }
|
float base( ) const noexcept { return base_ ? *base_ : 0.f; }
|
||||||
float unit( ) const noexcept { return unit_ ? *unit_ : 1.f; }
|
float unit( ) const noexcept { return unit_ ? *unit_ : 1.f; }
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -272,6 +304,8 @@ class T_CamOverride : public A_SyncOverride , public virtual A_MouseCtrl
|
||||||
public:
|
public:
|
||||||
T_CamOverride( T_String const& title ) noexcept;
|
T_CamOverride( T_String const& title ) noexcept;
|
||||||
|
|
||||||
|
P_SyncOverride clone( ) const noexcept override;
|
||||||
|
|
||||||
E_SetState setFieldOfView(
|
E_SetState setFieldOfView(
|
||||||
T_String const& input ) noexcept;
|
T_String const& input ) noexcept;
|
||||||
E_SetState setNearPlane(
|
E_SetState setNearPlane(
|
||||||
|
|
Loading…
Reference in a new issue