Jump to content

[SOLVED] Materials::findMaterial()


photo

Recommended Posts

Добрый день, сотрудники компании Unigine.

Хочу сделать проверку, имеется-ли нужный мне материал. В документации во многих местах (например тут)  фигурирует код следующего плана:

MaterialPtr mat = Materials::findMaterial("имя_материала");

У меня-же этот код приводит к ошибке компилятора: "a non static member reference must be relative to a specific object". Добавил необходимый #include (согласно документации):

#include <UnigineMaterials.h>

и объявлен

using namespace Unigine;

Подскажите пожалуйста, в чём может быть проблема?

Link to comment
10 hours ago, rohit.gonsalves said:

Dear Nikolaj,

Are you sure? You have this error on the same line? 

Regards,

Rohit

Yes, Rohit. This is an example of my code where i get a compilation error (VS 2017):

MaterialPtr mat = Materials::findMaterial("water_mesh_base_0");

Screenshot of compile error:

image.png.c1b7f600c7e4fda33f64e8e8017879a3.png

Link to comment
44 minutes ago, silent said:

Hi Nikolaj,

Can you reproduce that in a default C++ sample from SDK Browser? SDK Browser -> Samples -> C++ -> Systems -> Materials? I can't find any issues as well:
image.png

Thanks, for the link on exaple in SDk Browser. From the example i got a variant that works well:

Materials *materials = Materials::get();
MaterialPtr mat = materials->findMaterial("water_mesh_base_0");

It's strange that this code: 

MaterialPtr mat = Materials::findMaterial("water_mesh_base_0");

doesn't work for me, but it works for you.

Edited by nikolaj.kormushkin
Link to comment
7 minutes ago, silent said:

Smart pointers behavior was redesigned in 2.10 and now ::get() is not required. It looks like you are still using pre-2.10 releases?

Thanks! Yes, i use 2.9.0.2 sdk version.

Link to comment
  • silent changed the title to [SOLVED] Materials::findMaterial()
×
×
  • Create New...