diff --git a/LEGO1/lego/legoomni/src/entity/legoentity.cpp b/LEGO1/lego/legoomni/src/entity/legoentity.cpp index d02c1c71..544b3384 100644 --- a/LEGO1/lego/legoomni/src/entity/legoentity.cpp +++ b/LEGO1/lego/legoomni/src/entity/legoentity.cpp @@ -194,16 +194,18 @@ void LegoEntity::SetLocation( } // FUNCTION: LEGO1 0x10010c30 +// FUNCTION: BETA10 0x1007ea5a void LegoEntity::TransformPointOfView() { LegoWorld* world = CurrentWorld(); - if (m_cameraFlag && world && world->GetCameraController() && m_roi) { + if (GetCameraFlag() && world && world->GetCameraController() && m_roi) { world->GetCameraController()->TransformPointOfView(m_roi->GetLocal2World(), 1); } } // FUNCTION: LEGO1 0x10010c60 +// FUNCTION: BETA10 0x1007ead0 Mx3DPointFloat LegoEntity::GetWorldDirection() { if (m_roi != NULL) { @@ -215,6 +217,7 @@ Mx3DPointFloat LegoEntity::GetWorldDirection() } // FUNCTION: LEGO1 0x10010cf0 +// FUNCTION: BETA10 0x1007eb47 Mx3DPointFloat LegoEntity::GetWorldUp() { if (m_roi != NULL) { diff --git a/LEGO1/lego/sources/geom/legoedge.cpp b/LEGO1/lego/sources/geom/legoedge.cpp index d1a810d6..2bcea209 100644 --- a/LEGO1/lego/sources/geom/legoedge.cpp +++ b/LEGO1/lego/sources/geom/legoedge.cpp @@ -6,6 +6,7 @@ DECOMP_SIZE_ASSERT(LegoEdge, 0x24) // FUNCTION: LEGO1 0x1009a470 +// FUNCTION: BETA10 0x10182250 LegoEdge::LegoEdge() { m_faceA = NULL; @@ -19,36 +20,65 @@ LegoEdge::LegoEdge() } // FUNCTION: LEGO1 0x1009a4c0 +// FUNCTION: BETA10 0x101822c2 LegoEdge::~LegoEdge() { } +// FUNCTION: BETA10 0x101822e1 +LegoResult LegoEdge::SetCounterclockwiseEdge(LegoWEEdge& p_face, LegoEdge* p_edge) +{ + // unreferenced in BETA10, not in LEGO1 + if (&p_face == m_faceA) { + m_ccwA = p_edge; + return SUCCESS; + } + if (&p_face == m_faceB) { + m_ccwB = p_edge; + return SUCCESS; + } + return FAILURE; +} + +// FUNCTION: BETA10 0x1018233c +LegoResult LegoEdge::SetClockwiseEdge(LegoWEEdge& p_face, LegoEdge* p_edge) +{ + // unreferenced in BETA10, not in LEGO1 + if (&p_face == m_faceA) { + m_cwA = p_edge; + return SUCCESS; + } + if (&p_face == m_faceB) { + m_cwB = p_edge; + return SUCCESS; + } + return FAILURE; +} + // FUNCTION: LEGO1 0x1009a4d0 +// FUNCTION: BETA10 0x10182397 LegoEdge* LegoEdge::GetClockwiseEdge(LegoWEEdge& p_face) { if (&p_face == m_faceA) { return m_cwA; } - else if (&p_face == m_faceB) { + if (&p_face == m_faceB) { return m_cwB; } - else { - return NULL; - } + return NULL; } // FUNCTION: LEGO1 0x1009a4f0 +// FUNCTION: BETA10 0x101823e5 LegoEdge* LegoEdge::GetCounterclockwiseEdge(LegoWEEdge& p_face) { if (&p_face == m_faceA) { return m_ccwA; } - else if (&p_face == m_faceB) { + if (&p_face == m_faceB) { return m_ccwB; } - else { - return NULL; - } + return NULL; } // FUNCTION: LEGO1 0x1009a510 @@ -58,10 +88,8 @@ Vector3* LegoEdge::CWVertex(LegoWEEdge& p_face) if (m_faceA == &p_face) { return m_pointB; } - else { - assert(m_faceB == &p_face); - return m_pointA; - } + assert(m_faceB == &p_face); + return m_pointA; } // FUNCTION: LEGO1 0x1009a530 @@ -71,8 +99,6 @@ Vector3* LegoEdge::CCWVertex(LegoWEEdge& p_face) if (m_faceB == &p_face) { return m_pointB; } - else { - assert(m_faceA == &p_face); - return m_pointA; - } + assert(m_faceA == &p_face); + return m_pointA; } diff --git a/LEGO1/lego/sources/geom/legoedge.h b/LEGO1/lego/sources/geom/legoedge.h index 9a14eef4..31cdfddf 100644 --- a/LEGO1/lego/sources/geom/legoedge.h +++ b/LEGO1/lego/sources/geom/legoedge.h @@ -7,11 +7,14 @@ class LegoWEEdge; class Vector3; // VTABLE: LEGO1 0x100db7b8 +// VTABLE: BETA10 0x101c3728 // SIZE 0x24 struct LegoEdge { LegoEdge(); virtual ~LegoEdge(); // vtable+0x00 + LegoResult SetCounterclockwiseEdge(LegoWEEdge& p_face, LegoEdge* p_edge); + LegoResult SetClockwiseEdge(LegoWEEdge& p_face, LegoEdge* p_edge); LegoEdge* GetClockwiseEdge(LegoWEEdge& p_face); LegoEdge* GetCounterclockwiseEdge(LegoWEEdge& p_face); Vector3* CWVertex(LegoWEEdge& p_face); @@ -32,6 +35,7 @@ struct LegoEdge { Vector3* GetPointB() { return m_pointB; } // SYNTHETIC: LEGO1 0x1009a4a0 + // SYNTHETIC: BETA10 0x10182b30 // LegoEdge::`scalar deleting destructor' LegoWEEdge* m_faceA; // 0x04 diff --git a/LEGO1/lego/sources/geom/legoorientededge.h b/LEGO1/lego/sources/geom/legoorientededge.h index bb613563..05cd8009 100644 --- a/LEGO1/lego/sources/geom/legoorientededge.h +++ b/LEGO1/lego/sources/geom/legoorientededge.h @@ -8,6 +8,7 @@ #include // VTABLE: LEGO1 0x100db7f4 +// VTABLE: BETA10 0x101c3794 // SIZE 0x40 struct LegoOrientedEdge : public LegoEdge { public: @@ -99,8 +100,12 @@ struct LegoOrientedEdge : public LegoEdge { inline LegoU32 FUN_10048c40(const Vector3& p_position); // SYNTHETIC: LEGO1 0x1009a6c0 + // SYNTHETIC: BETA10 0x101840f0 // LegoOrientedEdge::`scalar deleting destructor' + // SYNTHETIC: BETA10 0x100bd390 + // LegoOrientedEdge::~LegoOrientedEdge + LegoU16 m_flags; // 0x24 Mx3DPointFloat m_dir; // 0x28 float m_length; // 0x3c diff --git a/LEGO1/realtime/orientableroi.cpp b/LEGO1/realtime/orientableroi.cpp index 3c45e90f..db46a206 100644 --- a/LEGO1/realtime/orientableroi.cpp +++ b/LEGO1/realtime/orientableroi.cpp @@ -29,6 +29,7 @@ void OrientableROI::WrappedSetLocal2WorldWithWorldDataUpdate(const Matrix4& p_lo } // FUNCTION: LEGO1 0x100a46b0 +// FUNCTION: BETA10 0x1016528f void OrientableROI::UpdateTransformationRelativeToParent(const Matrix4& p_transform) { MxMatrix mat;