3#include "GUIDefinitions.h"
9 typedef struct FL_EXPORT sVertexTangent
13 const Base::TPoint3<float>& p,
14 const Base::TPoint3<float>& n,
15 const Base::TPoint3<float>& t) :
20 float px,
float py,
float pz,
21 float nx,
float ny,
float nz,
22 float tx,
float ty,
float tz) :
25 tangentU(tx, ty, tz) {}
26 Base::TPoint3<float> position;
27 Base::TPoint3<float> normal;
28 Base::TPoint3<float> tangentU;
32 typedef struct FL_EXPORT sFaceDataTangent
34 std::vector<SVertexTangent>& m_vctVertex;
35 std::vector<uint32_t>& m_vctIndices32;
38 sFaceDataTangent(
const sFaceDataTangent& rh);
41 const CResult
Assign(
const sFaceDataTangent& rh);
42 sFaceDataTangent& operator=(
const sFaceDataTangent& rh);
43 std::vector<uint16_t>& GetIndices16();
46 std::vector<uint16_t>& m_vctIndices16;
50 typedef struct FL_EXPORT sBoundingBox
52 Base::TPoint3<float>
Center;
53 Base::TPoint3<float> Extents;
56 sBoundingBox(
const sBoundingBox& rh);
57 sBoundingBox& operator=(
const sBoundingBox& rh);
58 sBoundingBox(
const Base::TPoint3<float>& center,
const Base::TPoint3<float>& extents);
60 bool Intersects(
const Base::TPoint3<float>& tp3F32Origin,
const Base::TPoint3<float>& tp3F32Direction,
float& f32Dist);
61 const CResult GetMinMaxCoord(Base::TPoint3<float>& tp3F32Min, Base::TPoint3<float>& tp3F32Max);
62 const CResult GetMinMaxCoord(
float& f32MinX,
float& f32MinY,
float& f32MinZ,
float& f32MaxX,
float& f32MaxY,
float& f32MaxZ);
63 const CResult
Extend(
const Base::TPoint3<float>& tp3F32NewPoint);
64 const CResult
Extend(
const Base::TPoint3<double>& tp3F64NewPoint);
65 const CResult
Extend(
const Base::TPoint3<float>& tp3F32NewPoint1,
const Base::TPoint3<float>& tp3F32NewPoint2);
66 const CResult
Extend(
const Base::TPoint3<double>& tp3F64NewPoint1,
const Base::TPoint3<double>& tp3F64NewPoint2);
71 class FL_EXPORT CGUIView3DUtils
75 virtual ~CGUIView3DUtils();
77 static CGUIView3DUtils* GetObject();
79 static bool Initialize();
80 static bool IsInitialized();
82 static bool RayTriangleIntersect(
const Base::TPoint3<float>& tpRayOrig,
const Base::TPoint3<float>& tpRayDir,
const Base::TPoint3<float>& tp0,
const Base::TPoint3<float>& tp1,
const Base::TPoint3<float>& tp2,
float& f32Dist);
83 static bool RayOrientedBoundigBoxIntersect(
const Base::TPoint3<float>& tpRayOrig,
const Base::TPoint3<float>& tpRayDir,
const Base::TPoint3<float>& tpOrientedBoundigBoxMin,
const Base::TPoint3<float>& tpOrientedBoundigBoxMax,
float& f32Dist);
87 static const CResult CreateBox(
float width,
float height,
float depth, uint32_t numSubdivisions, SFaceDataTangent& sFaceData);
88 static const CResult CreateSphere(
float radius, uint32_t sliceCount, uint32_t stackCount, SFaceDataTangent& sFaceData);
89 static const CResult CreateGeosphere(
float radius, uint32_t numSubdivisions, SFaceDataTangent& sFaceData);
90 static const CResult CreateCylinder(
float bottomRadius,
float topRadius,
float height,
float x,
float y,
float z, uint32_t sliceCount, uint32_t stackCount, SFaceDataTangent& sFaceData);
91 static const CResult CreateGrid(
float width,
float depth, uint32_t m, uint32_t n, SFaceDataTangent& sFaceData);
92 static const CResult CreateQuad(
float x,
float y,
float w,
float h,
float depth, SFaceDataTangent& sFaceData);
93 static const CResult CreateCircle(
float f32Radius,
float x,
float y,
float z, uint32_t sliceCount, SFaceDataTangent& sFaceData);
95 static void __fastcall FastFloatRGB(
const COLORREF& clr,
float& f32R,
float& f32G,
float& f32B);
97 static COLORREF GetPredefinedColor(int32_t i32Index);
100 const CResult Subdivide(SFaceDataTangent& meshData);
101 const CResult MidPoint(
const SVertexTangent& v0,
const SVertexTangent& v1, SVertexTangent& vOut);
102 const CResult BuildCylinderTopCap(
float bottomRadius,
float topRadius,
float height, uint32_t sliceCount, uint32_t stackCount, SFaceDataTangent& meshData);
103 const CResult BuildCylinderBottomCap(
float bottomRadius,
float topRadius,
float height, uint32_t sliceCount, uint32_t stackCount, SFaceDataTangent& meshData);
106 volatile bool m_bInitialized;
@ Center
객체의 가운데에 맞춰 텍스처 적용
@ Assign
CGUIPropertyItemView3DFigure 의 값을 해당 도형으로 설정하는 함수
@ Extend
방향성이 있는 도형(Line, Rect, Quad, Ellipse)을 각각의 도형이 지향하는 방향으로 늘리는 기능