Fission FSN
Loading...
Searching...
No Matches
fsCNative3dScene.h
Go to the documentation of this file.
1/********************************************************************
2 *
3 * File: fsCNative3dScene.h
4 *
5 * Purpose: cocos2d-x implementation of 3d sprite.
6 *
7 * left hand rule, thumb up, index right, middle towards
8 * x - right
9 * y - up
10 * z - out
11 *
12 *********************************************************************/
13
14#ifndef fsCNative3dScenehdr
15#define fsCNative3dScenehdr
16
17#include <fsCore/fsBaseTypes.h>
18
19#if defined fs3d
20
21#include "fsINative.h"
22
23#include <fs3d/fsI3dScene.h>
24
25#ifdef AXMOL_V3
26 #include <scene/Camera.h>
27 #include <math/Ray.h>
28#else
29 #include <2d/Camera.h>
30 #include <3d/Ray.h>
31#endif
32#include <fs3d/fsI3dLight.h>
33
34namespace ax { class Scene; }
35namespace ax { class MeshRenderer; }
36
37class fsC3dCamera;
38class fsI3dLight;
39class fsC3dSprite;
40class fsC3dLight;
41struct fsPoint;
42class fsC3dModelData;
43
44
46{
48
49public:
50
51 void pick(const fsPoint& pScreenPos, fsI3dScene::fsTPickCallback pPickCallback);
52 void spriteAdd(fsC3dSprite* const);
53 void spriteRemove(fsC3dSprite* const);
54 void ligthtAdd(fsI3dLight* const pLight);
55 void ligthtRemove(fsI3dLight* const pLight);
56 void cameraSet(fsC3dCamera* const pCamera);
57
58 virtual ~fsCNative3dScene();
59
60protected:
61
62 virtual void renderDo() override;
63 virtual void matrixApplyDo(const fsAffineMtx2d& pRenderMatrix) override;
64
66
67private:
68
69 enum class eSCENE_FLAG
70 {
71 // cocos2d-x uses 1 for the default camera so we start above that
72 WORLD_MODELS = static_cast<fsS32>(ax::CameraFlag::USER1),
73 DYNAMIC_MODELS = WORLD_MODELS << 1,
74
75 ALL_MODELS = WORLD_MODELS | DYNAMIC_MODELS,
76 };
77
78 void nodeProcess(ax::Node* const pNode);
79 void nodeProcessRecursive(ax::Node* const pNode);
80 void calculateRayByLocationInView(ax::Ray* ray, const ax::Vec2& location);
81 void unproject(const ax::Mat4& viewProjection, const ax::Size* viewport, ax::Vec3* src, ax::Vec3* dst);
82
83 fsBool worldModelGet(ax::MeshRenderer* pModel) const;
84 fsBool worldModelGet(ax::Node* pNode) const;
85 fsF32 fovCalculate(fsF32 pFOV) const;
86 fsF32 effectiveFovGet() const;
87 void cameraCreate(fsF32 pFOV, fsF32 pNearClip, fsF32 pFarClip);
88 void cameraBaseStore(const ax::Mat4& pWorldTransform, const ax::Vec3& pPosition);
89 void cameraBaseStore(const ax::Vec3& pPosition, ax::Vec3 pForward, ax::Vec3 pUp);
90 void sceneTransformsApply(fsBool pDesktopFixedAspectActive);
91 void cameraFixedAspectApply(const ax::Viewport& pLogicalViewport);
92
93 virtual ax::Node* implGet() const override;
94
95 ax::Mat4 mDisplayMatrix;
96 ax::Mat4 mEyeMatrix;
97 ax::Mat4 mProjectionMatrix;
98 ax::Mat4 mRenderMatrix;
99 ax::Scene* mScene;
100 ax::Camera* mWorldCamera;
101 ax::Node* mSceneDisplayRoot;
102 ax::Node* mSceneRoot;
103 fsBool mExplicitCameraSet;
104 fsBool mCameraBaseSet;
105 fsBool mEyeBaseSet;
106 ax::Vec3 mCameraBasePosition;
107 ax::Vec3 mCameraBaseForward;
108 ax::Vec3 mCameraBaseUp;
109 fsVec2d mSceneBaseTranslate;
110 fsVec2d mScreenBaseTranslate;
111 fsF32 mEyeBaseZoomScale;
112 fsF32 mZoomScale;
113 fsF32 mCameraFov;
114 fsF32 mCameraNear;
115 fsF32 mCameraFar;
116
117 std::vector<std::shared_ptr<fsI3dLight>> mLights;
118
119 std::vector<fsC3dSprite*> mDynamicModels;
120};
121
122#endif
123
124#endif
Definition fsAffineMtx2d.h:27
Definition fsC3dCamera.h:18
Definition fsC3dLight.h:25
Definition fsC3dModelData.h:27
Definition fsC3dSprite.h:29
void ligthtAdd(fsI3dLight *const pLight)
Definition fsCNative3dScene.cpp:347
friend class fsCNative3dSceneRenderData
Definition fsCNative3dScene.h:47
virtual void renderDo() override
Definition fsCNative3dScene.cpp:460
void ligthtRemove(fsI3dLight *const pLight)
Definition fsCNative3dScene.cpp:358
void spriteRemove(fsC3dSprite *const)
Definition fsCNative3dScene.cpp:249
void cameraSet(fsC3dCamera *const pCamera)
Definition fsCNative3dScene.cpp:439
void pick(const fsPoint &pScreenPos, fsI3dScene::fsTPickCallback pPickCallback)
Definition fsCNative3dScene.cpp:192
virtual ~fsCNative3dScene()
Definition fsCNative3dScene.cpp:765
void spriteAdd(fsC3dSprite *const)
Definition fsCNative3dScene.cpp:319
virtual void matrixApplyDo(const fsAffineMtx2d &pRenderMatrix) override
Definition fsCNative3dScene.cpp:566
fsCNative3dScene()
Definition fsCNative3dScene.cpp:722
Definition fsI3dLight.h:23
std::function< void(fsC3dSprite *sprt3d)> fsTPickCallback
Definition fsI3dScene.h:26
fsF32 mRenderMatrix[16]
Definition fsINative.h:68
fsINative()=default
Definition fsINative.cpp:72
bool fsBool
Definition fsBaseTypes.h:26
int fsS32
Definition fsBaseTypes.h:20
float fsF32
Definition fsBaseTypes.h:28
Definition fsC3dLight.h:19
Definition fsPoint.h:17
Definition fsVec2d.h:16