| 82 | | /// A global pointer to the material manager that currently defaults to &MaterialManagerI::Get(). |
| 83 | | /// This pointer should be used by all code (e.g. models) that potentially is included in a DLL and should share the common Material Manager |
| 84 | | /// of another module (e.g. the main executable). As the DLL will during its initialization reset this pointer to the one provided by the |
| 85 | | /// executable, this goal is thus automatically achieved. |
| | 82 | /// A global pointer to an implementation of the MaterialManagerI interface. |
| | 83 | /// |
| | 84 | /// Each module (exe or dll) that uses this pointer must somewhere provide exactly one definition for it (none is provided by the MatSys). |
| | 85 | /// That is, typically the main.cpp or similar file of each exe and dll must contain a line like |
| | 86 | /// MaterialManagerI* MaterialManager=NULL; |
| | 87 | /// or else the module will not link successfully due to an undefined symbol. |
| | 88 | /// |
| | 89 | /// Exe files will then want to reset this pointer to an instance of a MaterialManagerImplT during their initialization |
| | 90 | /// e.g. by code like: MaterialManager=new MaterialManagerImplT; |
| | 91 | /// Note that the MaterialManagerImplT ctor may require that other interfaces (e.g. the Console) have been inited first. |
| | 92 | /// |
| | 93 | /// Dlls typically get one of their init functions called immediately after they have been loaded. |
| | 94 | /// By doing so, the exe passes a pointer to its above instance to the dll, which in turn copies it to its MaterialManager variable. |