1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 | #include "fsCNative3dScene.h"
#include "raymath.h"
#include "fs3d/fsC3dPathSprite.h"
#include "fs3d/fsI3dAnimation.h"
#include "fs3d/impl/raylib/fsC3dAnimation.h"
#include "fs3d/impl/raylib/fsC3dAnimationData.h"
#if defined fs3d
#include <fsCore/src/fsNMaths.h>
#include <fsCore/fsPoint.h>
#include <fsAppCore/fsIDisplay.h>
#include <fs3d/fsC3dSprite.h>
#include <fs3d/fsC3dCamera.h>
#include <fs3d/impl/raylib/fsC3dModelData.h>
void fsCNative3dScene::pick(const fsPoint& pScreenPos, fsI3dScene::fsTPickCallback pPickCallback)<--- The member function 'fsCNative3dScene::pick' can be static.
{
}
void fsCNative3dScene::spriteRemove(fsC3dSprite* const p3dSprite)<--- The member function 'fsCNative3dScene::spriteRemove' can be static.<--- Parameter 'p3dSprite' can be declared as pointer to const
{
}
void fsCNative3dScene::spriteAdd(fsC3dSprite* const p3dSprite)
{
auto model = static_cast<fsC3dModelData*>(p3dSprite->mModelData.get())->mModel;
mDynamicModels.push_back(p3dSprite);
}
void fsCNative3dScene::ligthtAdd(fsI3dLight* const pLight)<--- The member function 'fsCNative3dScene::ligthtAdd' can be static.<--- Parameter 'pLight' can be declared as pointer to const
{
}
void fsCNative3dScene::ligthtRemove(fsI3dLight* const pLight)<--- The member function 'fsCNative3dScene::ligthtRemove' can be static.<--- Parameter 'pLight' can be declared as pointer to const
{
}
void fsCNative3dScene::cameraSet(fsC3dCamera* const pCamera)
{
// Define the camera to look into our 3d world
mCamera.position = { 0.0f, 1.0f, 5.0f }; // Camera position
mCamera.target = { 0.0f, 0.0f, 0.0f }; // Camera looking at point
mCamera.up = { 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target)
mCamera.fovy = 45.0f; // Camera field-of-view Y
mCamera.projection = CAMERA_PERSPECTIVE;
}
void fsCNative3dScene::matrixApplyDo(const fsAffineMtx2d& pRenderMatrix)
{
}
void fsCNative3dScene::renderDo()
{
auto currModel = static_cast<fsC3dModelData*>(mDynamicModels.front()->mModelData.get())->mModel;
::UpdateCamera(&mCamera, CAMERA_FREE);
if (mDynamicModels.front()->mTrack)
{
auto anim = static_cast<fsC3dModelData*>(mDynamicModels.front()->mTrack.get()->
mModelData.get())->mAnimation;
currModel.transform = MatrixMultiply(currModel.transform,
QuaternionToMatrix(anim->mAnim->keyframePoses[anim->mAnimCurrentFrame]->rotation));
::BeginMode3D(mCamera);
::DrawModel(
currModel,
anim->mAnim->keyframePoses[anim->mAnimCurrentFrame]->translation,
1.0f,
WHITE);
::DrawGrid(10, 1.0f);
::EndMode3D();
}
else
{
::BeginMode3D(mCamera);
::DrawModel(
currModel,
{0.0f,0,0},
1.0f,
WHITE);
::DrawGrid(10, 1.0f);
::EndMode3D();
}
}
fsCNative3dScene::fsCNative3dScene() :
fsINative()
{
cameraSet(nullptr);
}
fsCNative3dScene::~fsCNative3dScene()
{
}
#endif
|