actor init

This commit is contained in:
MegaMech
2025-03-02 19:35:02 -07:00
parent b5a7b69a42
commit 3d8367068e
13 changed files with 58 additions and 108 deletions
+9 -11
View File
@@ -121,25 +121,23 @@ AActor* World::AddActor(AActor* actor) {
return Actors.back();
}
struct Actor* World::AddBaseActor(s16 actorType) {
struct Actor* World::AddBaseActor() {
Actors.push_back(new AActor());
AActor* actor = Actors.back();
switch(actorType) {
case ACTOR_ITEM_BOX:
actor->Model = (Gfx*)LOAD_ASSET_RAW(D_0D003090);
break;
case ACTOR_PIRANHA_PLANT:
actor->Model = (Gfx*)LOAD_ASSET_RAW(d_course_mario_raceway_dl_piranha_plant);
break;
}
gEditor.AddObject((FVector*) &actor->Pos, actor->Model, 1.0f, CollisionType::VTX_INTERSECT, 0.0f);
// Skip C++ vtable to access variables in C
return reinterpret_cast<struct Actor*>(reinterpret_cast<char*>(Actors.back()) + sizeof(void*));
}
void World::AddEditorObject(Actor* actor) {
if (actor->model != NULL) {
gEditor.AddObject((FVector*) &actor->pos, (Gfx*)LOAD_ASSET_RAW(actor->model), 1.0f, CollisionType::VTX_INTERSECT, 0.0f);
} else {
gEditor.AddObject((FVector*) &actor->pos, NULL, 1.0f, CollisionType::VTX_INTERSECT, 0.0f);
}
}
/**
* Converts a C struct Actor* to its C++ AActor class
*/
+2 -1
View File
@@ -48,7 +48,8 @@ public:
void AddCourse(Course* course);
AActor* AddActor(AActor* actor);
struct Actor* AddBaseActor(s16 actorType);
struct Actor* AddBaseActor();
void AddEditorObject(Actor* actor);
AActor* GetActor(size_t index);
void TickActors();
-25
View File
@@ -1,25 +0,0 @@
#include <libultraship.h>
#include "framebuffer_effects.h"
#include "mk64.h"
#include <assets/common_data.h>
#include "port/Engine.h"
#include "math_util.h"
#include <stdio.h>
int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height,
uint8_t resize);
s32 gColourIdFramebuffer = -1;
void CreateColourIdFramebuffer(void) {
if (gColourIdFramebuffer == -1) {
gColourIdFramebuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
}
}
void DrawAsColour() {
}
+1 -1
View File
@@ -90,6 +90,6 @@ void Editor::AddObject(FVector* pos, Gfx* model, float scale, CollisionType coll
eGameObjects.push_back({pos, model, {}, collision, boundingBoxSize});
GenerateCollisionMesh(eGameObjects.back(), model, scale);
} else { // to bounding box or sphere collision
eGameObjects.push_back({pos, model, {}, CollisionType::BOUNDING_BOX, 2.0f});
eGameObjects.push_back({pos, model, {}, CollisionType::BOUNDING_BOX, 22.0f});
}
}
+4
View File
@@ -42,6 +42,10 @@ void Gizmo::Load() {
}
void Gizmo::Tick() {
if (!Enabled) {
return;
}
switch(SelectedHandle) {
case GizmoHandle::X_Axis:
Gizmo::Translate();
+1 -1
View File
@@ -52,7 +52,7 @@ public:
{-5, 0, 0} // Z-Axis (Blue)
};
FVector _ray;
GameObject* _selected;
GameObject* _selected = nullptr;
private:
bool _draw = false;
+2 -2
View File
@@ -50,7 +50,7 @@ void ObjectPicker::SelectObject(std::vector<GameObject>& objects) {
} else {
//eGizmo.Disable();
eGizmo.Enabled = false;
eGizmo._selected = NULL;
eGizmo._selected = nullptr;
}
}
@@ -102,7 +102,7 @@ void ObjectPicker::DragHandle() {
}
void ObjectPicker::Draw() {
if (_selected != nullptr) {
if (_selected != NULL) {
eGizmo.Draw();
}
}