text: #pragma once
  
  namespace NVector3
  {
     struct Vector3
     {
        float x;
        float y;
        float z;
        Vector3(float x, float y, float z);
        Vector3();
     };
     Vector3 add(Vector3 a, Vector3 b);
     Vector3 subtract(Vector3 a, Vector3 b);
     void print(Vector3 vector3);
  }
  
  namespace NSize
  {
     struct Size
     {
        float x;
        float y;
        float z;
        Size(float x, float y, float z);
        Size();
     };
     Size add(Size a, Size b);
     Size subtract(Size a, Size b);
     void print(Size size);
  }
  
  namespace Nobjects
  {
     class object
     {
     public:
        NVector3::Vector3 position;
        NVector3::Vector3 rotation;
        NSize::Size size;
        int light;
        int id;
        virtual void remove(object &object) = 0;
        virtual void render(object &object) = 0;
     };
     class cube : object
     {
     public:
        /*to anybody reading the code I am truly sorry for 
           this definition inside of the headerfile...
           it was the only way I can make this work, I'm sorry*/
        void render(object &object) override
        {
        }
        void remove(object &object) override
        {
        }
        cube(NVector3::Vector3 position, NVector3::Vector3 rotation, NSize::Size size, int id);
     };
     class sphere : object
     {
     public:
        void render(object &object) override
        {
        }
        void remove(object &object) override
        {
        }
        sphere(NVector3::Vector3 position, NVector3::Vector3 rotation, NSize::Size size, int id);
     };
  }