2024-05-11 17:43:38 +08:00

92 lines
2.7 KiB
C++

#pragma once
#include <vlGraphics/Geometry.hpp>
#include <vlGraphics/Actor.hpp>
#include <vlCore/Colors.hpp>
#include "../log/PartPosBean.h"
class Part
{
public:
Part(int id, PartPosBean* bbp);
~Part();
vl::ref<vl::Actor> GetActor() { return m_Actor; }
void AddPoint(double x, double y, double z);
void AddLine(std::vector<vl::fvec3>& line);
void Update(void);
//void UpdateSurface(void);
bool IsSelected(void) { return m_Selected; }
void SetSelected(bool select);
//double* GetOffsetX(void) { return &m_OffsetX; }
// void SetOffsetX(double offset) { m_OffsetX = offset; }
// double* GetOffsetY(void) { return &m_OffsetY; }
//void SetOffsetY(double offset) { m_OffsetY = offset; }
//void SetOffset(double x, double y) { m_OffsetX += x; m_OffsetY += y; }
//void GetOffset(double *x, double *y) { *x = m_OffsetX; *y = m_OffsetY; }
//void GetOffset(double *x, double *y, double *r) { *x = m_OffsetX; *y = m_OffsetY; *r = m_Rotated; }
//double* GetRotate(void) { return &m_Rotated; }
//void SetRotate(double angle) { m_Rotated = angle; }
void GetLastPos(double *x, double *y) { *x = m_LastX; *y = m_LastY; }
void SetLastPos(double x, double y) { m_LastX = x; m_LastY = y; }
void RemoveData(void);
//void UpdateOffset(double x, double y, double r);
// void UpdateOffset(double x, double y);
void UpdateOffset(void) { Transform(); }
void UpdateGlobalOffset(double x, double y);
void Transform(void);
bool IsPrintable(void) { return m_IsPrintable; }
void SetPrintable(bool printable)
{
m_IsPrintable = printable;
if (m_IsPrintable)
m_Effect->shader()->gocColor()->setValue(vl::skyblue);
else
m_Effect->shader()->gocColor()->setValue(vl::darkgray);
}
bool IsOffsetUpdated(void)
{
if (m_IsUpdated)
{
m_IsUpdated = false;
return true;
}
else {
return false;
}
}
// void SetPartCenter(double x, double y) { m_PartCenterX = x; m_PartCenterY = y; }
int GetId() { return m_ID; }
private:
bool m_Selected;
bool m_IsPrintable;
bool m_IsUpdated;
int m_ID;
PartPosBean* m_PartPosBean;
//double m_OffsetX;
//double m_OffsetY;
//double m_Rotated;
double m_LastX;
double m_LastY;
double m_SelectedColor[3] = { 173.0 / 255, 1.0, 47.0 / 255 };
double m_DefaultColor[3] = { 65.0 / 255, 105.0 / 255, 1.0 };
double m_DisableColor[3] = { 65.0 / 255, 65.0 / 255, 65.0 / 255 };
double m_GlobalOffsetX;
double m_GlobalOffsetY;
//double m_PartCenterX;
//double m_PartCenterY;
float m_DisplayPerscent;
vl::ref<vl::Geometry> m_Geo;
vl::ref<vl::ArrayFloat3> m_Vtx;
vl::ref<vl::DrawElementsUInt> m_Ele;
std::vector<vl::fvec3> m_Points;
std::vector<unsigned int> m_Indexs;
vl::ref<vl::Actor> m_Actor;
vl::ref<vl::Transform> m_Transform;
vl::ref<vl::Effect> m_Effect;
vl::vec3 m_Center;
vl::mat4 m_LocalMatrix;
};