This is my EngineIncludes.h file:
#include <stdafx.h>
//Engine Includes
namespace Engine
{
    //Classes: 23
    class BaseObject;
    class Console;
    class Engine;
    class Node;
    template <class T> class Transform;
}
#include "core/BaseObject.h"
#include "core/Console.h"
#include "core/Engine.h"
#include "math/Transform.h"
#include "scene/Node.h"
//Global Objects
extern Engine::Console*             CONSOLE;
extern Engine::Engine*              CORE_ENGINE;
In stdafx.h I have regular stuff like OpenGL, std::map, boost... and I'm building a precompiled header as standard. This is the Node.h file:
#ifndef _NODE_H
#define _NODE_H
#include <stdafx.h>
#include <EngineIncludes.h>
namespace Engine
{
        class Node : public BaseObject
        {
        public:
            Node();
            ~Node();
            void SetParent(Node* parent);
            Node* GetParent();
            void SetTransform(const Transform<double> &transform);
            Transform<double> GetTransform();
            Transform<double> GetDerivedTransform();
            Transform<double> GetInheritedTransform();
            void Update();
        
        private:
            Transform<float>    transform;
            Transform<float>    derived;
            Node*               parent;
        };
 }
 #endif _NODE_H
I get 3 errors here. One C2504 that Engine::BaseObject is not defined. And two C2079 that both Transform transform and Transform use undefined class. Now this is the BaseObject.h:
 #ifndef _BASE_OBJECT_H
 #define _BASE_OBJECT_H
 #include "stdafx.h"
 #include "EngineIncludes.h"
 namespace Engine
 {
     class BaseObject
     {
     public:
         BaseObject()
         {
             id = CORE_ENGINE->GenerateID();
         }
         ~BaseObject()
         {
         }
         long GetID()
         {
             return id;
         }
         private:
            long id;
         };
     }
 #endif _BASE_OBJECT_H
Now I specifically fully defined BaseObject inside header file with no luck. Still the same error. But if I comment out forward declarations in EngineIncludes.h, the compiler freaks out with
extern Engine::Console*    CONSOLE;
It literally ignores all #includes for whatever reason. I've never had an issue like this before. And I tried everything. I even created EngineIncludes.cpp file. I moved the contents of EngineIncludes.h into stdafx.h with no luck. It somehow just ignores #includes. Even if I put #include "BaseObject.h" inside "Node.h" nothing changes. When it compiles Node it has both Transform which is a template class and BaseObject undefined, even though both objects are clearly defined before Node with forward declarations and #includes.
I'm using Visual Studio 2010, but never had an issue like this. I looked into my previous projects and all is written the same fashion and works without problem.
