using the new ray casting implementation

This commit is contained in:
devZoGok
2023-11-04 17:41:15 +02:00
parent acc5ad325b
commit 4a9e9bd4c9
6 changed files with 15 additions and 32 deletions
+4 -11
View File
@@ -4,7 +4,7 @@
#include <material.h>
#include <quad.h>
#include <text.h>
#include <ray.h>
#include <rayCaster.h>
#include <stateManager.h>
#include <solUtil.h>
@@ -297,13 +297,10 @@ namespace battleship{
Vector3 camPos = cam->getPosition();
Vector3 endPos = screenToSpace(getCursorPos());
vector<Ray::CollisionResult> results;
Vector3 rayDir = (endPos - camPos).norm();
Ray::retrieveCollisions(camPos, rayDir, Map::getSingleton()->getNodeParent(), results);
vector<RayCaster::CollisionResult> results = RayCaster::cast(camPos, rayDir, Map::getSingleton()->getNodeParent());
std::map<Node*, Unit*> unitData;
Ray::sortResults(results);
if(!results.empty()){
vector<Node*> ancestors = results[0].mesh->getNode()->getAncestors();
Node *node = ancestors[ancestors.size() - 2];
@@ -325,9 +322,7 @@ namespace battleship{
Node *nodeParent = map->getNodeParent();
if(u->getType() == UnitType::UNDERWATER && nodeParent->getNumChildren() > 0){
vector<Ray::CollisionResult> res;
Ray::retrieveCollisions(Vector3(pos.x, 100, pos.z), Vector3(0, -1, 0), nodeParent->getChild(0), res);
Ray::sortResults(res);
vector<RayCaster::CollisionResult> res = RayCaster::cast(Vector3(pos.x, 100, pos.z), Vector3(0, -1, 0), nodeParent->getChild(0));
Vector3 waterBodyPos = Vector3::VEC_ZERO;
Vector3 cellSize = map->getCellSize();
@@ -442,9 +437,7 @@ namespace battleship{
depth += 0.05;
Vector3 startPos = Root::getSingleton()->getCamera()->getPosition();
vector<Ray::CollisionResult> results;
Ray::retrieveCollisions(startPos, (screenToSpace(getCursorPos()) - startPos).norm(), Map::getSingleton()->getNodeParent()->getChild(0), results);
Ray::sortResults(results);
vector<RayCaster::CollisionResult> results = RayCaster::cast(startPos, (screenToSpace(getCursorPos()) - startPos).norm(), Map::getSingleton()->getNodeParent()->getChild(0));
if(!results.empty())
ufCtr->setPaintSelectRowStart(results[0].pos);
+3 -4
View File
@@ -10,7 +10,7 @@
#include <mesh.h>
#include <model.h>
#include <root.h>
#include <ray.h>
#include <rayCaster.h>
#include <string>
@@ -97,9 +97,8 @@ namespace battleship{
frame.update();
Vector3 startPos = Root::getSingleton()->getCamera()->getPosition();
vector<Ray::CollisionResult> results;
Ray::retrieveCollisions(startPos, (screenToSpace(getCursorPos()) - startPos).norm(), Map::getSingleton()->getNodeParent()->getChild(0), results);
Ray::sortResults(results);
vector<RayCaster::CollisionResult> results = RayCaster::cast(startPos, (screenToSpace(getCursorPos()) - startPos).norm(), Map::getSingleton()->getNodeParent()->getChild(0));
if(results.empty()) return;
Vector3 newPos, rowEnd;
+5 -11
View File
@@ -10,7 +10,7 @@
#include "mesh.h"
#include "util.h"
#include <ray.h>
#include <rayCaster.h>
#include <box.h>
#include <text.h>
#include <node.h>
@@ -91,10 +91,8 @@ namespace battleship{
Vector3 startPos = cam->getPosition();
Vector3 endPos = screenToSpace(getCursorPos());
vector<Ray::CollisionResult> results;
Map *map = Map::getSingleton();
Ray::retrieveCollisions(startPos, (endPos - startPos).norm(), map->getNodeParent(), results);
Ray::sortResults(results);
vector<RayCaster::CollisionResult> results = RayCaster::cast(startPos, (endPos - startPos).norm(), map->getNodeParent());
if(selectedTerrainNode)
toggleSelection(selectedTerrainNode, false);
@@ -308,13 +306,11 @@ namespace battleship{
for(int i = 0; i < numVertCells; i++)
for(int j = 0; j < numHorCells; j++){
vector<Ray::CollisionResult> res;
Vector3 rayPos = startPos + Vector3(cellSize.x * j, 100, cellSize.z * i);
Ray::retrieveCollisions(rayPos, -Vector3::VEC_J, terrainNode->getChild(0), res);
Ray::sortResults(res);
vector<RayCaster::CollisionResult> res = RayCaster::cast(rayPos, -Vector3::VEC_J, terrainNode->getChild(0));
if(res.empty()){
Ray::CollisionResult r;
RayCaster::CollisionResult r;
r.pos = Vector3(rayPos.x, 0, rayPos.z);
res.push_back(r);
}
@@ -648,9 +644,7 @@ namespace battleship{
Vector2 cursorPos = getCursorPos();
Vector3 endPos = screenToSpace(cursorPos);
vector<Ray::CollisionResult> results;
Ray::retrieveCollisions(startPos, (endPos - startPos).norm(), Root::getSingleton()->getRootNode(), results);
Ray::sortResults(results);
vector<RayCaster::CollisionResult> results = RayCaster::cast(startPos, (endPos - startPos).norm(), Root::getSingleton()->getRootNode());
if(cursorPos.y < GameManager::getSingleton()->getHeight() - mapEditor->getGuiThreshold()){
bool push = !results.empty();
+1 -1
View File
@@ -4,7 +4,7 @@
#include <model.h>
#include <material.h>
#include <quaternion.h>
#include <ray.h>
#include <rayCaster.h>
#include <stateManager.h>
-1
View File
@@ -3,7 +3,6 @@
#include <material.h>
#include <particleEmitter.h>
#include <texture.h>
#include <ray.h>
#include <stateManager.h>
#include <solUtil.h>
+2 -4
View File
@@ -3,7 +3,7 @@
#include <solUtil.h>
#include <util.h>
#include <ray.h>
#include <rayCaster.h>
#include <box.h>
#include <model.h>
#include <quaternion.h>
@@ -149,9 +149,7 @@ namespace battleship{
/*
Map *map = Map::getSingleton();
TerrainObject terr = map->getTerrainObject(0);
vector<Ray::CollisionResult> res;
Ray::retrieveCollisions(Vector3(pos.x, terr.size.y, pos.z), Vector3(0, -1, 0), terr.node, res);
Ray::sortResults(res);
vector<RayCaster::CollisionResult> res = RayCaster::cast(Vector3(pos.x, terr.size.y, pos.z), Vector3(0, -1, 0), terr.node);
if(!res.empty()){
placeAt(res[0].pos);