mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-03-22 15:05:03 +01:00
Merge remote-tracking branch 'tmj/master' into sim
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user