14#ifndef fsCNative3dScenehdr
15#define fsCNative3dScenehdr
26 #include <scene/Camera.h>
29 #include <2d/Camera.h>
34namespace ax {
class Scene; }
35namespace ax {
class MeshRenderer; }
69 enum class eSCENE_FLAG
72 WORLD_MODELS =
static_cast<fsS32>(ax::CameraFlag::USER1),
73 DYNAMIC_MODELS = WORLD_MODELS << 1,
75 ALL_MODELS = WORLD_MODELS | DYNAMIC_MODELS,
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);
83 fsBool worldModelGet(ax::MeshRenderer* pModel)
const;
84 fsBool worldModelGet(ax::Node* pNode)
const;
86 fsF32 effectiveFovGet()
const;
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);
93 virtual ax::Node* implGet()
const override;
95 ax::Mat4 mDisplayMatrix;
97 ax::Mat4 mProjectionMatrix;
100 ax::Camera* mWorldCamera;
101 ax::Node* mSceneDisplayRoot;
102 ax::Node* mSceneRoot;
103 fsBool mExplicitCameraSet;
106 ax::Vec3 mCameraBasePosition;
107 ax::Vec3 mCameraBaseForward;
108 ax::Vec3 mCameraBaseUp;
111 fsF32 mEyeBaseZoomScale;
117 std::vector<std::shared_ptr<fsI3dLight>> mLights;
119 std::vector<fsC3dSprite*> mDynamicModels;
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