mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-04 09:56:30 +00:00
FULLPIPE: Implement MovGraph::calcNodeDistancesAndAngles()
This commit is contained in:
parent
1dd90e4ea9
commit
18d2bbc228
@ -357,6 +357,18 @@ double MovGraph::calcDistance(Common::Point *point, MovGraphLink *link, int fuzz
|
||||
return res;
|
||||
}
|
||||
|
||||
void MovGraph::calcNodeDistancesAndAngles() {
|
||||
for (ObList::iterator i = _links.begin(); i != _links.end(); ++i) {
|
||||
assert(((CObject *)*i)->_objtype == kObjTypeMovGraphLink);
|
||||
|
||||
MovGraphLink *lnk = (MovGraphLink *)*i;
|
||||
|
||||
lnk->_flags &= 0x7FFFFFFF;
|
||||
|
||||
lnk->calcNodeDistanceAndAngle();
|
||||
}
|
||||
}
|
||||
|
||||
int MovGraph2::getItemIndexByGameObjectId(int objectId) {
|
||||
for (uint i = 0; i < _items.size(); i++)
|
||||
if (_items[i]->_objectId == objectId)
|
||||
@ -1248,6 +1260,16 @@ bool MovGraphLink::load(MfcArchive &file) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void MovGraphLink::calcNodeDistanceAndAngle() {
|
||||
if (_movGraphNode1) {
|
||||
double dx = _movGraphNode2->_x - _movGraphNode1->_x;
|
||||
double dy = _movGraphNode2->_y - _movGraphNode1->_y;
|
||||
|
||||
_distance = sqrt(dy * dy + dx * dx);
|
||||
_angle = atan2(dx, dy);
|
||||
}
|
||||
}
|
||||
|
||||
bool MovGraphNode::load(MfcArchive &file) {
|
||||
debug(5, "MovGraphNode::load()");
|
||||
|
||||
|
@ -206,6 +206,8 @@ class MovGraphLink : public CObject {
|
||||
public:
|
||||
MovGraphLink();
|
||||
virtual bool load(MfcArchive &file);
|
||||
|
||||
void calcNodeDistanceAndAngle();
|
||||
};
|
||||
|
||||
struct MovGraphItem {
|
||||
@ -255,6 +257,7 @@ class MovGraph : public MotionController {
|
||||
virtual int method50();
|
||||
|
||||
double calcDistance(Common::Point *point, MovGraphLink *link, int fuzzyMatch);
|
||||
void calcNodeDistancesAndAngles();
|
||||
MovGraphNode *calcOffset(int ox, int oy);
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user