2 Cafu Engine, http://www.cafu.de/
3 Copyright (c) Carsten Fuchs and other contributors.
4 This project is licensed under the terms of the MIT license.
7 #include "Loader_dummy.hpp"
8 #include "MaterialSystem/Material.hpp"
9 #include "Math3D/Angles.hpp"
12 LoaderDummyT::LoaderDummyT(const std::string
& FileName
, int Flags
)
13 : ModelLoaderT(FileName
, Flags
)
20 void AddVertex(CafuModelT::MeshT
& Mesh
, const Vector3fT
& Pos
, float u
, float v
)
22 Mesh
.Weights
.PushBackEmpty();
23 CafuModelT::MeshT::WeightT
& Weight
=Mesh
.Weights
[Mesh
.Weights
.Size()-1];
29 Mesh
.Vertices
.PushBackEmpty();
30 CafuModelT::MeshT::VertexT
& Vertex
=Mesh
.Vertices
[Mesh
.Vertices
.Size()-1];
34 Vertex
.FirstWeightIdx
=Mesh
.Weights
.Size()-1;
40 void LoaderDummyT::Load(ArrayT
<CafuModelT::JointT
>& Joints
, ArrayT
<CafuModelT::MeshT
>& Meshes
, ArrayT
<CafuModelT::AnimT
>& Anims
, MaterialManagerImplT
& MaterialMan
)
42 // Create a default "identity" joint.
43 // That single joint is used for (shared by) all weights of all meshes.
44 Joints
.PushBackEmpty();
46 Joints
[0].Name
="root";
48 // Joints[0].Pos =Vector3fT();
49 // Joints[0].Qtr =Vector3fT(); // Identity quaternion...
50 Joints
[0].Scale
=Vector3fT(1.0f
, 1.0f
, 1.0f
);
52 Meshes
.PushBackEmpty();
53 CafuModelT::MeshT
& Mesh
=Meshes
[0];
56 Mesh
.Material
=MaterialMan
.RegisterMaterial(CreateDefaultMaterial("dummy"));
58 const float Height
=64.0f
;
59 const float Radius
=16.0f
;
60 const unsigned int Facets
=5;
62 AddVertex(Mesh
, Vector3fT(0, 0, Height
), 0, 0);
64 for (unsigned int i
=0; i
<Facets
; i
++)
66 const float f
=float(i
) / Facets
;
67 const float a
=float(2.0 * cf::math::AnglesT
<double>::PI
) * f
;
69 AddVertex(Mesh
, Vector3fT(cos(a
)*Radius
, sin(a
)*Radius
, 0), f
, 1.0f
);
72 for (unsigned int i
=0; i
<Facets
; i
++)
74 Mesh
.Triangles
.PushBack(CafuModelT::MeshT::TriangleT(0, ((i
+1) % Facets
)+1, i
+1));
75 Mesh
.Triangles
[i
].SmoothGroups
=0x01;
78 for (unsigned int i
=2; i
<Facets
; i
++)
80 Mesh
.Triangles
.PushBack(CafuModelT::MeshT::TriangleT(1, i
, i
+1));
85 void LoaderDummyT::Load(ArrayT
<CafuModelT::SkinT
>& Skins
, const MaterialManagerImplT
& MaterialMan
)
90 void LoaderDummyT::Load(ArrayT
<CafuModelT::GuiFixtureT
>& GuiFixtures
)
95 void LoaderDummyT::Load(ArrayT
<CafuModelT::ChannelT
>& Channels
)
100 bool LoaderDummyT::Load(unsigned int Level
, CafuModelT
*& DlodModel
, float& DlodDist
)