add cylinder
This commit is contained in:
@@ -51,10 +51,8 @@ class ContainerBox : public AffineTransform, public Object {
|
||||
public:
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// PROPERTIES //
|
||||
Property<float> Width;
|
||||
Property<float> Height;
|
||||
Property<float> Depth;
|
||||
|
||||
Property<Vector3f> p_Size;
|
||||
Property<Vector3f> p_Origin;
|
||||
virtual const char * GetClassName() const { return "ContainerBox"; }
|
||||
|
||||
/**
|
||||
@@ -63,12 +61,10 @@ public:
|
||||
*/
|
||||
ContainerBox()
|
||||
: m_LocalT(this), // BaseClass is Parent of m_LocalTransform
|
||||
Width(this, "Width", 1.0f),
|
||||
Height(this, "Height", 1.0f),
|
||||
Depth(this, "Depth", 1.0f) {
|
||||
Object::connect(&Width, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Height, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Depth, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
p_Size(this, "Size", Vector3f(1.0f, 1.0f, 1.0f)),
|
||||
p_Origin(this, "Origin", Vector3f(0.0f, 0.0f, 0.0f)) {
|
||||
Object::connect(&p_Size, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&p_Origin, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncOrigin);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,12 +73,11 @@ public:
|
||||
*/
|
||||
ContainerBox(const Vector3f &size)
|
||||
: m_LocalT(this),
|
||||
Width(this, "Width", size(0)),
|
||||
Height(this, "Height", size(1)),
|
||||
Depth(this, "Depth", size(2)) {
|
||||
Object::connect(&Width, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Height, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Depth, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
p_Size(this, "Size", size),
|
||||
p_Origin(this, "Origin", Vector3f(0.0f, 0.0f, 0.0f)) {
|
||||
Object::connect(&p_Size, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&p_Origin, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncOrigin);
|
||||
this->SetSize(size);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,20 +87,20 @@ public:
|
||||
ContainerBox(const ContainerBox ©)
|
||||
: m_LocalT(this), // BaseClass is Parent of m_LocalTransform
|
||||
AffineTransform(copy),
|
||||
Width(this, "Width", copy.Width),
|
||||
Height(this, "Height", copy.Height),
|
||||
Depth(this, "Depth", copy.Depth) {
|
||||
Object::connect(&Width, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Height, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&Depth, &Property<float>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
this->SetOrigin(copy.GetOrigin());
|
||||
p_Size(this, "Size", copy.p_Size),
|
||||
p_Origin(this, "Origin", copy.p_Origin) {
|
||||
Object::connect(&p_Size, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncSize);
|
||||
Object::connect(&p_Origin, &Property<Vector3f>::PropertyChanged, this, &ContainerBox::SyncOrigin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Sets the box origin relative to its coordinate system.
|
||||
* @param v The origin position vector.
|
||||
*/
|
||||
void SetOrigin(const Vector3f &v) { m_LocalT.SetPosition(v); }
|
||||
void SetOrigin(const Vector3f &v) {
|
||||
p_Origin = v;
|
||||
m_LocalT.SetPosition(v);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Gets the box origin relative to its coordinate system.
|
||||
@@ -119,9 +114,7 @@ public:
|
||||
* @param v The size vector (width, height, depth).
|
||||
*/
|
||||
void SetSize(const Vector3f &v) {
|
||||
Width = v(0);
|
||||
Height = v(1);
|
||||
Depth = v(2);
|
||||
p_Size = v;
|
||||
Vector3f pos = this->GetOrigin();
|
||||
m_LocalT = AffineTransform(this); // regenerate local transform
|
||||
m_LocalT.Scale(v);
|
||||
@@ -213,11 +206,17 @@ signals:
|
||||
// signal to emit when the box is updated //
|
||||
virtual void Updated() override { ULIB_SIGNAL_EMIT(ContainerBox::Updated); }
|
||||
|
||||
private:
|
||||
private slots:
|
||||
void SyncSize() {
|
||||
this->SetSize(Vector3f(Width, Height, Depth));
|
||||
this->SetSize(p_Size);
|
||||
}
|
||||
|
||||
void SyncOrigin() {
|
||||
this->SetOrigin(p_Origin);
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
AffineTransform m_LocalT;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user