diff --git a/Geome3Dash/Geome3Dash.vcxproj b/Geome3Dash/Geome3Dash.vcxproj
index ddb77e51..4ffe1dc4 100644
--- a/Geome3Dash/Geome3Dash.vcxproj
+++ b/Geome3Dash/Geome3Dash.vcxproj
@@ -26,72 +26,6 @@
NotUsing
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
-
- NotUsing
-
NotUsing
@@ -181,29 +115,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Geome3Dash/Geome3Dash.vcxproj.filters b/Geome3Dash/Geome3Dash.vcxproj.filters
index a19b04b2..44fc1e2a 100644
--- a/Geome3Dash/Geome3Dash.vcxproj.filters
+++ b/Geome3Dash/Geome3Dash.vcxproj.filters
@@ -171,72 +171,6 @@
Source Files
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
Source Files
@@ -413,75 +347,6 @@
Header Files
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
Header Files
diff --git a/Geome3Dash/src/LevelDataManager.h b/Geome3Dash/src/LevelDataManager.h
index fa59700e..929a1914 100644
--- a/Geome3Dash/src/LevelDataManager.h
+++ b/Geome3Dash/src/LevelDataManager.h
@@ -17,15 +17,15 @@ class GJBaseGameLayer;
namespace g3d
{
- struct CameraActionLD : public CameraAction
- {
- NLOHMANN_DEFINE_TYPE_INTRUSIVE(CameraActionLD, x, y, z, yaw, pitch, time, triggerAt);
- };
+ //struct CameraActionLD : public CameraAction
+ //{
+ // NLOHMANN_DEFINE_TYPE_INTRUSIVE(CameraActionLD, x, y, z, yaw, pitch, time, triggerAt);
+ //};
- struct CubicBezierLD : public CubicBezier
- {
- NLOHMANN_DEFINE_TYPE_INTRUSIVE(CubicBezier, x0, y0, cx1, cy1, cx2, cy2, x1, y1);
- };
+ //struct CubicBezierLD : public CubicBezier
+ //{
+ // NLOHMANN_DEFINE_TYPE_INTRUSIVE(CubicBezier, x0, y0, cx1, cy1, cx2, cy2, x1, y1);
+ //};
struct LevelData
{
diff --git a/Geome3Dash/src/game/editor/CameraKeyframeEditorPopup.cpp b/Geome3Dash/src/game/editor/CameraKeyframeEditorPopup.cpp
index bb86c3df..88cff70f 100644
--- a/Geome3Dash/src/game/editor/CameraKeyframeEditorPopup.cpp
+++ b/Geome3Dash/src/game/editor/CameraKeyframeEditorPopup.cpp
@@ -56,8 +56,7 @@ namespace g3d
ckel->layer3d->camera.setPosition(
ckel->layer3d->camera.getPosition() +
deltaY * sensitivity * localUp +
- deltaX * -sensitivity * side
- );
+ deltaX * -sensitivity * side);
}
else {
float sensitivity = 0.05f;
@@ -107,16 +106,35 @@ namespace g3d
ckel->keyframeBuffer = currentLevelData.keyframe;
ckel->spline = currentLevelData.spline;
- if (ckel->keyframeBuffer.keyframes.empty()) { ckel->keyframeBuffer.setKeyframe(0, glm::vec3(0), glm::vec3(0)); }
ckel->updateLevel();
ckel->spline.updateParameterList();
- glm::vec3 newFront;
- newFront.x = cos(glm::radians(currentLevelData.yaw)) * cos(glm::radians(currentLevelData.pitch));
- newFront.y = sin(glm::radians(currentLevelData.pitch));
- newFront.z = sin(glm::radians(currentLevelData.yaw)) * cos(glm::radians(currentLevelData.pitch));
- const auto front = glm::normalize(newFront);
- ckel->keyframeBuffer.setKeyframe(0, glm::vec3(currentLevelData.x, currentLevelData.y, currentLevelData.z) * glm::vec3(ckel->lengthScaleFactor * 16 / 9), newFront);
+ //auto& cld = currentLevelData;
+ //auto data = ckel->spline.findClosestByLength(cld.x * ckel->lengthScaleFactor * 20);
+ //auto pos = data.value;
+ //auto normal = glm::normalize(ckel->spline.normal(data.t));
+ //auto offset = pos + (normal * ckel->lengthScaleFactor * (static_cast(cld.y * 20) - 110));
+ //offset.z += cld.z * 20;
+
+ //glm::vec3 newFront;
+ //newFront.x = cos(glm::radians(cld.yaw)) * cos(glm::radians(cld.pitch));
+ //newFront.y = sin(glm::radians(cld.pitch));
+ //newFront.z = sin(glm::radians(cld.yaw)) * cos(glm::radians(cld.pitch));
+ //const auto front = glm::normalize(newFront);
+ //ckel->keyframeBuffer.setKeyframe(0, offset, front);
+
+ auto& cld = currentLevelData;
+ sus3d::Camera fakeCamera;
+ fakeCamera.setPitch(cld.pitch);
+ fakeCamera.setYaw(cld.yaw);
+ fakeCamera.setPosition(glm::vec3(cld.x, cld.y, cld.z));
+ const auto kfcopy = ckel->keyframeBuffer.keyframes;
+ ckel->keyframeBuffer.keyframes.clear();
+ for (auto& kf : kfcopy)
+ {
+ if (kf.playersXpos != 0.f) { ckel->keyframeBuffer.keyframes.push_back(kf); }
+ }
+ ckel->keyframeBuffer.setKeyframe(0, fakeCamera.getPosition() * glm::vec3(ckel->lengthScaleFactor * 20), fakeCamera.getFront());
// need to delete this on destructor (later)
splineTr = new SplineGameObjectTransformer(&ckel->spline, &ckel->lengthScaleFactor);
@@ -186,7 +204,21 @@ namespace g3d
}
void CameraKeyframeEditorPopup::onClose(CCObject* obj) {
- if (ckel->keyframeBuffer.keyframes.empty()) { ckel->keyframeBuffer.setKeyframe(0, glm::vec3(0), glm::vec3(0)); }
+ if (ckel->keyframeBuffer.keyframes.empty())
+ {
+ auto& cld = currentLevelData;
+ sus3d::Camera fakeCamera;
+ fakeCamera.setPitch(cld.pitch);
+ fakeCamera.setYaw(cld.yaw);
+ fakeCamera.setPosition(glm::vec3(cld.x, cld.y, cld.z));
+ const auto kfcopy = ckel->keyframeBuffer.keyframes;
+ ckel->keyframeBuffer.keyframes.clear();
+ for (auto& kf : kfcopy)
+ {
+ if (kf.playersXpos != 0.f) { ckel->keyframeBuffer.keyframes.push_back(kf); }
+ }
+ ckel->keyframeBuffer.setKeyframe(0, fakeCamera.getPosition() * glm::vec3(ckel->lengthScaleFactor * 20), fakeCamera.getFront());
+ }
currentLevelData.keyframe = ckel->keyframeBuffer;
setLevelData(LevelEditorLayer::get(), currentLevelData);
this->setMouseEnabled(false);
@@ -212,6 +244,21 @@ namespace g3d
}
void CameraKeyframeEditorPopup::onRemoveLast(CCObject*) {
ckel->keyframeBuffer.removeLastKeyframe();
+ if (ckel->keyframeBuffer.keyframes.empty())
+ {
+ auto& cld = currentLevelData;
+ sus3d::Camera fakeCamera;
+ fakeCamera.setPitch(cld.pitch);
+ fakeCamera.setYaw(cld.yaw);
+ fakeCamera.setPosition(glm::vec3(cld.x, cld.y, cld.z));
+ const auto kfcopy = ckel->keyframeBuffer.keyframes;
+ ckel->keyframeBuffer.keyframes.clear();
+ for (auto& kf : kfcopy)
+ {
+ if (kf.playersXpos != 0.f) { ckel->keyframeBuffer.keyframes.push_back(kf); }
+ }
+ ckel->keyframeBuffer.setKeyframe(0, fakeCamera.getPosition() * glm::vec3(ckel->lengthScaleFactor * 20), fakeCamera.getFront());
+ }
}
void CameraKeyframeEditorPopup::draw()
diff --git a/Geome3Dash/src/game/editor/G3DEditorPopup.cpp b/Geome3Dash/src/game/editor/G3DEditorPopup.cpp
index 924f1c9b..0edcc72e 100644
--- a/Geome3Dash/src/game/editor/G3DEditorPopup.cpp
+++ b/Geome3Dash/src/game/editor/G3DEditorPopup.cpp
@@ -14,28 +14,24 @@ namespace g3d
static LevelData currentLevelData = LevelData::getDefault();
- void G3DEditorPopup::addLabel(const char* text, const CCPoint& position) {
- constexpr const char* _font = "chatFont.fnt";
-
- // Create the label using the specified font and text
- auto label = CCLabelBMFont::create(text, _font);
- label->setScale(0.8f); // Adjust the size of the label
- label->setPosition(position); // Position the label at the desired location
-
- // Add the label to the popup layer
- //this->m_geodeScrollLayer->addChild(label);
- }
-
- void G3DEditorScene::loadModel()
- {
- auto bms = BlockModelStorage::get();
-
- cube = bms->getModel(bms->getBP() / "player" / "cube" / "0" / "model.obj");
- cube->setScale(glm::vec3(0.75));
-
- spike = bms->getBlockModel(8);
- spike->setScale(glm::vec3(0.75));
- }
+ //void G3DEditorPopup::addLabel(const char* text, const CCPoint& position) {
+ // constexpr const char* _font = "chatFont.fnt";
+ // // Create the label using the specified font and text
+ // auto label = CCLabelBMFont::create(text, _font);
+ // label->setScale(0.8f); // Adjust the size of the label
+ // label->setPosition(position); // Position the label at the desired location
+ // // Add the label to the popup layer
+ // //this->m_geodeScrollLayer->addChild(label);
+ //}
+
+ //void G3DEditorScene::loadModel()
+ //{
+ // //auto bms = BlockModelStorage::get();
+ // //cube = bms->getModel(bms->getBP() / "player" / "cube" / "0" / "model.obj");
+ // //cube->setScale(glm::vec3(0.75));
+ // //spike = bms->getBlockModel(8);
+ // //spike->setScale(glm::vec3(0.75));
+ //}
void G3DEditorScene::drawModel()
{
@@ -46,19 +42,19 @@ namespace g3d
double deltaTime = elapsedTime.count();
cubePosition.x += deltaTime * 300;
- cubePosition.x = std::fmod(cubePosition.x, 1500);
+ cubePosition.x = std::fmod(cubePosition.x, 1800);
// Jumping logic
static bool isJumping = false;
static double jumpTime = 0.0;
const double jumpDuration = 0.6; // Jump duration in seconds
- const double jumpHeight = 80.0; // Height of the jump
+ const double jumpHeight = 65.0; // Height of the jump
const double groundPositionY = 105.0; // Ground position
static double initialRotationZ = 0.0; // Initial rotation at jump start
// Handle jump logic
- if (!isJumping && cubePosition.x >= 630.0 && cubePosition.x < 700.0 + deltaTime * 300) {
+ if (!isJumping && cubePosition.x >= 840.0 && cubePosition.x < 900.0 + deltaTime * 300) {
isJumping = true;
jumpTime = 0.0; // Reset jump timer
initialRotationZ = cubeRotationZ; // Store the initial rotation
@@ -92,65 +88,28 @@ namespace g3d
}
}
+ for (float i = -900.f; i < 2400.f; i += 30.f)
+ {
+ auto obj = blockObjs[i];
+ obj->m_positionX = i;
+ obj->m_positionY = spikePosition.y - 30.f;
+ obj->setPosition(ccp(obj->m_positionX, obj->m_positionY));
+ }
- auto bms = BlockModelStorage::get();
-
- // End jumping logic
-
-
- playerCameraOffset = glm::vec3(currentLevelData.x, currentLevelData.y, currentLevelData.z);
- playerCameraPitchOffset = currentLevelData.pitch;
- playerCameraYawOffset = currentLevelData.yaw;
-
- cube->setRotation(glm::vec3(0));
- spike->setRotation(glm::vec3(0));
-
- cube->setPosition(cubePosition / glm::vec3(20));
- cube->setRotationZ(360 - cubeRotationZ);
-
- camera.setPitch(playerCameraPitchOffset);
- camera.setYaw(playerCameraYawOffset);
- camera.setPosition(cube->getPosition() + playerCameraOffset);
- light.setPosition(camera.getPosition());
-
- cube->render(
- bms->getBlockSP(),
- camera.getViewMat(),
- light.getPosition(),
- light.getColor(),
- camera.getPosition(),
- camera.getProjectionMat());
-
- spike->setPosition(spikePosition / glm::vec3(20));
- spike->render(
- bms->getBlockSP(),
- camera.getViewMat(),
- light.getPosition(),
- light.getColor(),
- camera.getPosition(),
- camera.getProjectionMat());
-
- spikePosition.x += 30;
- spike->setPosition(spikePosition / glm::vec3(20));
- spike->render(
- bms->getBlockSP(),
- camera.getViewMat(),
- light.getPosition(),
- light.getColor(),
- camera.getPosition(),
- camera.getProjectionMat());
-
- spikePosition.x += 30;
- spike->setPosition(spikePosition / glm::vec3(20));
- spike->render(
- bms->getBlockSP(),
- camera.getViewMat(),
- light.getPosition(),
- light.getColor(),
- camera.getPosition(),
- camera.getProjectionMat());
-
- spikePosition.x -= 60;
+ for (int i = 0; i < spikeObjs.size(); i++)
+ {
+ auto obj = spikeObjs.at(i);
+ obj->m_positionX = spikePosition.x + i * 30.f;
+ obj->m_positionY = spikePosition.y;
+ obj->setPosition(ccp(obj->m_positionX, obj->m_positionY));
+ }
+
+ playerObj->m_position = ccp(cubePosition.x, cubePosition.y);
+ playerObj->setRotation(cubeRotationZ);
+ playerObj->setPosition(playerObj->m_position);
+
+ player1.render(shaderProgram, camera, light);
+ for (auto& block : blocks) { block.render(shaderProgram, camera, light); }
}
void G3DEditorScene::draw()
@@ -174,32 +133,107 @@ namespace g3d
}
- bool G3DEditorScene::init()
+ bool G3DEditorScene::init(LevelEditorLayer* lel)
{
- loadModel();
+ this->lel = lel;
+ playerObj = PlayerObject::create(0, 0, lel, lel->m_objectLayer, false);
+
+ auto gameLayer = CCLayer::create();
+ gameLayer->setScale(0.2f);
+ gameLayer->addChild(playerObj);
+
+ this->addChild(gameLayer);
+
+ float levelLength = 0;
+ CCObject* obj;
+ CCARRAY_FOREACH(lel->m_objects, obj)
+ {
+ auto block = dynamic_cast(obj);
+ levelLength = std::max(block->getPositionX(), levelLength);
+ }
+ lengthScaleFactor = currentLevelData.spline.length(10000) / levelLength;
+ currentLevelData.spline.updateParameterList();
+
+ // don't forget to delete these
+ static bool isEditing = false;
+ splineTr = new SplineGameObjectTransformer(¤tLevelData.spline, &lengthScaleFactor);
+ splinePlayerTr = new SplinePlayerObjectTransformer(¤tLevelData.spline, &lengthScaleFactor);
+ splineCamTr = new SplineCameraPlayerObjectModelTransformer(
+ ¤tLevelData.spline,
+ ¤tLevelData.keyframe,
+ &camera,
+ &lengthScaleFactor,
+ &isEditing);
+
+ for (int i = 0; i < 3; i++)
+ {
+ spikeObjs.push_back(GameObject::createWithKey(8));
+ gameLayer->addChild(spikeObjs.back());
+ blocks.push_back(GameObjectModel(spikeObjs.back(), { splineTr }));
+ }
+
+ for (float i = -900.f; i < 2400.f; i += 30.f)
+ {
+ blockObjs[i] = GameObject::createWithKey(1);
+ gameLayer->addChild(blockObjs[i]);
+ blocks.push_back(GameObjectModel(blockObjs[i], { splineTr }));
+ }
+
+ player1 = PlayerObjectModel(playerObj, { splinePlayerTr, splineCamTr });
+
+ shaderProgram = BlockModelStorage::get()->getBlockSP();
+
return CCNode::init();
}
void G3DEditorPopup::onClose(CCObject* ob)
{
- setLevelData(LevelEditorLayer::get(), currentLevelData);
- geode::Popup<>::onClose(ob);
+ setLevelData(lel, currentLevelData);
+ geode::Popup::onClose(ob);
+ }
+
+ void G3DEditorPopup::updateCamera()
+ {
+ if (m_spikeScene)
+ {
+ auto& cld = currentLevelData;
+ cld.x = m_spikeScene->playerCameraOffset.x;
+ cld.y = m_spikeScene->playerCameraOffset.y;
+ cld.z = m_spikeScene->playerCameraOffset.z;
+ cld.yaw = m_spikeScene->playerCameraYawOffset;
+ cld.pitch = m_spikeScene->playerCameraPitchOffset;
+ sus3d::Camera fakeCamera;
+ fakeCamera.setPitch(cld.pitch);
+ fakeCamera.setYaw(cld.yaw);
+ fakeCamera.setPosition(glm::vec3(cld.x, cld.y, cld.z));
+ const auto kfcopy = cld.keyframe.keyframes;
+ cld.keyframe.keyframes.clear();
+ for (auto& kf : kfcopy)
+ {
+ if (kf.playersXpos != 0.f) { cld.keyframe.keyframes.push_back(kf); }
+ }
+ cld.keyframe.setKeyframe(0, fakeCamera.getPosition() * glm::vec3(m_spikeScene->lengthScaleFactor * 20), fakeCamera.getFront());
+ }
}
void G3DEditorPopup::updateState(G3DNumberSetting* invoker)
{
+ updateCamera();
for (auto& sett : m_settings) { sett->updateState(nullptr); }
}
- bool G3DEditorPopup::setup()
+ bool G3DEditorPopup::setup(LevelEditorLayer* plel)
{
+ lel = plel;
+
currentLevelData = LevelData::getDefault();
try {
- currentLevelData = getLevelData(LevelEditorLayer::get());
+ currentLevelData = getLevelData(lel);
}
catch (...) {
}
+
setTitle("Geome3Dash Camera Editor");
//auto winSize = CCDirector::sharedDirector()->getWinSize();
auto const layerSize = CCSize(250, 200);
@@ -264,29 +298,37 @@ namespace g3d
scrollBar, geode::Anchor::Center, ccp(layerBG->getContentWidth() / 2 + 10, 0)
);
- this->updateState();
-
- m_spikeScene = G3DEditorScene::create();
+ m_spikeScene = G3DEditorScene::create(lel);
this->m_mainLayer->addChild(m_spikeScene);
layerBG->setPositionX(layerBG->getPositionX() + 90);
scrollBar->setPositionX(scrollBar->getPositionX() + 90);
+ m_spikeScene->playerCameraOffset = glm::vec3(
+ currentLevelData.x,
+ currentLevelData.y,
+ currentLevelData.z);
+ m_spikeScene->playerCameraYawOffset = currentLevelData.yaw;
+ m_spikeScene->playerCameraPitchOffset = currentLevelData.pitch;
+
+ this->updateState();
+
return true;
}
- void G3DEditorPopup::scene() {
+ void G3DEditorPopup::scene(LevelEditorLayer* plel)
+ {
const CCSize uiSize = CCDirector::sharedDirector()->getWinSize() - CCSize(60, 40);
-
G3DEditorPopup* instance = new G3DEditorPopup();
-
- if (instance && instance->initAnchored(uiSize.width, uiSize.height)) {
+ if (instance && instance->initAnchored(uiSize.width, uiSize.height, plel))
+ {
instance->m_noElasticity = true;
instance->setID("g3d_editor_popup"_spr);
instance->autorelease();
instance->show();
}
- else {
+ else
+ {
CC_SAFE_DELETE(instance);
}
}
diff --git a/Geome3Dash/src/game/editor/G3DEditorPopup.h b/Geome3Dash/src/game/editor/G3DEditorPopup.h
index 926188ed..f968fb9a 100644
--- a/Geome3Dash/src/game/editor/G3DEditorPopup.h
+++ b/Geome3Dash/src/game/editor/G3DEditorPopup.h
@@ -22,6 +22,11 @@
#include "engine/sus3d/Shaders.h"
#include "CocosShaderProgram.h"
+#include "PlayerObjectModel.h"
+
+#include "transformer/SplineCameraPlayerObjectModelTransformer.h"
+#include "transformer/SplineGameObjectTransformer.h"
+#include "transformer/SplinePlayerObjectTransformer.h"
namespace g3d
{
@@ -37,20 +42,34 @@ namespace g3d
glm::vec3 playerCameraOffset;
double playerCameraYawOffset;
double playerCameraPitchOffset;
- CocosShaderProgram* shaderProgram;
+ sus3d::ShaderProgram* shaderProgram;
// don't forget fo free these or else memory leak
glm::vec3 cubePosition = glm::vec3(0, 105, 400);
double cubeRotationZ = 0;
- glm::vec3 spikePosition = glm::vec3(700, 105, 400);
- sus3d::Model* cube;
- sus3d::Model* spike;
+ glm::vec3 spikePosition = glm::vec3(900, 105, 400);
+ //sus3d::Model* cube;
+ //sus3d::Model* spike;
+
+ SplineGameObjectTransformer* splineTr;
+ SplinePlayerObjectTransformer* splinePlayerTr;
+ SplineCameraPlayerObjectModelTransformer* splineCamTr;
+
+ LevelEditorLayer* lel;
+ std::vector spikeObjs;
+ std::unordered_map blockObjs;
+ PlayerObject* playerObj;
+
+ PlayerObjectModel player1;
+ std::vector blocks;
- void loadModel();
+ float lengthScaleFactor;
+
+ //void loadModel();
void drawModel();
virtual void draw() override;
- virtual bool init() override;
+ virtual bool init(LevelEditorLayer* lel);
// delegates
bool isPressingControl = false;
@@ -67,9 +86,9 @@ namespace g3d
~G3DEditorScene();
- static auto create() {
+ static auto create(LevelEditorLayer* lel) {
auto node = new G3DEditorScene;
- if (node->init()) {
+ if (node->init(lel)) {
node->autorelease();
}
else {
@@ -79,20 +98,24 @@ namespace g3d
}
};
- class G3DEditorPopup : public geode::Popup<> {
+ class G3DEditorPopup : public geode::Popup
+ {
public:
- static void scene();
+ static void scene(LevelEditorLayer* plel);
void updateState(G3DNumberSetting* invoker = nullptr);
+ void updateCamera();
protected:
- bool setup() override;
- void addLabel(const char* text, const CCPoint& position);
+ bool setup(LevelEditorLayer*) override;
+ //void addLabel(const char* text, const CCPoint& position);
G3DEditorScene* m_spikeScene;
geode::ScrollLayer* m_list;
geode::TextInput* m_searchInput;
std::vector> m_settings;
+ LevelEditorLayer* lel;
+
virtual void onClose(CCObject*) override;
private:
diff --git a/Geome3Dash/src/game/playing/G3DPlayLayer.cpp b/Geome3Dash/src/game/playing/G3DPlayLayer.cpp
index 082c784a..6f470804 100644
--- a/Geome3Dash/src/game/playing/G3DPlayLayer.cpp
+++ b/Geome3Dash/src/game/playing/G3DPlayLayer.cpp
@@ -87,33 +87,33 @@ namespace g3d
delete animTr;
//delete camTr;
delete splineTr;
+ delete splinePlayerTr;
+ delete splineCamTr;
}
- void G3DPlayLayer::updateCamera()
- {
- auto playerPos = player1.getPosition();
- auto newR = player1.getRotation();
- auto playerYaw = newR.y;
- auto playerYawR = -glm::radians(playerYaw);
-
- glm::vec3 rotatedOffset =
- {
- playerCameraOffset.x * std::cos(playerYawR) - playerCameraOffset.z * std::sin(playerYawR),
- playerCameraOffset.y,
- playerCameraOffset.x * std::sin(playerYawR) + playerCameraOffset.z * std::cos(playerYawR)
- };
-
- camera.setPosition(playerPos + rotatedOffset);
- // Clamp pitch to prevent flipping
- camera.setYaw(playerCameraYawOffset - playerYaw);
- auto pitch = std::clamp(static_cast(playerCameraPitchOffset), -89.0f, 89.0f);
- camera.setPitch(pitch);
- }
-
- void G3DPlayLayer::updateLight()
- {
- light.setPosition(camera.getPosition());
- }
+ //void G3DPlayLayer::updateCamera()
+ //{
+ // auto playerPos = player1.getPosition();
+ // auto newR = player1.getRotation();
+ // auto playerYaw = newR.y;
+ // auto playerYawR = -glm::radians(playerYaw);
+ // glm::vec3 rotatedOffset =
+ // {
+ // playerCameraOffset.x * std::cos(playerYawR) - playerCameraOffset.z * std::sin(playerYawR),
+ // playerCameraOffset.y,
+ // playerCameraOffset.x * std::sin(playerYawR) + playerCameraOffset.z * std::cos(playerYawR)
+ // };
+ // camera.setPosition(playerPos + rotatedOffset);
+ // // Clamp pitch to prevent flipping
+ // camera.setYaw(playerCameraYawOffset - playerYaw);
+ // auto pitch = std::clamp(static_cast(playerCameraPitchOffset), -89.0f, 89.0f);
+ // camera.setPitch(pitch);
+ //}
+
+ //void G3DPlayLayer::updateLight()
+ //{
+ // light.setPosition(camera.getPosition());
+ //}
void G3DPlayLayer::loadBlocks()
{
@@ -141,26 +141,23 @@ namespace g3d
}
}
- void G3DPlayLayer::updateCameraAction(const float currentXPosition)
- {
- // Calculate delta time
- auto now = std::chrono::steady_clock::now();
- std::chrono::duration elapsedTime = now - lastUpdate;
- lastUpdate = now;
- double deltaTime = elapsedTime.count();
-
- // Prepare variables for deltas
- double deltaX = 0.0, deltaY = 0.0, deltaZ = 0.0;
- double deltaYaw = 0.0, deltaPitch = 0.0;
-
- // Update camera action handler and get deltas
- cameraActionHandler.update(deltaTime, currentXPosition, deltaX, deltaY, deltaZ, deltaYaw, deltaPitch);
-
- // Apply deltas to the camera offsets
- playerCameraOffset += glm::vec3(deltaX, deltaY, deltaZ);
- playerCameraYawOffset += deltaYaw;
- playerCameraPitchOffset += deltaPitch;
- }
+ //void G3DPlayLayer::updateCameraAction(const float currentXPosition)
+ //{
+ // // Calculate delta time
+ // auto now = std::chrono::steady_clock::now();
+ // std::chrono::duration elapsedTime = now - lastUpdate;
+ // lastUpdate = now;
+ // double deltaTime = elapsedTime.count();
+ // // Prepare variables for deltas
+ // double deltaX = 0.0, deltaY = 0.0, deltaZ = 0.0;
+ // double deltaYaw = 0.0, deltaPitch = 0.0;
+ // // Update camera action handler and get deltas
+ // cameraActionHandler.update(deltaTime, currentXPosition, deltaX, deltaY, deltaZ, deltaYaw, deltaPitch);
+ // // Apply deltas to the camera offsets
+ // playerCameraOffset += glm::vec3(deltaX, deltaY, deltaZ);
+ // playerCameraYawOffset += deltaYaw;
+ // playerCameraPitchOffset += deltaPitch;
+ //}
void G3DPlayLayer::drawPlayers()
{
@@ -186,9 +183,9 @@ namespace g3d
drawPlayers();
drawBlocks();
- updateCameraAction(playLayer->m_player1->m_position.x);
- updateCamera();
- updateLight();
+ //updateCameraAction(playLayer->m_player1->m_position.x);
+ //updateCamera();
+ //updateLight();
glDisable(GL_DEPTH_TEST);
OpenGLStateHelper::pushState();
diff --git a/Geome3Dash/src/game/playing/G3DPlayLayer.h b/Geome3Dash/src/game/playing/G3DPlayLayer.h
index 87352b2e..185aef16 100644
--- a/Geome3Dash/src/game/playing/G3DPlayLayer.h
+++ b/Geome3Dash/src/game/playing/G3DPlayLayer.h
@@ -107,10 +107,10 @@ namespace g3d
bool init();
- void updateCamera();
- void updateLight();
+ //void updateCamera();
+ //void updateLight();
//void updateBlock(GameObject* obj, sus3d::Model* model);
- void updateCameraAction(const float currentXPosition);
+ //void updateCameraAction(const float currentXPosition);
void drawPlayers();
void drawBlocks();
diff --git a/Geome3Dash/src/helper/spline/Spline.cpp b/Geome3Dash/src/helper/spline/Spline.cpp
index b4b5eb52..5bd4836b 100644
--- a/Geome3Dash/src/helper/spline/Spline.cpp
+++ b/Geome3Dash/src/helper/spline/Spline.cpp
@@ -26,7 +26,6 @@ namespace g3d
for (int i = parameterList.size() - 10; i < parameterList.size(); i++) {
auto data = parameterList[i];
- std::cout << data.t << " " << data.value.x << " " << data.l << std::endl;
}
}
diff --git a/Geome3Dash/src/hook/LevelEditorLayer.cpp b/Geome3Dash/src/hook/LevelEditorLayer.cpp
index 007c861d..3b4bd0c1 100644
--- a/Geome3Dash/src/hook/LevelEditorLayer.cpp
+++ b/Geome3Dash/src/hook/LevelEditorLayer.cpp
@@ -50,7 +50,7 @@ namespace g3d
void onEditorPopup(CCObject * sender)
{
- G3DEditorPopup::scene();
+ G3DEditorPopup::scene(this);
}
void addG3DMenu(
diff --git a/Geome3Dash/src/transformer/SplineCameraPlayerObjectModelTransformer.cpp b/Geome3Dash/src/transformer/SplineCameraPlayerObjectModelTransformer.cpp
index 96305dec..a7b70382 100644
--- a/Geome3Dash/src/transformer/SplineCameraPlayerObjectModelTransformer.cpp
+++ b/Geome3Dash/src/transformer/SplineCameraPlayerObjectModelTransformer.cpp
@@ -27,6 +27,7 @@ namespace g3d
auto cameraState = buffer->getInterpolatedCameraKeyframe(pom->getPlayerObject()->getPositionX());
camera->setPosition(getPlayerOrientedCameraPosition(pom) + cameraState.offset);
camera->setFront(getPlayerOrientedCameraFront(pom) + cameraState.front);
+
}
}
}