Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Graph file format refactoring #724

Merged
merged 1 commit into from
Apr 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion engine/includes/components/transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class ENGINE_EXPORT Transform : public Component {

mutable mutex m_mutex;

mutable int32_t m_hash;
mutable uint32_t m_hash;
mutable bool m_dirty;

};
Expand Down
3 changes: 0 additions & 3 deletions engine/includes/editor/viewport/handletools.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ class ENGINE_EXPORT HandleTools {

static float distanceToMesh(const Matrix4 &matrix, const IndexVector &indices, const Vector3Vector &vertices, const Vector2 &screen);

public:
static float s_Sense;

};

#endif // HANDLETOOLS_H
23 changes: 6 additions & 17 deletions engine/includes/resources/material.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,50 +12,39 @@ class ENGINE_EXPORT Material : public Resource {
A_REGISTER(Material, Resource, Resources)

A_PROPERTIES(
A_PROPERTY(bool, doubleSided, Material::doubleSided, Material::setDoubleSided),
A_PROPERTY(int, materialType, Material::materialType, Material::setMaterialType),
A_PROPERTY(int, lightModel, Material::lightModel, Material::setLightModel),
A_PROPERTY(bool, doubleSided, Material::doubleSided, Material::setDoubleSided),
A_PROPERTY(bool, wireframe, Material::wireframe, Material::setWireframe)
)
A_METHODS(
A_METHOD(void, Material::setTexture)
)
A_ENUMS(
A_ENUM(MaterialType,
A_ENUM(Type,
A_VALUE(Surface),
A_VALUE(PostProcess),
A_VALUE(LightFunction)),

A_ENUM(LightModelType,
A_ENUM(LightModel,
A_VALUE(Unlit),
A_VALUE(Lit),
A_VALUE(Subsurface)),

A_ENUM(BlendType,
A_VALUE(Opaque),
A_VALUE(Additive),
A_VALUE(Translucent))
A_VALUE(Subsurface))
)

public:
enum MaterialType {
enum Type {
Surface,
PostProcess,
LightFunction
};

enum LightModelType {
enum LightModel {
Unlit,
Lit,
Subsurface
};

enum BlendType {
Opaque,
Additive,
Translucent
};

enum SurfaceType {
Static,
Skinned,
Expand Down
4 changes: 2 additions & 2 deletions engine/src/components/transform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ void Transform::setParent(Object *parent, int32_t position, bool force) {
\internal
*/
int Transform::hash() const {
return m_hash;
return static_cast<int32_t>(m_hash);
}
/*!
\internal
Expand All @@ -274,7 +274,7 @@ void Transform::cleanDirty() const {
}
m_hash = 16;
for(int i = 0; i < 16; i++) {
m_hash ^= hash_float(m_worldTransform[i]) + 0x9e3779b9 + (m_hash << 6 ) + (m_hash >> 2);
Mathf::hashCombine(m_hash, m_worldTransform[i]);
}
m_dirty = false;
}
4 changes: 3 additions & 1 deletion engine/src/editor/viewport/cameracontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

#define DT 0.0625f

const float s_Sence = 0.04f;

namespace {
const char *gCamera("Camera");
const char *gPosition("position");
Expand Down Expand Up @@ -384,7 +386,7 @@ void CameraController::drawHelpers(Object &object) {
if(component && component->actor()->isEnabled()) {
component->drawGizmos();
float distance = HandleTools::distanceToPoint(Matrix4(), component->transform()->worldPosition(), Handles::s_Mouse);
if(distance <= HandleTools::s_Sense) {
if(distance <= s_Sence) {
select(object);
}

Expand Down
52 changes: 27 additions & 25 deletions engine/src/editor/viewport/handles.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#define CONTROL_SIZE 90.0f

float s_Sense = 0.04f;

Vector4 Handles::s_Normal = Vector4(1.0f, 1.0f, 1.0f, 1.0f);
Vector4 Handles::s_Grey = Vector4(0.3f, 0.3f, 0.3f, 0.6f);
Vector4 Handles::s_Selected = Vector4(1.0f, 1.0f, 0.0f, 1.0f);
Expand Down Expand Up @@ -140,22 +142,22 @@ Vector3 Handles::moveTool(const Vector3 &position, const Quaternion &rotation, b
Matrix4 r(Vector3(), Quaternion(Vector3(0, 1, 0),-90), Vector3(1));

if(!locked) {
if(HandleTools::distanceToPoint(model, Vector3(), s_Mouse) <= HandleTools::s_Sense) {
if(HandleTools::distanceToPoint(model, Vector3(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_X | AXIS_Y | AXIS_Z;
} else if((HandleTools::distanceToMesh(x, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(z * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(x, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(z * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_X | AXIS_Z;
} else if((HandleTools::distanceToMesh(y, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(x * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(y, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(x * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_Y | AXIS_X;
} else if((HandleTools::distanceToMesh(z, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(y * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(z, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(y * r, s_Move->indices(), s_Move->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_Z | AXIS_Y;
} else if(HandleTools::distanceToMesh(x, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(x, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_X;
} else if(HandleTools::distanceToMesh(y, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(y, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_Y;
} else if(HandleTools::distanceToMesh(z, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(z, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_Z;
}
}
Expand Down Expand Up @@ -282,16 +284,16 @@ float Handles::rotationTool(const Vector3 &position, const Quaternion &rotation,
float yDist = HandleTools::distanceToMesh(y, a_indices, a_points, s_Mouse);
float zDist = HandleTools::distanceToMesh(z, a_indices, a_points, s_Mouse);

if(xyzDist <= HandleTools::s_Sense) {
if(xyzDist <= s_Sense) {
s_Axes = AXIS_X | AXIS_Y | AXIS_Z;
}
if(xDist <= HandleTools::s_Sense && (xDist < yDist) && (xDist < zDist)) {
if(xDist <= s_Sense && (xDist < yDist) && (xDist < zDist)) {
s_Axes = AXIS_X;
}
if(yDist <= HandleTools::s_Sense && (yDist < xDist) && (yDist < zDist)) {
if(yDist <= s_Sense && (yDist < xDist) && (yDist < zDist)) {
s_Axes = AXIS_Y;
}
if(zDist <= HandleTools::s_Sense && (zDist < xDist) && (zDist < yDist)) {
if(zDist <= s_Sense && (zDist < xDist) && (zDist < yDist)) {
s_Axes = AXIS_Z;
}
}
Expand Down Expand Up @@ -391,22 +393,22 @@ Vector3 Handles::scaleTool(const Vector3 &position, const Quaternion &rotation,
Matrix4 r(Vector3(), Quaternion(Vector3(0, 1, 0),-90), Vector3(1));

if(!locked) {
if(HandleTools::distanceToPoint(model, Vector3(), s_Mouse) <= HandleTools::s_Sense) {
if(HandleTools::distanceToPoint(model, Vector3(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_X | AXIS_Y | AXIS_Z;
} else if((HandleTools::distanceToMesh(x, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(z * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(x, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(z * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_X | AXIS_Z;
} else if((HandleTools::distanceToMesh(y, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(x * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(y, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(x * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_Y | AXIS_X;
} else if((HandleTools::distanceToMesh(z, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense) ||
(HandleTools::distanceToMesh(y * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= HandleTools::s_Sense)) {
} else if((HandleTools::distanceToMesh(z, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense) ||
(HandleTools::distanceToMesh(y * r, s_Scale->indices(), s_Scale->vertices(), s_Mouse) <= s_Sense)) {
s_Axes = AXIS_Z | AXIS_Y;
} else if(HandleTools::distanceToMesh(x, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(x, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_X;
} else if(HandleTools::distanceToMesh(y, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(y, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_Y;
} else if(HandleTools::distanceToMesh(z, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= HandleTools::s_Sense) {
} else if(HandleTools::distanceToMesh(z, s_Axis->indices(), s_Axis->vertices(), s_Mouse) <= s_Sense) {
s_Axes = AXIS_Z;
}
}
Expand Down Expand Up @@ -567,7 +569,7 @@ Vector3 Handles::rectTool(const Vector3 &position, const Vector3 &box, int &axis
Gizmos::drawBox(model * bl, Vector3(scale * 0.05f), s_zColor);

if(!locked) {
float sence = HandleTools::s_Sense * 0.25f;
float sence = s_Sense * 0.25f;

Handles::s_Axes = 0;
if(HandleTools::distanceToPoint(model, tr, s_Mouse) <= sence) {
Expand Down
2 changes: 0 additions & 2 deletions engine/src/editor/viewport/handletools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@

#include <float.h>

float HandleTools::s_Sense = 0.02f;

float HandleTools::distanceToPoint(const Matrix4 &matrix, const Vector3 &point, const Vector2 &screen) {
Vector2 ssp = Camera::current()->project(matrix * point);

Expand Down
2 changes: 1 addition & 1 deletion engine/src/resources/mesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ int Mesh::indexCount(int sub) const {
if(sub < static_cast<int32_t>(m_offsets.size()) - 1) {
return m_offsets[sub+1] - m_offsets[sub];
}
return m_indices.size() - m_offsets[sub];
return m_indices.size() - (m_offsets.empty() ? 0 : m_offsets[sub]);
}
/*!
Recalculates the normals of the Mesh from the triangles and vertices.
Expand Down
Loading
Loading