mirror of
https://github.com/Garux/netradiant-custom.git
synced 2026-09-28 00:00:03 +02:00
fix some warnings
This commit is contained in:
@@ -116,7 +116,7 @@ ifeq ($(OS),Windows_NT)
|
||||
OS = Win32
|
||||
endif
|
||||
|
||||
CFLAGS_COMMON = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -fno-strict-aliasing
|
||||
CFLAGS_COMMON = -MMD -W -Wall -Wcast-align -Wcast-qual -Wno-unused-parameter -Wno-unused-function -fno-strict-aliasing
|
||||
CPPFLAGS_COMMON =
|
||||
LDFLAGS_COMMON =
|
||||
LIBS_COMMON =
|
||||
@@ -630,7 +630,13 @@ libpicomodel.$(A): \
|
||||
libs/picomodel/pm_terrain.o \
|
||||
|
||||
$(INSTALLDIR)/libassimp_.$(DLL): LIBS_EXTRA := $(LIBS_ZLIB)
|
||||
$(INSTALLDIR)/libassimp_.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_ZLIB) -Ilibs/assimp/include -Ilibs/assimp/code -Ilibs/assimp/contrib/pugixml/src -Ilibs/assimp/contrib/unzip -Ilibs/assimp -Ilibs/assimp/contrib/openddlparser/include -Ilibs/assimp/contrib/rapidjson/include -Ilibs/assimp/contrib -DASSIMP_BUILD_DLL_EXPORT -DASSIMP_BUILD_NO_C4D_IMPORTER -DASSIMP_BUILD_NO_EXPORT -DASSIMP_BUILD_NO_IFC_IMPORTER -DASSIMP_BUILD_NO_OWN_ZLIB -DASSIMP_IMPORTER_GLTF_USE_OPEN3DGC=1 -DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0 -DOPENDDLPARSER_BUILD -DRAPIDJSON_HAS_STDSTRING=1 -DRAPIDJSON_NOMEMBERITERATORCLASS -DWIN32_LEAN_AND_MEAN -Dassimp_EXPORTS -fvisibility=hidden -Wno-long-long -fexceptions -frtti
|
||||
$(INSTALLDIR)/libassimp_.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_ZLIB) \
|
||||
-Ilibs/assimp/include -Ilibs/assimp/code -Ilibs/assimp/contrib/pugixml/src -Ilibs/assimp/contrib/unzip \
|
||||
-Ilibs/assimp -Ilibs/assimp/contrib/openddlparser/include -Ilibs/assimp/contrib/rapidjson/include -Ilibs/assimp/contrib \
|
||||
-DASSIMP_BUILD_DLL_EXPORT -DASSIMP_BUILD_NO_C4D_IMPORTER -DASSIMP_BUILD_NO_EXPORT -DASSIMP_BUILD_NO_IFC_IMPORTER \
|
||||
-DASSIMP_BUILD_NO_OWN_ZLIB -DASSIMP_IMPORTER_GLTF_USE_OPEN3DGC=1 -DMINIZ_USE_UNALIGNED_LOADS_AND_STORES=0 -DOPENDDLPARSER_BUILD \
|
||||
-DRAPIDJSON_HAS_STDSTRING=1 -DRAPIDJSON_NOMEMBERITERATORCLASS -DWIN32_LEAN_AND_MEAN -Dassimp_EXPORTS \
|
||||
-fvisibility=hidden -Wno-long-long -fexceptions -frtti -Wno-cast-qual
|
||||
$(INSTALLDIR)/libassimp_.$(DLL): \
|
||||
libs/assimp/code/Common/Assimp.o \
|
||||
libs/assimp/code/CApi/CInterfaceIOWrapper.o \
|
||||
@@ -1146,7 +1152,7 @@ $(INSTALLDIR)/plugins/sunplug.$(DLL): \
|
||||
contrib/sunplug/sunplug.o \
|
||||
|
||||
$(INSTALLDIR)/qdata3.$(EXE): LIBS_EXTRA := $(LIBS_XML)
|
||||
$(INSTALLDIR)/qdata3.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude
|
||||
$(INSTALLDIR)/qdata3.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude -Wno-format-overflow
|
||||
$(INSTALLDIR)/qdata3.$(EXE): \
|
||||
tools/quake2/common/bspfile.o \
|
||||
tools/quake2/common/cmdlib.o \
|
||||
@@ -1170,7 +1176,7 @@ $(INSTALLDIR)/qdata3.$(EXE): \
|
||||
$(if $(findstring Win32,$(OS)),icons/qdata3.o,) \
|
||||
|
||||
$(INSTALLDIR)/q2map.$(EXE): LIBS_EXTRA := $(LIBS_XML)
|
||||
$(INSTALLDIR)/q2map.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude
|
||||
$(INSTALLDIR)/q2map.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/common -Ilibs -Iinclude -Wno-format-overflow
|
||||
$(INSTALLDIR)/q2map.$(EXE): \
|
||||
tools/quake2/common/bspfile.o \
|
||||
tools/quake2/common/cmdlib.o \
|
||||
@@ -1240,7 +1246,8 @@ $(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): \
|
||||
contrib/bkgrnd2d/plugin.o \
|
||||
|
||||
$(INSTALLDIR)/h2data.$(EXE): LIBS_EXTRA := $(LIBS_XML)
|
||||
$(INSTALLDIR)/h2data.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/qdata_heretic2/common -Itools/quake2/qdata_heretic2/qcommon -Itools/quake2/qdata_heretic2 -Itools/quake2/common -Ilibs -Iinclude
|
||||
$(INSTALLDIR)/h2data.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Wno-format-overflow \
|
||||
-Itools/quake2/qdata_heretic2/common -Itools/quake2/qdata_heretic2/qcommon -Itools/quake2/qdata_heretic2 -Itools/quake2/common -Ilibs -Iinclude
|
||||
$(INSTALLDIR)/h2data.$(EXE): \
|
||||
tools/quake2/qdata_heretic2/common/bspfile.o \
|
||||
tools/quake2/qdata_heretic2/common/cmdlib.o \
|
||||
@@ -1275,7 +1282,7 @@ $(INSTALLDIR)/h2data.$(EXE): \
|
||||
libl_net.$(A) \
|
||||
$(if $(findstring Win32,$(OS)),icons/h2data.o,) \
|
||||
|
||||
$(INSTALLDIR)/mbspc.$(EXE): CPPFLAGS_EXTRA := -Wstrict-prototypes -DNDEBUG -DBSPC -DBSPCINCLUDE -Ilibs
|
||||
$(INSTALLDIR)/mbspc.$(EXE): CPPFLAGS_EXTRA := -Wstrict-prototypes -Wno-format-overflow -DNDEBUG -DBSPC -DBSPCINCLUDE -Ilibs
|
||||
$(INSTALLDIR)/mbspc.$(EXE): \
|
||||
tools/mbspc/botlib/be_aas_bspq3.o \
|
||||
tools/mbspc/botlib/be_aas_cluster.o \
|
||||
|
||||
+8
-8
@@ -93,7 +93,7 @@ public:
|
||||
};
|
||||
|
||||
/// \brief An ArchiveFile which is stored uncompressed as part of a larger archive file.
|
||||
class StoredArchiveFile : public ArchiveFile
|
||||
class StoredArchiveFile final : public ArchiveFile
|
||||
{
|
||||
CopiedString m_name;
|
||||
FileInputStream m_filestream;
|
||||
@@ -111,22 +111,22 @@ public:
|
||||
return New<StoredArchiveFile>().scalar( name, archiveName, position, stream_size, file_size );
|
||||
}
|
||||
|
||||
void release(){
|
||||
void release() override {
|
||||
Delete<StoredArchiveFile>().scalar( this );
|
||||
}
|
||||
size_type size() const {
|
||||
size_type size() const override {
|
||||
return m_size;
|
||||
}
|
||||
const char* getName() const {
|
||||
const char* getName() const override {
|
||||
return m_name.c_str();
|
||||
}
|
||||
InputStream& getInputStream(){
|
||||
InputStream& getInputStream() override {
|
||||
return m_substream;
|
||||
}
|
||||
};
|
||||
|
||||
/// \brief An ArchiveTextFile which is stored uncompressed as part of a larger archive file.
|
||||
class StoredArchiveTextFile : public ArchiveTextFile
|
||||
class StoredArchiveTextFile final : public ArchiveTextFile
|
||||
{
|
||||
CopiedString m_name;
|
||||
FileInputStream m_filestream;
|
||||
@@ -144,13 +144,13 @@ public:
|
||||
return New<StoredArchiveTextFile>().scalar( name, archiveName, position, stream_size );
|
||||
}
|
||||
|
||||
void release(){
|
||||
void release() override {
|
||||
Delete<StoredArchiveTextFile>().scalar( this );
|
||||
}
|
||||
const char* getName() const {
|
||||
return m_name.c_str();
|
||||
}
|
||||
TextInputStream& getInputStream(){
|
||||
TextInputStream& getInputStream() override {
|
||||
return m_textStream;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -65,7 +65,7 @@ class NullDependencies
|
||||
|
||||
|
||||
template<typename API, typename Dependencies = NullDependencies, typename APIConstructor = DefaultAPIConstructor<API, Dependencies> >
|
||||
class SingletonModule : public APIConstructor, public Module, public ModuleRegisterable
|
||||
class SingletonModule final : public APIConstructor, public Module, public ModuleRegisterable
|
||||
{
|
||||
Dependencies* m_dependencies;
|
||||
API* m_api;
|
||||
@@ -85,20 +85,20 @@ public:
|
||||
ASSERT_MESSAGE( m_refcount == 0, "module still referenced at shutdown" );
|
||||
}
|
||||
|
||||
void selfRegister(){
|
||||
void selfRegister() override {
|
||||
globalModuleServer().registerModule( Type::Name, Type::Version, APIConstructor::getName(), *this );
|
||||
}
|
||||
|
||||
Dependencies& getDependencies(){
|
||||
return *m_dependencies;
|
||||
}
|
||||
void* getTable(){
|
||||
void* getTable() override {
|
||||
if ( m_api != 0 ) {
|
||||
return m_api->getTable();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
void capture(){
|
||||
void capture() override {
|
||||
if ( ++m_refcount == 1 ) {
|
||||
globalOutputStream() << "Module Initialising: '" << Type::Name << "' '" << APIConstructor::getName() << "'\n";
|
||||
m_dependencies = new Dependencies();
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
|
||||
ASSERT_MESSAGE( m_cycleCheck, "cyclic dependency detected" );
|
||||
}
|
||||
void release(){
|
||||
void release() override {
|
||||
if ( --m_refcount == 0 ) {
|
||||
if ( m_dependencyCheck ) {
|
||||
APIConstructor::destroyAPI( m_api );
|
||||
|
||||
+5
-5
@@ -34,15 +34,15 @@ public:
|
||||
: m_selected( false )
|
||||
{}
|
||||
|
||||
void setSelected( bool select = true ){
|
||||
void setSelected( bool select = true ) override {
|
||||
m_selected = select;
|
||||
}
|
||||
bool isSelected() const {
|
||||
bool isSelected() const override {
|
||||
return m_selected;
|
||||
}
|
||||
};
|
||||
|
||||
class ObservedSelectable : public Selectable
|
||||
class ObservedSelectable final : public Selectable
|
||||
{
|
||||
SelectionChangeCallback m_onchanged;
|
||||
bool m_selected;
|
||||
@@ -60,14 +60,14 @@ public:
|
||||
setSelected( false );
|
||||
}
|
||||
|
||||
void setSelected( bool select ){
|
||||
void setSelected( bool select ) override {
|
||||
if ( select ^ m_selected ) {
|
||||
m_selected = select;
|
||||
|
||||
m_onchanged( *this );
|
||||
}
|
||||
}
|
||||
bool isSelected() const {
|
||||
bool isSelected() const override {
|
||||
return m_selected;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ public:
|
||||
|
||||
/// \brief A TextOutputStream which writes to a StringBuffer.
|
||||
/// Similar to std::stringstream.
|
||||
class StringOutputStream : public TextOutputStream
|
||||
class StringOutputStream final : public TextOutputStream
|
||||
{
|
||||
StringBuffer m_string;
|
||||
public:
|
||||
@@ -106,7 +106,7 @@ public:
|
||||
}
|
||||
explicit StringOutputStream( std::size_t capacity ) : m_string( capacity ){
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
m_string.push_range( buffer, buffer + length );
|
||||
return length;
|
||||
}
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ class ObservedUndoableObject : public Undoable
|
||||
MapFile* m_map;
|
||||
public:
|
||||
|
||||
ObservedUndoableObject<Copyable>( Copyable & object, const ImportCallback &importCallback )
|
||||
ObservedUndoableObject( Copyable & object, const ImportCallback &importCallback )
|
||||
: m_object( object ), m_importCallback( importCallback ), m_undoQueue( 0 ), m_map( 0 )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#include "os/path.h"
|
||||
#include "stream/stringstream.h"
|
||||
|
||||
class VectorLightList : public LightList
|
||||
class VectorLightList final : public LightList
|
||||
{
|
||||
typedef std::vector<const RendererLight*> Lights;
|
||||
Lights m_lights;
|
||||
@@ -58,11 +58,11 @@ public:
|
||||
void clear(){
|
||||
m_lights.clear();
|
||||
}
|
||||
void evaluateLights() const {
|
||||
void evaluateLights() const override {
|
||||
}
|
||||
void lightsChanged() const {
|
||||
void lightsChanged() const override {
|
||||
}
|
||||
void forEachLight( const RendererLightCallback& callback ) const {
|
||||
void forEachLight( const RendererLightCallback& callback ) const override {
|
||||
for ( Lights::const_iterator i = m_lights.begin(); i != m_lights.end(); ++i )
|
||||
{
|
||||
callback( *( *i ) );
|
||||
|
||||
@@ -25,15 +25,18 @@
|
||||
|
||||
#include <list>
|
||||
|
||||
class EntityFilterWrapper : public Filter
|
||||
class EntityFilterWrapper final : public Filter
|
||||
{
|
||||
bool m_active;
|
||||
bool m_invert;
|
||||
EntityFilter& m_filter;
|
||||
public:
|
||||
EntityFilterWrapper( EntityFilter& filter, bool invert ) : m_invert( invert ), m_filter( filter ){
|
||||
EntityFilterWrapper( EntityFilter& filter, bool invert ) :
|
||||
m_active( false ), // suppress uninitialized warning
|
||||
m_invert( invert ),
|
||||
m_filter( filter ){
|
||||
}
|
||||
void setActive( bool active ){
|
||||
void setActive( bool active ) override {
|
||||
m_active = active;
|
||||
}
|
||||
bool active(){
|
||||
|
||||
+24
-24
@@ -66,27 +66,27 @@ public:
|
||||
virtual TreeXMLImporter& child() = 0;
|
||||
};
|
||||
|
||||
class SubPrimitiveImporter : public TreeXMLImporter
|
||||
class SubPrimitiveImporter final : public TreeXMLImporter
|
||||
{
|
||||
XMLImporter* m_importer;
|
||||
public:
|
||||
SubPrimitiveImporter( XMLImporter* importer ) : m_importer( importer ){
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
m_importer->pushElement( element );
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
m_importer->popElement( name );
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
return m_importer->write( buffer, length );
|
||||
}
|
||||
SubPrimitiveImporter& child(){
|
||||
SubPrimitiveImporter& child() override {
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
class PrimitiveImporter : public TreeXMLImporter
|
||||
class PrimitiveImporter final : public TreeXMLImporter
|
||||
{
|
||||
scene::Node& m_parent;
|
||||
XMLImporter* m_importer;
|
||||
@@ -98,7 +98,7 @@ class PrimitiveImporter : public TreeXMLImporter
|
||||
public:
|
||||
PrimitiveImporter( scene::Node& parent ) : m_parent( parent ), m_importer( 0 ){
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
if ( string_equal( element.name(), "epair" ) ) {
|
||||
ASSERT_MESSAGE( string_equal( element.name(), "epair" ), PARSE_ERROR );
|
||||
Node_getEntity( m_parent )->setKeyValue( element.attribute( "key" ), element.attribute( "value" ) );
|
||||
@@ -116,7 +116,7 @@ public:
|
||||
Node_getTraversable( m_parent )->insert( node );
|
||||
}
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
if ( string_equal( name, "epair" ) ) {
|
||||
}
|
||||
else
|
||||
@@ -127,15 +127,15 @@ public:
|
||||
m_importer = 0;
|
||||
}
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
return m_importer->write( buffer, length );
|
||||
}
|
||||
TreeXMLImporter& child(){
|
||||
TreeXMLImporter& child() override {
|
||||
return subprimitive();
|
||||
}
|
||||
};
|
||||
|
||||
class EntityImporter : public TreeXMLImporter
|
||||
class EntityImporter final : public TreeXMLImporter
|
||||
{
|
||||
scene::Node& m_parent;
|
||||
char m_node[sizeof( NodeSmartReference )];
|
||||
@@ -152,12 +152,12 @@ class EntityImporter : public TreeXMLImporter
|
||||
public:
|
||||
EntityImporter( scene::Node& parent, EntityCreator& entityTable ) : m_parent( parent ), m_entityTable( entityTable ){
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
ASSERT_MESSAGE( string_equal( element.name(), "entity" ), PARSE_ERROR );
|
||||
constructor( node(), NodeSmartReference( m_entityTable.createEntity( GlobalEntityClassManager().findOrInsert( "", true ) ) ) );
|
||||
constructor( primitive(), makeReference( node().get() ) );
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
ASSERT_MESSAGE( string_equal( name, "entity" ), PARSE_ERROR );
|
||||
NodeSmartReference entity( m_entityTable.createEntity( GlobalEntityClassManager().findOrInsert( Node_getEntity( node() )->getClassName(), node_is_group( node() ) ) ) );
|
||||
|
||||
@@ -175,15 +175,15 @@ public:
|
||||
destructor( primitive() );
|
||||
destructor( node() );
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
TreeXMLImporter& child(){
|
||||
TreeXMLImporter& child() override {
|
||||
return primitive();
|
||||
}
|
||||
};
|
||||
|
||||
class MapDoom3Importer : public TreeXMLImporter
|
||||
class MapDoom3Importer final : public TreeXMLImporter
|
||||
{
|
||||
scene::Node& m_root;
|
||||
char m_child[sizeof( EntityImporter )];
|
||||
@@ -195,38 +195,38 @@ class MapDoom3Importer : public TreeXMLImporter
|
||||
public:
|
||||
MapDoom3Importer( scene::Node& root, EntityCreator& entityTable ) : m_root( root ), m_entityTable( entityTable ){
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
ASSERT_MESSAGE( string_equal( element.name(), "mapdoom3" ), PARSE_ERROR );
|
||||
constructor( getEntity(), makeReference( m_root ), makeReference( m_entityTable ) );
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
ASSERT_MESSAGE( string_equal( name, "mapdoom3" ), PARSE_ERROR );
|
||||
destructor( getEntity() );
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
TreeXMLImporter& child(){
|
||||
TreeXMLImporter& child() override {
|
||||
return getEntity();
|
||||
}
|
||||
};
|
||||
|
||||
class TreeXMLImporterStack : public XMLImporter
|
||||
class TreeXMLImporterStack final : public XMLImporter
|
||||
{
|
||||
std::vector< Reference<TreeXMLImporter> > m_importers;
|
||||
public:
|
||||
TreeXMLImporterStack( TreeXMLImporter& importer ){
|
||||
m_importers.push_back( makeReference( importer ) );
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
m_importers.back().get().pushElement( element );
|
||||
m_importers.push_back( makeReference( m_importers.back().get().child() ) );
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
m_importers.pop_back();
|
||||
m_importers.back().get().popElement( name );
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
return ( *( m_importers.end() - 2 ) ).get().write( buffer, length );
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1046,7 +1046,7 @@ public:
|
||||
m_Name = name;
|
||||
}
|
||||
|
||||
class MapLayer : public ShaderLayer
|
||||
class MapLayer final : public ShaderLayer
|
||||
{
|
||||
qtexture_t* m_texture;
|
||||
BlendFunc m_blendFunc;
|
||||
@@ -1059,16 +1059,16 @@ public:
|
||||
m_clampToBorder( false ),
|
||||
m_alphaTest( alphaTest ){
|
||||
}
|
||||
qtexture_t* texture() const {
|
||||
qtexture_t* texture() const override {
|
||||
return m_texture;
|
||||
}
|
||||
BlendFunc blendFunc() const {
|
||||
BlendFunc blendFunc() const override {
|
||||
return m_blendFunc;
|
||||
}
|
||||
bool clampToBorder() const {
|
||||
bool clampToBorder() const override {
|
||||
return m_clampToBorder;
|
||||
}
|
||||
float alphaTest() const {
|
||||
float alphaTest() const override {
|
||||
return m_alphaTest;
|
||||
}
|
||||
};
|
||||
|
||||
+12
-8
@@ -318,17 +318,18 @@ void Brush::buildBRep(){
|
||||
}
|
||||
|
||||
|
||||
class FaceFilterWrapper : public Filter
|
||||
class FaceFilterWrapper final : public Filter
|
||||
{
|
||||
FaceFilter& m_filter;
|
||||
bool m_active;
|
||||
bool m_invert;
|
||||
FaceFilter& m_filter;
|
||||
public:
|
||||
FaceFilterWrapper( FaceFilter& filter, bool invert ) :
|
||||
m_filter( filter ),
|
||||
m_invert( invert ){
|
||||
m_active( false ), // suppress uninitialized warning
|
||||
m_invert( invert ),
|
||||
m_filter( filter ){
|
||||
}
|
||||
void setActive( bool active ){
|
||||
void setActive( bool active ) override {
|
||||
m_active = active;
|
||||
}
|
||||
bool active(){
|
||||
@@ -359,15 +360,18 @@ bool face_filtered( Face& face ){
|
||||
}
|
||||
|
||||
|
||||
class BrushFilterWrapper : public Filter
|
||||
class BrushFilterWrapper final : public Filter
|
||||
{
|
||||
bool m_active;
|
||||
bool m_invert;
|
||||
BrushFilter& m_filter;
|
||||
public:
|
||||
BrushFilterWrapper( BrushFilter& filter, bool invert ) : m_invert( invert ), m_filter( filter ){
|
||||
BrushFilterWrapper( BrushFilter& filter, bool invert ) :
|
||||
m_active( false ), // suppress uninitialized warning
|
||||
m_invert( invert ),
|
||||
m_filter( filter ){
|
||||
}
|
||||
void setActive( bool active ){
|
||||
void setActive( bool active ) override {
|
||||
m_active = active;
|
||||
}
|
||||
bool active(){
|
||||
|
||||
+7
-23
@@ -1492,16 +1492,12 @@ public:
|
||||
SelectableEdge( Faces& faces, FaceVertexId faceVertex )
|
||||
: m_faces( faces ), m_faceVertex( faceVertex ){
|
||||
}
|
||||
SelectableEdge& operator=( const SelectableEdge& other ){
|
||||
m_faceVertex = other.m_faceVertex;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Face& getFace() const {
|
||||
return *m_faces[m_faceVertex.getFace()];
|
||||
}
|
||||
|
||||
void testSelect( SelectionTest& test, SelectionIntersection& best ){
|
||||
void testSelect( SelectionTest& test, SelectionIntersection& best ) const {
|
||||
test.TestPoint( getEdge(), best );
|
||||
}
|
||||
};
|
||||
@@ -1519,10 +1515,6 @@ public:
|
||||
SelectableVertex( Faces& faces, FaceVertexId faceVertex )
|
||||
: m_faces( faces ), m_faceVertex( faceVertex ){
|
||||
}
|
||||
SelectableVertex& operator=( const SelectableVertex& other ){
|
||||
m_faceVertex = other.m_faceVertex;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Face& getFace() const {
|
||||
return *m_faces[m_faceVertex.getFace()];
|
||||
@@ -3142,7 +3134,7 @@ inline void Face_addLight( const FaceInstance& face, const Matrix4& localToWorld
|
||||
typedef std::vector<FaceInstance> FaceInstances;
|
||||
typedef std::vector<FaceInstance*> FaceInstances_ptrs;
|
||||
|
||||
class EdgeInstance : public Selectable
|
||||
class EdgeInstance final : public Selectable
|
||||
{
|
||||
FaceInstances& m_faceInstances;
|
||||
SelectableEdge* m_edge;
|
||||
@@ -3170,15 +3162,11 @@ public:
|
||||
EdgeInstance( FaceInstances& faceInstances, SelectableEdge& edge )
|
||||
: m_faceInstances( faceInstances ), m_edge( &edge ){
|
||||
}
|
||||
EdgeInstance& operator=( const EdgeInstance& other ){
|
||||
m_edge = other.m_edge;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void setSelected( bool select ){
|
||||
void setSelected( bool select ) override {
|
||||
select_edge( select );
|
||||
}
|
||||
bool isSelected() const {
|
||||
bool isSelected() const override {
|
||||
return selected_edge();
|
||||
}
|
||||
|
||||
@@ -3238,7 +3226,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class VertexInstance : public Selectable
|
||||
class VertexInstance final : public Selectable
|
||||
{
|
||||
FaceInstances& m_faceInstances;
|
||||
SelectableVertex* m_vertex;
|
||||
@@ -3269,15 +3257,11 @@ public:
|
||||
VertexInstance( FaceInstances& faceInstances, SelectableVertex& vertex )
|
||||
: m_faceInstances( faceInstances ), m_vertex( &vertex ){
|
||||
}
|
||||
VertexInstance& operator=( const VertexInstance& other ){
|
||||
m_vertex = other.m_vertex;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void setSelected( bool select ){
|
||||
void setSelected( bool select ) override {
|
||||
select_vertex( select );
|
||||
}
|
||||
bool isSelected() const {
|
||||
bool isSelected() const override {
|
||||
return selected_vertex();
|
||||
}
|
||||
|
||||
|
||||
@@ -378,12 +378,12 @@ void DoCommandListDlg(){
|
||||
auto commandLine = new QLineEdit;
|
||||
grid->addWidget( commandLine, 0, 0 );
|
||||
commandLine->setClearButtonEnabled( true );
|
||||
commandLine->setPlaceholderText( QString::fromUtf8( u8"🔍 by command name" ) );
|
||||
commandLine->setPlaceholderText( QString::fromUtf8( "🔍 by command name" ) );
|
||||
|
||||
auto keyLine = new QLineEdit;
|
||||
grid->addWidget( keyLine, 0, 1 );
|
||||
keyLine->setClearButtonEnabled( true );
|
||||
keyLine->setPlaceholderText( QString::fromUtf8( u8"🔍 by keys" ) );
|
||||
keyLine->setPlaceholderText( QString::fromUtf8( "🔍 by keys" ) );
|
||||
|
||||
const auto filter = [tree]( const int column, const QString& text ){
|
||||
for( QTreeWidgetItemIterator it( tree ); *it; ++it )
|
||||
|
||||
+32
-32
@@ -168,7 +168,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class BreakImporter : public TreeXMLImporter
|
||||
class BreakImporter final : public TreeXMLImporter
|
||||
{
|
||||
public:
|
||||
BreakImporter( StringOutputStream& comment ){
|
||||
@@ -177,19 +177,19 @@ public:
|
||||
static const char* name(){
|
||||
return "n";
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( element.name(), name() ) );
|
||||
return *this;
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, name() ) );
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
};
|
||||
|
||||
class AttributeImporter : public TreeXMLImporter
|
||||
class AttributeImporter final : public TreeXMLImporter
|
||||
{
|
||||
StringOutputStream& m_comment;
|
||||
|
||||
@@ -232,14 +232,14 @@ public:
|
||||
}
|
||||
~AttributeImporter(){
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( element.name(), "attribute" ) );
|
||||
return *this;
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, "attribute" ) );
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
CopiedString& desc = m_attribute->m_description;
|
||||
if( desc.empty() ){
|
||||
desc = StringRange( data, length );
|
||||
@@ -281,7 +281,7 @@ bool listAttributeSupported( ListAttributeTypes& listTypes, const char* name ){
|
||||
}
|
||||
|
||||
|
||||
class ClassImporter : public TreeXMLImporter
|
||||
class ClassImporter final : public TreeXMLImporter
|
||||
{
|
||||
EntityClassCollector& m_collector;
|
||||
EntityClass* m_eclass;
|
||||
@@ -329,7 +329,7 @@ public:
|
||||
static const char* name(){
|
||||
return "class";
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
if ( attributeSupported( element.name() ) || listAttributeSupported( m_listTypes, element.name() ) ) {
|
||||
constructor( m_attribute.get(), makeReference( m_comment ), m_eclass, element );
|
||||
return m_attribute.get();
|
||||
@@ -340,7 +340,7 @@ public:
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
if ( attributeSupported( elementName ) || listAttributeSupported( m_listTypes, elementName ) ) {
|
||||
destructor( m_attribute.get() );
|
||||
}
|
||||
@@ -349,12 +349,12 @@ public:
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, name() ) );
|
||||
}
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return m_comment.write( data, length );
|
||||
}
|
||||
};
|
||||
|
||||
class ItemImporter : public TreeXMLImporter
|
||||
class ItemImporter final : public TreeXMLImporter
|
||||
{
|
||||
public:
|
||||
ItemImporter( ListAttributeType& list, const XMLElement& element ){
|
||||
@@ -362,14 +362,14 @@ public:
|
||||
const char* value = element.attribute( "value" );
|
||||
list.push_back( name, value );
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( element.name(), "item" ) );
|
||||
return *this;
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, "item" ) );
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
};
|
||||
@@ -378,7 +378,7 @@ bool isItem( const char* name ){
|
||||
return string_equal( name, "item" );
|
||||
}
|
||||
|
||||
class ListAttributeImporter : public TreeXMLImporter
|
||||
class ListAttributeImporter final : public TreeXMLImporter
|
||||
{
|
||||
ListAttributeType* m_listType;
|
||||
Storage<ItemImporter> m_item;
|
||||
@@ -387,7 +387,7 @@ public:
|
||||
const char* name = element.attribute( "name" );
|
||||
m_listType = &listTypes[name];
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
if ( isItem( element.name() ) ) {
|
||||
constructor( m_item.get(), makeReference( *m_listType ), element );
|
||||
return m_item.get();
|
||||
@@ -398,7 +398,7 @@ public:
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
if ( isItem( elementName ) ) {
|
||||
destructor( m_item.get() );
|
||||
}
|
||||
@@ -407,7 +407,7 @@ public:
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, "list" ) );
|
||||
}
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
};
|
||||
@@ -421,7 +421,7 @@ bool listSupported( const char* name ){
|
||||
return string_equal( name, "list" );
|
||||
}
|
||||
|
||||
class ClassesImporter : public TreeXMLImporter
|
||||
class ClassesImporter final : public TreeXMLImporter
|
||||
{
|
||||
EntityClassCollector& m_collector;
|
||||
Storage<ClassImporter> m_class;
|
||||
@@ -434,7 +434,7 @@ public:
|
||||
static const char* name(){
|
||||
return "classes";
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
if ( classSupported( element.name() ) ) {
|
||||
constructor( m_class.get(), makeReference( m_collector ), makeReference( m_listTypes ), element );
|
||||
return m_class.get();
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
if ( classSupported( elementName ) ) {
|
||||
destructor( m_class.get() );
|
||||
}
|
||||
@@ -461,12 +461,12 @@ public:
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, name() ) );
|
||||
}
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
};
|
||||
|
||||
class EclassXMLImporter : public TreeXMLImporter
|
||||
class EclassXMLImporter final : public TreeXMLImporter
|
||||
{
|
||||
EntityClassCollector& m_collector;
|
||||
Storage<ClassesImporter> m_classes;
|
||||
@@ -477,7 +477,7 @@ public:
|
||||
static const char* name(){
|
||||
return "classes";
|
||||
}
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ){
|
||||
TreeXMLImporter& pushElement( const XMLElement& element ) override {
|
||||
if ( string_equal( element.name(), ClassesImporter::name() ) ) {
|
||||
constructor( m_classes.get(), makeReference( m_collector ) );
|
||||
return m_classes.get();
|
||||
@@ -488,7 +488,7 @@ public:
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
void popElement( const char* elementName ){
|
||||
void popElement( const char* elementName ) override {
|
||||
if ( string_equal( elementName, ClassesImporter::name() ) ) {
|
||||
destructor( m_classes.get() );
|
||||
}
|
||||
@@ -497,26 +497,26 @@ public:
|
||||
ERROR_MESSAGE( PARSE_ERROR( elementName, name() ) );
|
||||
}
|
||||
}
|
||||
std::size_t write( const char* data, std::size_t length ){
|
||||
std::size_t write( const char* data, std::size_t length ) override {
|
||||
return length;
|
||||
}
|
||||
};
|
||||
|
||||
class TreeXMLImporterStack : public XMLImporter
|
||||
class TreeXMLImporterStack final : public XMLImporter
|
||||
{
|
||||
std::vector< Reference<TreeXMLImporter> > m_importers;
|
||||
public:
|
||||
TreeXMLImporterStack( TreeXMLImporter& importer ){
|
||||
m_importers.push_back( makeReference( importer ) );
|
||||
}
|
||||
void pushElement( const XMLElement& element ){
|
||||
void pushElement( const XMLElement& element ) override {
|
||||
m_importers.push_back( makeReference( m_importers.back().get().pushElement( element ) ) );
|
||||
}
|
||||
void popElement( const char* name ){
|
||||
void popElement( const char* name ) override {
|
||||
m_importers.pop_back();
|
||||
m_importers.back().get().popElement( name );
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ){
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
return m_importers.back().get().write( buffer, length );
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1357,7 +1357,7 @@ QWidget* EntityInspector_constructWindow( QWidget* toplevel ){
|
||||
{
|
||||
auto b = g_focusToggleButton = new QToolButton;
|
||||
hbox->addWidget( b );
|
||||
b->setText( u8"👀" );
|
||||
b->setText( "👀" );
|
||||
b->setToolTip( "AutoFocus on Selection" );
|
||||
b->setCheckable( true );
|
||||
QObject::connect( b, &QAbstractButton::clicked, []( bool checked ){ if( checked ) FocusAllViews(); } );
|
||||
|
||||
+1
-1
@@ -1583,7 +1583,7 @@ class QLineEdit_search : public QLineEdit
|
||||
QPlainTextEdit& m_textEdit;
|
||||
public:
|
||||
QLineEdit_search( QPlainTextEdit& textEdit ) : m_textEdit( textEdit ){
|
||||
setPlaceholderText( QString::fromUtf8( u8"🔍" ) );
|
||||
setPlaceholderText( QString::fromUtf8( "🔍" ) );
|
||||
QObject::connect( this, &QLineEdit::textEdited, [this]( const QString &text ){
|
||||
// when typing, we do not want jumping to next occurence on each letter input, set cursor to selection start
|
||||
if( auto cursor = m_textEdit.textCursor(); cursor.hasSelection() ){
|
||||
|
||||
+6
-3
@@ -3278,15 +3278,18 @@ void Patch::createThickenedWall(const Patch& sourcePatch,
|
||||
}
|
||||
|
||||
|
||||
class PatchFilterWrapper : public Filter
|
||||
class PatchFilterWrapper final : public Filter
|
||||
{
|
||||
bool m_active;
|
||||
bool m_invert;
|
||||
PatchFilter& m_filter;
|
||||
public:
|
||||
PatchFilterWrapper( PatchFilter& filter, bool invert ) : m_invert( invert ), m_filter( filter ){
|
||||
PatchFilterWrapper( PatchFilter& filter, bool invert ) :
|
||||
m_active( false ), // suppress uninitialized warning
|
||||
m_invert( invert ),
|
||||
m_filter( filter ){
|
||||
}
|
||||
void setActive( bool active ){
|
||||
void setActive( bool active ) override {
|
||||
m_active = active;
|
||||
}
|
||||
bool active(){
|
||||
|
||||
+11
-11
@@ -320,7 +320,7 @@ const char* rootPath( const char* name ){
|
||||
}
|
||||
}
|
||||
|
||||
struct ModelResource : public Resource
|
||||
struct ModelResource final : public Resource
|
||||
{
|
||||
NodeSmartReference m_model;
|
||||
const CopiedString m_originalName;
|
||||
@@ -389,7 +389,7 @@ struct ModelResource : public Resource
|
||||
mapSave();
|
||||
}
|
||||
|
||||
bool load(){
|
||||
bool load() override {
|
||||
ASSERT_MESSAGE( realised(), "resource not realised" );
|
||||
if ( m_model == g_nullModel ) {
|
||||
loadModel();
|
||||
@@ -397,7 +397,7 @@ struct ModelResource : public Resource
|
||||
|
||||
return m_model != g_nullModel;
|
||||
}
|
||||
bool save(){
|
||||
bool save() override {
|
||||
if ( !mapSaved() ) {
|
||||
const char* moduleName = findModuleName( GetFileTypeRegistry(), MapFormat::Name, m_type.c_str() );
|
||||
if ( string_not_empty( moduleName ) ) {
|
||||
@@ -410,19 +410,19 @@ struct ModelResource : public Resource
|
||||
}
|
||||
return false;
|
||||
}
|
||||
void flush(){
|
||||
void flush() override {
|
||||
if ( realised() ) {
|
||||
ModelCache_flush( m_path.c_str(), m_name.c_str() );
|
||||
}
|
||||
}
|
||||
scene::Node* getNode(){
|
||||
scene::Node* getNode() override {
|
||||
//if(m_model != g_nullModel)
|
||||
{
|
||||
return m_model.get_pointer();
|
||||
}
|
||||
//return 0;
|
||||
}
|
||||
void setNode( scene::Node* node ){
|
||||
void setNode( scene::Node* node ) override {
|
||||
ModelCache::iterator i = ModelCache_find( m_path.c_str(), m_name.c_str() );
|
||||
if ( i != g_modelCache.end() ) {
|
||||
( *i ).value = NodeSmartReference( *node );
|
||||
@@ -431,13 +431,13 @@ struct ModelResource : public Resource
|
||||
|
||||
connectMap();
|
||||
}
|
||||
void attach( ModuleObserver& observer ){
|
||||
void attach( ModuleObserver& observer ) override {
|
||||
if ( realised() ) {
|
||||
observer.realise();
|
||||
}
|
||||
m_observers.attach( observer );
|
||||
}
|
||||
void detach( ModuleObserver& observer ){
|
||||
void detach( ModuleObserver& observer ) override {
|
||||
if ( realised() ) {
|
||||
observer.unrealise();
|
||||
}
|
||||
@@ -446,7 +446,7 @@ struct ModelResource : public Resource
|
||||
bool realised(){
|
||||
return m_unrealised == 0;
|
||||
}
|
||||
void realise(){
|
||||
void realise() override {
|
||||
ASSERT_MESSAGE( m_unrealised != 0, "ModelResource::realise: already realised" );
|
||||
if ( --m_unrealised == 0 ) {
|
||||
m_path = rootPath( m_originalName.c_str() );
|
||||
@@ -457,7 +457,7 @@ struct ModelResource : public Resource
|
||||
m_observers.realise();
|
||||
}
|
||||
}
|
||||
void unrealise(){
|
||||
void unrealise() override {
|
||||
if ( ++m_unrealised == 1 ) {
|
||||
m_observers.unrealise();
|
||||
|
||||
@@ -496,7 +496,7 @@ struct ModelResource : public Resource
|
||||
&& m_modified != modified() ) // AND disk timestamp changed
|
||||
|| !path_equal( rootPath( m_originalName.c_str() ), m_path.c_str() ) ); // OR absolute vfs-root changed
|
||||
}
|
||||
void refresh(){
|
||||
void refresh() override {
|
||||
if ( isModified() ) {
|
||||
flush();
|
||||
unrealise();
|
||||
|
||||
+15
-15
@@ -2336,9 +2336,9 @@ public:
|
||||
}
|
||||
bool isSelected() const override {
|
||||
return m_selectable_x.isSelected()
|
||||
| m_selectable_y.isSelected()
|
||||
| m_selectable_z.isSelected()
|
||||
| m_selectable_screen.isSelected();
|
||||
|| m_selectable_y.isSelected()
|
||||
|| m_selectable_z.isSelected()
|
||||
|| m_selectable_screen.isSelected();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -2489,9 +2489,9 @@ public:
|
||||
}
|
||||
bool isSelected() const override {
|
||||
return m_selectable_x.isSelected()
|
||||
| m_selectable_y.isSelected()
|
||||
| m_selectable_z.isSelected()
|
||||
| m_selectable_screen.isSelected();
|
||||
|| m_selectable_y.isSelected()
|
||||
|| m_selectable_z.isSelected()
|
||||
|| m_selectable_screen.isSelected();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7678,8 +7678,8 @@ public:
|
||||
bool endMove();
|
||||
void freezeTransforms();
|
||||
|
||||
void renderSolid( Renderer& renderer, const VolumeTest& volume ) const;
|
||||
void renderWireframe( Renderer& renderer, const VolumeTest& volume ) const {
|
||||
void renderSolid( Renderer& renderer, const VolumeTest& volume ) const override;
|
||||
void renderWireframe( Renderer& renderer, const VolumeTest& volume ) const override {
|
||||
renderSolid( renderer, volume );
|
||||
}
|
||||
|
||||
@@ -8592,7 +8592,7 @@ public:
|
||||
m_manipulator( m_epsilon, m_state ),
|
||||
m_texmanipulator( m_epsilon, m_state ){
|
||||
}
|
||||
void release(){
|
||||
void release() override {
|
||||
delete this;
|
||||
}
|
||||
void setView( const View& view ) override {
|
||||
@@ -8606,12 +8606,12 @@ public:
|
||||
void updateEpsilon(){
|
||||
m_epsilon = DeviceVector( g_SELECT_EPSILON / static_cast<float>( m_width ), g_SELECT_EPSILON / static_cast<float>( m_height ) );
|
||||
}
|
||||
void onSizeChanged( int width, int height ){
|
||||
void onSizeChanged( int width, int height ) override {
|
||||
m_width = width;
|
||||
m_height = height;
|
||||
updateEpsilon();
|
||||
}
|
||||
void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
|
||||
void onMouseDown( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ) override {
|
||||
updateEpsilon(); /* could have changed, as it is user setting */
|
||||
|
||||
const DeviceVector devicePosition( device( position ) );
|
||||
@@ -8649,7 +8649,7 @@ public:
|
||||
m_moveStart = devicePosition;
|
||||
m_movePressed = 0.f;
|
||||
}
|
||||
void onMouseMotion( const WindowVector& position, ModifierFlags modifiers ){
|
||||
void onMouseMotion( const WindowVector& position, ModifierFlags modifiers ) override {
|
||||
m_selector.m_mouseMoved = mouse_moved_epsilon( position, m_moveEnd, m_move );
|
||||
if ( m_mouse_down && !g_mouseMovedCallback.empty() ) {
|
||||
m_manipulator.m_mouseMovedWhilePressed = m_selector.m_mouseMovedWhilePressed = mouse_moved_epsilon( position, m_moveStart, m_movePressed );
|
||||
@@ -8659,7 +8659,7 @@ public:
|
||||
m_manipulator.highlight( device( position ) );
|
||||
}
|
||||
}
|
||||
void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ){
|
||||
void onMouseUp( const WindowVector& position, ButtonIdentifier button, ModifierFlags modifiers ) override {
|
||||
if ( ( button == c_button_select || button == c_button_select2 || button == c_button_texture ) && !g_mouseUpCallback.empty() ) {
|
||||
g_mouseUpCallback.get() ( device( position ) );
|
||||
m_mouse_down = false;
|
||||
@@ -8683,11 +8683,11 @@ public:
|
||||
m_moveEnd = device( position );
|
||||
m_move = 0.f;
|
||||
}
|
||||
void onModifierDown( ModifierFlags type ){
|
||||
void onModifierDown( ModifierFlags type ) override {
|
||||
g_modifiers = m_state = bitfield_enable( m_state, type );
|
||||
m_selector.setState( m_state );
|
||||
}
|
||||
void onModifierUp( ModifierFlags type ){
|
||||
void onModifierUp( ModifierFlags type ) override {
|
||||
g_modifiers = m_state = bitfield_disable( m_state, type );
|
||||
m_selector.setState( m_state );
|
||||
}
|
||||
|
||||
@@ -51,7 +51,13 @@ const char* node_get_name( scene::Node& node ){
|
||||
}
|
||||
|
||||
const char* node_get_name_safe( scene::Node& node ){
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 650
|
||||
// https://github.com/TTimo/GtkRadiant/issues/289
|
||||
// Reference cannot be bound to dereferenced null pointer in well-defined
|
||||
// C++ code, and Clang will assume that comparison below always evaluates
|
||||
// to true, resulting in a segmentation fault. Use a dirty hack to force
|
||||
// Clang to check those "bad" references for null nonetheless.
|
||||
// At least here check is vital , 0 is g_null_node
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 54
|
||||
if ( n == 0 ) {
|
||||
return "";
|
||||
}
|
||||
@@ -59,7 +65,7 @@ const char* node_get_name_safe( scene::Node& node ){
|
||||
}
|
||||
|
||||
void node_attach_name_changed_callback( scene::Node& node, const NameCallback& callback ){
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 650
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 54
|
||||
if ( n != 0 ) {
|
||||
Nameable* nameable = Node_getNameable( node );
|
||||
if ( nameable != 0 ) {
|
||||
@@ -68,7 +74,7 @@ void node_attach_name_changed_callback( scene::Node& node, const NameCallback& c
|
||||
}
|
||||
}
|
||||
void node_detach_name_changed_callback( scene::Node& node, const NameCallback& callback ){
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 650
|
||||
volatile intptr_t n = (intptr_t)&node; // see the comment on line 54
|
||||
if ( n != 0 ) {
|
||||
Nameable* nameable = Node_getNameable( node );
|
||||
if ( nameable != 0 ) {
|
||||
|
||||
@@ -62,7 +62,7 @@ void Log_Open(char *filename)
|
||||
printf("can't open the log file %s\n", filename);
|
||||
return;
|
||||
} //end if
|
||||
strncpy(logfile.filename, filename, MAX_LOGFILENAMESIZE);
|
||||
strncpy(logfile.filename, filename, MAX_LOGFILENAMESIZE - 1);
|
||||
printf("Opened log %s\n", logfile.filename);
|
||||
} //end of the function Log_Create
|
||||
//===========================================================================
|
||||
|
||||
@@ -590,7 +590,7 @@ int main( int argc, char **argv ){
|
||||
}
|
||||
else if ( !strcmp( argv[ i ], "-game" ) ) {
|
||||
i++;
|
||||
strncpy( game, argv[ i ], 64 );
|
||||
strncpy( game, argv[ i ], sizeof( game ) - 1 );
|
||||
strLower( game );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ void ntrerror( char *s ){
|
||||
double *allocVect( int sz ){
|
||||
double *ret;
|
||||
|
||||
ret = calloc( sizeof( double ), (size_t)sz );
|
||||
ret = calloc( (size_t)sz, sizeof( double ) );
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ void freeVect( double *ret ){
|
||||
double **allocMatrix( int r,int c ){
|
||||
double **ret;
|
||||
|
||||
ret = calloc( sizeof( double ), (size_t)( r * c ) );
|
||||
ret = calloc( (size_t)( r * c ), sizeof( double ) );
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -323,7 +323,7 @@ void DOsvd( float *a,float *res,float *comp,float *values,int nframes,int frames
|
||||
|
||||
svdcmp( da,usedfs,nframes,w,v );
|
||||
|
||||
remap = calloc( sizeof( int ), (size_t)nframes );
|
||||
remap = calloc( (size_t)nframes, sizeof( int ) );
|
||||
|
||||
|
||||
for ( i = 0; i < nframes; i++ )
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
/// \brief A TextOutputStream which writes to a null terminated fixed length char array.
|
||||
/// Similar to std::stringstream.
|
||||
template<std::size_t SIZE>
|
||||
class StringFixedSize : public TextOutputStream
|
||||
class StringFixedSize final : public TextOutputStream
|
||||
{
|
||||
char m_string[SIZE];
|
||||
std::size_t m_length;
|
||||
|
||||
@@ -285,15 +285,15 @@ const image_t *ImageLoad( const char *name ){
|
||||
bool alphaHack = false;
|
||||
|
||||
/* attempt to load various formats */
|
||||
if ( sprintf( filename, "%s.tga", name ); buffer = vfsLoadFile( filename ) ) // StripExtension( name ); already
|
||||
if ( sprintf( filename, "%s.tga", name ); ( buffer = vfsLoadFile( filename ) ) ) // StripExtension( name ); already
|
||||
{
|
||||
LoadTGABuffer( buffer.data(), buffer.size(), &pixels, &width, &height );
|
||||
}
|
||||
else if( path_set_extension( filename, ".png" ); buffer = vfsLoadFile( filename ) )
|
||||
else if( path_set_extension( filename, ".png" ); ( buffer = vfsLoadFile( filename ) ) )
|
||||
{
|
||||
LoadPNGBuffer( buffer.data(), buffer.size(), &pixels, &width, &height );
|
||||
}
|
||||
else if( path_set_extension( filename, ".jpg" ); buffer = vfsLoadFile( filename ) )
|
||||
else if( path_set_extension( filename, ".jpg" ); ( buffer = vfsLoadFile( filename ) ) )
|
||||
{
|
||||
if ( LoadJPGBuff( buffer.data(), buffer.size(), &pixels, &width, &height ) == -1 && pixels != nullptr ) {
|
||||
// On error, LoadJPGBuff might store a pointer to the error message in pixels
|
||||
@@ -302,7 +302,7 @@ const image_t *ImageLoad( const char *name ){
|
||||
}
|
||||
alphaHack = true;
|
||||
}
|
||||
else if( path_set_extension( filename, ".dds" ); buffer = vfsLoadFile( filename ) )
|
||||
else if( path_set_extension( filename, ".dds" ); ( buffer = vfsLoadFile( filename ) ) )
|
||||
{
|
||||
LoadDDSBuffer( buffer.data(), buffer.size(), &pixels, &width, &height );
|
||||
/* debug code */
|
||||
@@ -318,7 +318,7 @@ const image_t *ImageLoad( const char *name ){
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else if( path_set_extension( filename, ".ktx" ); buffer = vfsLoadFile( filename ) )
|
||||
else if( path_set_extension( filename, ".ktx" ); ( buffer = vfsLoadFile( filename ) ) )
|
||||
{
|
||||
LoadKTXBufferFirstImage( buffer.data(), buffer.size(), &pixels, &width, &height );
|
||||
}
|
||||
@@ -334,7 +334,7 @@ const image_t *ImageLoad( const char *name ){
|
||||
image_t& image = *images.emplace_after( images.cbegin(), name, filename, width, height, pixels );
|
||||
|
||||
if ( alphaHack ) {
|
||||
if ( path_set_extension( filename, "_alpha.jpg" ); buffer = vfsLoadFile( filename ) ) {
|
||||
if ( path_set_extension( filename, "_alpha.jpg" ); ( buffer = vfsLoadFile( filename ) ) ) {
|
||||
if ( LoadJPGBuff( buffer.data(), buffer.size(), &pixels, &width, &height ) == -1 ) {
|
||||
if ( pixels ) {
|
||||
// On error, LoadJPGBuff might store a pointer to the error message in pixels
|
||||
|
||||
@@ -436,6 +436,8 @@ void ClipTraceWinding( traceWinding_t *tw, const Plane3f& plane, traceWinding_t
|
||||
front->v[ front->numVerts++ ] = *a;
|
||||
back->v[ back->numVerts++ ] = *a;
|
||||
continue;
|
||||
case eSideCross: // unused here, suppress warning
|
||||
break;
|
||||
}
|
||||
|
||||
/* check next point to see if we need to split the edge */
|
||||
|
||||
@@ -3901,7 +3901,7 @@ static void FloodLightRawLightmapPass( rawLightmap_t *lm, Vector3& lmFloodLightR
|
||||
// int sx, sy;
|
||||
// float samples, average, *floodlight2;
|
||||
|
||||
memset( &trace,0,sizeof( trace_t ) );
|
||||
memset( &trace, 0, sizeof( trace_t ) );
|
||||
|
||||
/* setup trace */
|
||||
trace.testOcclusion = true;
|
||||
|
||||
@@ -190,7 +190,7 @@ struct ModelNameFrame
|
||||
};
|
||||
struct AssModel
|
||||
{
|
||||
struct AssModelMesh : public AssMeshWalker
|
||||
struct AssModelMesh final : public AssMeshWalker
|
||||
{
|
||||
const aiMesh *m_mesh;
|
||||
CopiedString m_shader;
|
||||
|
||||
@@ -87,7 +87,7 @@ int c_broken;
|
||||
====================
|
||||
*/
|
||||
static void InsertPointOnEdge( const Vector3 &v, edgeLine_t& e ) {
|
||||
const edgePoint_t p = { .intercept = vector3_dot( v - e.origin, e.dir ), .xyz = v };
|
||||
const edgePoint_t p = { .intercept = static_cast<float>( vector3_dot( v - e.origin, e.dir ) ), .xyz = v };
|
||||
|
||||
for ( auto it = e.points.cbegin(); it != e.points.cend(); ++it ) {
|
||||
if ( float_equal_epsilon( p.intercept, it->intercept, LINE_POSITION_EPSILON ) ) {
|
||||
|
||||
Reference in New Issue
Block a user