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