mirror of https://github.com/AxioDL/metaforce.git
More entity inspection
This commit is contained in:
parent
b4c2cf2ea4
commit
02fa17025a
|
@ -152,6 +152,9 @@
|
||||||
#include "Runtime/MP1/World/CThardusRockProjectile.hpp"
|
#include "Runtime/MP1/World/CThardusRockProjectile.hpp"
|
||||||
#include "Runtime/MP1/World/CTryclops.hpp"
|
#include "Runtime/MP1/World/CTryclops.hpp"
|
||||||
#include "Runtime/MP1/World/CWarWasp.hpp"
|
#include "Runtime/MP1/World/CWarWasp.hpp"
|
||||||
|
|
||||||
|
#include "Runtime/World/CWorld.hpp"
|
||||||
|
#include "Runtime/World/CGameArea.hpp"
|
||||||
#include "Runtime/GameGlobalObjects.hpp"
|
#include "Runtime/GameGlobalObjects.hpp"
|
||||||
|
|
||||||
#include "ImGuiConsole.hpp"
|
#include "ImGuiConsole.hpp"
|
||||||
|
@ -209,6 +212,14 @@ static constexpr bool ImGuiEnumInput(const char* label, E& val) {
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ImGuiAnimRes(const char* label, metaforce::CAnimRes& res) {
|
||||||
|
if (res.GetId().IsValid()) {
|
||||||
|
ImGui::Text("Model: 0x%08lX", res.GetId().Value());
|
||||||
|
} else {
|
||||||
|
ImGui::Text("Model: [none]");
|
||||||
|
}
|
||||||
|
// TODO: More
|
||||||
|
}
|
||||||
namespace metaforce {
|
namespace metaforce {
|
||||||
void CDamageVulnerability::ImGuiEditWindow(const char* title, bool& open) {
|
void CDamageVulnerability::ImGuiEditWindow(const char* title, bool& open) {
|
||||||
if (!open) {
|
if (!open) {
|
||||||
|
@ -243,7 +254,8 @@ void CDamageVulnerability::ImGuiEditWindow(const char* title, bool& open) {
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
}
|
}
|
||||||
void ImGuiUniqueId(const char* label, TUniqueId uid) {
|
void ImGuiUniqueId(const char* label, TUniqueId uid) {
|
||||||
if (uid != kInvalidUniqueId) {
|
ImGui::PushID(uid.Value());
|
||||||
|
if (uid != kInvalidUniqueId && ImGuiConsole::entities[uid.Value()].ent != nullptr) {
|
||||||
ImGui::Text("%s: 0x%04X", label, uid.Value());
|
ImGui::Text("%s: 0x%04X", label, uid.Value());
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::SmallButton("View")) {
|
if (ImGui::SmallButton("View")) {
|
||||||
|
@ -252,6 +264,7 @@ void ImGuiUniqueId(const char* label, TUniqueId uid) {
|
||||||
} else {
|
} else {
|
||||||
ImGui::Text("%s: [none]", label);
|
ImGui::Text("%s: [none]", label);
|
||||||
}
|
}
|
||||||
|
ImGui::PopID();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string_view CEntity::ImGuiType() { return "Entity"; }
|
std::string_view CEntity::ImGuiType() { return "Entity"; }
|
||||||
|
@ -745,8 +758,41 @@ IMGUI_ENTITY_INSPECT(CScriptActor, CPhysicsActor, ScriptActor, {
|
||||||
modelFlagsChanged || x2e2_27_xrayAlphaEnabled || x2e2_24_noThermalHotZ || x2d8_shaderIdx != 0;
|
modelFlagsChanged || x2e2_27_xrayAlphaEnabled || x2e2_24_noThermalHotZ || x2d8_shaderIdx != 0;
|
||||||
})
|
})
|
||||||
IMGUI_ENTITY_INSPECT(CScriptDebris, CPhysicsActor, ScriptDebris, {})
|
IMGUI_ENTITY_INSPECT(CScriptDebris, CPhysicsActor, ScriptDebris, {})
|
||||||
IMGUI_ENTITY_INSPECT(CScriptDock, CPhysicsActor, ScriptDock, {})
|
IMGUI_ENTITY_INSPECT(CScriptDock, CPhysicsActor, ScriptDock, {
|
||||||
IMGUI_ENTITY_INSPECT(CScriptDoor, CPhysicsActor, ScriptDoor, {})
|
if (x260_area != kInvalidAreaId) {
|
||||||
|
const auto* dock = g_StateManager->GetWorld()->GetArea(x260_area)->GetDock(x25c_dock);
|
||||||
|
if (dock != nullptr) {
|
||||||
|
auto areaId = dock->GetConnectedAreaId(dock->GetReferenceCount());
|
||||||
|
if (areaId != kInvalidAreaId) {
|
||||||
|
CAssetId stringId = g_StateManager->GetWorld()->GetArea(areaId)->IGetStringTableAssetId();
|
||||||
|
ImGuiStringViewText(fmt::format(FMT_STRING("Connected Area: {}"), ImGuiLoadStringTable(stringId, 0)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGuiEnumInput("Dock State", x264_dockState);
|
||||||
|
BITFIELD_CHECKBOX("Dock Referenced", x268_24_dockReferenced);
|
||||||
|
BITFIELD_CHECKBOX("Load Connected", x268_25_loadConnected);
|
||||||
|
BITFIELD_CHECKBOX("Area Post Constructed", x268_26_areaPostConstructed);
|
||||||
|
});
|
||||||
|
IMGUI_ENTITY_INSPECT(CScriptDoor, CPhysicsActor, ScriptDoor, {
|
||||||
|
ImGui::DragFloat("Animation Length", &x258_animLen, 0.1f);
|
||||||
|
ImGui::DragFloat("Animation Time", &x25c_animTime, 0.1f);
|
||||||
|
ImGuiEnumInput("Door State", x260_doorAnimState);
|
||||||
|
// TODO: AABox
|
||||||
|
ImGuiUniqueId("Partner1", x27c_partner1);
|
||||||
|
ImGuiUniqueId("Partner2", x27e_partner2);
|
||||||
|
ImGuiUniqueId("Previous Door", x280_prevDoor);
|
||||||
|
ImGuiUniqueId("Dock", x282_dockId);
|
||||||
|
// TODO: model aabox
|
||||||
|
ImGuiVector3fInput("Orbit Position", x29c_orbitPos);
|
||||||
|
BITFIELD_CHECKBOX("Closing", x2a8_24_closing);
|
||||||
|
BITFIELD_CHECKBOX("Was Open", x2a8_25_wasOpen);
|
||||||
|
BITFIELD_CHECKBOX("Is Open", x2a8_26_isOpen);
|
||||||
|
BITFIELD_CHECKBOX("Open Conditions Met", x2a8_27_conditionsMet);
|
||||||
|
BITFIELD_CHECKBOX("Projectiles Can Collide", x2a8_28_projectilesCollide);
|
||||||
|
BITFIELD_CHECKBOX("Is Ball Door", x2a8_29_ballDoor);
|
||||||
|
BITFIELD_CHECKBOX("Will Close", x2a8_30_doClose);
|
||||||
|
})
|
||||||
IMGUI_ENTITY_INSPECT(CScriptGunTurret, CPhysicsActor, ScriptGunTurret, {})
|
IMGUI_ENTITY_INSPECT(CScriptGunTurret, CPhysicsActor, ScriptGunTurret, {})
|
||||||
IMGUI_ENTITY_INSPECT(CScriptPickup, CPhysicsActor, ScriptPickup, {
|
IMGUI_ENTITY_INSPECT(CScriptPickup, CPhysicsActor, ScriptPickup, {
|
||||||
ImGuiEnumInput("Item Type", x258_itemType);
|
ImGuiEnumInput("Item Type", x258_itemType);
|
||||||
|
@ -766,7 +812,11 @@ IMGUI_ENTITY_INSPECT(CScriptPlatform, CPhysicsActor, ScriptPlatform, {
|
||||||
|
|
||||||
// <- CScriptActor
|
// <- CScriptActor
|
||||||
IMGUI_ENTITY_INSPECT(MP1::CActorContraption, CScriptActor, ActorContraption, {})
|
IMGUI_ENTITY_INSPECT(MP1::CActorContraption, CScriptActor, ActorContraption, {})
|
||||||
IMGUI_ENTITY_INSPECT(CScriptPlayerActor, CScriptActor, PlayerActor, {})
|
IMGUI_ENTITY_INSPECT(CScriptPlayerActor, CScriptActor, PlayerActor, {
|
||||||
|
ImGuiAnimRes("Suit Resource", x2e8_suitRes);
|
||||||
|
ImGuiEnumInput("Beam", x304_beam);
|
||||||
|
ImGuiEnumInput("Suit", x308_suit);
|
||||||
|
})
|
||||||
|
|
||||||
// <- CScriptPlatform
|
// <- CScriptPlatform
|
||||||
IMGUI_ENTITY_INSPECT(MP1::CRipperControlledPlatform, CScriptPlatform, RipperControlledPlatform, {})
|
IMGUI_ENTITY_INSPECT(MP1::CRipperControlledPlatform, CScriptPlatform, RipperControlledPlatform, {})
|
||||||
|
|
Loading…
Reference in New Issue