Now can create roofs from lua script
This commit is contained in:
@@ -29,6 +29,7 @@ add_library(editor STATIC EditorGizmoModule.cpp EditorInputModule.cpp)
|
||||
target_link_libraries(editor PRIVATE
|
||||
OgreMain
|
||||
GameData
|
||||
physics
|
||||
)
|
||||
target_include_directories(editor PUBLIC .)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "TerrainModule.h"
|
||||
#include "Components.h"
|
||||
#include "PhysicsModule.h"
|
||||
#include "physics.h"
|
||||
#include "CharacterAnimationModule.h"
|
||||
#include "CharacterManagerModule.h"
|
||||
#include "CharacterModule.h"
|
||||
@@ -582,6 +583,7 @@ void CharacterModule::updateCameraGoal(Camera &camera, Ogre::Real deltaYaw,
|
||||
Ogre::Real deltaPitch,
|
||||
Ogre::Real deltaZoom)
|
||||
{
|
||||
static float canonDist = 0;
|
||||
camera.mCameraPivot->yaw(Ogre::Degree(deltaYaw), Ogre::Node::TS_PARENT);
|
||||
if (!(camera.mPivotPitch + deltaPitch > 25 && deltaPitch > 0) &&
|
||||
!(camera.mPivotPitch + deltaPitch < -60 && deltaPitch < 0)) {
|
||||
@@ -594,10 +596,45 @@ void CharacterModule::updateCameraGoal(Camera &camera, Ogre::Real deltaYaw,
|
||||
Ogre::Real distChange = deltaZoom * dist;
|
||||
|
||||
// bound the zoom
|
||||
if (!(dist + distChange < 8 && distChange < 0) &&
|
||||
!(dist + distChange > 25 && distChange > 0))
|
||||
if (!(dist + distChange < 1.5f && distChange < 0) &&
|
||||
!(dist + distChange > 10 && distChange > 0)) {
|
||||
camera.mCameraGoal->translate(0, 0, distChange,
|
||||
Ogre::Node::TS_LOCAL);
|
||||
canonDist += distChange;
|
||||
}
|
||||
JPH::BodyID id;
|
||||
Ogre::Vector3 position;
|
||||
Ogre::Vector3 d = (camera.mCameraPivot->_getDerivedPosition() -
|
||||
camera.mCameraGoal->_getDerivedPosition())
|
||||
.normalisedCopy();
|
||||
|
||||
if (JoltPhysicsWrapper::getSingleton().raycastQuery(
|
||||
camera.mCameraPivot->_getDerivedPosition(),
|
||||
camera.mCameraGoal->_getDerivedPosition() - d * 0.6,
|
||||
position, id)) {
|
||||
float l = camera.mCameraPivot->_getDerivedPosition()
|
||||
.squaredDistance(
|
||||
camera.mCameraGoal
|
||||
->_getDerivedPosition());
|
||||
float m = camera.mCameraPivot->_getDerivedPosition()
|
||||
.squaredDistance(position);
|
||||
if (m < l)
|
||||
camera.mCameraGoal->_setDerivedPosition(position +
|
||||
d * 0.6f);
|
||||
} else {
|
||||
Ogre::Real dist2 =
|
||||
camera.mCameraGoal->_getDerivedPosition().distance(
|
||||
camera.mCameraPivot->_getDerivedPosition());
|
||||
if (deltaZoom < 0.0f || deltaZoom > 0.0f)
|
||||
canonDist = dist2;
|
||||
else {
|
||||
if (canonDist < dist2)
|
||||
canonDist = dist2;
|
||||
if (dist2 < canonDist)
|
||||
camera.mCameraGoal->translate(
|
||||
0, 0, 0.08f, Ogre::Node::TS_LOCAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
CharacterAIModule::CharacterAIModule(flecs::world &ecs)
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@ struct TerrainItemMeshNode {
|
||||
Ogre::SceneNode *itemNode;
|
||||
Ogre::StaticGeometry *geo;
|
||||
};
|
||||
struct TownCollider {};
|
||||
|
||||
struct StaticGeometryModule {
|
||||
StaticGeometryModule(flecs::world &ecs);
|
||||
|
||||
@@ -195,13 +195,14 @@ namespace Geometry
|
||||
void setupLods(Ogre::LodConfig &config)
|
||||
{
|
||||
// config.advanced.useCompression = false;
|
||||
// config.advanced.useVertexNormals = true;
|
||||
config.advanced.useVertexNormals = true;
|
||||
config.advanced.preventPunchingHoles = true;
|
||||
config.advanced.preventBreakingLines = true;
|
||||
config.createGeneratedLodLevel(10, 0.15f);
|
||||
config.createGeneratedLodLevel(30, 0.25f);
|
||||
config.createGeneratedLodLevel(60, 0.36f);
|
||||
config.createGeneratedLodLevel(150, 0.65f);
|
||||
config.createGeneratedLodLevel(50, 0.25f);
|
||||
config.createGeneratedLodLevel(100, 0.36f);
|
||||
config.createGeneratedLodLevel(200, 0.50f);
|
||||
config.createGeneratedLodLevel(500, 0.85f);
|
||||
config.advanced.useBackgroundQueue = false;
|
||||
Ogre::MeshLodGenerator::getSingleton().generateLodLevels(config);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user