This commit is contained in:
Lendemor 2017-09-06 10:45:04 +02:00
commit 42fad8816b
25 changed files with 142 additions and 198 deletions

View File

@ -7,8 +7,8 @@ SET(VERSION_MINOR 0)
set(EXTRA_INCLUDES ${PROJECT_SOURCE_DIR}/src)
# choose source file
file(GLOB LIB_SRC_LIST src/*.cpp src/tools/*.cpp src/scene/*.cpp src/scene/gui/*.cpp src/sparrowshell/*.cpp)
file(GLOB LIB_HEAD_LIST src/*.h src/tools/*.h src/scene/*.h src/scene/gui/*.h src/sparrowshell/*.h)
file(GLOB LIB_SRC_LIST src/*.cpp src/tools/*.cpp src/scene/*.cpp src/scene/gui/*.cpp src/sparrowshell/*.cpp src/editor/*.cpp)
file(GLOB LIB_HEAD_LIST src/*.h src/tools/*.h src/scene/*.h src/scene/gui/*.h src/sparrowshell/*.h src/editor/*.h)
file(GLOB EXEC_SRC_LIST src/test/*.cpp)
set(RESOURCES_FILES ${LIB_HEAD_LIST})

3
deploy/data/shield.mtl Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1ef4f914e2471329c7941da84fa77f85863f650b75b419bf7448378491ce6d3a
size 146

3
deploy/data/shield.obj Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c99ff29465c92c7620f01977970513c7c384aca192c6375e305c2cdc8a34aa64
size 315132

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ca2ba2061f97af05b000b85e8489a7711356efc819f6df4e6058270d1be513f2
size 151774

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:de71bc2611a54b4957c07f49d0d83d19db5cc54621fdbab674d7ce3dbd74605b
size 76948

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:296e0239c71ad95a21756e98ace3d7e9f43e82725a156f6a32b3cecf35ed912e
size 164968

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f878621c0b1fe3be1e92a6475d677a6152a222189358803973e48084deffa731
size 339069

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ae7a152959a26719133063e09ea578786d2265c3bcd29ab9743ff6efb3277f2f
size 9286

View File

@ -1,38 +0,0 @@
{
"TextureResource": [
{
"woodbox albedo",
"woodframe_albedo.png",
24,
1,
1
}
{
"woodbox roughness",
"woodframe_roughness.png",
8,
1,
1
}
{
"woodbox metallic",
"woodframe_metallic.png",
8,
1,
1
}
{
"woodbox normals",
"woodframe_normal.png",
24,
1,
1
}
],
"ResourcePack": [
{
"woodbox",
[{"TextureResource", 0}]
}
]
}

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6bad25466e6184902ee2c2ec7d47f8ae112943d3c92fca387a5b41da0b42a2a5
size 6976127

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:289e65cf6fa41d6c00a62cde57ffb20dbe5f1de6b3e6a3ef4d8a7de8f41524bd
size 15007

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:25c6e56846639f176e8d9ef756b5df8329cba6cd0117812dc79dfa2892ccf560
size 6869334

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f714f443197a22e6f7148004b344f0081f9c7667b85429472d38b9190af43d79
size 1822076

View File

@ -6,7 +6,8 @@
class DefaultKeysMap : public IKeysMap
{
public:
enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP,RUN,
enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP, RUN,
MAIN_ACTION_HOLD, SECONDARY_ACTION_HOLD,
TOGGLE_NOCLIP, TOGGLE_PHYSICS_DEBUG, TOGGLE_CONSOLE,
MOVE_CURSOR_LEFT, MOVE_CURSOR_RIGHT, HISTORY_UP,HISTORY_DOWN, TOGGLE_MOUSE_CURSOR, LEFT_CLICK,
EXIT_GAME,LAST_DEFAULT_ACTION};
@ -20,6 +21,8 @@ public:
keys.push_back( {{STRAFE_LEFT,input::KEYBOARD}, sf::Keyboard::Q, IKeysMap::HOLD} );
keys.push_back( {{STRAFE_RIGHT,input::KEYBOARD}, sf::Keyboard::D, IKeysMap::HOLD} );
keys.push_back( {{RUN,input::KEYBOARD}, sf::Keyboard::LShift,IKeysMap::HOLD} );
keys.push_back( {{MAIN_ACTION_HOLD,input::MOUSE}, sf::Mouse::Left, IKeysMap::HOLD} );
keys.push_back( {{SECONDARY_ACTION_HOLD,input::MOUSE}, sf::Mouse::Right, IKeysMap::HOLD} );
keys.push_back( {{JUMP,input::KEYBOARD}, sf::Keyboard::Space, IKeysMap::PRESSED} );
keys.push_back( {{TOGGLE_NOCLIP,input::KEYBOARD}, sf::Keyboard::G, IKeysMap::PRESSED} );
keys.push_back( {{TOGGLE_PHYSICS_DEBUG,input::KEYBOARD},sf::Keyboard::P, IKeysMap::PRESSED} );
@ -53,6 +56,18 @@ public:
};
}
static std::vector<Action> getObjectEditorContext()
{
return {
{MAIN_ACTION,input::MOUSE},
{SECONDARY_ACTION,input::MOUSE},
{EXIT_GAME,input::KEYBOARD},
{MAIN_ACTION_HOLD,input::MOUSE},
{SECONDARY_ACTION_HOLD,input::MOUSE},
{TOGGLE_CONSOLE,input::KEYBOARD},
};
}
static std::vector<Action> getShellContext()
{
return {

View File

@ -0,0 +1,28 @@
#include "objecteditor.h"
#include "engine.h"
#include "defaultkeysmap.h"
#include <SparrowInput/input.h>
#include <SparrowRenderer/trackballcamera.h>
ObjectEditor::ObjectEditor() :
m_camera(new TrackBallCamera())
{
}
void ObjectEditor::update()
{
Input* input = getEngine().getInput();
glm::vec2 diff = input->getDeltaPosition();
for(Action action : input->getActions())
{
if(action.action == DefaultKeysMap::MAIN_ACTION_HOLD)
m_camera->moveCamera(diff.x, diff.y);
else if(action.action == DefaultKeysMap::SECONDARY_ACTION_HOLD)
m_camera->rotateCamera(diff.x, diff.y);
}
m_camera->zoom(input->getDeltaVerticalScroll()*120.f);
}

20
src/editor/objecteditor.h Normal file
View File

@ -0,0 +1,20 @@
#ifndef OBJECTEDITOR_H
#define OBJECTEDITOR_H
#include "scene/cameranode.h"
class TrackBallCamera;
class ObjectEditor : public CameraNode
{
TrackBallCamera* m_camera;
public:
ObjectEditor();
Camera *getCamera() { return (Camera*)m_camera; }
void update();
};
#endif // OBJECTEDITOR_H

View File

@ -194,6 +194,7 @@ void Engine::enablePhysicsDebug()
{
m_physicsDebugNode = new PhysicsDebugNode();
getScene()->addToIndex(m_physicsDebugNode);
getScene()->registerMeshType(m_physicsDebugNode->getGeometryNode()->mesh->getFlags());
getScene()->getPhysics()->setDebugDrawer(m_physicsDebugNode);
getScene()->getPhysics()->getDebugDrawer()->setDebugMode(btIDebugDraw::DBG_DrawWireframe);
}

View File

@ -28,13 +28,13 @@ btRigidBody* MeshNode::buildStaticCollider()
btIndexedMesh *bulletMesh = new btIndexedMesh();
Mesh *m = m_geometry.mesh;
// vertices
bulletMesh->m_numVertices = m->positions3D.size();
bulletMesh->m_vertexBase = (unsigned char*)(m->positions3D.data());
bulletMesh->m_numVertices = m->m_positions3D.size();
bulletMesh->m_vertexBase = (unsigned char*)(m->m_positions3D.data());
bulletMesh->m_vertexStride = sizeof(glm::vec3);
bulletMesh->m_vertexType = PHY_FLOAT;
// indices
bulletMesh->m_numTriangles = m->indices.size()/3;
bulletMesh->m_triangleIndexBase = (unsigned char*)(m->indices.data());
bulletMesh->m_numTriangles = m->m_indices.size()/3;
bulletMesh->m_triangleIndexBase = (unsigned char*)(m->m_indices.data());
bulletMesh->m_triangleIndexStride = 3*sizeof(GLuint);
bulletMesh->m_indexType = PHY_INTEGER;

View File

@ -2,6 +2,8 @@
#include "SparrowRenderer/mesh.h"
#include "SparrowRenderer/pbrmaterial.h"
#include "scene/scenetree.h"
PhysicsDebugNode::PhysicsDebugNode() :
MeshNode(new Mesh())
{
@ -37,6 +39,6 @@ void PhysicsDebugNode::flushLines()
void PhysicsDebugNode::clearBuffers()
{
m_geometry.mesh->positions3D.clear();
m_geometry.mesh->normals.clear();
m_geometry.mesh->m_positions3D.clear();
m_geometry.mesh->m_normals.clear();
}

View File

@ -1,20 +0,0 @@
#include "trackballcameranode.h"
TrackBallCameraNode::TrackBallCameraNode(Input *input) :
m_input(input),
m_action_move(NO_ACTION),
m_action_rotate(NO_ACTION)
{}
void TrackBallCameraNode::update()
{
glm::vec2 diff = m_input->getDeltaPosition();
for(Action action : m_input->getActions())
{
if(action.action == m_action_move)
moveCamera(diff.x, diff.y);
else if(action.action == m_action_rotate)
rotateCamera(diff.x, diff.y);
}
zoom(m_input->getDeltaVerticalScroll()*120.f);
}

View File

@ -1,31 +0,0 @@
#ifndef TRACKBALLCAMERANODE_H
#define TRACKBALLCAMERANODE_H
#include "cameranode.h"
#include "SparrowRenderer/trackballcamera.h"
#include "SparrowInput/input.h"
/**
* @brief The CameraNode class is a scene node that can be used by the renderer
*/
class TrackBallCameraNode : public CameraNode, public TrackBallCamera
{
Input *m_input;
int m_action_move;
int m_action_rotate;
public:
TrackBallCameraNode(Input *input);
void setInputs(int action_move, int action_rotate)
{
m_action_move = action_move;
m_action_rotate = action_rotate;
}
virtual void update();
virtual Camera *getCamera() { return this; }
};
#endif // TRACKBALLCAMERANODE_H

View File

@ -13,7 +13,6 @@
#include <scene/scenetree.h>
#include <scene/textnode.h>
#include <scene/trackballcameranode.h>
#include <scene/playercharacternode.h>
#include <scene/lightnode.h>
#include <scene/graphicalcontainernode.h>
@ -100,7 +99,7 @@ void generateTerrain(SceneTree *scene, btDiscreteDynamicsWorld *world)
Chunk *chunk = new Chunk(&gen); // ! WARNING ! : chunk pointer is lost and never deleted
glm::vec3 pos(x, y, z);
chunk->generate(pos);
if(chunk->mesh->positions3D.empty())
if(chunk->mesh->m_positions3D.empty())
delete chunk;
else
{

View File

@ -13,79 +13,34 @@
#include "resourcemanager.h"
#include <imgui/imgui.h>
#define PHYSICS_OFFSET 0.01f
#define PHYSICS_SHAPES_OFFSET 0.0025f
Potator::Potator(PlayerCharacterNode * player,
int cube_action,
int shield_action,
int bottle_action,
int object_action) :
m_player(player),
m_throwCubeAction(cube_action),
m_throwShieldAction(shield_action),
m_throwBottleAction(bottle_action),
m_throwObjectAction(object_action)
{
glm::vec3 cubeDim(1);
glm::vec3 s = cubeDim*0.5f;
float density = 1.f;
// creating shield
m_shieldMeshes = Loader::loadMesh("shield.obj");
for(Mesh* m : m_shieldMeshes)
m->initGL();
// creating cube
m_cubeMesh = new Mesh("woodBox");
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, 1*s.z),glm::vec3(0, 0, 1),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, 1*s.z),glm::vec3(0, 0, 1),glm::vec2(0, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, 1*s.z),glm::vec3(0, 0, 1),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, 1*s.z),glm::vec3(0, 0, 1),glm::vec2(1, 1));
btCompoundShape* shieldShape = new btCompoundShape();
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, -1*s.z),glm::vec3(0, 0, -1),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, -1*s.z),glm::vec3(0, 0, -1),glm::vec2(1, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, -1*s.z),glm::vec3(0, 0, -1),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, -1*s.z),glm::vec3(0, 0, -1),glm::vec2(0, 1));
btTransform woodTransform = btTransform::getIdentity();
woodTransform.setRotation(btQuaternion(0, 3.1416f, 0));
shieldShape->addChildShape(woodTransform, new btCylinderShapeZ(btVector3(0.57f + PHYSICS_SHAPES_OFFSET, 0.57f + PHYSICS_SHAPES_OFFSET, 0.03f + PHYSICS_SHAPES_OFFSET)));
btTransform guardTransform = btTransform::getIdentity();
guardTransform.setOrigin(btVector3(0.f, 0.f, -0.035f));
shieldShape->addChildShape(guardTransform, new btSphereShape(0.08 + PHYSICS_SHAPES_OFFSET));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, -1*s.z),glm::vec3(0, 1, 0),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, 1*s.z),glm::vec3(0, 1, 0),glm::vec2(0, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, -1*s.z),glm::vec3(0, 1, 0),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, 1*s.z),glm::vec3(0, 1, 0),glm::vec2(1, 1));
m_shieldShape = shieldShape;
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, -1*s.z),glm::vec3(0, -1, 0),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, 1*s.z),glm::vec3(0, -1, 0),glm::vec2(1, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, -1*s.z),glm::vec3(0, -1, 0),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, 1*s.z),glm::vec3(0, -1, 0),glm::vec2(0, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, 1*s.z),glm::vec3( 1, 0, 0),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, 1*s.z),glm::vec3( 1, 0, 0),glm::vec2(0, 1));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, -1*s.y, -1*s.z),glm::vec3( 1, 0, 0),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3( 1*s.x, 1*s.y, -1*s.z),glm::vec3( 1, 0, 0),glm::vec2(1, 1));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, 1*s.z),glm::vec3(-1, 0, 0),glm::vec2(1, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, 1*s.z),glm::vec3(-1, 0, 0),glm::vec2(1, 1));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, -1*s.y, -1*s.z),glm::vec3(-1, 0, 0),glm::vec2(0, 0));
m_cubeMesh->addVertex(glm::vec3(-1*s.x, 1*s.y, -1*s.z),glm::vec3(-1, 0, 0),glm::vec2(0, 1));
for(int id=0; id<24; id+=8)
{
m_cubeMesh->addTriangle(id+0, id+1, id+2);
m_cubeMesh->addTriangle(id+2, id+1, id+3);
m_cubeMesh->addTriangle(id+6, id+5, id+4);
m_cubeMesh->addTriangle(id+7, id+5, id+6);
}
PBRMaterial *mat = new PBRMaterial(); /*
Image* img = Loader::loadImage("woodframe_albedo.png", 24);
mat->setTexture(PBRMaterial::ALBEDO_SLOT, new Texture(img));
img = Loader::loadImage("woodframe_metallic.png", 8);
mat->setTexture(PBRMaterial::METALLIC_SLOT, new Texture(img));
img = Loader::loadImage("woodframe_roughness.png", 8);
mat->setTexture(PBRMaterial::ROUGHNESS_SLOT, new Texture(img));
img = Loader::loadImage("woodframe_normal.png", 24);
mat->setTexture(PBRMaterial::NORMALS_SLOT, new Texture(img)); */
m_cubeMesh->setMaterial(mat);
m_cubeMesh->computeTangents();
m_cubeMesh->initGL();
btVector3 halfExtents(s.x+PHYSICS_OFFSET, s.y+PHYSICS_OFFSET, s.z+PHYSICS_OFFSET);
m_cubeShape = new btBoxShape(halfExtents);
m_cubeMass = cubeDim.x*cubeDim.y*cubeDim.z*density;
m_shieldMass = 0.5f;
// creating bottle
m_bottleMeshes = Loader::loadMesh("bottle.obj");
@ -93,12 +48,18 @@ Potator::Potator(PlayerCharacterNode * player,
m->initGL();
btCompoundShape* bottleShape = new btCompoundShape();
btTransform bottleTransform = btTransform::getIdentity();
bottleTransform.setOrigin(btVector3(0.f, 0.19f, 0.f));
bottleShape->addChildShape(bottleTransform, new btConeShape(0.12+PHYSICS_OFFSET, 0.38+PHYSICS_OFFSET));
btTransform ballTransform = btTransform::getIdentity();
ballTransform.setOrigin(btVector3(0.f, 0.098f, 0.f));
bottleShape->addChildShape(ballTransform, new btSphereShape(0.11 + PHYSICS_SHAPES_OFFSET));
btTransform supportTransform = btTransform::getIdentity();
supportTransform.setOrigin(btVector3(0.f, 0.025f, 0.f));
bottleShape->addChildShape(supportTransform, new btCylinderShape(btVector3(0.07f + PHYSICS_SHAPES_OFFSET, 0.04f + PHYSICS_SHAPES_OFFSET, 0.07f + PHYSICS_SHAPES_OFFSET)));
btTransform neckTransform = btTransform::getIdentity();
neckTransform.setOrigin(btVector3(0.f, 0.26f, 0.f));
bottleShape->addChildShape(neckTransform, new btCylinderShape(btVector3(0.03f + PHYSICS_SHAPES_OFFSET, 0.08f + PHYSICS_SHAPES_OFFSET, 0.03f + PHYSICS_SHAPES_OFFSET)));
m_bottleShape = bottleShape;
m_bottleMass = 0.25f;
m_bottleMass = 0.03f;
// creating sword :
m_swordMeshes = Loader::loadMesh("sword.obj");
@ -107,18 +68,18 @@ Potator::Potator(PlayerCharacterNode * player,
btCompoundShape* swordShape = new btCompoundShape();
btVector3 guardBox = btVector3(0.03+PHYSICS_OFFSET, 0.04+PHYSICS_OFFSET, 0.25+PHYSICS_OFFSET);
btVector3 guardBox = btVector3(0.03 + PHYSICS_SHAPES_OFFSET, 0.04 + PHYSICS_SHAPES_OFFSET, 0.25 + PHYSICS_SHAPES_OFFSET);
swordShape->addChildShape(btTransform::getIdentity(), new btBoxShape(guardBox));
btTransform bladeTransform = btTransform::getIdentity();
bladeTransform.setOrigin(btVector3(0.f, 0.486705f, 0.f));
swordShape->addChildShape(bladeTransform, new btConeShape(0.07+PHYSICS_OFFSET, 2.15+PHYSICS_OFFSET));
swordShape->addChildShape(bladeTransform, new btConeShape(0.07 + PHYSICS_SHAPES_OFFSET, 2.15 + PHYSICS_SHAPES_OFFSET));
m_swordShape = swordShape;
m_swordMass = 0.5f;
}
void Potator::throwCube()
void Potator::throwShield()
{
glm::vec3 pos(0, 10, 0);
glm::vec3 dir(0, 1, 0);
@ -129,7 +90,10 @@ void Potator::throwCube()
}
float throwForce = 5.f;
createGib(new MeshNode(m_cubeMesh), m_cubeShape, m_cubeMass, pos, dir*throwForce, 30000);
GraphicalContainerNode *node = new GraphicalContainerNode();
for(Mesh * m : m_shieldMeshes)
node->addChild(new MeshNode(m));
createGib(node, m_shieldShape, m_shieldMass, pos, dir*throwForce, 30000);
}
void Potator::throwBottle()
@ -175,15 +139,15 @@ void Potator::update()
Input *input = getEngine().getInput();
for(Action action : input->getActions())
{
if(action.action == m_throwCubeAction)
throwCube();
if(action.action == m_throwShieldAction)
throwShield();
else if(action.action == m_throwBottleAction)
throwBottle();
else if(action.action == m_throwObjectAction)
throwSword();
}
}
/*
ImGui::Begin("Potator");
if(ImGui::Button("Load pack"))
LoadingThread::get()->loadResourcePack("woodbox");
@ -197,4 +161,5 @@ void Potator::update()
m_scene->registerMeshType(m_cubeMesh->getFlags());
}
ImGui::End();
*/
}

View File

@ -10,13 +10,13 @@ class Mesh;
class Potator : public GibGeneratorNode
{
PlayerCharacterNode *m_player;
int m_throwCubeAction;
int m_throwShieldAction;
int m_throwBottleAction;
int m_throwObjectAction;
Mesh* m_cubeMesh;
btCollisionShape* m_cubeShape;
float m_cubeMass;
std::vector<Mesh*> m_shieldMeshes;
btCollisionShape* m_shieldShape;
float m_shieldMass;
std::vector<Mesh*> m_bottleMeshes;
btCollisionShape* m_bottleShape;
@ -26,19 +26,19 @@ class Potator : public GibGeneratorNode
btCollisionShape* m_swordShape;
float m_swordMass;
void throwCube();
void throwShield();
void throwBottle();
void throwSword();
public:
Potator(PlayerCharacterNode * player = nullptr,
int cube_action = NO_ACTION,
int shield_action = NO_ACTION,
int sphere_action = NO_ACTION,
int object_action = NO_ACTION);
void setPlayer(PlayerCharacterNode *player) { m_player = player; }
void setCubeThrowingAction(int action) { m_throwCubeAction = action; }
void setShieldThrowingAction(int action) { m_throwShieldAction = action; }
void setSphereThrowingAction(int action) { m_throwBottleAction = action; }
void setObjectThrowingAction(int action) { m_throwObjectAction = action; }

View File

@ -216,7 +216,7 @@ std::vector<Mesh*> Loader::loadMesh(const std::string &filename){
std::sscanf(line.c_str(),"f %d/%d/%d %d/%d/%d %d/%d/%d",tab,tab+1,tab+2,tab+3,tab+4,tab+5,tab+6,tab+7,tab+8);
//TODO: check sscanf success
int nb_vertices = currentMesh->positions3D.size();
int nb_vertices = currentMesh->m_positions3D.size();
currentMesh->addTriangle(nb_vertices, nb_vertices+1, nb_vertices+2);
for(int i=0; i<3; ++i)
@ -278,7 +278,7 @@ std::vector<Mesh*> Loader::loadMesh(const std::string &filename){
for(std::size_t i=0; i<meshes.size(); ++i)
{
if(meshes[i]->indices.size() == 0)
if(meshes[i]->m_indices.size() == 0)
{
meshes[i] = meshes.back();
meshes.pop_back();
@ -287,7 +287,7 @@ std::vector<Mesh*> Loader::loadMesh(const std::string &filename){
else
{
Mesh* m = meshes[i];
if(m->normals.empty())
if(m->m_normals.empty())
m->computeNormals();
if(m->getFlags() & (1 << Mesh::MATERIAL_PBR_NORMAL_MAP))
m->computeTangents();