From c44682b702f32ea7a4243f8d7470f5888d62ec52 Mon Sep 17 00:00:00 2001 From: MegaMech Date: Fri, 7 Mar 2025 23:27:37 -0700 Subject: [PATCH] Impl editor object names --- src/engine/Actor.h | 1 + src/engine/World.cpp | 9 +++++++-- src/engine/actors/ABanana.cpp | 1 + src/engine/actors/ABanana.h | 1 - src/engine/actors/ACloud.cpp | 1 + src/engine/actors/AFinishline.cpp | 1 + src/engine/actors/ATree.cpp | 1 + src/engine/actors/AWarioSign.cpp | 1 + src/engine/actors/BowserStatue.cpp | 1 + src/engine/actors/Ship.cpp | 1 + src/engine/actors/SpaghettiShip.cpp | 1 + src/engine/actors/Starship.cpp | 1 + src/engine/editor/Gizmo.cpp | 9 ++++----- src/engine/objects/Bat.cpp | 2 +- src/engine/objects/BombKart.cpp | 1 + src/engine/objects/Boos.cpp | 1 + src/engine/objects/ChainChomp.cpp | 1 + src/engine/objects/CheepCheep.cpp | 1 + src/engine/objects/Crab.cpp | 1 + src/engine/objects/Flagpole.cpp | 1 + src/engine/objects/Hedgehog.cpp | 1 + src/engine/objects/HotAirBalloon.cpp | 1 + src/engine/objects/Lakitu.cpp | 1 + src/engine/objects/Mole.cpp | 1 + src/engine/objects/Object.h | 1 + src/engine/objects/Penguin.cpp | 1 + src/engine/objects/Podium.cpp | 2 +- src/engine/objects/Seagull.cpp | 1 + src/engine/objects/Snowman.cpp | 1 + src/engine/objects/Thwomp.cpp | 1 + src/engine/objects/TrashBin.cpp | 1 + src/engine/objects/Trophy.cpp | 1 + src/engine/vehicles/Boat.cpp | 1 + src/engine/vehicles/Bus.cpp | 1 + src/engine/vehicles/Car.cpp | 1 + src/engine/vehicles/TankerTruck.cpp | 1 + src/engine/vehicles/Train.cpp | 1 + src/engine/vehicles/Truck.cpp | 1 + src/port/Game.cpp | 2 +- src/port/ui/ContentBrowser.cpp | 2 +- src/port/ui/SceneExplorer.cpp | 14 ++++++++++---- src/port/ui/Tools.cpp | 23 ++++++++++++++++++----- src/racing/actors.c | 9 --------- 43 files changed, 76 insertions(+), 30 deletions(-) diff --git a/src/engine/Actor.h b/src/engine/Actor.h index c7185874e..7e91a7e63 100644 --- a/src/engine/Actor.h +++ b/src/engine/Actor.h @@ -24,6 +24,7 @@ public: /* 0x24 */ Vec3f Velocity = {0, 0, 0}; /* 0x30 */ Collision Unk30; uint8_t uuid[16]; + const char* Name = ""; Gfx* Model = NULL; diff --git a/src/engine/World.cpp b/src/engine/World.cpp index e684b6b92..133aa75cd 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -116,6 +116,11 @@ void World::PreviousCourse() { AActor* World::AddActor(AActor* actor) { Actors.push_back(actor); + if (actor->Model != NULL) { + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (Gfx*)LOAD_ASSET_RAW(actor->Model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); + } else { + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); + } return Actors.back(); } @@ -175,9 +180,9 @@ OObject* World::AddObject(OObject* object) { Object* cObj = &gObjectList[object->_objectIndex]; if (cObj->model != NULL) { - gEditor.AddObject("", (FVector*) &cObj->origin_pos[0], (Gfx*)LOAD_ASSET_RAW(cObj->model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (Gfx*)LOAD_ASSET_RAW(cObj->model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); } else { - gEditor.AddObject("", (FVector*) &cObj->origin_pos[0], NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); } } diff --git a/src/engine/actors/ABanana.cpp b/src/engine/actors/ABanana.cpp index d484ab983..6ff7b0dcf 100644 --- a/src/engine/actors/ABanana.cpp +++ b/src/engine/actors/ABanana.cpp @@ -11,6 +11,7 @@ void render_actor_banana(Camera*, float[4][4], struct BananaActor*); } ABanana::ABanana(uint16_t playerId, const float pos[3], const s16 rot[3], const float velocity[3]) { + Name = "Banana"; // Initialize the BananaActor's position, rotation, and velocity std::copy(pos, pos + 3, Pos); //std::copy(rot, rot + 3, this->a.rot); diff --git a/src/engine/actors/ABanana.h b/src/engine/actors/ABanana.h index 0da9eb98f..d8c55e9cb 100644 --- a/src/engine/actors/ABanana.h +++ b/src/engine/actors/ABanana.h @@ -10,7 +10,6 @@ public: // Constructor ABanana(uint16_t playerId, const float pos[3], const s16 rot[3], const float velocity[3]); - virtual ~ABanana() override = default; // Virtual functions to be overridden by derived classes diff --git a/src/engine/actors/ACloud.cpp b/src/engine/actors/ACloud.cpp index d3eaad32d..040b45f5e 100644 --- a/src/engine/actors/ACloud.cpp +++ b/src/engine/actors/ACloud.cpp @@ -15,6 +15,7 @@ extern f32 gKartGravityTable[]; } ACloud::ACloud(Vec3f pos) { + Name = "Cloud"; Pos[0] = pos[0]; Pos[1] = pos[1]; Pos[2] = pos[2]; diff --git a/src/engine/actors/AFinishline.cpp b/src/engine/actors/AFinishline.cpp index 77dd37ede..dfa89ef73 100644 --- a/src/engine/actors/AFinishline.cpp +++ b/src/engine/actors/AFinishline.cpp @@ -18,6 +18,7 @@ extern f32 gKartGravityTable[]; } AFinishline::AFinishline(std::optional pos) { + Name = "Finishline"; if (pos.has_value()) { // Set spawn point to the provided position diff --git a/src/engine/actors/ATree.cpp b/src/engine/actors/ATree.cpp index fa1c7f580..85a1d70f4 100644 --- a/src/engine/actors/ATree.cpp +++ b/src/engine/actors/ATree.cpp @@ -10,6 +10,7 @@ extern "C" { } ATree::ATree(Vec3f pos, Gfx* displaylist, f32 drawDistance, f32 minDrawDistance, const char* tlut = nullptr) { + Name = "Tree"; Pos[0] = pos[0]; Pos[1] = pos[1]; Pos[2] = pos[2]; diff --git a/src/engine/actors/AWarioSign.cpp b/src/engine/actors/AWarioSign.cpp index 8e73a94f3..7e59e431b 100644 --- a/src/engine/actors/AWarioSign.cpp +++ b/src/engine/actors/AWarioSign.cpp @@ -10,6 +10,7 @@ extern "C" { } AWarioSign::AWarioSign(Vec3f pos) { + Name = "Wario Sign"; Pos[0] = pos[0]; Pos[1] = pos[1]; Pos[2] = pos[2]; diff --git a/src/engine/actors/BowserStatue.cpp b/src/engine/actors/BowserStatue.cpp index de448de5e..c680c4c25 100644 --- a/src/engine/actors/BowserStatue.cpp +++ b/src/engine/actors/BowserStatue.cpp @@ -13,6 +13,7 @@ Vtx gBowserStatueVtx[717]; Gfx gBowserStatueGfx[162]; ABowserStatue::ABowserStatue(FVector pos, ABowserStatue::Behaviour behaviour) { + Name = "Bowser Statue"; Pos = pos; ABowserStatue::Behaviour _behaviour = behaviour; } diff --git a/src/engine/actors/Ship.cpp b/src/engine/actors/Ship.cpp index 0f3ccac9d..9ab5dd1a3 100644 --- a/src/engine/actors/Ship.cpp +++ b/src/engine/actors/Ship.cpp @@ -12,6 +12,7 @@ extern "C" { } AShip::AShip(FVector pos, AShip::Skin skin) { + Name = "Ship"; Spawn = pos; Spawn.y += 10; diff --git a/src/engine/actors/SpaghettiShip.cpp b/src/engine/actors/SpaghettiShip.cpp index e2f2712a2..717add1d1 100644 --- a/src/engine/actors/SpaghettiShip.cpp +++ b/src/engine/actors/SpaghettiShip.cpp @@ -10,6 +10,7 @@ extern "C" { } ASpaghettiShip::ASpaghettiShip(FVector pos) { + Name = "Spaghetti Ship"; Spawn = pos; Spawn.y += 10; } diff --git a/src/engine/actors/Starship.cpp b/src/engine/actors/Starship.cpp index bc201b84a..377af20a0 100644 --- a/src/engine/actors/Starship.cpp +++ b/src/engine/actors/Starship.cpp @@ -10,6 +10,7 @@ extern "C" { } AStarship::AStarship(FVector pos) { + Name = "Starship"; Spawn = pos; } diff --git a/src/engine/editor/Gizmo.cpp b/src/engine/editor/Gizmo.cpp index 5840b9896..666960468 100644 --- a/src/engine/editor/Gizmo.cpp +++ b/src/engine/editor/Gizmo.cpp @@ -88,23 +88,22 @@ void Gizmo::Translate() { _selected->Pos->x = (cameras[0].pos[0] + _ray.x * PickDistance) + _cursorOffset.x; _selected->Pos->y = (cameras[0].pos[1] + _ray.y * PickDistance) + _cursorOffset.y; _selected->Pos->z = (cameras[0].pos[2] + _ray.z * PickDistance) + _cursorOffset.z; - if (CVarGetInteger("gEditorSnapToGround", false) == true) { + if (CVarGetInteger("gEditorSnapToGround", 0) == true) { _selected->Pos->y = SnapToSurface(_selected->Pos); } - printf("TEST %f\n", _selected->Pos->y); break; case GizmoHandle::X_Axis: _selected->Pos->x = (cameras[0].pos[0] + _ray.x * length) + _cursorOffset.x; - if (CVarGetInteger("gEditorSnapToGround", false) == true) { + if (CVarGetInteger("gEditorSnapToGround", 0) == true) { _selected->Pos->y = SnapToSurface(_selected->Pos); } - break; + break; case GizmoHandle::Y_Axis: _selected->Pos->y = (cameras[0].pos[1] + _ray.y * length) + _cursorOffset.y; break; case GizmoHandle::Z_Axis: _selected->Pos->z = (cameras[0].pos[2] + _ray.z * length) + _cursorOffset.z; - if (CVarGetInteger("gEditorSnapToGround", false) == true) { + if (CVarGetInteger("gEditorSnapToGround", 0) == true) { _selected->Pos->y = SnapToSurface(_selected->Pos); } break; diff --git a/src/engine/objects/Bat.cpp b/src/engine/objects/Bat.cpp index b90f7c857..4acb6479c 100644 --- a/src/engine/objects/Bat.cpp +++ b/src/engine/objects/Bat.cpp @@ -19,7 +19,7 @@ const char* sBoardwalkTexList[] = { gTextureBat1, gTextureBat2, gTextureBat3, gT size_t OBat::_count = 0; OBat::OBat(const FVector& pos, const FRotation& rot) { - + Name = "Bat"; find_unused_obj_index(&_objectIndex); init_texture_object(_objectIndex, (uint8_t*)d_course_banshee_boardwalk_bat_tlut, sBoardwalkTexList, 0x20U, diff --git a/src/engine/objects/BombKart.cpp b/src/engine/objects/BombKart.cpp index 17d956dff..6d5099dc4 100644 --- a/src/engine/objects/BombKart.cpp +++ b/src/engine/objects/BombKart.cpp @@ -30,6 +30,7 @@ extern s8 gPlayerCount; size_t OBombKart::_count = 0; OBombKart::OBombKart(Vec3f pos, TrackWaypoint* waypoint, uint16_t waypointIndex, uint16_t state, f32 unk_3C) { + Name = "Bomb Kart"; _idx = _count; Vec3f _pos = {0, 0, 0}; diff --git a/src/engine/objects/Boos.cpp b/src/engine/objects/Boos.cpp index f06abc8f7..5bdbd41cf 100644 --- a/src/engine/objects/Boos.cpp +++ b/src/engine/objects/Boos.cpp @@ -23,6 +23,7 @@ extern "C" { size_t OBoos::_count = 0; OBoos::OBoos(size_t numBoos, const IPathSpan& leftBoundary, const IPathSpan& active, const IPathSpan& rightBoundary) { + Name = "Boos"; // Max five boos allowed due to limited splines // D_800E5D9C if (numBoos > 10) { diff --git a/src/engine/objects/ChainChomp.cpp b/src/engine/objects/ChainChomp.cpp index a7222af23..695df1e8a 100644 --- a/src/engine/objects/ChainChomp.cpp +++ b/src/engine/objects/ChainChomp.cpp @@ -17,6 +17,7 @@ extern "C" { size_t OChainChomp::_count = 0; OChainChomp::OChainChomp() { + Name = "Chain Chomp"; _idx = _count; init_object(indexObjectList2[_count], 0); _objectIndex = indexObjectList2[_count]; diff --git a/src/engine/objects/CheepCheep.cpp b/src/engine/objects/CheepCheep.cpp index 10cdf6602..5b4157c61 100644 --- a/src/engine/objects/CheepCheep.cpp +++ b/src/engine/objects/CheepCheep.cpp @@ -18,6 +18,7 @@ extern Lights1 D_800E45C0[]; } OCheepCheep::OCheepCheep(const FVector& pos, CheepType type, IPathSpan span) { + Name = "Cheep Cheep"; _type = type; _spawnPos = pos; _span = span; diff --git a/src/engine/objects/Crab.cpp b/src/engine/objects/Crab.cpp index c722a9037..82d2b9330 100644 --- a/src/engine/objects/Crab.cpp +++ b/src/engine/objects/Crab.cpp @@ -28,6 +28,7 @@ extern "C" { size_t OCrab::_count = 0; OCrab::OCrab(const FVector2D& start, const FVector2D& end) { + Name = "Crab"; _idx = _count; _start = start; _end = end; diff --git a/src/engine/objects/Flagpole.cpp b/src/engine/objects/Flagpole.cpp index 7b5e5af20..acd74ba2b 100644 --- a/src/engine/objects/Flagpole.cpp +++ b/src/engine/objects/Flagpole.cpp @@ -16,6 +16,7 @@ extern "C" { size_t OFlagpole::_count = 0; OFlagpole::OFlagpole(const FVector& pos, s16 direction) { + Name = "Flagpole"; _idx = _count; _pos = pos; _direction = direction; diff --git a/src/engine/objects/Hedgehog.cpp b/src/engine/objects/Hedgehog.cpp index 9f99cd34b..ebc5b30bb 100644 --- a/src/engine/objects/Hedgehog.cpp +++ b/src/engine/objects/Hedgehog.cpp @@ -15,6 +15,7 @@ extern "C" { size_t OHedgehog::_count = 0; OHedgehog::OHedgehog(const FVector& pos, const FVector2D& patrolPoint, s16 unk) { + Name = "Hedgehog"; _idx = _count; _pos = pos; diff --git a/src/engine/objects/HotAirBalloon.cpp b/src/engine/objects/HotAirBalloon.cpp index 917fd7354..4e337d98e 100644 --- a/src/engine/objects/HotAirBalloon.cpp +++ b/src/engine/objects/HotAirBalloon.cpp @@ -15,6 +15,7 @@ extern "C" { } OHotAirBalloon::OHotAirBalloon(const FVector& pos) { + Name = "Hot Air Balloon"; _pos = pos; D_80165898 = 0; diff --git a/src/engine/objects/Lakitu.cpp b/src/engine/objects/Lakitu.cpp index 93a87f5e1..12ca2d7db 100644 --- a/src/engine/objects/Lakitu.cpp +++ b/src/engine/objects/Lakitu.cpp @@ -37,6 +37,7 @@ extern s8 gPlayerCount; } OLakitu::OLakitu(s32 playerId, LakituType type) { + Name = "Lakitu"; _playerId = playerId; init_object(gIndexLakituList[playerId], (s32)type); diff --git a/src/engine/objects/Mole.cpp b/src/engine/objects/Mole.cpp index fdf5e7b08..06bd5f56c 100644 --- a/src/engine/objects/Mole.cpp +++ b/src/engine/objects/Mole.cpp @@ -25,6 +25,7 @@ extern "C" { size_t OMole::_count = 0; OMole::OMole(FVector pos, OMoleGroup* group) { + Name = "Mole"; _idx = _count; _group = group; diff --git a/src/engine/objects/Object.h b/src/engine/objects/Object.h index c5ffa072b..2a89a7683 100644 --- a/src/engine/objects/Object.h +++ b/src/engine/objects/Object.h @@ -11,6 +11,7 @@ class OObject { public: uint8_t uuid[16]; Object o; + const char* Name = ""; bool PendingDestroy = false; s32 _objectIndex = -1; diff --git a/src/engine/objects/Penguin.cpp b/src/engine/objects/Penguin.cpp index 1eeb00ff4..f7f2f12c8 100644 --- a/src/engine/objects/Penguin.cpp +++ b/src/engine/objects/Penguin.cpp @@ -35,6 +35,7 @@ extern s8 gPlayerCount; OPenguin::OPenguin(Vec3f pos, u16 direction, PenguinType type, Behaviour behaviour) { + Name = "Penguin"; _type = type; _bhv = behaviour; diff --git a/src/engine/objects/Podium.cpp b/src/engine/objects/Podium.cpp index d8f1e2ff2..ec396ca53 100644 --- a/src/engine/objects/Podium.cpp +++ b/src/engine/objects/Podium.cpp @@ -26,7 +26,7 @@ extern Vec3s D_800E634C[]; // }; OPodium::OPodium(const FVector& pos) { - + Name = "Podium"; _pos = pos; find_unused_obj_index(&_podium1Index); diff --git a/src/engine/objects/Seagull.cpp b/src/engine/objects/Seagull.cpp index 11043238f..17c35c07d 100644 --- a/src/engine/objects/Seagull.cpp +++ b/src/engine/objects/Seagull.cpp @@ -32,6 +32,7 @@ SplineData* D_800E633C[] = { &D_800E6034, &D_800E60F0, &D_800E61B4, &D_800E6280 size_t OSeagull::_count = 0; OSeagull::OSeagull(FVector pos) { + Name = "Seagull"; _idx = _count; _pos.x = pos.x; _pos.y = pos.y; diff --git a/src/engine/objects/Snowman.cpp b/src/engine/objects/Snowman.cpp index c45bceff2..12beb9e47 100644 --- a/src/engine/objects/Snowman.cpp +++ b/src/engine/objects/Snowman.cpp @@ -17,6 +17,7 @@ static const char* sSnowmanHeadList[] = { d_course_frappe_snowland_snowman_head size_t OSnowman::_count = 0; OSnowman::OSnowman(const FVector& pos) { + Name = "Snowman"; _idx = _count; _pos = pos; diff --git a/src/engine/objects/Thwomp.cpp b/src/engine/objects/Thwomp.cpp index 6a04f07bb..d3f99a8d9 100644 --- a/src/engine/objects/Thwomp.cpp +++ b/src/engine/objects/Thwomp.cpp @@ -47,6 +47,7 @@ s16 D_800E597C[] = { 0x0000, 0x0000, 0x4000, 0x8000, 0x8000, 0xc000 }; size_t OThwomp::_count = 0; OThwomp::OThwomp(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize) { + Name = "Thwomp"; _idx = _count; _faceDirection = direction; _boundingBoxSize = boundingBoxSize; diff --git a/src/engine/objects/TrashBin.cpp b/src/engine/objects/TrashBin.cpp index 6aa556470..b6ca78005 100644 --- a/src/engine/objects/TrashBin.cpp +++ b/src/engine/objects/TrashBin.cpp @@ -21,6 +21,7 @@ extern "C" { #define DEGREES_FLOAT_TO_SHORT(Degrees) ((s16)((Degrees) * (0x8000 / 180.0f))) OTrashBin::OTrashBin(const FVector& pos, const FRotation& rotation, f32 scale, OTrashBin::Behaviour bhv) { + Name = "Trashbin"; _pos = pos; _rot = rotation; _scale = scale; diff --git a/src/engine/objects/Trophy.cpp b/src/engine/objects/Trophy.cpp index 54bd70d3e..9f90b6be1 100644 --- a/src/engine/objects/Trophy.cpp +++ b/src/engine/objects/Trophy.cpp @@ -21,6 +21,7 @@ extern "C" { } OTrophy::OTrophy(const FVector& pos, TrophyType trophy, Behaviour bhv) { + Name = "Trophy"; _trophy = trophy; _spawnPos = pos; _spawnPos.y += 16.0f; // Adjust the height so the trophy sits on the surface when positioned to 0,0,0 diff --git a/src/engine/vehicles/Boat.cpp b/src/engine/vehicles/Boat.cpp index 460331f97..073974581 100644 --- a/src/engine/vehicles/Boat.cpp +++ b/src/engine/vehicles/Boat.cpp @@ -17,6 +17,7 @@ extern s8 gPlayerCount; size_t ABoat::_count = 0; ABoat::ABoat(f32 speed, u32 waypoint) { + Name = "Paddle Steam Boat"; Path2D* temp_a2; u16 waypointOffset; Index = _count; diff --git a/src/engine/vehicles/Bus.cpp b/src/engine/vehicles/Bus.cpp index 43b6e7406..c58cd0a6c 100644 --- a/src/engine/vehicles/Bus.cpp +++ b/src/engine/vehicles/Bus.cpp @@ -19,6 +19,7 @@ extern s8 gPlayerCount; size_t ABus::_count = 0; ABus::ABus(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { + Name = "Bus"; TrackWaypoint* temp_v0; u16 waypointOffset; s32 numWaypoints = gWaypointCountByPathIndex[0]; diff --git a/src/engine/vehicles/Car.cpp b/src/engine/vehicles/Car.cpp index a5dd49007..89409df50 100644 --- a/src/engine/vehicles/Car.cpp +++ b/src/engine/vehicles/Car.cpp @@ -19,6 +19,7 @@ extern s8 gPlayerCount; size_t ACar::_count = 0; ACar::ACar(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { + Name = "Car"; TrackWaypoint* temp_v0; u16 waypointOffset; s32 numWaypoints = gWaypointCountByPathIndex[0]; diff --git a/src/engine/vehicles/TankerTruck.cpp b/src/engine/vehicles/TankerTruck.cpp index a6b94429f..02cd9553b 100644 --- a/src/engine/vehicles/TankerTruck.cpp +++ b/src/engine/vehicles/TankerTruck.cpp @@ -19,6 +19,7 @@ extern s8 gPlayerCount; size_t ATankerTruck::_count = 0; ATankerTruck::ATankerTruck(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { + Name = "Tanker Truck"; TrackWaypoint* temp_v0; u16 waypointOffset; s32 numWaypoints = gWaypointCountByPathIndex[0]; diff --git a/src/engine/vehicles/Train.cpp b/src/engine/vehicles/Train.cpp index 14d9c9763..a3952742d 100644 --- a/src/engine/vehicles/Train.cpp +++ b/src/engine/vehicles/Train.cpp @@ -25,6 +25,7 @@ extern "C" { size_t ATrain::_count = 0; ATrain::ATrain(ATrain::TenderStatus tender, size_t numCarriages, f32 speed, uint32_t waypoint) { + Name = "Train"; u16 waypointOffset; TrainCarStuff* ptr1; Path2D* pos; diff --git a/src/engine/vehicles/Truck.cpp b/src/engine/vehicles/Truck.cpp index 68ef87353..585293489 100644 --- a/src/engine/vehicles/Truck.cpp +++ b/src/engine/vehicles/Truck.cpp @@ -19,6 +19,7 @@ extern s8 gPlayerCount; size_t ATruck::_count = 0; ATruck::ATruck(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { + Name = "Truck"; TrackWaypoint* temp_v0; u16 waypointOffset; s32 numWaypoints = gWaypointCountByPathIndex[0]; diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 895f97cc5..bef582e61 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -661,7 +661,7 @@ void CM_CleanWorld(void) { for (auto& emitter : world->Emitters) { delete emitter; } - + gEditor.ClearObjects(); gWorldInstance.Actors.clear(); gWorldInstance.Objects.clear(); gWorldInstance.Emitters.clear(); diff --git a/src/port/ui/ContentBrowser.cpp b/src/port/ui/ContentBrowser.cpp index eb84899a6..ed008a58c 100644 --- a/src/port/ui/ContentBrowser.cpp +++ b/src/port/ui/ContentBrowser.cpp @@ -14,7 +14,7 @@ namespace EditorNamespace { ContentBrowserWindow::~ContentBrowserWindow() { - SPDLOG_TRACE("destruct editor window"); + SPDLOG_TRACE("destruct content browser window"); } void ContentBrowserWindow::DrawElement() { diff --git a/src/port/ui/SceneExplorer.cpp b/src/port/ui/SceneExplorer.cpp index 572b4ae8d..8143cfa02 100644 --- a/src/port/ui/SceneExplorer.cpp +++ b/src/port/ui/SceneExplorer.cpp @@ -17,18 +17,24 @@ namespace EditorNamespace { SceneExplorerWindow::~SceneExplorerWindow() { - SPDLOG_TRACE("destruct editor window"); + SPDLOG_TRACE("destruct scene explorer window"); } void SceneExplorerWindow::DrawElement() { ImGui::Text("Scene"); - int id = 0; // id for now because we don't have unique names atm + size_t id = 0; // id for now because we don't have unique names atm for (auto& object : gEditor.eGameObjects) { - std::string label = fmt::format("Object {}", id++); - if (ImGui::Button(object.Name)) { + // Convert const char* to std::string before formatting + std::string objectName = object.Name ? object.Name : "Obj"; + + // Ensure unique label using index + std::string label = fmt::format("{}##{}", objectName, id); + + if (ImGui::Button(label.c_str())) { gEditor.SelectObjectFromSceneExplorer(&object); } + id += 1; } } } diff --git a/src/port/ui/Tools.cpp b/src/port/ui/Tools.cpp index 416c58259..b8af1e5e3 100644 --- a/src/port/ui/Tools.cpp +++ b/src/port/ui/Tools.cpp @@ -14,7 +14,7 @@ namespace EditorNamespace { ToolsWindow::~ToolsWindow() { - SPDLOG_TRACE("destruct editor window"); + SPDLOG_TRACE("destruct tools window"); } void ToolsWindow::InitElement() { @@ -22,13 +22,14 @@ namespace EditorNamespace { } void ToolsWindow::DrawElement() { - static bool toggleState = false; + static bool toggleState = CVarGetInteger("gEditorSnapToGround", 0); static int selectedTool = 0; // 0: Move, 1: Rotate, 2: Scale - + + ImVec4 defaultColor = ImGui::GetStyle().Colors[ImGuiCol_Button]; // Function to check and highlight the selected button auto ToolButton = [&](const char* label, int id) { bool isSelected = (selectedTool == id); - ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.2f, 0.8f, 0.2f, 1.0f) : ImVec4(0.8f, 0.2f, 0.2f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); if (ImGui::Button(label, ImVec2(125, 25))) { selectedTool = id; // Set the selected tool @@ -44,12 +45,24 @@ namespace EditorNamespace { ImGui::SameLine(); ToolButton("Scale", 2); - ImGui::PushStyleColor(ImGuiCol_Button, toggleState ? ImVec4(0.2f, 0.8f, 0.2f, 1.0f) : ImVec4(0.8f, 0.2f, 0.2f, 1.0f)); + ImGui::SameLine(); + + ImGui::PushStyleColor(ImGuiCol_Button, toggleState ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); if (ImGui::Button(toggleState ? "SNAP TO GROUND" : "SNAP TO GROUND", ImVec2(125, 25))) { toggleState = !toggleState; CVarSetInteger("gEditorSnapToGround", toggleState); } ImGui::PopStyleColor(); + + ImGui::SameLine(); + + if (ImGui::Button("Player One AI/Human", ImVec2(160, 25))) { + if (gPlayerOne->type & PLAYER_KART_AI) { + gPlayerOne->type &= ~PLAYER_KART_AI; + } else { + gPlayerOne->type |= PLAYER_KART_AI; + } + } } } diff --git a/src/racing/actors.c b/src/racing/actors.c index 5d1c0b269..aca608e37 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -1066,15 +1066,6 @@ void spawn_course_actors(void) { gNumPermanentActors = 0; - if (gModeSelection != BATTLE) { - if (!CM_DoesFinishlineExist()) { - printf("\n[actors.c] COURSE MISSING THE FINISHLINE\n"); - printf(" In the Course class BeginPlay() function make sure to include:\n"); - printf(" gWorldInstance.AddActor(new AFinishline());\n\n"); - printf("\n Otherwise, course textures may glitch out or other strange issues may occur.\n"); - } - } - // switch (gCurrentCourseId) { // case COURSE_MARIO_RACEWAY: // // spawn_foliage(d_course_mario_raceway_tree_spawns);