Skip to content
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
6 changes: 3 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:

env:
QT_VERSION: 5.15.2
QTCREATOR_VERSION: 10.0.2
QTCREATOR_VERSION: 11.0.3
VERSION: 2024.1
THUNDER_RELEASE: ${{ startsWith(github.ref, 'refs/tags/2') }}

Expand Down Expand Up @@ -135,7 +135,7 @@ jobs:
needs: version

env:
QTCREATOR_VERSION: 10.0.2
QTCREATOR_VERSION: 11.0.3

steps:
- name: Checkout repository
Expand Down Expand Up @@ -170,7 +170,7 @@ jobs:
needs: version

env:
QTCREATOR_VERSION: 10.0.2
QTCREATOR_VERSION: 11.0.3

steps:
- name: Checkout repository
Expand Down
2 changes: 1 addition & 1 deletion engine/includes/components/actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class Transform;
class Prefab;

class ENGINE_EXPORT Actor : public Object {
A_REGISTER(Actor, Object, Scene)
A_REGISTER(Actor, Object, Actor)

A_PROPERTIES(
A_PROPERTY(bool, enabled, Actor::isEnabled, Actor::setEnabled),
Expand Down
53 changes: 44 additions & 9 deletions engine/includes/components/gui/frame.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
#ifndef FRAME_H
#define FRAME_H

#include "image.h"
#include "widget.h"

class ENGINE_EXPORT Frame : public Image {
A_REGISTER(Frame, Image, Components/UI)
class Mesh;
class MaterialInstance;

A_NOPROPERTIES()
class ENGINE_EXPORT Frame : public Widget {
A_REGISTER(Frame, Widget, Components/UI)

A_PROPERTIES(
A_PROPERTY(Vector4, corners, Frame::corners, Frame::setCorners),
A_PROPERTY(float, borderWidth, Frame::borderWidth, Frame::setBorderWidth),
A_PROPERTYEX(Vector4, color, Frame::color, Frame::setColor, "editor=Color"),
A_PROPERTYEX(Vector4, topColor, Frame::topColor, Frame::setTopColor, "editor=Color"),
A_PROPERTYEX(Vector4, rightColor, Frame::rightColor, Frame::setRightColor, "editor=Color"),
A_PROPERTYEX(Vector4, bottomColor, Frame::bottomColor, Frame::setBottomColor, "editor=Color"),
A_PROPERTYEX(Vector4, leftColor, Frame::leftColor, Frame::setLeftColor, "editor=Color")
)
A_NOMETHODS()
A_NOENUMS()

Expand All @@ -19,17 +30,41 @@ class ENGINE_EXPORT Frame : public Image {
float borderWidth() const;
void setBorderWidth(float width);

Vector4 borderColor() const;
void setBorderColor(Vector4 color);
Vector4 color() const;
void setColor(const Vector4 color);

Vector4 topColor() const;
void setTopColor(Vector4 color);

Vector4 rightColor() const;
void setRightColor(Vector4 color);

Vector4 bottomColor() const;
void setBottomColor(Vector4 color);

Vector4 leftColor() const;
void setLeftColor(Vector4 color);

void setMaterial(Material *material) override;
void setBorderColor(Vector4 color);

protected:
void boundChanged(const Vector2 &bounds) override;

private:
Vector4 m_borderColor;
void draw(CommandBuffer &buffer) override;

protected:
Vector4 m_cornerRadius;
Vector4 m_frameColor;
Vector4 m_topColor;
Vector4 m_rightColor;
Vector4 m_bottomColor;
Vector4 m_leftColor;

Vector2 m_meshSize;

Mesh *m_mesh;

MaterialInstance *m_material;

float m_borderWidth;

Expand Down
4 changes: 2 additions & 2 deletions engine/includes/components/gui/image.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
#include <material.h>
#include <sprite.h>

class MaterialInstance;
class Mesh;
class Texture;
class MaterialInstance;

class ENGINE_EXPORT Image : public Widget {
A_REGISTER(Image, Widget, Components/UI)
Expand Down Expand Up @@ -57,7 +57,7 @@ class ENGINE_EXPORT Image : public Widget {
void setDrawMode(int mode);

protected:
void draw(CommandBuffer &buffer, uint32_t layer) override;
void draw(CommandBuffer &buffer) override;

void loadUserData(const VariantMap &data) override;
VariantMap saveUserData() const override;
Expand Down
4 changes: 1 addition & 3 deletions engine/includes/components/gui/label.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ class ENGINE_EXPORT Label : public Widget {
void setClipOffset(const Vector2 &offset);

private:
void draw(CommandBuffer &buffer, uint32_t layer) override;
void draw(CommandBuffer &buffer) override;

void loadData(const VariantList &data) override;
void loadUserData(const VariantMap &data) override;
Expand All @@ -76,8 +76,6 @@ class ENGINE_EXPORT Label : public Widget {

Vector2 m_clipOffset;

Label *m_label;

Font *m_font;

MaterialInstance *m_material;
Expand Down
17 changes: 11 additions & 6 deletions engine/includes/components/gui/layout.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,19 @@ class ENGINE_EXPORT Layout {
~Layout();

void addLayout(Layout *layout);
void addWidget(Widget *widget);
void addTransform(RectTransform *transform);

void insertLayout(int index, Layout *layout);
void insertWidget(int index, Widget *widget);
void insertTransform(int index, RectTransform *transform);

void removeLayout(Layout *layout);
void removeWidget(Widget *widget);
void removeTransform(RectTransform *transform);

int indexOf(const Layout *layout) const;
int indexOf(const Widget *widget) const;
int indexOf(const RectTransform *transform) const;

RectTransform *rectTransform();
void setRectTransform(RectTransform *transform);

int count() const;

Expand All @@ -49,10 +52,12 @@ class ENGINE_EXPORT Layout {

Vector2 m_position;

Widget *m_attachedWidget;

Layout *m_parentLayout;

RectTransform *m_attachedTransform;

RectTransform *m_rectTransform;

float m_spacing;

int m_direction;
Expand Down
21 changes: 13 additions & 8 deletions engine/includes/components/gui/progressbar.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,17 @@

#include "frame.h"

class ENGINE_EXPORT ProgressBar : public Frame {
class ENGINE_EXPORT ProgressBar : public Widget {
A_REGISTER(ProgressBar, Widget, Components/UI)

A_PROPERTIES(
A_PROPERTY(float, from, ProgressBar::from, ProgressBar::setFrom),
A_PROPERTY(float, to, ProgressBar::to, ProgressBar::setTo),
A_PROPERTY(float, value, ProgressBar::value, ProgressBar::setValue),
A_PROPERTYEX(Frame *, progress, ProgressBar::progress, ProgressBar::setProgress, "editor=Component"),
A_PROPERTYEX(Vector4, backgroundColor, ProgressBar::backgroundColor, ProgressBar::setBackgroundColor, "editor=Color"),
A_PROPERTYEX(Vector4, progressColor, ProgressBar::progressColor, ProgressBar::setProgressColor, "editor=Color")
A_PROPERTYEX(Vector4, progressColor, ProgressBar::progressColor, ProgressBar::setProgressColor, "editor=Color"),
A_PROPERTYEX(Frame *, background, ProgressBar::background, ProgressBar::setBackground, "editor=Component"),
A_PROPERTYEX(Frame *, progress, ProgressBar::progress, ProgressBar::setProgress, "editor=Component")
)
A_NOMETHODS()
A_NOENUMS()
Expand All @@ -29,15 +30,18 @@ class ENGINE_EXPORT ProgressBar : public Frame {
float value() const;
void setValue(float value);

Frame *progress() const;
void setProgress(Frame *frame);

Vector4 backgroundColor() const;
void setBackgroundColor(const Vector4 color);

Vector4 progressColor() const;
void setProgressColor(const Vector4 color);

Frame *progress() const;
void setProgress(Frame *frame);

Frame *background() const;
void setBackground(Frame *frame);

private:
void loadUserData(const VariantMap &data) override;
VariantMap saveUserData() const override;
Expand All @@ -52,12 +56,13 @@ class ENGINE_EXPORT ProgressBar : public Frame {
Vector4 m_backgroundColor;
Vector4 m_progressColor;

Frame *m_progress;
Frame *m_background;

float m_from;
float m_to;
float m_value;

Frame *m_progress;

};

#endif // PROGRESSBAR_H
27 changes: 15 additions & 12 deletions engine/includes/components/gui/recttransform.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ class ENGINE_EXPORT RectTransform : public Transform {
A_PROPERTY(Vector2, size, RectTransform::size, RectTransform::setSize),
A_PROPERTY(Vector2, minAnchors, RectTransform::minAnchors, RectTransform::setMinAnchors),
A_PROPERTY(Vector2, maxAnchors, RectTransform::maxAnchors, RectTransform::setMaxAnchors),
A_PROPERTY(Vector2, offsetMin, RectTransform::offsetMin, RectTransform::setOffsetMin),
A_PROPERTY(Vector2, offsetMax, RectTransform::offsetMax, RectTransform::setOffsetMax),
A_PROPERTY(Vector2, pivot, RectTransform::pivot, RectTransform::setPivot)
A_PROPERTY(Vector2, pivot, RectTransform::pivot, RectTransform::setPivot),
A_PROPERTY(Vector4, margin, RectTransform::margin, RectTransform::setMargin)
)
A_NOMETHODS()

Expand All @@ -36,13 +35,8 @@ class ENGINE_EXPORT RectTransform : public Transform {

void setAnchors(const Vector2 minimum, const Vector2 maximum);

Vector2 offsetMin() const;
void setOffsetMin(const Vector2 offset);

Vector2 offsetMax() const;
void setOffsetMax(const Vector2 offset);

void setOffsets(const Vector2 minimum, const Vector2 maximum);
Vector4 margin() const;
void setMargin(const Vector4 margin);

bool isHovered(float x, float y) const;

Expand All @@ -54,25 +48,34 @@ class ENGINE_EXPORT RectTransform : public Transform {

Matrix4 worldTransform() const override;

AABBox bound() const;

private:
void setDirty(bool dirty) override;
friend class Layout;

void setDirty() override;

void cleanDirty() const override;

void notify();

void recalcSize();
void resetSize();

private:
list<Widget *> m_subscribers;

Vector4 m_margin;

Vector2 m_bottomLeft;
Vector2 m_topRight;
Vector2 m_pivot;
Vector2 m_minAnchors;
Vector2 m_maxAnchors;
Vector2 m_size;
list<Widget *> m_subscribers;

Layout *m_layout;
Layout *m_attachedLayout;

};

Expand Down
41 changes: 32 additions & 9 deletions engine/includes/components/gui/textinput.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
#ifndef TEXTINPUT_H
#define TEXTINPUT_H

#include "frame.h"
#include "widget.h"

class Label;

class ENGINE_EXPORT TextInput : public Frame {
A_REGISTER(TextInput, Frame, Components/UI)

A_NOPROPERTIES()
class Frame;

class ENGINE_EXPORT TextInput : public Widget {
A_REGISTER(TextInput, Widget, Components/UI)

A_PROPERTIES(
A_PROPERTY(string, text, TextInput::text, TextInput::setText),
A_PROPERTYEX(Vector4, textColor, TextInput::textColor, TextInput::setTextColor, "editor=Color"),
A_PROPERTYEX(Vector4, backgroundColor, TextInput::backgroundColor, TextInput::setBackgroundColor, "editor=Color"),
A_PROPERTYEX(Vector4, hoverColor, TextInput::hoverColor, TextInput::setHoverColor, "editor=Color"),
A_PROPERTYEX(Vector4, pressedColor, TextInput::pressedColor, TextInput::setPressedColor, "editor=Color"),
A_PROPERTYEX(Label *, textComponent, TextInput::textComponent, TextInput::setTextComponent, "editor=Component"),
A_PROPERTYEX(Frame *, background, TextInput::background, TextInput::setBackground, "editor=Component")
)
A_METHODS(
A_SIGNAL(TextInput::focusIn),
A_SIGNAL(TextInput::focusOut),
Expand All @@ -19,15 +28,27 @@ class ENGINE_EXPORT TextInput : public Frame {
public:
TextInput();

Label *textComponent() const;
void setTextComponent(Label *label);

string text() const;
void setText(const string text);

Vector4 textColor() const;
void setTextColor(Vector4 color);

Vector4 backgroundColor() const;
void setBackgroundColor(Vector4 color);

Vector4 hoverColor() const;
void setHoverColor(Vector4 color);

Vector4 pressedColor() const;
void setPressedColor(Vector4 color);

Label *textComponent() const;
void setTextComponent(Label *label);

Frame *background() const;
void setBackground(Frame *frame);

public: // signals
void focusIn();
void focusOut();
Expand All @@ -53,6 +74,8 @@ class ENGINE_EXPORT TextInput : public Frame {
Label *m_cursor;
Label *m_label;

Frame *m_background;

int32_t m_cursorPosition;

float m_fadeDuration;
Expand Down
Loading