Пространство имен "sf" не имеет члена "Время" - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь написать в графе сцены для проекта SFML.У меня есть заголовок и файл .cpp, и по большей части все в порядке, за исключением одной ошибки, которую я продолжаю получать.Пространство имен "sf" не имеет члена "Time".Я искал различные форумы и пытался ссылаться на время в заголовочном файле, но ничего не помоглоСоветы, чтобы получить эту работу очень ценятся.

// Заголовочный файл

#pragma once
#include <SFML/Graphics/Drawable.hpp>
#include <vector>
#include <memory>

class SceneNode : public sf::Transformable, public sf::Drawable, private sf::NonCopyable
{

public:
      typedef std::unique_ptr<SceneNode> Ptr;
public:
     SceneNode();

void attachChild(Ptr child);
Ptr detachChild(const SceneNode& node);
void update(sf::Time dt);
sf::Vector2f getWorldPosition() const;
sf::Transform getWorldTransform() const;

private:
virtual void updateCurrent(sf::Time dt);
void updateChildren(sf::Time dt);

virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
virtual void drawCurrent(sf::RenderTarget& target, sf::RenderStates states) const;
void drawChildren(sf::RenderTarget& target, sf::RenderStates states) const;
private:
std::vector<Ptr> mChildren;
SceneNode* mParent;
};

// Основной файл

#include "SceneGraph.h"
#include "stdafx.h"
#include <iostream>
#include <string>
#include <assert.h>
#include <algorithm>
#include <cassert>

 using namespace std;

SceneNode::SceneNode()
: mChildren()
, mParent(nullptr)
{

}

void SceneNode::attachChild(Ptr child)
{
  child->mParent = this;
  mChildren.push_back(std::move(child));
}

SceneNode::Ptr SceneNode::detachChild(const SceneNode& node)
{
  auto found = std::find_if(mChildren.begin(), mChildren.end(), [&](Ptr& p { 
  return p.get() == &node; });
assert(found != mChildren.end());

   Ptr result = std::move(*found);
   result->mParent = nullptr;
   mChildren.erase(found);
  return result;
  }

void SceneNode::update(sf::Time dt)
{
    updateCurrent(dt);
    updateChildren(dt);
}

void SceneNode::updateCurrent(sf::Time)
{
     //Do nothing by default
}

void SceneNode::updateChildren(sf::Time dt)
{
      for_each(Ptr& child, mChildren)
         child->update(dt); 
}

void SceneNode::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
   //apply transform of current node
   states.transform *= getTransform(); 

   //draw node and children with changed transform
   drawCurrent(target, states);
   drawChildren(target, states);
}

void SceneNode::drawCurrent(sf::RenderTarget&, sf::RenderStates) const
{
   //do nothing by default
}

void SceneNode::drawChildren(sf::RenderTarget& target, sf::RenderStates states) const
{
    for_each(const Ptr& child, mChildren)
       child->draw(target, states);
}

 sf::Vector2f SceneNode::getWorldTransform() const
{
    sf::Transform transform = sf::Transform::Identity;
    for (const SceneNode* node = this; node != nullptr; node = node->mParent)
    transform = node->getTransform() * transform;

    return transform; 
 }
...