Merge remote-tracking branch 'tmj/master' into sim

This commit is contained in:
milek7
2020-10-18 23:35:14 +02:00
244 changed files with 54164 additions and 11636 deletions

View File

@@ -11,7 +11,8 @@ http://mozilla.org/MPL/2.0/.
#include "scenenode.h"
#include "Model3d.h"
#include "opengl33renderer.h"
#include "renderer.h"
#include "parser.h"
#include "Logs.h"
#include "sn_utils.h"
@@ -71,7 +72,7 @@ shape_node::shapenode_data::serialize( std::ostream &Output ) const {
sn_utils::s_str(
Output,
( material != null_handle ?
GfxRenderer.Material( material ).name :
GfxRenderer->Material( material ).name :
"" ) );
lighting.serialize( Output );
// geometry
@@ -101,7 +102,7 @@ shape_node::shapenode_data::deserialize( std::istream &Input ) {
translucent = sn_utils::d_bool( Input );
auto const materialname { sn_utils::d_str( Input ) };
if( false == materialname.empty() ) {
material = GfxRenderer.Fetch_Material( materialname );
material = GfxRenderer->Fetch_Material( materialname );
}
lighting.deserialize( Input );
// geometry
@@ -191,17 +192,17 @@ shape_node::import( cParser &Input, scene::node_data const &Nodedata ) {
// assigned material
replace_slashes(token);
m_data.material = GfxRenderer.Fetch_Material( token );
m_data.material = GfxRenderer->Fetch_Material( token );
// determine way to proceed from the assigned diffuse texture
// TBT, TODO: add methods to material manager to access these simpler
auto const texturehandle = (
m_data.material != null_handle ?
GfxRenderer.Material( m_data.material ).textures[0] :
GfxRenderer->Material( m_data.material ).textures[0] :
null_handle );
auto const &texture = (
texturehandle ?
GfxRenderer.Texture( texturehandle ) :
GfxRenderer->Texture( texturehandle ) :
opengl_texture() ); // dirty workaround for lack of better api
bool const clamps = (
texturehandle ?
@@ -343,7 +344,7 @@ shape_node::convert( TSubModel const *Submodel ) {
m_data.lighting.diffuse = Submodel->f4Diffuse;
m_data.lighting.specular = Submodel->f4Specular;
m_data.material = Submodel->m_material;
m_data.translucent = ( GfxRenderer.Material( m_data.material ).get_or_guess_opacity() == 0.0f );
m_data.translucent = ( GfxRenderer->Material( m_data.material ).get_or_guess_opacity() == 0.0f );
// NOTE: we set unlimited view range typical for terrain, because we don't expect to convert any other 3d models
m_data.rangesquared_max = std::numeric_limits<double>::max();
@@ -352,7 +353,7 @@ shape_node::convert( TSubModel const *Submodel ) {
int vertexcount { 0 };
std::vector<world_vertex> importedvertices;
world_vertex vertex, vertex1, vertex2;
for( auto const &sourcevertex : GfxRenderer.Vertices( Submodel->m_geometry ) ) {
for( auto const &sourcevertex : GfxRenderer->Vertices( Submodel->m_geometry ) ) {
vertex.position = sourcevertex.position;
vertex.normal = sourcevertex.normal;
vertex.texture = sourcevertex.texture;
@@ -427,7 +428,7 @@ shape_node::create_geometry( gfx::geometrybank_handle const &Bank ) {
vertex.normal,
vertex.texture );
}
m_data.geometry = GfxRenderer.Insert( vertices, Bank, GL_TRIANGLES );
m_data.geometry = GfxRenderer->Insert( vertices, Bank, GL_TRIANGLES );
std::vector<world_vertex>().swap( m_data.vertices ); // hipster shrink_to_fit
}
@@ -656,7 +657,7 @@ lines_node::create_geometry( gfx::geometrybank_handle const &Bank ) {
vertex.normal,
vertex.texture );
}
m_data.geometry = GfxRenderer.Insert( vertices, Bank, GL_LINES );
m_data.geometry = GfxRenderer->Insert( vertices, Bank, GL_LINES );
std::vector<world_vertex>().swap( m_data.vertices ); // hipster shrink_to_fit
}
@@ -746,7 +747,7 @@ basic_node::export_as_text( std::ostream &Output ) const {
<< ' ' << ( m_rangesquaredmax < std::numeric_limits<double>::max() ? std::sqrt( m_rangesquaredmax ) : -1 )
<< ' ' << std::sqrt( m_rangesquaredmin )
// name
<< ' ' << ((m_name.length() > 0) ? m_name : "none") << ' ';
<< ' ' << ( m_name.empty() ? "none" : m_name ) << ' ';
// template method implementation
export_as_text_( Output );
}