using namespace std
This commit is contained in:
parent
479dcb03ac
commit
7d4989b670
86 changed files with 270 additions and 272 deletions
|
@ -35,7 +35,7 @@ class BASICSSHARED_EXPORT NoiseState {
|
||||||
void setLevelCount(int level_count);
|
void setLevelCount(int level_count);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<NoiseOffset> level_offsets;
|
vector<NoiseOffset> level_offsets;
|
||||||
|
|
||||||
friend class NoiseGenerator;
|
friend class NoiseGenerator;
|
||||||
friend class FractalNoise;
|
friend class FractalNoise;
|
||||||
|
|
|
@ -152,7 +152,7 @@ class Texture2DWriter : public PictureWriter {
|
||||||
const Texture2D *tex;
|
const Texture2D *tex;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Texture2D::saveToFile(const std::string &filepath) const {
|
void Texture2D::saveToFile(const string &filepath) const {
|
||||||
Texture2DWriter writer(this);
|
Texture2DWriter writer(this);
|
||||||
writer.save(filepath, xsize, ysize);
|
writer.save(filepath, xsize, ysize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ class BASICSSHARED_EXPORT Texture2D {
|
||||||
void add(Texture2D *other);
|
void add(Texture2D *other);
|
||||||
void save(PackStream *stream) const;
|
void save(PackStream *stream) const;
|
||||||
void load(PackStream *stream);
|
void load(PackStream *stream);
|
||||||
void saveToFile(const std::string &filepath) const;
|
void saveToFile(const string &filepath) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int xsize;
|
int xsize;
|
||||||
|
|
|
@ -187,7 +187,7 @@ class Texture3DWriter : public PictureWriter {
|
||||||
const Texture3D *tex;
|
const Texture3D *tex;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Texture3D::saveToFile(const std::string &filepath) const {
|
void Texture3D::saveToFile(const string &filepath) const {
|
||||||
Texture3DWriter writer(this);
|
Texture3DWriter writer(this);
|
||||||
writer.save(filepath, xsize, ysize * zsize);
|
writer.save(filepath, xsize, ysize * zsize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ class BASICSSHARED_EXPORT Texture3D {
|
||||||
void add(Texture3D *other);
|
void add(Texture3D *other);
|
||||||
void save(PackStream *stream) const;
|
void save(PackStream *stream) const;
|
||||||
void load(PackStream *stream);
|
void load(PackStream *stream);
|
||||||
void saveToFile(const std::string &filepath) const;
|
void saveToFile(const string &filepath) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int xsize;
|
int xsize;
|
||||||
|
|
|
@ -230,7 +230,7 @@ class Texture4DWriter : public PictureWriter {
|
||||||
const Texture4D *tex;
|
const Texture4D *tex;
|
||||||
};
|
};
|
||||||
|
|
||||||
void Texture4D::saveToFile(const std::string &filepath) const {
|
void Texture4D::saveToFile(const string &filepath) const {
|
||||||
Texture4DWriter writer(this);
|
Texture4DWriter writer(this);
|
||||||
writer.save(filepath, xsize * wsize, ysize * zsize);
|
writer.save(filepath, xsize * wsize, ysize * zsize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ class BASICSSHARED_EXPORT Texture4D {
|
||||||
void add(Texture4D *other);
|
void add(Texture4D *other);
|
||||||
void save(PackStream *stream) const;
|
void save(PackStream *stream) const;
|
||||||
void load(PackStream *stream);
|
void load(PackStream *stream);
|
||||||
void saveToFile(const std::string &filepath) const;
|
void saveToFile(const string &filepath) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int xsize;
|
int xsize;
|
||||||
|
|
|
@ -77,7 +77,7 @@ class DEFINITIONSHARED_EXPORT AtmosphereDefinition : public DefinitionNode {
|
||||||
double moon_theta;
|
double moon_theta;
|
||||||
double moon_phi;
|
double moon_phi;
|
||||||
|
|
||||||
std::vector<Star> stars;
|
vector<Star> stars;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GodRaysDefinition *godrays;
|
GodRaysDefinition *godrays;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
#include "PackStream.h"
|
#include "PackStream.h"
|
||||||
#include "FloatNode.h"
|
#include "FloatNode.h"
|
||||||
|
|
||||||
CloudLayerDefinition::CloudLayerDefinition(DefinitionNode *parent, const std::string &name)
|
CloudLayerDefinition::CloudLayerDefinition(DefinitionNode *parent, const string &name)
|
||||||
: DefinitionNode(parent, name, "cloudlayer") {
|
: DefinitionNode(parent, name, "cloudlayer") {
|
||||||
type = CIRRUS;
|
type = CIRRUS;
|
||||||
altitude = 0.5;
|
altitude = 0.5;
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace definition {
|
||||||
|
|
||||||
class DEFINITIONSHARED_EXPORT CloudLayerDefinition : public DefinitionNode {
|
class DEFINITIONSHARED_EXPORT CloudLayerDefinition : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
CloudLayerDefinition(DefinitionNode *parent, const std::string &name);
|
CloudLayerDefinition(DefinitionNode *parent, const string &name);
|
||||||
virtual ~CloudLayerDefinition();
|
virtual ~CloudLayerDefinition();
|
||||||
|
|
||||||
inline const NoiseState &getNoiseState() const {
|
inline const NoiseState &getNoiseState() const {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "CloudLayerDefinition.h"
|
#include "CloudLayerDefinition.h"
|
||||||
|
|
||||||
static DefinitionNode *_layerConstructor(Layers *parent, const std::string &name) {
|
static DefinitionNode *_layerConstructor(Layers *parent, const string &name) {
|
||||||
return new CloudLayerDefinition(parent, name);
|
return new CloudLayerDefinition(parent, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,16 +16,16 @@ class DEFINITIONSHARED_EXPORT DefinitionDiff {
|
||||||
DefinitionDiff(const DefinitionNode *node);
|
DefinitionDiff(const DefinitionNode *node);
|
||||||
virtual ~DefinitionDiff();
|
virtual ~DefinitionDiff();
|
||||||
|
|
||||||
inline const std::string &getTypeName() const {
|
inline const string &getTypeName() const {
|
||||||
return type_name;
|
return type_name;
|
||||||
}
|
}
|
||||||
inline const std::string &getPath() const {
|
inline const string &getPath() const {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string type_name;
|
string type_name;
|
||||||
std::string path;
|
string path;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
DefinitionNode::DefinitionNode(DefinitionNode *parent, const std::string &name, const std::string &type_name)
|
DefinitionNode::DefinitionNode(DefinitionNode *parent, const string &name, const string &type_name)
|
||||||
: parent(parent), type_name(type_name), name(name) {
|
: parent(parent), type_name(type_name), name(name) {
|
||||||
if (parent) {
|
if (parent) {
|
||||||
root = parent->root;
|
root = parent->root;
|
||||||
|
@ -33,7 +33,7 @@ DefinitionNode::~DefinitionNode() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Work on a copy, because the child destructor will modify the array by removing itself using removeChild
|
// Work on a copy, because the child destructor will modify the array by removing itself using removeChild
|
||||||
std::vector<DefinitionNode *> children_copy = children;
|
vector<DefinitionNode *> children_copy = children;
|
||||||
for (auto child : children_copy) {
|
for (auto child : children_copy) {
|
||||||
if (child->getParent() == this) {
|
if (child->getParent() == this) {
|
||||||
delete child;
|
delete child;
|
||||||
|
@ -41,7 +41,7 @@ DefinitionNode::~DefinitionNode() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefinitionNode::setName(const std::string &name) {
|
void DefinitionNode::setName(const string &name) {
|
||||||
this->name = name;
|
this->name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,8 +53,8 @@ Scenery *DefinitionNode::getScenery() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DefinitionNode::toString(int indent) const {
|
string DefinitionNode::toString(int indent) const {
|
||||||
std::string result;
|
string result;
|
||||||
for (int i = 0; i < indent; i++) {
|
for (int i = 0; i < indent; i++) {
|
||||||
result += " ";
|
result += " ";
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ std::string DefinitionNode::toString(int indent) const {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DefinitionNode::getPath() const {
|
string DefinitionNode::getPath() const {
|
||||||
if (parent == root) {
|
if (parent == root) {
|
||||||
return parent->getPath() + name;
|
return parent->getPath() + name;
|
||||||
} else if (parent) {
|
} else if (parent) {
|
||||||
|
@ -77,7 +77,7 @@ std::string DefinitionNode::getPath() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DefinitionNode *DefinitionNode::findByPath(const std::string &path) const {
|
DefinitionNode *DefinitionNode::findByPath(const string &path) const {
|
||||||
if (path.empty()) {
|
if (path.empty()) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else if (path[0] == '/') {
|
} else if (path[0] == '/') {
|
||||||
|
@ -90,11 +90,11 @@ DefinitionNode *DefinitionNode::findByPath(const std::string &path) const {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
size_t seppos = path.find("/");
|
size_t seppos = path.find("/");
|
||||||
std::string child_name = (seppos == std::string::npos) ? path : path.substr(0, seppos);
|
string child_name = (seppos == string::npos) ? path : path.substr(0, seppos);
|
||||||
DefinitionNode *child =
|
DefinitionNode *child =
|
||||||
((DefinitionNode *)this)->findChildByName(child_name); // FIXME findChildByName should be const
|
((DefinitionNode *)this)->findChildByName(child_name); // FIXME findChildByName should be const
|
||||||
if (child) {
|
if (child) {
|
||||||
if (seppos == std::string::npos) {
|
if (seppos == string::npos) {
|
||||||
return child;
|
return child;
|
||||||
} else {
|
} else {
|
||||||
return child->findByPath(path.substr(seppos + 1));
|
return child->findByPath(path.substr(seppos + 1));
|
||||||
|
@ -111,18 +111,18 @@ bool DefinitionNode::applyDiff(const DefinitionDiff *diff, bool) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[Definition] Can't apply " << diff->getTypeName() << " diff to " << getName() << " "
|
Logs::error() << "[Definition] Can't apply " << diff->getTypeName() << " diff to " << getName() << " "
|
||||||
<< type_name << " node" << std::endl;
|
<< type_name << " node" << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefinitionNode::generateInitDiffs(std::vector<const DefinitionDiff *> *) const {
|
void DefinitionNode::generateInitDiffs(vector<const DefinitionDiff *> *) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefinitionNode::addWatcher(DefinitionWatcher *watcher, bool init_diff) {
|
void DefinitionNode::addWatcher(DefinitionWatcher *watcher, bool init_diff) {
|
||||||
if (root && root->diffs) {
|
if (root && root->diffs) {
|
||||||
if (init_diff) {
|
if (init_diff) {
|
||||||
std::vector<const DefinitionDiff *> diffs;
|
vector<const DefinitionDiff *> diffs;
|
||||||
generateInitDiffs(&diffs);
|
generateInitDiffs(&diffs);
|
||||||
|
|
||||||
for (auto diff : diffs) {
|
for (auto diff : diffs) {
|
||||||
|
@ -156,7 +156,7 @@ void DefinitionNode::save(PackStream *stream) const {
|
||||||
} else {
|
} else {
|
||||||
// Child size not known, write it to a temporary stream to know it
|
// Child size not known, write it to a temporary stream to know it
|
||||||
Logs::debug() << "[Definition] Unknown size for child " << child->name
|
Logs::debug() << "[Definition] Unknown size for child " << child->name
|
||||||
<< ", unefficient writing to temporary stream" << std::endl;
|
<< ", unefficient writing to temporary stream" << endl;
|
||||||
PackStream substream;
|
PackStream substream;
|
||||||
child->save(&substream);
|
child->save(&substream);
|
||||||
stream->writeFromBuffer(substream, true);
|
stream->writeFromBuffer(substream, true);
|
||||||
|
@ -170,7 +170,7 @@ void DefinitionNode::load(PackStream *stream) {
|
||||||
stream->read(&children_count);
|
stream->read(&children_count);
|
||||||
|
|
||||||
for (int i = 0; i < children_count; i++) {
|
for (int i = 0; i < children_count; i++) {
|
||||||
std::string child_name = stream->readString();
|
string child_name = stream->readString();
|
||||||
|
|
||||||
int child_size;
|
int child_size;
|
||||||
stream->read(&child_size);
|
stream->read(&child_size);
|
||||||
|
@ -183,7 +183,7 @@ void DefinitionNode::load(PackStream *stream) {
|
||||||
// TODO Ask subclass if it can instanciate a child
|
// TODO Ask subclass if it can instanciate a child
|
||||||
// Else skip length of unknown child
|
// Else skip length of unknown child
|
||||||
stream->skipBytes(child_size);
|
stream->skipBytes(child_size);
|
||||||
Logs::warning() << "[Definition] Skipped unknown child '" << child_name << "'" << std::endl;
|
Logs::warning() << "[Definition] Skipped unknown child '" << child_name << "'" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -197,12 +197,12 @@ void DefinitionNode::copy(DefinitionNode *destination) const {
|
||||||
child->copy(dest_child);
|
child->copy(dest_child);
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "[Definition] Can't copy to child " << child->name << " of "
|
Logs::warning() << "[Definition] Can't copy to child " << child->name << " of "
|
||||||
<< destination->getTypeName() << std::endl;
|
<< destination->getTypeName() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[Definition] Can't copy from " << getTypeName() << " to " << destination->getTypeName()
|
Logs::error() << "[Definition] Can't copy from " << getTypeName() << " to " << destination->getTypeName()
|
||||||
<< std::endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ void DefinitionNode::validate() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefinitionNode::addChild(DefinitionNode *child) {
|
void DefinitionNode::addChild(DefinitionNode *child) {
|
||||||
if (std::find(children.begin(), children.end(), child) == children.end()) {
|
if (find(children.begin(), children.end(), child) == children.end()) {
|
||||||
children.push_back(child);
|
children.push_back(child);
|
||||||
child->parent = this;
|
child->parent = this;
|
||||||
child->root = this->root;
|
child->root = this->root;
|
||||||
|
@ -221,17 +221,17 @@ void DefinitionNode::addChild(DefinitionNode *child) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefinitionNode::removeChild(DefinitionNode *child) {
|
void DefinitionNode::removeChild(DefinitionNode *child) {
|
||||||
std::vector<DefinitionNode *>::iterator it = std::find(children.begin(), children.end(), child);
|
vector<DefinitionNode *>::iterator it = find(children.begin(), children.end(), child);
|
||||||
if (it != children.end()) {
|
if (it != children.end()) {
|
||||||
child->parent = NULL;
|
child->parent = NULL;
|
||||||
children.erase(it);
|
children.erase(it);
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "[Definition] Trying to remove not found child '" << child->name << "' from '" << name << "'"
|
Logs::warning() << "[Definition] Trying to remove not found child '" << child->name << "' from '" << name << "'"
|
||||||
<< std::endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DefinitionNode *DefinitionNode::findChildByName(const std::string name) {
|
DefinitionNode *DefinitionNode::findChildByName(const string name) {
|
||||||
for (auto child : children) {
|
for (auto child : children) {
|
||||||
if (child->name == name) {
|
if (child->name == name) {
|
||||||
return child;
|
return child;
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace definition {
|
||||||
*/
|
*/
|
||||||
class DEFINITIONSHARED_EXPORT DefinitionNode {
|
class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
public:
|
public:
|
||||||
DefinitionNode(DefinitionNode *parent, const std::string &name, const std::string &type_name = "");
|
DefinitionNode(DefinitionNode *parent, const string &name, const string &type_name = "");
|
||||||
virtual ~DefinitionNode();
|
virtual ~DefinitionNode();
|
||||||
|
|
||||||
virtual void save(PackStream *stream) const;
|
virtual void save(PackStream *stream) const;
|
||||||
|
@ -22,12 +22,12 @@ class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
virtual void copy(DefinitionNode *destination) const;
|
virtual void copy(DefinitionNode *destination) const;
|
||||||
virtual void validate();
|
virtual void validate();
|
||||||
|
|
||||||
inline const std::string &getName() const {
|
inline const string &getName() const {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
virtual void setName(const std::string &name);
|
virtual void setName(const string &name);
|
||||||
|
|
||||||
inline const std::string &getTypeName() const {
|
inline const string &getTypeName() const {
|
||||||
return type_name;
|
return type_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,19 +49,19 @@ class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
/**
|
/**
|
||||||
* Return a string representation of the tree (mainly for debugging purposes).
|
* Return a string representation of the tree (mainly for debugging purposes).
|
||||||
*/
|
*/
|
||||||
virtual std::string toString(int indent = 0) const;
|
virtual string toString(int indent = 0) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the path to this node, using '/' delimited syntax, with the first '/' being the root node.
|
* Return the path to this node, using '/' delimited syntax, with the first '/' being the root node.
|
||||||
*/
|
*/
|
||||||
std::string getPath() const;
|
string getPath() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find a node in this tree, by its path (as returned by getPath).
|
* Find a node in this tree, by its path (as returned by getPath).
|
||||||
*
|
*
|
||||||
* Return NULL if the path does not exists.
|
* Return NULL if the path does not exists.
|
||||||
*/
|
*/
|
||||||
DefinitionNode *findByPath(const std::string &path) const;
|
DefinitionNode *findByPath(const string &path) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Apply a diff to the internal value of this node.
|
* Apply a diff to the internal value of this node.
|
||||||
|
@ -79,7 +79,7 @@ class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
*
|
*
|
||||||
* This method should be overridden by subclasses.
|
* This method should be overridden by subclasses.
|
||||||
*/
|
*/
|
||||||
virtual void generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const;
|
virtual void generateInitDiffs(vector<const DefinitionDiff *> *diffs) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a watcher over this node.
|
* Add a watcher over this node.
|
||||||
|
@ -98,7 +98,7 @@ class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
protected:
|
protected:
|
||||||
void addChild(DefinitionNode *child);
|
void addChild(DefinitionNode *child);
|
||||||
void removeChild(DefinitionNode *child);
|
void removeChild(DefinitionNode *child);
|
||||||
virtual DefinitionNode *findChildByName(const std::string name);
|
virtual DefinitionNode *findChildByName(const string name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the size in bytes this child will consume when serialized to a stream.
|
* Get the size in bytes this child will consume when serialized to a stream.
|
||||||
|
@ -121,9 +121,9 @@ class DEFINITIONSHARED_EXPORT DefinitionNode {
|
||||||
DefinitionNode *parent;
|
DefinitionNode *parent;
|
||||||
DefinitionNode *root;
|
DefinitionNode *root;
|
||||||
DiffManager *diffs;
|
DiffManager *diffs;
|
||||||
std::string type_name;
|
string type_name;
|
||||||
std::string name;
|
string name;
|
||||||
std::vector<DefinitionNode *> children;
|
vector<DefinitionNode *> children;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ DiffManager::~DiffManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiffManager::addWatcher(const DefinitionNode *node, DefinitionWatcher *watcher) {
|
void DiffManager::addWatcher(const DefinitionNode *node, DefinitionWatcher *watcher) {
|
||||||
if (std::find(watchers[node].begin(), watchers[node].end(), watcher) == watchers[node].end()) {
|
if (find(watchers[node].begin(), watchers[node].end(), watcher) == watchers[node].end()) {
|
||||||
watchers[node].push_back(watcher);
|
watchers[node].push_back(watcher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ void DiffManager::undo() {
|
||||||
watcher->nodeChanged(node, diff);
|
watcher->nodeChanged(node, diff);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't find node to undo diff : " << diff->getPath() << std::endl;
|
Logs::error() << "Can't find node to undo diff : " << diff->getPath() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ void DiffManager::redo() {
|
||||||
watcher->nodeChanged(node, diff);
|
watcher->nodeChanged(node, diff);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't find node to redo diff : " << diff->getPath() << std::endl;
|
Logs::error() << "Can't find node to redo diff : " << diff->getPath() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,8 +56,8 @@ class DEFINITIONSHARED_EXPORT DiffManager {
|
||||||
private:
|
private:
|
||||||
DefinitionNode *tree;
|
DefinitionNode *tree;
|
||||||
int undone;
|
int undone;
|
||||||
std::vector<const DefinitionDiff *> diffs;
|
vector<const DefinitionDiff *> diffs;
|
||||||
std::map<const DefinitionNode *, std::vector<DefinitionWatcher *>> watchers;
|
map<const DefinitionNode *, vector<DefinitionWatcher *>> watchers;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
FloatNode::FloatNode(DefinitionNode *parent, const std::string &name, double value)
|
FloatNode::FloatNode(DefinitionNode *parent, const string &name, double value)
|
||||||
: DefinitionNode(parent, name, "float"), value(value) {
|
: DefinitionNode(parent, name, "float"), value(value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string FloatNode::toString(int indent) const {
|
string FloatNode::toString(int indent) const {
|
||||||
std::ostringstream stream;
|
ostringstream stream;
|
||||||
|
|
||||||
stream << DefinitionNode::toString(indent) << " " << value;
|
stream << DefinitionNode::toString(indent) << " " << value;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ void FloatNode::copy(DefinitionNode *destination) const {
|
||||||
if (destination->getTypeName() == getTypeName()) {
|
if (destination->getTypeName() == getTypeName()) {
|
||||||
((FloatNode *)destination)->value = value;
|
((FloatNode *)destination)->value = value;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << std::endl;
|
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ const FloatDiff *FloatNode::produceDiff(double new_value) const {
|
||||||
return new FloatDiff(this, value, new_value);
|
return new FloatDiff(this, value, new_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FloatNode::generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const {
|
void FloatNode::generateInitDiffs(vector<const DefinitionDiff *> *diffs) const {
|
||||||
diffs->push_back(produceDiff(value));
|
diffs->push_back(produceDiff(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ bool FloatNode::applyDiff(const DefinitionDiff *diff, bool backward) {
|
||||||
value = next;
|
value = next;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't apply float diff " << previous << " => " << next << " to " << getName() << std::endl;
|
Logs::error() << "Can't apply float diff " << previous << " => " << next << " to " << getName() << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,13 +13,13 @@ namespace definition {
|
||||||
*/
|
*/
|
||||||
class DEFINITIONSHARED_EXPORT FloatNode : public DefinitionNode {
|
class DEFINITIONSHARED_EXPORT FloatNode : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
FloatNode(DefinitionNode *parent, const std::string &name, double value = 0.0);
|
FloatNode(DefinitionNode *parent, const string &name, double value = 0.0);
|
||||||
|
|
||||||
inline double getValue() const {
|
inline double getValue() const {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString(int indent) const override;
|
virtual string toString(int indent) const override;
|
||||||
virtual void save(PackStream *stream) const override;
|
virtual void save(PackStream *stream) const override;
|
||||||
virtual void load(PackStream *stream) override;
|
virtual void load(PackStream *stream) override;
|
||||||
virtual void copy(DefinitionNode *destination) const override;
|
virtual void copy(DefinitionNode *destination) const override;
|
||||||
|
@ -31,7 +31,7 @@ class DEFINITIONSHARED_EXPORT FloatNode : public DefinitionNode {
|
||||||
*/
|
*/
|
||||||
void setValue(double new_value);
|
void setValue(double new_value);
|
||||||
const FloatDiff *produceDiff(double new_value) const;
|
const FloatDiff *produceDiff(double new_value) const;
|
||||||
void generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const;
|
void generateInitDiffs(vector<const DefinitionDiff *> *diffs) const;
|
||||||
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
||||||
|
|
||||||
void addValue(double added);
|
void addValue(double added);
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
IntNode::IntNode(DefinitionNode *parent, const std::string &name, int value)
|
IntNode::IntNode(DefinitionNode *parent, const string &name, int value)
|
||||||
: DefinitionNode(parent, name, "int"), value(value) {
|
: DefinitionNode(parent, name, "int"), value(value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string IntNode::toString(int indent) const {
|
string IntNode::toString(int indent) const {
|
||||||
std::ostringstream stream;
|
ostringstream stream;
|
||||||
|
|
||||||
stream << DefinitionNode::toString(indent) << " " << value;
|
stream << DefinitionNode::toString(indent) << " " << value;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ void IntNode::copy(DefinitionNode *destination) const {
|
||||||
if (destination->getTypeName() == getTypeName()) {
|
if (destination->getTypeName() == getTypeName()) {
|
||||||
((IntNode *)destination)->value = value;
|
((IntNode *)destination)->value = value;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << std::endl;
|
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ const IntDiff *IntNode::produceDiff(int new_value) const {
|
||||||
return new IntDiff(this, value, new_value);
|
return new IntDiff(this, value, new_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntNode::generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const {
|
void IntNode::generateInitDiffs(vector<const DefinitionDiff *> *diffs) const {
|
||||||
diffs->push_back(produceDiff(value));
|
diffs->push_back(produceDiff(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ bool IntNode::applyDiff(const DefinitionDiff *diff, bool backward) {
|
||||||
value = next;
|
value = next;
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't apply int diff " << previous << " => " << next << " to " << getName() << std::endl;
|
Logs::error() << "Can't apply int diff " << previous << " => " << next << " to " << getName() << endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,13 +13,13 @@ namespace definition {
|
||||||
*/
|
*/
|
||||||
class DEFINITIONSHARED_EXPORT IntNode : public DefinitionNode {
|
class DEFINITIONSHARED_EXPORT IntNode : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
IntNode(DefinitionNode *parent, const std::string &name, int value = 0);
|
IntNode(DefinitionNode *parent, const string &name, int value = 0);
|
||||||
|
|
||||||
inline int getValue() const {
|
inline int getValue() const {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString(int indent) const override;
|
virtual string toString(int indent) const override;
|
||||||
virtual void save(PackStream *stream) const override;
|
virtual void save(PackStream *stream) const override;
|
||||||
virtual void load(PackStream *stream) override;
|
virtual void load(PackStream *stream) override;
|
||||||
virtual void copy(DefinitionNode *destination) const override;
|
virtual void copy(DefinitionNode *destination) const override;
|
||||||
|
@ -31,7 +31,7 @@ class DEFINITIONSHARED_EXPORT IntNode : public DefinitionNode {
|
||||||
*/
|
*/
|
||||||
void setValue(int new_value);
|
void setValue(int new_value);
|
||||||
const IntDiff *produceDiff(int new_value) const;
|
const IntDiff *produceDiff(int new_value) const;
|
||||||
void generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const;
|
void generateInitDiffs(vector<const DefinitionDiff *> *diffs) const;
|
||||||
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "Logs.h"
|
#include "Logs.h"
|
||||||
#include "LayersDiff.h"
|
#include "LayersDiff.h"
|
||||||
|
|
||||||
Layers::Layers(DefinitionNode *parent, const std::string &name, LayerConstructor layer_constructor)
|
Layers::Layers(DefinitionNode *parent, const string &name, LayerConstructor layer_constructor)
|
||||||
: DefinitionNode(parent, name, "layers" + name), layer_constructor(layer_constructor) {
|
: DefinitionNode(parent, name, "layers" + name), layer_constructor(layer_constructor) {
|
||||||
max_layer_count = 100;
|
max_layer_count = 100;
|
||||||
null_layer = layer_constructor(this, "#NULL#");
|
null_layer = layer_constructor(this, "#NULL#");
|
||||||
|
@ -69,7 +69,7 @@ DefinitionNode *Layers::getLayer(int position) const {
|
||||||
return layers[position];
|
return layers[position];
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "Asked for a undefined layer " << position << " on a total of " << (int)layers.size()
|
Logs::warning() << "Asked for a undefined layer " << position << " on a total of " << (int)layers.size()
|
||||||
<< std::endl;
|
<< endl;
|
||||||
return null_layer;
|
return null_layer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,12 +81,12 @@ bool Layers::applyDiff(const DefinitionDiff *diff, bool backward) {
|
||||||
|
|
||||||
if ((not backward and op == LayersDiff::LAYER_ADDED) or (backward and op == LayersDiff::LAYER_REMOVED)) {
|
if ((not backward and op == LayersDiff::LAYER_ADDED) or (backward and op == LayersDiff::LAYER_REMOVED)) {
|
||||||
if (layer_count >= max_layer_count) {
|
if (layer_count >= max_layer_count) {
|
||||||
Logs::warning() << "Add layer ignored because limit of " << max_layer_count << " reached" << std::endl;
|
Logs::warning() << "Add layer ignored because limit of " << max_layer_count << " reached" << endl;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
int position = layer_diff->getLayer1();
|
int position = layer_diff->getLayer1();
|
||||||
if (position < 0 or position > layer_count) {
|
if (position < 0 or position > layer_count) {
|
||||||
Logs::error() << "Add layer ignored because requested position was incorrect" << std::endl;
|
Logs::error() << "Add layer ignored because requested position was incorrect" << endl;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
DefinitionNode *layer = layer_constructor(this, "temp");
|
DefinitionNode *layer = layer_constructor(this, "temp");
|
||||||
|
@ -104,7 +104,7 @@ bool Layers::applyDiff(const DefinitionDiff *diff, bool backward) {
|
||||||
int position = layer_diff->getLayer1();
|
int position = layer_diff->getLayer1();
|
||||||
if (position < 0 or position >= layer_count) {
|
if (position < 0 or position >= layer_count) {
|
||||||
Logs::warning() << "Removing unknown layer " << position << " on " << layer_count << " from '" << getName()
|
Logs::warning() << "Removing unknown layer " << position << " on " << layer_count << " from '" << getName()
|
||||||
<< "'" << std::endl;
|
<< "'" << endl;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
DefinitionNode *removed = layers[position];
|
DefinitionNode *removed = layers[position];
|
||||||
|
@ -117,7 +117,7 @@ bool Layers::applyDiff(const DefinitionDiff *diff, bool backward) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Layers::generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const {
|
void Layers::generateInitDiffs(vector<const DefinitionDiff *> *diffs) const {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (auto layer : layers) {
|
for (auto layer : layers) {
|
||||||
auto diff = new LayersDiff(this, LayersDiff::LAYER_ADDED, i++);
|
auto diff = new LayersDiff(this, LayersDiff::LAYER_ADDED, i++);
|
||||||
|
@ -132,7 +132,7 @@ void Layers::addLayer(const DefinitionNode &tocopy) {
|
||||||
addDiff(diff);
|
addDiff(diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Layers::addLayer(const std::string &name) {
|
void Layers::addLayer(const string &name) {
|
||||||
auto layer = layer_constructor(this, name);
|
auto layer = layer_constructor(this, name);
|
||||||
addLayer(*layer);
|
addLayer(*layer);
|
||||||
delete layer;
|
delete layer;
|
||||||
|
|
|
@ -8,14 +8,14 @@
|
||||||
namespace paysages {
|
namespace paysages {
|
||||||
namespace definition {
|
namespace definition {
|
||||||
|
|
||||||
typedef DefinitionNode *(*LayerConstructor)(Layers *parent, const std::string &name);
|
typedef DefinitionNode *(*LayerConstructor)(Layers *parent, const string &name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Layers of definitions, ideally all of the same type.
|
* @brief Layers of definitions, ideally all of the same type.
|
||||||
*/
|
*/
|
||||||
class DEFINITIONSHARED_EXPORT Layers : public DefinitionNode {
|
class DEFINITIONSHARED_EXPORT Layers : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
Layers(DefinitionNode *parent, const std::string &name, LayerConstructor layer_constructor);
|
Layers(DefinitionNode *parent, const string &name, LayerConstructor layer_constructor);
|
||||||
virtual ~Layers();
|
virtual ~Layers();
|
||||||
|
|
||||||
virtual void save(PackStream *stream) const override;
|
virtual void save(PackStream *stream) const override;
|
||||||
|
@ -23,7 +23,7 @@ class DEFINITIONSHARED_EXPORT Layers : public DefinitionNode {
|
||||||
virtual void copy(DefinitionNode *destination) const override;
|
virtual void copy(DefinitionNode *destination) const override;
|
||||||
|
|
||||||
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
||||||
virtual void generateInitDiffs(std::vector<const DefinitionDiff *> *diffs) const override;
|
virtual void generateInitDiffs(vector<const DefinitionDiff *> *diffs) const override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the maximal layer count allowed.
|
* Set the maximal layer count allowed.
|
||||||
|
@ -43,12 +43,12 @@ class DEFINITIONSHARED_EXPORT Layers : public DefinitionNode {
|
||||||
/**
|
/**
|
||||||
* Retrieve a layer by its name.
|
* Retrieve a layer by its name.
|
||||||
*/
|
*/
|
||||||
DefinitionNode *getLayer(const std::string &name) const;
|
DefinitionNode *getLayer(const string &name) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new empty layer.
|
* Add a new empty layer.
|
||||||
*/
|
*/
|
||||||
void addLayer(const std::string &name);
|
void addLayer(const string &name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new layer, copying another node into it.
|
* Add a new layer, copying another node into it.
|
||||||
|
@ -68,7 +68,7 @@ class DEFINITIONSHARED_EXPORT Layers : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
LayerConstructor layer_constructor;
|
LayerConstructor layer_constructor;
|
||||||
int max_layer_count;
|
int max_layer_count;
|
||||||
std::vector<DefinitionNode *> layers;
|
vector<DefinitionNode *> layers;
|
||||||
DefinitionNode *null_layer;
|
DefinitionNode *null_layer;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ void NoiseNode::copy(DefinitionNode *destination) const {
|
||||||
if (destination->getTypeName() == getTypeName()) {
|
if (destination->getTypeName() == getTypeName()) {
|
||||||
noise->copy(((NoiseNode *)destination)->noise);
|
noise->copy(((NoiseNode *)destination)->noise);
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << std::endl;
|
Logs::error() << "Can't copy from " << getTypeName() << " to " << destination->getTypeName() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ void Scenery::validate() {
|
||||||
keepCameraAboveGround(camera);
|
keepCameraAboveGround(camera);
|
||||||
}
|
}
|
||||||
|
|
||||||
Scenery::FileOperationResult Scenery::saveGlobal(const std::string &filepath) const {
|
Scenery::FileOperationResult Scenery::saveGlobal(const string &filepath) const {
|
||||||
PackStream stream;
|
PackStream stream;
|
||||||
double app_header = (double)APP_HEADER;
|
double app_header = (double)APP_HEADER;
|
||||||
double version_header = (double)DATA_VERSION;
|
double version_header = (double)DATA_VERSION;
|
||||||
|
@ -47,11 +47,11 @@ Scenery::FileOperationResult Scenery::saveGlobal(const std::string &filepath) co
|
||||||
stream.write(&version_header);
|
stream.write(&version_header);
|
||||||
stream.write(&app_header);
|
stream.write(&app_header);
|
||||||
|
|
||||||
Logs::debug() << "[Definition] Scenery saved to file: " << filepath << std::endl;
|
Logs::debug() << "[Definition] Scenery saved to file: " << filepath << endl;
|
||||||
return FILE_OPERATION_OK;
|
return FILE_OPERATION_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scenery::FileOperationResult Scenery::loadGlobal(const std::string &filepath) {
|
Scenery::FileOperationResult Scenery::loadGlobal(const string &filepath) {
|
||||||
PackStream stream;
|
PackStream stream;
|
||||||
double app_header, version_header;
|
double app_header, version_header;
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ Scenery::FileOperationResult Scenery::loadGlobal(const std::string &filepath) {
|
||||||
return FILE_OPERATION_APP_MISMATCH;
|
return FILE_OPERATION_APP_MISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
Logs::debug() << "[Definition] Scenery loaded from file: " << filepath << std::endl;
|
Logs::debug() << "[Definition] Scenery loaded from file: " << filepath << endl;
|
||||||
return FILE_OPERATION_OK;
|
return FILE_OPERATION_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ void Scenery::autoPreset(RandomGenerator &random) {
|
||||||
|
|
||||||
validate();
|
validate();
|
||||||
|
|
||||||
Logs::debug() << "[Definition] New scenery generated from seed " << random.getSeed() << std::endl;
|
Logs::debug() << "[Definition] New scenery generated from seed " << random.getSeed() << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scenery::autoPreset(unsigned int seed) {
|
void Scenery::autoPreset(unsigned int seed) {
|
||||||
|
|
|
@ -29,8 +29,8 @@ class DEFINITIONSHARED_EXPORT Scenery : public DefinitionNode {
|
||||||
|
|
||||||
virtual void validate() override;
|
virtual void validate() override;
|
||||||
|
|
||||||
FileOperationResult saveGlobal(const std::string &filepath) const;
|
FileOperationResult saveGlobal(const string &filepath) const;
|
||||||
FileOperationResult loadGlobal(const std::string &filepath);
|
FileOperationResult loadGlobal(const string &filepath);
|
||||||
|
|
||||||
virtual Scenery *getScenery() override;
|
virtual Scenery *getScenery() override;
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "TerrainDefinition.h"
|
#include "TerrainDefinition.h"
|
||||||
#include "Color.h"
|
#include "Color.h"
|
||||||
|
|
||||||
TextureLayerDefinition::TextureLayerDefinition(DefinitionNode *parent, const std::string &name)
|
TextureLayerDefinition::TextureLayerDefinition(DefinitionNode *parent, const string &name)
|
||||||
: DefinitionNode(parent, name, "texturelayer") {
|
: DefinitionNode(parent, name, "texturelayer") {
|
||||||
terrain_zone = new Zone;
|
terrain_zone = new Zone;
|
||||||
_displacement_noise = new NoiseGenerator;
|
_displacement_noise = new NoiseGenerator;
|
||||||
|
|
|
@ -20,7 +20,7 @@ class DEFINITIONSHARED_EXPORT TextureLayerDefinition : public DefinitionNode {
|
||||||
} TextureLayerPreset;
|
} TextureLayerPreset;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TextureLayerDefinition(DefinitionNode *parent, const std::string &name);
|
TextureLayerDefinition(DefinitionNode *parent, const string &name);
|
||||||
virtual ~TextureLayerDefinition();
|
virtual ~TextureLayerDefinition();
|
||||||
|
|
||||||
virtual void save(PackStream *stream) const override;
|
virtual void save(PackStream *stream) const override;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include "TextureLayerDefinition.h"
|
#include "TextureLayerDefinition.h"
|
||||||
|
|
||||||
static DefinitionNode *_layer_constructor(Layers *parent, const std::string &name) {
|
static DefinitionNode *_layer_constructor(Layers *parent, const string &name) {
|
||||||
return new TextureLayerDefinition(parent, name);
|
return new TextureLayerDefinition(parent, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@
|
||||||
|
|
||||||
void startRender(SoftwareCanvasRenderer *renderer, const char *outputpath);
|
void startRender(SoftwareCanvasRenderer *renderer, const char *outputpath);
|
||||||
|
|
||||||
static void startTestRender(SoftwareCanvasRenderer *renderer, const std::string &name, int iteration = -1) {
|
static void startTestRender(SoftwareCanvasRenderer *renderer, const string &name, int iteration = -1) {
|
||||||
std::ostringstream stream;
|
ostringstream stream;
|
||||||
|
|
||||||
stream << "pic_test_" << name;
|
stream << "pic_test_" << name;
|
||||||
if (iteration >= 0) {
|
if (iteration >= 0) {
|
||||||
|
|
|
@ -15,7 +15,7 @@ FloatPropertyBind::FloatPropertyBind(MainModelerWindow *window, const QString &o
|
||||||
connect(item, SIGNAL(changed(double)), this, SLOT(propertyChanged(double)));
|
connect(item, SIGNAL(changed(double)), this, SLOT(propertyChanged(double)));
|
||||||
} else {
|
} else {
|
||||||
item = NULL;
|
item = NULL;
|
||||||
Logs::error() << "Can't find object :" << object_name.toStdString() << std::endl;
|
Logs::error() << "Can't find object :" << object_name.toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ IntPropertyBind::IntPropertyBind(MainModelerWindow *window, const QString &objec
|
||||||
connect(item, SIGNAL(changed(int)), this, SLOT(propertyChanged(int)));
|
connect(item, SIGNAL(changed(int)), this, SLOT(propertyChanged(int)));
|
||||||
} else {
|
} else {
|
||||||
item = NULL;
|
item = NULL;
|
||||||
Logs::error() << "Can't find object :" << object_name.toStdString() << std::endl;
|
Logs::error() << "Can't find object :" << object_name.toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ void MainModelerWindow::setQmlProperty(const QString &objectName, const QString
|
||||||
if (item) {
|
if (item) {
|
||||||
item->setProperty(propertyName.toLocal8Bit(), value);
|
item->setProperty(propertyName.toLocal8Bit(), value);
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "QML object not found :" << objectName.toStdString() << std::endl;
|
Logs::error() << "QML object not found :" << objectName.toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ void MainModelerWindow::connectQmlSignal(const QString &objectName, const char *
|
||||||
if (item) {
|
if (item) {
|
||||||
connect(item, signal, receiver, method);
|
connect(item, signal, receiver, method);
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "QML object not found :" << objectName.toStdString() << std::endl;
|
Logs::error() << "QML object not found :" << objectName.toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,8 +137,8 @@ void MainModelerWindow::keyReleaseEvent(QKeyEvent *event) {
|
||||||
} else if (event->key() == Qt::Key_F6) {
|
} else if (event->key() == Qt::Key_F6) {
|
||||||
render_process->showPreviousRender();
|
render_process->showPreviousRender();
|
||||||
} else if (event->key() == Qt::Key_F12) {
|
} else if (event->key() == Qt::Key_F12) {
|
||||||
Logs::warning() << "Current scenery dump:" << std::endl
|
Logs::warning() << "Current scenery dump:" << endl
|
||||||
<< scenery->toString() << std::endl;
|
<< scenery->toString() << endl;
|
||||||
} else if (event->key() == Qt::Key_N) {
|
} else if (event->key() == Qt::Key_N) {
|
||||||
if (event->modifiers() & Qt::ControlModifier) {
|
if (event->modifiers() & Qt::ControlModifier) {
|
||||||
newFile();
|
newFile();
|
||||||
|
|
|
@ -30,7 +30,7 @@ void OpenGLPart::destroy() {
|
||||||
void OpenGLPart::interrupt() {
|
void OpenGLPart::interrupt() {
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenGLShaderProgram *OpenGLPart::createShader(const std::string &name) {
|
OpenGLShaderProgram *OpenGLPart::createShader(const string &name) {
|
||||||
OpenGLShaderProgram *program = new OpenGLShaderProgram(name, renderer);
|
OpenGLShaderProgram *program = new OpenGLShaderProgram(name, renderer);
|
||||||
|
|
||||||
if (shaders.find(name) == shaders.end()) {
|
if (shaders.find(name) == shaders.end()) {
|
||||||
|
|
|
@ -40,7 +40,7 @@ class OPENGLSHARED_EXPORT OpenGLPart {
|
||||||
*
|
*
|
||||||
* The returned shader's ownership remains in this object. It will taks care of the destruction.
|
* The returned shader's ownership remains in this object. It will taks care of the destruction.
|
||||||
*/
|
*/
|
||||||
OpenGLShaderProgram *createShader(const std::string &name);
|
OpenGLShaderProgram *createShader(const string &name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a vertex array.
|
* Create a vertex array.
|
||||||
|
@ -55,8 +55,8 @@ class OPENGLSHARED_EXPORT OpenGLPart {
|
||||||
OpenGLRenderer *renderer;
|
OpenGLRenderer *renderer;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<std::string, OpenGLShaderProgram *> shaders;
|
map<string, OpenGLShaderProgram *> shaders;
|
||||||
std::vector<OpenGLVertexArray *> arrays;
|
vector<OpenGLVertexArray *> arrays;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,10 +60,10 @@ OpenGLRenderer::~OpenGLRenderer() {
|
||||||
delete shared_state;
|
delete shared_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLRenderer::checkForErrors(const std::string &domain) {
|
void OpenGLRenderer::checkForErrors(const string &domain) {
|
||||||
int error_code;
|
int error_code;
|
||||||
while ((error_code = functions->glGetError()) != GL_NO_ERROR) {
|
while ((error_code = functions->glGetError()) != GL_NO_ERROR) {
|
||||||
Logs::warning() << "[OpenGL] Error in " << domain << " : " << error_code << std::endl;
|
Logs::warning() << "[OpenGL] Error in " << domain << " : " << error_code << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ void OpenGLRenderer::initialize() {
|
||||||
|
|
||||||
if (ready) {
|
if (ready) {
|
||||||
Logs::debug() << "[OpenGL] renderer started (version " << functions->glGetString(GL_VERSION)
|
Logs::debug() << "[OpenGL] renderer started (version " << functions->glGetString(GL_VERSION)
|
||||||
<< ", glsl version " << functions->glGetString(GL_SHADING_LANGUAGE_VERSION) << ")" << std::endl;
|
<< ", glsl version " << functions->glGetString(GL_SHADING_LANGUAGE_VERSION) << ")" << endl;
|
||||||
|
|
||||||
prepareOpenGLState();
|
prepareOpenGLState();
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ void OpenGLRenderer::initialize() {
|
||||||
|
|
||||||
checkForErrors("initialize");
|
checkForErrors("initialize");
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[OpenGL] Failed to initialize api bindings" << std::endl;
|
Logs::error() << "[OpenGL] Failed to initialize api bindings" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class OPENGLSHARED_EXPORT OpenGLRenderer : public SoftwareRenderer {
|
||||||
*
|
*
|
||||||
* Will write the error on standard error output, with the *domain* specified.
|
* Will write the error on standard error output, with the *domain* specified.
|
||||||
*/
|
*/
|
||||||
void checkForErrors(const std::string &domain);
|
void checkForErrors(const string &domain);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release any allocated resource in the opengl context.
|
* Release any allocated resource in the opengl context.
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include "Color.h"
|
#include "Color.h"
|
||||||
#include "Logs.h"
|
#include "Logs.h"
|
||||||
|
|
||||||
OpenGLShaderProgram::OpenGLShaderProgram(const std::string &name, OpenGLRenderer *renderer)
|
OpenGLShaderProgram::OpenGLShaderProgram(const string &name, OpenGLRenderer *renderer)
|
||||||
: renderer(renderer), name(name) {
|
: renderer(renderer), name(name) {
|
||||||
program = new QOpenGLShaderProgram();
|
program = new QOpenGLShaderProgram();
|
||||||
functions = renderer->getOpenGlFunctions();
|
functions = renderer->getOpenGlFunctions();
|
||||||
|
@ -23,30 +23,30 @@ OpenGLShaderProgram::~OpenGLShaderProgram() {
|
||||||
delete program;
|
delete program;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLShaderProgram::addVertexSource(const std::string &path) {
|
void OpenGLShaderProgram::addVertexSource(const string &path) {
|
||||||
QFile file(QString(":/shaders/%1.vert").arg(QString::fromStdString(path)));
|
QFile file(QString(":/shaders/%1.vert").arg(QString::fromStdString(path)));
|
||||||
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
source_vertex += QString(file.readAll()).toStdString();
|
source_vertex += QString(file.readAll()).toStdString();
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[OpenGL] Can't open vertex file " << file.fileName().toStdString() << std::endl;
|
Logs::error() << "[OpenGL] Can't open vertex file " << file.fileName().toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLShaderProgram::addFragmentSource(const std::string &path) {
|
void OpenGLShaderProgram::addFragmentSource(const string &path) {
|
||||||
QFile file(QString(":/shaders/%1.frag").arg(QString::fromStdString(path)));
|
QFile file(QString(":/shaders/%1.frag").arg(QString::fromStdString(path)));
|
||||||
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
source_fragment += QString(file.readAll()).toStdString();
|
source_fragment += QString(file.readAll()).toStdString();
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[OpenGL] Can't open fragment file " << file.fileName().toStdString() << std::endl;
|
Logs::error() << "[OpenGL] Can't open fragment file " << file.fileName().toStdString() << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLShaderProgram::destroy(OpenGLFunctions *functions) {
|
void OpenGLShaderProgram::destroy(OpenGLFunctions *) {
|
||||||
program->removeAllShaders();
|
program->removeAllShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLShaderProgram::compile() {
|
void OpenGLShaderProgram::compile() {
|
||||||
std::string prefix = std::string("#version ") + OPENGL_GLSL_VERSION + "\n\n";
|
string prefix = string("#version ") + OPENGL_GLSL_VERSION + "\n\n";
|
||||||
|
|
||||||
program->addShaderFromSourceCode(QOpenGLShader::Vertex, QString::fromStdString(prefix + source_vertex));
|
program->addShaderFromSourceCode(QOpenGLShader::Vertex, QString::fromStdString(prefix + source_vertex));
|
||||||
program->addShaderFromSourceCode(QOpenGLShader::Fragment, QString::fromStdString(prefix + source_fragment));
|
program->addShaderFromSourceCode(QOpenGLShader::Fragment, QString::fromStdString(prefix + source_fragment));
|
||||||
|
@ -55,13 +55,13 @@ void OpenGLShaderProgram::compile() {
|
||||||
program->bindAttributeLocation("uv", 1);
|
program->bindAttributeLocation("uv", 1);
|
||||||
|
|
||||||
if (not program->link()) {
|
if (not program->link()) {
|
||||||
Logs::warning() << "[OpenGL] Error while compiling shader " << name << std::endl
|
Logs::warning() << "[OpenGL] Error while compiling shader " << name << endl
|
||||||
<< program->log().toStdString() << std::endl;
|
<< program->log().toStdString() << endl;
|
||||||
} else if (program->log().length() > 0) {
|
} else if (program->log().length() > 0) {
|
||||||
Logs::debug() << "[OpenGL] Shader " << name << " compilation output:" << std::endl
|
Logs::debug() << "[OpenGL] Shader " << name << " compilation output:" << endl
|
||||||
<< program->log().toStdString() << std::endl;
|
<< program->log().toStdString() << endl;
|
||||||
} else {
|
} else {
|
||||||
Logs::debug() << "[OpenGL] Shader " << name << " compiled" << std::endl;
|
Logs::debug() << "[OpenGL] Shader " << name << " compiled" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ namespace opengl {
|
||||||
|
|
||||||
class OPENGLSHARED_EXPORT OpenGLShaderProgram {
|
class OPENGLSHARED_EXPORT OpenGLShaderProgram {
|
||||||
public:
|
public:
|
||||||
OpenGLShaderProgram(const std::string &name, OpenGLRenderer *renderer);
|
OpenGLShaderProgram(const string &name, OpenGLRenderer *renderer);
|
||||||
~OpenGLShaderProgram();
|
~OpenGLShaderProgram();
|
||||||
|
|
||||||
void addVertexSource(const std::string &path);
|
void addVertexSource(const string &path);
|
||||||
void addFragmentSource(const std::string &path);
|
void addFragmentSource(const string &path);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Release any allocated resource in the opengl context.
|
* Release any allocated resource in the opengl context.
|
||||||
|
@ -55,12 +55,12 @@ class OPENGLSHARED_EXPORT OpenGLShaderProgram {
|
||||||
|
|
||||||
OpenGLRenderer *renderer;
|
OpenGLRenderer *renderer;
|
||||||
|
|
||||||
std::string name;
|
string name;
|
||||||
QOpenGLShaderProgram *program;
|
QOpenGLShaderProgram *program;
|
||||||
OpenGLFunctions *functions;
|
OpenGLFunctions *functions;
|
||||||
|
|
||||||
std::string source_vertex;
|
string source_vertex;
|
||||||
std::string source_fragment;
|
string source_fragment;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ void OpenGLSharedState::destroy(OpenGLFunctions *functions) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenGLVariable *OpenGLSharedState::get(const std::string &name) {
|
OpenGLVariable *OpenGLSharedState::get(const string &name) {
|
||||||
OpenGLVariable *&var = variables[name];
|
OpenGLVariable *&var = variables[name];
|
||||||
if (var == NULL) {
|
if (var == NULL) {
|
||||||
var = new OpenGLVariable(name);
|
var = new OpenGLVariable(name);
|
||||||
|
|
|
@ -34,42 +34,42 @@ class OPENGLSHARED_EXPORT OpenGLSharedState {
|
||||||
/**
|
/**
|
||||||
* Get or create a variable in the state.
|
* Get or create a variable in the state.
|
||||||
*/
|
*/
|
||||||
OpenGLVariable *get(const std::string &name);
|
OpenGLVariable *get(const string &name);
|
||||||
|
|
||||||
// Shortcuts
|
// Shortcuts
|
||||||
inline void set(const std::string &name, const Texture2D *texture, bool repeat = false, bool color = true) {
|
inline void set(const string &name, const Texture2D *texture, bool repeat = false, bool color = true) {
|
||||||
get(name)->set(texture, repeat, color);
|
get(name)->set(texture, repeat, color);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const QImage &texture, bool repeat = false, bool color = true) {
|
inline void set(const string &name, const QImage &texture, bool repeat = false, bool color = true) {
|
||||||
get(name)->set(texture, repeat, color);
|
get(name)->set(texture, repeat, color);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const Texture3D *texture, bool repeat = false, bool color = true) {
|
inline void set(const string &name, const Texture3D *texture, bool repeat = false, bool color = true) {
|
||||||
get(name)->set(texture, repeat, color);
|
get(name)->set(texture, repeat, color);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const Texture4D *texture, bool repeat = false, bool color = true) {
|
inline void set(const string &name, const Texture4D *texture, bool repeat = false, bool color = true) {
|
||||||
get(name)->set(texture, repeat, color);
|
get(name)->set(texture, repeat, color);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, float value) {
|
inline void set(const string &name, float value) {
|
||||||
get(name)->set(value);
|
get(name)->set(value);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const Vector3 &vector) {
|
inline void set(const string &name, const Vector3 &vector) {
|
||||||
get(name)->set(vector);
|
get(name)->set(vector);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const QVector3D &vector) {
|
inline void set(const string &name, const QVector3D &vector) {
|
||||||
get(name)->set(vector);
|
get(name)->set(vector);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const Matrix4 &matrix) {
|
inline void set(const string &name, const Matrix4 &matrix) {
|
||||||
get(name)->set(matrix);
|
get(name)->set(matrix);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const QMatrix4x4 &matrix) {
|
inline void set(const string &name, const QMatrix4x4 &matrix) {
|
||||||
get(name)->set(matrix);
|
get(name)->set(matrix);
|
||||||
}
|
}
|
||||||
inline void set(const std::string &name, const Color &color) {
|
inline void set(const string &name, const Color &color) {
|
||||||
get(name)->set(color);
|
get(name)->set(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::map<std::string, OpenGLVariable *> variables;
|
map<string, OpenGLVariable *> variables;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "Texture3D.h"
|
#include "Texture3D.h"
|
||||||
#include "Texture4D.h"
|
#include "Texture4D.h"
|
||||||
|
|
||||||
OpenGLVariable::OpenGLVariable(const std::string &name) : name(name) {
|
OpenGLVariable::OpenGLVariable(const string &name) : name(name) {
|
||||||
type = TYPE_NONE;
|
type = TYPE_NONE;
|
||||||
texture_toupload = false;
|
texture_toupload = false;
|
||||||
texture_id = 0;
|
texture_id = 0;
|
||||||
|
@ -35,7 +35,7 @@ OpenGLVariable::~OpenGLVariable() {
|
||||||
delete[] value_texture_data;
|
delete[] value_texture_data;
|
||||||
|
|
||||||
if (texture_id) {
|
if (texture_id) {
|
||||||
Logs::warning() << "[OpenGL] Texture ID not freed " << texture_id << std::endl;
|
Logs::warning() << "[OpenGL] Texture ID not freed " << texture_id << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ class OpenGLVariable {
|
||||||
} OpenGLVariableType;
|
} OpenGLVariableType;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OpenGLVariable(const std::string &name);
|
OpenGLVariable(const string &name);
|
||||||
~OpenGLVariable();
|
~OpenGLVariable();
|
||||||
|
|
||||||
void apply(OpenGLShaderProgram *program, int &texture_unit);
|
void apply(OpenGLShaderProgram *program, int &texture_unit);
|
||||||
|
@ -55,7 +55,7 @@ class OpenGLVariable {
|
||||||
void uploadTexture(OpenGLRenderer *renderer);
|
void uploadTexture(OpenGLRenderer *renderer);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string name;
|
string name;
|
||||||
OpenGLVariableType type;
|
OpenGLVariableType type;
|
||||||
|
|
||||||
float value_float;
|
float value_float;
|
||||||
|
|
|
@ -23,7 +23,7 @@ OpenGLVertexArray::OpenGLVertexArray(bool has_uv, bool strip) : has_uv(has_uv) {
|
||||||
|
|
||||||
OpenGLVertexArray::~OpenGLVertexArray() {
|
OpenGLVertexArray::~OpenGLVertexArray() {
|
||||||
if (vao || vbo_vertex || vbo_uv) {
|
if (vao || vbo_vertex || vbo_uv) {
|
||||||
Logs::warning() << "[OpenGL] VertexArray not freed in OpenGL state before destructor called" << std::endl;
|
Logs::warning() << "[OpenGL] VertexArray not freed in OpenGL state before destructor called" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(array_vertex);
|
free(array_vertex);
|
||||||
|
@ -79,7 +79,7 @@ void OpenGLVertexArray::set(int index, const Vector3 &location, double u, double
|
||||||
array_uv[index * 2 + 1] = v;
|
array_uv[index * 2 + 1] = v;
|
||||||
changed = true;
|
changed = true;
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[OpenGL] Setting vertex data outside of array bounds" << std::endl;
|
Logs::error() << "[OpenGL] Setting vertex data outside of array bounds" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ void OpenGLVertexArray::get(int index, Vector3 *location, double *u, double *v)
|
||||||
*u = array_uv[index * 2];
|
*u = array_uv[index * 2];
|
||||||
*v = array_uv[index * 2 + 1];
|
*v = array_uv[index * 2 + 1];
|
||||||
} else {
|
} else {
|
||||||
Logs::error() << "[OpenGL] Getting vertex data outside of array bounds" << std::endl;
|
Logs::error() << "[OpenGL] Getting vertex data outside of array bounds" << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1130,7 +1130,7 @@ AtmosphereResult AtmosphereModelBruneton::applyAerialPerspective(Vector3 locatio
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AtmosphereModelBruneton::getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const {
|
bool AtmosphereModelBruneton::getLightsAt(vector<LightComponent> &result, const Vector3 &location) const {
|
||||||
LightComponent sun, irradiance;
|
LightComponent sun, irradiance;
|
||||||
double muS;
|
double muS;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ class SOFTWARESHARED_EXPORT AtmosphereModelBruneton : public LightSource {
|
||||||
|
|
||||||
AtmosphereResult getSkyColor(Vector3 eye, const Vector3 &direction, const Vector3 &sun_position, const Color &base);
|
AtmosphereResult getSkyColor(Vector3 eye, const Vector3 &direction, const Vector3 &sun_position, const Color &base);
|
||||||
AtmosphereResult applyAerialPerspective(Vector3 location, const Color &base);
|
AtmosphereResult applyAerialPerspective(Vector3 location, const Color &base);
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const override;
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override;
|
||||||
|
|
||||||
/* Functions to get access to internal textures (for opengl shaders) */
|
/* Functions to get access to internal textures (for opengl shaders) */
|
||||||
Texture2D *getTextureTransmittance() const;
|
Texture2D *getTextureTransmittance() const;
|
||||||
|
|
|
@ -92,7 +92,7 @@ Vector3 BaseAtmosphereRenderer::getSunDirection(bool) const {
|
||||||
return Vector3(cos(sun_angle), sin(sun_angle), 0.0);
|
return Vector3(cos(sun_angle), sin(sun_angle), 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BaseAtmosphereRenderer::getLightsAt(std::vector<LightComponent> &, const Vector3 &) const {
|
bool BaseAtmosphereRenderer::getLightsAt(vector<LightComponent> &, const Vector3 &) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -195,8 +195,7 @@ AtmosphereResult SoftwareBrunetonAtmosphereRenderer::getSkyColor(const Vector3 &
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SoftwareBrunetonAtmosphereRenderer::getLightsAt(std::vector<LightComponent> &result,
|
bool SoftwareBrunetonAtmosphereRenderer::getLightsAt(vector<LightComponent> &result, const Vector3 &location) const {
|
||||||
const Vector3 &location) const {
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
changed |= model->getLightsAt(result, location);
|
changed |= model->getLightsAt(result, location);
|
||||||
changed |= parent->getNightSky()->getLightsAt(result, location);
|
changed |= parent->getNightSky()->getLightsAt(result, location);
|
||||||
|
|
|
@ -18,7 +18,7 @@ class BaseAtmosphereRenderer : public LightSource {
|
||||||
virtual AtmosphereResult getSkyColor(const Vector3 &direction);
|
virtual AtmosphereResult getSkyColor(const Vector3 &direction);
|
||||||
virtual Vector3 getSunDirection(bool cache = true) const;
|
virtual Vector3 getSunDirection(bool cache = true) const;
|
||||||
|
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const override;
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual AtmosphereDefinition *getDefinition() const;
|
virtual AtmosphereDefinition *getDefinition() const;
|
||||||
|
@ -33,7 +33,7 @@ class SoftwareBrunetonAtmosphereRenderer : public BaseAtmosphereRenderer {
|
||||||
virtual AtmosphereResult applyAerialPerspective(const Vector3 &location, const Color &base) override;
|
virtual AtmosphereResult applyAerialPerspective(const Vector3 &location, const Color &base) override;
|
||||||
virtual AtmosphereResult getSkyColor(const Vector3 &direction) override;
|
virtual AtmosphereResult getSkyColor(const Vector3 &direction) override;
|
||||||
|
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const override;
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override;
|
||||||
|
|
||||||
inline const AtmosphereModelBruneton *getModel() const {
|
inline const AtmosphereModelBruneton *getModel() const {
|
||||||
return model;
|
return model;
|
||||||
|
|
|
@ -99,7 +99,7 @@ CanvasPortion *Canvas::atPixel(int x, int y) const {
|
||||||
return at(px, py);
|
return at(px, py);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Canvas::saveToDisk(const std::string &filepath, const ColorProfile &profile, int antialias) const {
|
bool Canvas::saveToDisk(const string &filepath, const ColorProfile &profile, int antialias) const {
|
||||||
assert(antialias >= 1);
|
assert(antialias >= 1);
|
||||||
|
|
||||||
CanvasPictureWriter writer(this);
|
CanvasPictureWriter writer(this);
|
||||||
|
|
|
@ -46,10 +46,10 @@ class SOFTWARESHARED_EXPORT Canvas {
|
||||||
*
|
*
|
||||||
* Returns true if the save was successful.
|
* Returns true if the save was successful.
|
||||||
*/
|
*/
|
||||||
bool saveToDisk(const std::string &filepath, const ColorProfile &profile, int antialias) const;
|
bool saveToDisk(const string &filepath, const ColorProfile &profile, int antialias) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<CanvasPortion *> portions;
|
vector<CanvasPortion *> portions;
|
||||||
int horizontal_portion_count;
|
int horizontal_portion_count;
|
||||||
int vertical_portion_count;
|
int vertical_portion_count;
|
||||||
int width;
|
int width;
|
||||||
|
|
|
@ -37,7 +37,7 @@ void CanvasPictureWriter::setColorProfile(const ColorProfile &profile) {
|
||||||
profile.copy(this->profile);
|
profile.copy(this->profile);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CanvasPictureWriter::saveCanvas(const std::string &filepath) {
|
bool CanvasPictureWriter::saveCanvas(const string &filepath) {
|
||||||
return save(filepath, width, height);
|
return save(filepath, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ class SOFTWARESHARED_EXPORT CanvasPictureWriter : public PictureWriter {
|
||||||
*
|
*
|
||||||
* Returns true if saving was successful.
|
* Returns true if saving was successful.
|
||||||
*/
|
*/
|
||||||
bool saveCanvas(const std::string &filepath);
|
bool saveCanvas(const string &filepath);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual unsigned int getPixel(int x, int y) override;
|
virtual unsigned int getPixel(int x, int y) override;
|
||||||
|
|
|
@ -18,13 +18,13 @@
|
||||||
assert(pixels != NULL)
|
assert(pixels != NULL)
|
||||||
|
|
||||||
// Keep track of created files to erase them at program exit
|
// Keep track of created files to erase them at program exit
|
||||||
static std::vector<std::string> _files;
|
static vector<string> _files;
|
||||||
static void clean_all_files() {
|
static void clean_all_files() {
|
||||||
for (auto &filepath : _files) {
|
for (auto &filepath : _files) {
|
||||||
FileSystem::removeFile(filepath);
|
FileSystem::removeFile(filepath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static int _atexit = std::atexit(clean_all_files);
|
static int _atexit = atexit(clean_all_files);
|
||||||
|
|
||||||
CanvasPortion::CanvasPortion(int index, CanvasPreview *preview) : index(index), preview(preview) {
|
CanvasPortion::CanvasPortion(int index, CanvasPreview *preview) : index(index), preview(preview) {
|
||||||
width = 1;
|
width = 1;
|
||||||
|
@ -86,8 +86,7 @@ void CanvasPortion::discardPixels(bool save) {
|
||||||
void CanvasPortion::saveToDisk() {
|
void CanvasPortion::saveToDisk() {
|
||||||
if (pixels) {
|
if (pixels) {
|
||||||
auto pid = System::getProcessId();
|
auto pid = System::getProcessId();
|
||||||
filepath =
|
filepath = FileSystem::getTempFile("paysages_portion_" + to_string(index) + "_" + to_string(pid) + ".dat");
|
||||||
FileSystem::getTempFile("paysages_portion_" + std::to_string(index) + "_" + std::to_string(pid) + ".dat");
|
|
||||||
PackStream stream;
|
PackStream stream;
|
||||||
stream.bindToFile(filepath, true);
|
stream.bindToFile(filepath, true);
|
||||||
stream.write(&width);
|
stream.write(&width);
|
||||||
|
|
|
@ -89,7 +89,7 @@ class SOFTWARESHARED_EXPORT CanvasPortion {
|
||||||
int yoffset;
|
int yoffset;
|
||||||
CanvasPixel *pixels;
|
CanvasPixel *pixels;
|
||||||
CanvasPreview *preview;
|
CanvasPreview *preview;
|
||||||
std::string filepath;
|
string filepath;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,7 +100,7 @@ BaseCloudLayerRenderer *CloudsRenderer::getLayerRenderer(unsigned int layer) {
|
||||||
if (layer < layer_renderers.size()) {
|
if (layer < layer_renderers.size()) {
|
||||||
return layer_renderers[layer];
|
return layer_renderers[layer];
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "Asked for unknown layer renderer " << layer << std::endl;
|
Logs::warning() << "Asked for unknown layer renderer " << layer << endl;
|
||||||
return fake_renderer;
|
return fake_renderer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ BaseCloudsModel *CloudsRenderer::getLayerModel(unsigned int layer) {
|
||||||
if (layer < layer_models.size()) {
|
if (layer < layer_models.size()) {
|
||||||
return layer_models[layer];
|
return layer_models[layer];
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "Asked for unknown layer model" << layer << std::endl;
|
Logs::warning() << "Asked for unknown layer model" << layer << endl;
|
||||||
return fake_model;
|
return fake_model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ void CloudsRenderer::setLayerModel(unsigned int layer, BaseCloudsModel *model, b
|
||||||
}
|
}
|
||||||
layer_models[layer] = model;
|
layer_models[layer] = model;
|
||||||
} else {
|
} else {
|
||||||
Logs::warning() << "Asked to set an unknown layer model" << layer << std::endl;
|
Logs::warning() << "Asked to set an unknown layer model" << layer << endl;
|
||||||
delete model;
|
delete model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,10 +80,10 @@ class SOFTWARESHARED_EXPORT CloudsRenderer : public LightFilter {
|
||||||
bool enabled;
|
bool enabled;
|
||||||
SoftwareRenderer *parent;
|
SoftwareRenderer *parent;
|
||||||
|
|
||||||
std::vector<BaseCloudLayerRenderer *> layer_renderers;
|
vector<BaseCloudLayerRenderer *> layer_renderers;
|
||||||
BaseCloudLayerRenderer *fake_renderer;
|
BaseCloudLayerRenderer *fake_renderer;
|
||||||
|
|
||||||
std::vector<BaseCloudsModel *> layer_models;
|
vector<BaseCloudsModel *> layer_models;
|
||||||
BaseCloudsModel *fake_model;
|
BaseCloudsModel *fake_model;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,7 +53,7 @@ class SOFTWARESHARED_EXPORT FluidMediumManager {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SoftwareRenderer *renderer;
|
SoftwareRenderer *renderer;
|
||||||
std::vector<FluidMediumInterface *> media;
|
vector<FluidMediumInterface *> media;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ class SOFTWARESHARED_EXPORT LightSource {
|
||||||
*
|
*
|
||||||
* Returns true if lights were added to *result*.
|
* Returns true if lights were added to *result*.
|
||||||
*/
|
*/
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const = 0;
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ class SOFTWARESHARED_EXPORT LightStatus {
|
||||||
Vector3 location;
|
Vector3 location;
|
||||||
Vector3 eye;
|
Vector3 eye;
|
||||||
bool filtered;
|
bool filtered;
|
||||||
std::vector<LightComponent> components;
|
vector<LightComponent> components;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,14 +38,14 @@ void LightingManager::clearSources() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightingManager::registerSource(LightSource *source) {
|
void LightingManager::registerSource(LightSource *source) {
|
||||||
if (std::find(sources.begin(), sources.end(), source) == sources.end()) {
|
if (find(sources.begin(), sources.end(), source) == sources.end()) {
|
||||||
sources.push_back(source);
|
sources.push_back(source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightingManager::unregisterSource(LightSource *source) {
|
void LightingManager::unregisterSource(LightSource *source) {
|
||||||
if (std::find(sources.begin(), sources.end(), source) != sources.end()) {
|
if (find(sources.begin(), sources.end(), source) != sources.end()) {
|
||||||
sources.erase(std::find(sources.begin(), sources.end(), source));
|
sources.erase(find(sources.begin(), sources.end(), source));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,14 +54,14 @@ void LightingManager::clearFilters() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightingManager::registerFilter(LightFilter *filter) {
|
void LightingManager::registerFilter(LightFilter *filter) {
|
||||||
if (std::find(filters.begin(), filters.end(), filter) == filters.end()) {
|
if (find(filters.begin(), filters.end(), filter) == filters.end()) {
|
||||||
filters.push_back(filter);
|
filters.push_back(filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightingManager::unregisterFilter(LightFilter *filter) {
|
void LightingManager::unregisterFilter(LightFilter *filter) {
|
||||||
if (std::find(filters.begin(), filters.end(), filter) != filters.end()) {
|
if (find(filters.begin(), filters.end(), filter) != filters.end()) {
|
||||||
filters.erase(std::find(filters.begin(), filters.end(), filter));
|
filters.erase(find(filters.begin(), filters.end(), filter));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ void LightingManager::fillStatus(LightStatus &status, const Vector3 &location) c
|
||||||
status.pushComponent(light);
|
status.pushComponent(light);
|
||||||
}
|
}
|
||||||
for (auto source : sources) {
|
for (auto source : sources) {
|
||||||
std::vector<LightComponent> lights;
|
vector<LightComponent> lights;
|
||||||
if (source->getLightsAt(lights, location)) {
|
if (source->getLightsAt(lights, location)) {
|
||||||
for (auto &light : lights) {
|
for (auto &light : lights) {
|
||||||
status.pushComponent(light);
|
status.pushComponent(light);
|
||||||
|
|
|
@ -102,9 +102,9 @@ class SOFTWARESHARED_EXPORT LightingManager {
|
||||||
private:
|
private:
|
||||||
bool specularity;
|
bool specularity;
|
||||||
bool filtering;
|
bool filtering;
|
||||||
std::vector<LightComponent> static_lights;
|
vector<LightComponent> static_lights;
|
||||||
std::vector<LightFilter *> filters;
|
vector<LightFilter *> filters;
|
||||||
std::vector<LightSource *> sources;
|
vector<LightSource *> sources;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,7 @@ const Color NightSky::getColor(double altitude, const Vector3 &direction) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NightSky::getLightsAt(std::vector<LightComponent> &result, const Vector3 &) const {
|
bool NightSky::getLightsAt(vector<LightComponent> &result, const Vector3 &) const {
|
||||||
LightComponent moon, sky;
|
LightComponent moon, sky;
|
||||||
|
|
||||||
AtmosphereDefinition *atmosphere = renderer->getScenery()->getAtmosphere();
|
AtmosphereDefinition *atmosphere = renderer->getScenery()->getAtmosphere();
|
||||||
|
|
|
@ -27,7 +27,7 @@ class SOFTWARESHARED_EXPORT NightSky : public LightSource {
|
||||||
*/
|
*/
|
||||||
virtual const Color getColor(double altitude, const Vector3 &direction);
|
virtual const Color getColor(double altitude, const Vector3 &direction);
|
||||||
|
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const override;
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SoftwareRenderer *renderer;
|
SoftwareRenderer *renderer;
|
||||||
|
|
|
@ -72,7 +72,7 @@ void RenderProgress::exitSub() {
|
||||||
|
|
||||||
void RenderProgress::end() {
|
void RenderProgress::end() {
|
||||||
if (subs.size() > 0) {
|
if (subs.size() > 0) {
|
||||||
Logs::error() << subs.size() << " progress subs remaining at the end of render" << std::endl;
|
Logs::error() << subs.size() << " progress subs remaining at the end of render" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
end_time = Time::getRelativeTimeMs();
|
end_time = Time::getRelativeTimeMs();
|
||||||
|
|
|
@ -58,7 +58,7 @@ class SOFTWARESHARED_EXPORT RenderProgress {
|
||||||
double prev_est_done;
|
double prev_est_done;
|
||||||
double prev_est_speed;
|
double prev_est_speed;
|
||||||
|
|
||||||
std::stack<RenderSub> subs;
|
stack<RenderSub> subs;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ const Rasterizer &SoftwareCanvasRenderer::getRasterizer(int client_id) const {
|
||||||
return *(rasterizers[client_id]);
|
return *(rasterizers[client_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SoftwareCanvasRenderer::saveToDisk(const std::string &filepath) const {
|
bool SoftwareCanvasRenderer::saveToDisk(const string &filepath) const {
|
||||||
return getCanvas()->saveToDisk(filepath, *getCanvas()->getPreview()->getToneMapping(), samples);
|
return getCanvas()->saveToDisk(filepath, *getCanvas()->getPreview()->getToneMapping(), samples);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ class SOFTWARESHARED_EXPORT SoftwareCanvasRenderer : public SoftwareRenderer {
|
||||||
*
|
*
|
||||||
* Returns true if the save was successful.
|
* Returns true if the save was successful.
|
||||||
*/
|
*/
|
||||||
bool saveToDisk(const std::string &filepath) const;
|
bool saveToDisk(const string &filepath) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
|
@ -112,7 +112,7 @@ class SOFTWARESHARED_EXPORT SoftwareCanvasRenderer : public SoftwareRenderer {
|
||||||
|
|
||||||
Canvas *canvas;
|
Canvas *canvas;
|
||||||
int samples;
|
int samples;
|
||||||
std::vector<Rasterizer *> rasterizers;
|
vector<Rasterizer *> rasterizers;
|
||||||
bool started;
|
bool started;
|
||||||
bool finished;
|
bool finished;
|
||||||
bool interrupted;
|
bool interrupted;
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include "DataFile.h"
|
#include "DataFile.h"
|
||||||
|
|
||||||
CacheFile::CacheFile(const std::string &module, const std::string &ext, const std::string &tag1, int tag2, int tag3,
|
CacheFile::CacheFile(const string &module, const string &ext, const string &tag1, int tag2, int tag3, int tag4,
|
||||||
int tag4, int tag5, int tag6) {
|
int tag5, int tag6) {
|
||||||
filepath = QString("cache/%1-%2-%3-%4-%5-%6-%7.%8")
|
filepath = QString("cache/%1-%2-%3-%4-%5-%6-%7.%8")
|
||||||
.arg(QString::fromStdString(module))
|
.arg(QString::fromStdString(module))
|
||||||
.arg(QString::fromStdString(tag1))
|
.arg(QString::fromStdString(tag1))
|
||||||
|
@ -23,7 +23,7 @@ bool CacheFile::isReadable() {
|
||||||
fclose(f);
|
fclose(f);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
std::string datapath = DataFile::findFile(filepath);
|
string datapath = DataFile::findFile(filepath);
|
||||||
if (datapath.empty()) {
|
if (datapath.empty()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -48,8 +48,8 @@ bool CacheFile::isWritable() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CacheFile::getPath() {
|
string CacheFile::getPath() {
|
||||||
std::string datapath = DataFile::findFile(filepath);
|
string datapath = DataFile::findFile(filepath);
|
||||||
if (datapath.empty()) {
|
if (datapath.empty()) {
|
||||||
return filepath;
|
return filepath;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -8,15 +8,15 @@ namespace system {
|
||||||
|
|
||||||
class SYSTEMSHARED_EXPORT CacheFile {
|
class SYSTEMSHARED_EXPORT CacheFile {
|
||||||
public:
|
public:
|
||||||
CacheFile(const std::string &module, const std::string &ext, const std::string &tag1, int tag2, int tag3, int tag4,
|
CacheFile(const string &module, const string &ext, const string &tag1, int tag2, int tag3, int tag4, int tag5,
|
||||||
int tag5, int tag6);
|
int tag6);
|
||||||
|
|
||||||
bool isReadable();
|
bool isReadable();
|
||||||
bool isWritable();
|
bool isWritable();
|
||||||
std::string getPath();
|
string getPath();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string filepath;
|
string filepath;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include "Logs.h"
|
#include "Logs.h"
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
std::string DataFile::findFile(const std::string &relpath) {
|
string DataFile::findFile(const string &relpath) {
|
||||||
if (dataDir.empty()) {
|
if (dataDir.empty()) {
|
||||||
dataDir = initDataDir();
|
dataDir = initDataDir();
|
||||||
}
|
}
|
||||||
|
@ -16,16 +16,16 @@ std::string DataFile::findFile(const std::string &relpath) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DataFile::findDir(const std::string &relpath) {
|
string DataFile::findDir(const string &relpath) {
|
||||||
return findFile(relpath);
|
return findFile(relpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DataFile::tryDataDir(const QDir &dir) {
|
bool DataFile::tryDataDir(const QDir &dir) {
|
||||||
Logs::debug() << "[System] Try data dir " << dir.absolutePath().toStdString() << std::endl;
|
Logs::debug() << "[System] Try data dir " << dir.absolutePath().toStdString() << endl;
|
||||||
return dir.exists("data/.paysages_data");
|
return dir.exists("data/.paysages_data");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DataFile::locateDataDir() {
|
string DataFile::locateDataDir() {
|
||||||
QDir dir = QDir::current();
|
QDir dir = QDir::current();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
@ -47,16 +47,16 @@ std::string DataFile::locateDataDir() {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DataFile::initDataDir() {
|
string DataFile::initDataDir() {
|
||||||
std::string parent = locateDataDir();
|
string parent = locateDataDir();
|
||||||
if (parent.empty()) {
|
if (parent.empty()) {
|
||||||
Logs::warning() << "[System] Data files not found" << std::endl;
|
Logs::warning() << "[System] Data files not found" << endl;
|
||||||
return parent;
|
return parent;
|
||||||
} else {
|
} else {
|
||||||
std::string result = QDir(QString::fromStdString(parent)).absoluteFilePath("data").toStdString();
|
string result = QDir(QString::fromStdString(parent)).absoluteFilePath("data").toStdString();
|
||||||
Logs::debug() << "[System] Data files found : " << result << std::endl;
|
Logs::debug() << "[System] Data files found : " << result << endl;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string DataFile::dataDir;
|
string DataFile::dataDir;
|
||||||
|
|
|
@ -18,20 +18,20 @@ class SYSTEMSHARED_EXPORT DataFile {
|
||||||
*
|
*
|
||||||
* Return the absolute data path, or an empty string if not found.
|
* Return the absolute data path, or an empty string if not found.
|
||||||
*/
|
*/
|
||||||
static std::string findFile(const std::string &relpath);
|
static string findFile(const string &relpath);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find a data directory.
|
* Find a data directory.
|
||||||
*
|
*
|
||||||
* Return the absolute data path, or an empty string if not found.
|
* Return the absolute data path, or an empty string if not found.
|
||||||
*/
|
*/
|
||||||
static std::string findDir(const std::string &relpath);
|
static string findDir(const string &relpath);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static bool tryDataDir(const QDir &dir);
|
static bool tryDataDir(const QDir &dir);
|
||||||
static std::string locateDataDir();
|
static string locateDataDir();
|
||||||
static std::string initDataDir();
|
static string initDataDir();
|
||||||
static std::string dataDir;
|
static string dataDir;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,15 +4,15 @@
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
std::string FileSystem::getTempFile(const std::string &filename) {
|
string FileSystem::getTempFile(const string &filename) {
|
||||||
return QDir::temp().filePath(QString::fromStdString(filename)).toStdString();
|
return QDir::temp().filePath(QString::fromStdString(filename)).toStdString();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileSystem::isFile(const std::string &filepath) {
|
bool FileSystem::isFile(const string &filepath) {
|
||||||
return QFileInfo(QString::fromStdString(filepath)).exists();
|
return QFileInfo(QString::fromStdString(filepath)).exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileSystem::removeFile(const std::string &filepath) {
|
bool FileSystem::removeFile(const string &filepath) {
|
||||||
if (FileSystem::isFile(filepath)) {
|
if (FileSystem::isFile(filepath)) {
|
||||||
remove(filepath.c_str());
|
remove(filepath.c_str());
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -13,17 +13,17 @@ class SYSTEMSHARED_EXPORT FileSystem {
|
||||||
*
|
*
|
||||||
* filename must not contain directory separators.
|
* filename must not contain directory separators.
|
||||||
*/
|
*/
|
||||||
static std::string getTempFile(const std::string &filename);
|
static string getTempFile(const string &filename);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the given path points to a file.
|
* Returns true if the given path points to a file.
|
||||||
*/
|
*/
|
||||||
static bool isFile(const std::string &filepath);
|
static bool isFile(const string &filepath);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a file by its absolute path.
|
* Remove a file by its absolute path.
|
||||||
*/
|
*/
|
||||||
static bool removeFile(const std::string &filepath);
|
static bool removeFile(const string &filepath);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,15 @@
|
||||||
#include <streambuf>
|
#include <streambuf>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
|
|
||||||
template <class cT, class traits = std::char_traits<cT>> class basic_nullbuf : public std::basic_streambuf<cT, traits> {
|
template <class cT, class traits = char_traits<cT>> class basic_nullbuf : public basic_streambuf<cT, traits> {
|
||||||
typename traits::int_type overflow(typename traits::int_type c) {
|
typename traits::int_type overflow(typename traits::int_type c) {
|
||||||
return traits::not_eof(c); // indicate success
|
return traits::not_eof(c); // indicate success
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class cT, class traits = std::char_traits<cT>>
|
template <class cT, class traits = char_traits<cT>> class basic_onullstream : public basic_ostream<cT, traits> {
|
||||||
class basic_onullstream : public std::basic_ostream<cT, traits> {
|
|
||||||
public:
|
public:
|
||||||
basic_onullstream() : std::basic_ios<cT, traits>(&m_sbuf), std::basic_ostream<cT, traits>(&m_sbuf) {
|
basic_onullstream() : basic_ios<cT, traits>(&m_sbuf), basic_ostream<cT, traits>(&m_sbuf) {
|
||||||
this->init(&m_sbuf);
|
this->init(&m_sbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,39 +25,39 @@ typedef basic_onullstream<char> onullstream;
|
||||||
static onullstream NULL_STREAM;
|
static onullstream NULL_STREAM;
|
||||||
static bool enabled = true;
|
static bool enabled = true;
|
||||||
|
|
||||||
std::ostream &Logs::debug() {
|
ostream &Logs::debug() {
|
||||||
#ifdef NDEBUG
|
#ifdef NDEBUG
|
||||||
return NULL_STREAM;
|
return NULL_STREAM;
|
||||||
#else
|
#else
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
std::cout << "DEBUG - ";
|
cout << "DEBUG - ";
|
||||||
return std::cout;
|
return cout;
|
||||||
} else {
|
} else {
|
||||||
return NULL_STREAM;
|
return NULL_STREAM;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &Logs::warning() {
|
ostream &Logs::warning() {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
std::cerr << "WARN - ";
|
cerr << "WARN - ";
|
||||||
return std::cerr;
|
return cerr;
|
||||||
} else {
|
} else {
|
||||||
return NULL_STREAM;
|
return NULL_STREAM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ostream &Logs::error() {
|
ostream &Logs::error() {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
std::cerr << "ERROR - ";
|
cerr << "ERROR - ";
|
||||||
return std::cerr;
|
return cerr;
|
||||||
} else {
|
} else {
|
||||||
return NULL_STREAM;
|
return NULL_STREAM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logs::debugTimestamp(const std::string &message) {
|
void Logs::debugTimestamp(const string &message) {
|
||||||
debug() << Time::getRelativeTimeMs() << " - " << message << std::endl;
|
debug() << Time::getRelativeTimeMs() << " - " << message << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Logs::disable() {
|
void Logs::disable() {
|
||||||
|
|
|
@ -13,12 +13,12 @@ namespace system {
|
||||||
*/
|
*/
|
||||||
class SYSTEMSHARED_EXPORT Logs {
|
class SYSTEMSHARED_EXPORT Logs {
|
||||||
public:
|
public:
|
||||||
static std::ostream &debug();
|
static ostream &debug();
|
||||||
static std::ostream &warning();
|
static ostream &warning();
|
||||||
static std::ostream &error();
|
static ostream &error();
|
||||||
|
|
||||||
// Log a timestamp on the debug output
|
// Log a timestamp on the debug output
|
||||||
static void debugTimestamp(const std::string &message);
|
static void debugTimestamp(const string &message);
|
||||||
|
|
||||||
// Disable all logs from now on
|
// Disable all logs from now on
|
||||||
static void disable();
|
static void disable();
|
||||||
|
|
|
@ -25,7 +25,7 @@ PackStream::PackStream(const PackStream *other) {
|
||||||
buffer = new QByteArray();
|
buffer = new QByteArray();
|
||||||
if (other->file) {
|
if (other->file) {
|
||||||
Logs::error() << "Try to read from a substream bound to a file: " << other->file->fileName().toStdString()
|
Logs::error() << "Try to read from a substream bound to a file: " << other->file->fileName().toStdString()
|
||||||
<< std::endl;
|
<< endl;
|
||||||
stream = new QDataStream(buffer, QIODevice::ReadOnly);
|
stream = new QDataStream(buffer, QIODevice::ReadOnly);
|
||||||
} else {
|
} else {
|
||||||
stream = new QDataStream(other->buffer, QIODevice::ReadOnly);
|
stream = new QDataStream(other->buffer, QIODevice::ReadOnly);
|
||||||
|
@ -33,14 +33,14 @@ PackStream::PackStream(const PackStream *other) {
|
||||||
stream->setVersion(QDataStream::Qt_5_2);
|
stream->setVersion(QDataStream::Qt_5_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
PackStream::PackStream(const std::string &buffer_content) {
|
PackStream::PackStream(const string &buffer_content) {
|
||||||
file = NULL;
|
file = NULL;
|
||||||
buffer = new QByteArray(buffer_content.c_str(), buffer_content.size());
|
buffer = new QByteArray(buffer_content.c_str(), buffer_content.size());
|
||||||
stream = new QDataStream(buffer, QIODevice::ReadOnly);
|
stream = new QDataStream(buffer, QIODevice::ReadOnly);
|
||||||
stream->setVersion(QDataStream::Qt_5_2);
|
stream->setVersion(QDataStream::Qt_5_2);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PackStream::bindToFile(const std::string &filepath, bool write) {
|
bool PackStream::bindToFile(const string &filepath, bool write) {
|
||||||
if (not file) {
|
if (not file) {
|
||||||
file = new QFile(QString::fromStdString(filepath));
|
file = new QFile(QString::fromStdString(filepath));
|
||||||
if (not file->open(write ? QIODevice::WriteOnly : QIODevice::ReadOnly)) {
|
if (not file->open(write ? QIODevice::WriteOnly : QIODevice::ReadOnly)) {
|
||||||
|
@ -80,14 +80,14 @@ void PackStream::write(const char *value, int max_length) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackStream::write(const std::string &value) {
|
void PackStream::write(const string &value) {
|
||||||
*stream << QString::fromStdString(value);
|
*stream << QString::fromStdString(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackStream::writeFromBuffer(const PackStream &other, bool prepend_size) {
|
void PackStream::writeFromBuffer(const PackStream &other, bool prepend_size) {
|
||||||
if (other.file) {
|
if (other.file) {
|
||||||
Logs::error() << "Try to write from a substream bound to a file: " << other.file->fileName().toStdString()
|
Logs::error() << "Try to write from a substream bound to a file: " << other.file->fileName().toStdString()
|
||||||
<< std::endl;
|
<< endl;
|
||||||
} else {
|
} else {
|
||||||
if (prepend_size) {
|
if (prepend_size) {
|
||||||
int buffer_size = (int)other.buffer->size();
|
int buffer_size = (int)other.buffer->size();
|
||||||
|
@ -97,10 +97,9 @@ void PackStream::writeFromBuffer(const PackStream &other, bool prepend_size) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PackStream::getBuffer() {
|
string PackStream::getBuffer() {
|
||||||
if (file) {
|
if (file) {
|
||||||
Logs::error() << "Try to get buffer on a stream bound to a file: " << file->fileName().toStdString()
|
Logs::error() << "Try to get buffer on a stream bound to a file: " << file->fileName().toStdString() << endl;
|
||||||
<< std::endl;
|
|
||||||
return "";
|
return "";
|
||||||
} else {
|
} else {
|
||||||
return buffer->toStdString();
|
return buffer->toStdString();
|
||||||
|
@ -132,7 +131,7 @@ void PackStream::read(char *value, int max_length) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PackStream::readString() {
|
string PackStream::readString() {
|
||||||
if (not stream->atEnd()) {
|
if (not stream->atEnd()) {
|
||||||
QString output;
|
QString output;
|
||||||
*stream >> output;
|
*stream >> output;
|
||||||
|
|
|
@ -28,14 +28,14 @@ class SYSTEMSHARED_EXPORT PackStream {
|
||||||
/**
|
/**
|
||||||
* Open a reading stream on a buffer content.
|
* Open a reading stream on a buffer content.
|
||||||
*/
|
*/
|
||||||
PackStream(const std::string &buffer_content);
|
PackStream(const string &buffer_content);
|
||||||
|
|
||||||
bool bindToFile(const std::string &filepath, bool write = false);
|
bool bindToFile(const string &filepath, bool write = false);
|
||||||
|
|
||||||
void write(const int *value);
|
void write(const int *value);
|
||||||
void write(const double *value);
|
void write(const double *value);
|
||||||
void write(const char *value, const int max_length);
|
void write(const char *value, const int max_length);
|
||||||
void write(const std::string &value);
|
void write(const string &value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write the contents of another stream into this one.
|
* Write the contents of another stream into this one.
|
||||||
|
@ -49,12 +49,12 @@ class SYSTEMSHARED_EXPORT PackStream {
|
||||||
/**
|
/**
|
||||||
* Get the contents of the memory buffer, if this stream is not bound to a file.
|
* Get the contents of the memory buffer, if this stream is not bound to a file.
|
||||||
*/
|
*/
|
||||||
std::string getBuffer();
|
string getBuffer();
|
||||||
|
|
||||||
void read(int *value);
|
void read(int *value);
|
||||||
void read(double *value);
|
void read(double *value);
|
||||||
void read(char *value, int max_length);
|
void read(char *value, int max_length);
|
||||||
std::string readString();
|
string readString();
|
||||||
|
|
||||||
void skip(const int &value, int count = 1);
|
void skip(const int &value, int count = 1);
|
||||||
void skip(const double &value, int count = 1);
|
void skip(const double &value, int count = 1);
|
||||||
|
|
|
@ -35,7 +35,7 @@ class SYSTEMSHARED_EXPORT ParallelPool {
|
||||||
bool running;
|
bool running;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Thread *> threads;
|
vector<Thread *> threads;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
|
||||||
bool PictureWriter::save(const std::string &filepath, int width, int height) {
|
bool PictureWriter::save(const string &filepath, int width, int height) {
|
||||||
QImage result(width, height, QImage::Format_ARGB32);
|
QImage result(width, height, QImage::Format_ARGB32);
|
||||||
|
|
||||||
for (int y = 0; y < height; y++) {
|
for (int y = 0; y < height; y++) {
|
||||||
|
|
|
@ -11,7 +11,7 @@ class SYSTEMSHARED_EXPORT PictureWriter {
|
||||||
/**
|
/**
|
||||||
* @brief Start saving the picture in a file.
|
* @brief Start saving the picture in a file.
|
||||||
*/
|
*/
|
||||||
bool save(const std::string &filepath, int width, int height);
|
bool save(const string &filepath, int width, int height);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -11,17 +11,17 @@ class RandomGenerator::RandomGeneratorPrivate {
|
||||||
RandomGeneratorPrivate(unsigned int seed) : generator(seed) {
|
RandomGeneratorPrivate(unsigned int seed) : generator(seed) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::default_random_engine generator;
|
default_random_engine generator;
|
||||||
std::uniform_real_distribution<double> distribution_double;
|
uniform_real_distribution<double> distribution_double;
|
||||||
};
|
};
|
||||||
|
|
||||||
RandomGenerator::RandomGenerator(RandomGenerator::Seed seed) {
|
RandomGenerator::RandomGenerator(RandomGenerator::Seed seed) {
|
||||||
if (not seed) {
|
if (not seed) {
|
||||||
std::random_device true_random;
|
random_device true_random;
|
||||||
if (true_random.entropy()) {
|
if (true_random.entropy()) {
|
||||||
seed = true_random();
|
seed = true_random();
|
||||||
} else {
|
} else {
|
||||||
seed = std::chrono::system_clock::now().time_since_epoch().count();
|
seed = chrono::system_clock::now().time_since_epoch().count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
data = new RandomGeneratorPrivate(seed);
|
data = new RandomGeneratorPrivate(seed);
|
||||||
|
|
|
@ -36,4 +36,6 @@ extern RandomGenerator &RandomGeneratorDefault;
|
||||||
}
|
}
|
||||||
using namespace paysages::system;
|
using namespace paysages::system;
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
#endif // SYSTEM_GLOBAL_H
|
#endif // SYSTEM_GLOBAL_H
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include "ColorHSL.h"
|
#include "ColorHSL.h"
|
||||||
|
|
||||||
TEST(ColorHSL, colorFromHSL) {
|
TEST(ColorHSL, colorFromHSL) {
|
||||||
std::vector<Color> colors;
|
vector<Color> colors;
|
||||||
colors.push_back(Color());
|
colors.push_back(Color());
|
||||||
colors.push_back(Color(1.0, 0.0, 0.0, 1.0));
|
colors.push_back(Color(1.0, 0.0, 0.0, 1.0));
|
||||||
colors.push_back(Color(0.7, 0.5, 0.3, 1.0));
|
colors.push_back(Color(0.7, 0.5, 0.3, 1.0));
|
||||||
|
|
|
@ -59,7 +59,7 @@ TEST(GodRaysSampler, setQuality) {
|
||||||
}
|
}
|
||||||
|
|
||||||
class GodRayLightSource : public LightSource {
|
class GodRayLightSource : public LightSource {
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &result, const Vector3 &location) const override {
|
virtual bool getLightsAt(vector<LightComponent> &result, const Vector3 &location) const override {
|
||||||
LightComponent light;
|
LightComponent light;
|
||||||
light.direction = VECTOR_DOWN;
|
light.direction = VECTOR_DOWN;
|
||||||
light.altered = true;
|
light.altered = true;
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
#include "IntNode.h"
|
#include "IntNode.h"
|
||||||
#include "DefinitionDiff.h"
|
#include "DefinitionDiff.h"
|
||||||
|
|
||||||
static DefinitionNode *_construc1(Layers *, const std::string &name) {
|
static DefinitionNode *_construc1(Layers *, const string &name) {
|
||||||
return new DefinitionNode(NULL, name);
|
return new DefinitionNode(NULL, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static DefinitionNode *_construc2(Layers *parent, const std::string &name) {
|
static DefinitionNode *_construc2(Layers *parent, const string &name) {
|
||||||
DefinitionNode *result = new DefinitionNode(parent, name);
|
DefinitionNode *result = new DefinitionNode(parent, name);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -104,7 +104,7 @@ TEST(Layers, saveLoad) {
|
||||||
EXPECT_EQ("second", layers2.getLayer(1)->getName());
|
EXPECT_EQ("second", layers2.getLayer(1)->getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
static void checkLayerChild(const Layers &layers, int layer, const std::string &name, int value) {
|
static void checkLayerChild(const Layers &layers, int layer, const string &name, int value) {
|
||||||
ASSERT_EQ(1, layers.getLayerCount());
|
ASSERT_EQ(1, layers.getLayerCount());
|
||||||
ASSERT_TRUE(layers.getLayer(layer)->findByPath(name));
|
ASSERT_TRUE(layers.getLayer(layer)->findByPath(name));
|
||||||
ASSERT_EQ("int", layers.getLayer(layer)->findByPath(name)->getTypeName());
|
ASSERT_EQ("int", layers.getLayer(layer)->findByPath(name)->getTypeName());
|
||||||
|
@ -113,13 +113,13 @@ static void checkLayerChild(const Layers &layers, int layer, const std::string &
|
||||||
|
|
||||||
class TestLayer : public DefinitionNode {
|
class TestLayer : public DefinitionNode {
|
||||||
public:
|
public:
|
||||||
TestLayer(Layers *parent, const std::string &name) : DefinitionNode(parent, name) {
|
TestLayer(Layers *parent, const string &name) : DefinitionNode(parent, name) {
|
||||||
val = new IntNode(this, "val", 5);
|
val = new IntNode(this, "val", 5);
|
||||||
}
|
}
|
||||||
IntNode *val;
|
IntNode *val;
|
||||||
};
|
};
|
||||||
|
|
||||||
static DefinitionNode *_construc3(Layers *parent, const std::string &name) {
|
static DefinitionNode *_construc3(Layers *parent, const string &name) {
|
||||||
return new TestLayer(parent, name);
|
return new TestLayer(parent, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ TEST(Layers, undoRedo) {
|
||||||
TEST(Layers, generateInitDiffs) {
|
TEST(Layers, generateInitDiffs) {
|
||||||
Layers layers(NULL, "layers", _construc1);
|
Layers layers(NULL, "layers", _construc1);
|
||||||
|
|
||||||
std::vector<const DefinitionDiff *> diffs;
|
vector<const DefinitionDiff *> diffs;
|
||||||
layers.generateInitDiffs(&diffs);
|
layers.generateInitDiffs(&diffs);
|
||||||
EXPECT_EQ(0, (int)diffs.size());
|
EXPECT_EQ(0, (int)diffs.size());
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include "LightFilter.h"
|
#include "LightFilter.h"
|
||||||
|
|
||||||
class FakeLightSource : public LightSource {
|
class FakeLightSource : public LightSource {
|
||||||
virtual bool getLightsAt(std::vector<LightComponent> &, const Vector3 &) const override {
|
virtual bool getLightsAt(vector<LightComponent> &, const Vector3 &) const override {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
class CollectGridIterator : public SpaceGridIterator {
|
class CollectGridIterator : public SpaceGridIterator {
|
||||||
public:
|
public:
|
||||||
std::vector<Vector3> locations;
|
vector<Vector3> locations;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool onCell(int x, int y, int z) override {
|
virtual bool onCell(int x, int y, int z) override {
|
||||||
|
|
Loading…
Reference in a new issue