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); + } } }