picking give the ID of the node owning the mesh
This commit is contained in:
parent
bcc0cade80
commit
445f39825e
@ -14,6 +14,7 @@ KeyMapper::KeyMapper() :
|
|||||||
m_keymap_file("keymap.json"),
|
m_keymap_file("keymap.json"),
|
||||||
m_waiting_for_input(-1)
|
m_waiting_for_input(-1)
|
||||||
{
|
{
|
||||||
|
setID("keymapper");
|
||||||
// mapping between action numerical value and text value
|
// mapping between action numerical value and text value
|
||||||
m_actions_list[DefaultKeysMap::MAIN_ACTION] = "Main Action";
|
m_actions_list[DefaultKeysMap::MAIN_ACTION] = "Main Action";
|
||||||
m_actions_list[DefaultKeysMap::SECONDARY_ACTION] = "Secondary Action";
|
m_actions_list[DefaultKeysMap::SECONDARY_ACTION] = "Secondary Action";
|
||||||
@ -98,7 +99,6 @@ KeyMapper::KeyMapper() :
|
|||||||
m_keyboard_keys[sf::Keyboard::Space] = "Space";
|
m_keyboard_keys[sf::Keyboard::Space] = "Space";
|
||||||
m_keyboard_keys[sf::Keyboard::LShift]= "Left Shift";
|
m_keyboard_keys[sf::Keyboard::LShift]= "Left Shift";
|
||||||
m_keyboard_keys[sf::Keyboard::LControl] = "Left Control";
|
m_keyboard_keys[sf::Keyboard::LControl] = "Left Control";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeyMapper::update()
|
void KeyMapper::update()
|
||||||
|
@ -21,8 +21,9 @@ void SceneNode::setParent(SceneNode* parent)
|
|||||||
m_parent = parent;
|
m_parent = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneNode::SceneNode(Script* script) :
|
SceneNode::SceneNode(std::string node_id,Script* script) :
|
||||||
m_toDestroy(false),
|
m_toDestroy(false),
|
||||||
|
m_id(node_id),
|
||||||
m_parentVisible(true),
|
m_parentVisible(true),
|
||||||
m_visible(true),
|
m_visible(true),
|
||||||
m_enabled(true),
|
m_enabled(true),
|
||||||
@ -40,6 +41,10 @@ SceneNode::SceneNode(Script* script) :
|
|||||||
m_script->begin(this);
|
m_script->begin(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string SceneNode::getID(){
|
||||||
|
return m_id;
|
||||||
|
}
|
||||||
|
|
||||||
SceneNode::~SceneNode()
|
SceneNode::~SceneNode()
|
||||||
{
|
{
|
||||||
if(m_script != nullptr)
|
if(m_script != nullptr)
|
||||||
@ -277,7 +282,7 @@ void SceneNode::setRigidBody(btRigidBody* body)
|
|||||||
|
|
||||||
SceneNode* SceneNode::clone()
|
SceneNode* SceneNode::clone()
|
||||||
{
|
{
|
||||||
SceneNode* node = new SceneNode(m_script);
|
SceneNode* node = new SceneNode(m_id,m_script);
|
||||||
node->setMesh(getMesh());
|
node->setMesh(getMesh());
|
||||||
node->setTransform(getTransform());
|
node->setTransform(getTransform());
|
||||||
node->setLight(getLight());
|
node->setLight(getLight());
|
||||||
|
@ -44,6 +44,8 @@ private:
|
|||||||
std::vector<SceneNode*> m_nodesToRemove;
|
std::vector<SceneNode*> m_nodesToRemove;
|
||||||
std::vector<SceneNode*> m_nodesToAdd;
|
std::vector<SceneNode*> m_nodesToAdd;
|
||||||
|
|
||||||
|
std::string m_id;
|
||||||
|
|
||||||
bool m_parentVisible;
|
bool m_parentVisible;
|
||||||
bool m_visible;
|
bool m_visible;
|
||||||
bool m_enabled;
|
bool m_enabled;
|
||||||
@ -83,7 +85,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// constructor/destructor
|
// constructor/destructor
|
||||||
SceneNode(Script *script = nullptr);
|
SceneNode(std::string node_id = "undefined id",Script *script = nullptr);
|
||||||
virtual ~SceneNode();
|
virtual ~SceneNode();
|
||||||
|
|
||||||
// game logic methods
|
// game logic methods
|
||||||
@ -94,6 +96,8 @@ public:
|
|||||||
void setEnabled(bool isEnabled) { m_enabled = isEnabled; }
|
void setEnabled(bool isEnabled) { m_enabled = isEnabled; }
|
||||||
|
|
||||||
Script* getScript();
|
Script* getScript();
|
||||||
|
std::string getID();
|
||||||
|
void setID(std::string id){m_id = id;}
|
||||||
|
|
||||||
// methods called to access the graphic propeties of the node
|
// methods called to access the graphic propeties of the node
|
||||||
void setMesh(Mesh* mesh) { m_geometry.mesh = mesh; }
|
void setMesh(Mesh* mesh) { m_geometry.mesh = mesh; }
|
||||||
|
@ -84,7 +84,7 @@ public:
|
|||||||
|
|
||||||
void generateTerrain(SceneTree *scene)
|
void generateTerrain(SceneTree *scene)
|
||||||
{
|
{
|
||||||
SceneNode* terrainContainer = new SceneNode();
|
SceneNode* terrainContainer = new SceneNode("terrain container");
|
||||||
TestGen gen;
|
TestGen gen;
|
||||||
PBRMaterial *mat = new PBRMaterial();
|
PBRMaterial *mat = new PBRMaterial();
|
||||||
mat->albedo = glm::vec3(0.1f, 0.4f, 0.2f);
|
mat->albedo = glm::vec3(0.1f, 0.4f, 0.2f);
|
||||||
@ -104,7 +104,7 @@ void generateTerrain(SceneTree *scene)
|
|||||||
{
|
{
|
||||||
chunk->mesh->setMaterial(mat);
|
chunk->mesh->setMaterial(mat);
|
||||||
chunk->mesh->initGL();
|
chunk->mesh->initGL();
|
||||||
SceneNode *node = new SceneNode();
|
SceneNode *node = new SceneNode("terrain element");
|
||||||
node->setMesh(chunk->mesh);
|
node->setMesh(chunk->mesh);
|
||||||
node->getGeometryNode()->modelMatrix = glm::translate(glm::scale(glm::mat4(), glm::vec3(2.f)), pos*8.f);
|
node->getGeometryNode()->modelMatrix = glm::translate(glm::scale(glm::mat4(), glm::vec3(2.f)), pos*8.f);
|
||||||
node->setTransform(node->getGeometryNode()->modelMatrix);
|
node->setTransform(node->getGeometryNode()->modelMatrix);
|
||||||
@ -286,6 +286,7 @@ public:
|
|||||||
// load sandbox
|
// load sandbox
|
||||||
|
|
||||||
SceneNode* sandbox = Loader::loadMesh("sandbox.obj");
|
SceneNode* sandbox = Loader::loadMesh("sandbox.obj");
|
||||||
|
sandbox->setID("sandbox");
|
||||||
btRigidBody* sandboxBody = utils::buildStaticCollider(sandbox->getGeometryNode());
|
btRigidBody* sandboxBody = utils::buildStaticCollider(sandbox->getGeometryNode());
|
||||||
sandbox->setRigidBody(sandboxBody);
|
sandbox->setRigidBody(sandboxBody);
|
||||||
scene->getPhysics()->addRigidBody(sandboxBody);
|
scene->getPhysics()->addRigidBody(sandboxBody);
|
||||||
|
@ -251,6 +251,21 @@ MeshResource::MeshResource():
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MeshResource::~MeshResource(){
|
MeshResource::~MeshResource()
|
||||||
|
{
|
||||||
destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MeshResource::destroy()
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshResource::loadResource(float &progress)
|
||||||
|
{
|
||||||
|
//TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void MeshResource::gui(){
|
||||||
|
ImGui::Text("TODO");
|
||||||
|
}
|
||||||
|
@ -132,7 +132,7 @@ public:
|
|||||||
|
|
||||||
class MeshResource : public ResourceInterface
|
class MeshResource : public ResourceInterface
|
||||||
{
|
{
|
||||||
//add metadata for mesh
|
//add metadata for mesh here
|
||||||
|
|
||||||
Mesh* m_mesh;
|
Mesh* m_mesh;
|
||||||
public:
|
public:
|
||||||
|
@ -57,10 +57,11 @@ void ScenePicker::update()
|
|||||||
{
|
{
|
||||||
ImGui::Text("Intersection : ( %.3f, %.3f, %.3f )", m_pickedPos.x, m_pickedPos.y, m_pickedPos.z);
|
ImGui::Text("Intersection : ( %.3f, %.3f, %.3f )", m_pickedPos.x, m_pickedPos.y, m_pickedPos.z);
|
||||||
if(!isVisible()) setVisible(m_pickSucceeded);
|
if(!isVisible()) setVisible(m_pickSucceeded);
|
||||||
|
ImGui::Text("Node : %s",m_pickedNode->getID().data());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ImGui::Text("No intesection");
|
ImGui::Text("No intersection");
|
||||||
if(isVisible()) setVisible(m_pickSucceeded);
|
if(isVisible()) setVisible(m_pickSucceeded);
|
||||||
}
|
}
|
||||||
// if(ImGui::Button("Teleport"))
|
// if(ImGui::Button("Teleport"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user