Implement/match LegoPathController::Tickle (#913)

This commit is contained in:
Christian Semmler 2024-05-12 15:10:26 -04:00 committed by GitHub
parent 32a3373360
commit b6fc8e27b1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 2 deletions

View file

@ -15,6 +15,10 @@ struct LegoUnknown100db7f4;
// SIZE 0x154 // SIZE 0x154
class LegoPathActor : public LegoActor { class LegoPathActor : public LegoActor {
public: public:
enum {
c_bit3 = 0x04
};
LegoPathActor(); LegoPathActor();
~LegoPathActor() override; ~LegoPathActor() override;

View file

@ -99,6 +99,7 @@ class LegoPathController : public MxCore {
static MxResult Init(); static MxResult Init();
private: private:
void FUN_10046970();
MxResult Read(LegoStorage* p_storage); MxResult Read(LegoStorage* p_storage);
MxResult ReadStructs(LegoStorage* p_storage); MxResult ReadStructs(LegoStorage* p_storage);
MxResult ReadEdges(LegoStorage* p_storage); MxResult ReadEdges(LegoStorage* p_storage);
@ -119,6 +120,9 @@ class LegoPathController : public MxCore {
}; };
// clang-format off // clang-format off
// TEMPLATE: LEGO1 0x1002c4a0
// _Tree<LegoPathActor *,LegoPathActor *,set<LegoPathActor *,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Kfn,LegoPathActorSetCompare,allocator<LegoPathActor *> >::_Buynode
// TEMPLATE: LEGO1 0x100451a0 // TEMPLATE: LEGO1 0x100451a0
// _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::~_Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathControl // _Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::_Kfn,LegoPathCtrlEdgeCompare,allocator<LegoPathCtrlEdge *> >::~_Tree<LegoPathCtrlEdge *,LegoPathCtrlEdge *,set<LegoPathCtrlEdge *,LegoPathControl

View file

@ -187,10 +187,11 @@ void LegoPathController::Destroy()
} }
} }
// STUB: LEGO1 0x10045c10 // FUNCTION: LEGO1 0x10045c10
// FUNCTION: BETA10 0x100b6d60
MxResult LegoPathController::Tickle() MxResult LegoPathController::Tickle()
{ {
// TODO FUN_10046970();
return SUCCESS; return SUCCESS;
} }
@ -244,6 +245,25 @@ void LegoPathController::FUN_10046930(LegoAnimPresenter* p_presenter)
{ {
} }
// FUNCTION: LEGO1 0x10046970
// FUNCTION: BETA10 0x100b73d8
void LegoPathController::FUN_10046970()
{
float time = Timer()->GetTime();
LegoPathActorSet lpas(m_actors);
for (LegoPathActorSet::iterator itpa = lpas.begin(); itpa != lpas.end(); itpa++) {
LegoPathActor* actor = *itpa;
if (m_actors.find(actor) != m_actors.end()) {
if (!((MxU8) actor->GetState() & LegoPathActor::c_bit3)) {
actor->VTable0x70(time);
}
}
}
}
// STUB: LEGO1 0x10046b30 // STUB: LEGO1 0x10046b30
MxResult LegoPathController::FUN_10046b30(LegoPathBoundary** p_path, MxS32& p_value) MxResult LegoPathController::FUN_10046b30(LegoPathBoundary** p_path, MxS32& p_value)
{ {