mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-07-07 22:22:32 -04:00
actor init
This commit is contained in:
@@ -133,6 +133,7 @@ struct Actor {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
// Duplicate declare for simplicity when externing actors & packed files.
|
||||
@@ -157,6 +158,7 @@ struct TrainCar {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct RailroadCrossing {
|
||||
@@ -170,6 +172,7 @@ struct RailroadCrossing {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
// crossingTrigger might ruin struct size when compiled on 32 bit
|
||||
@@ -187,6 +190,7 @@ struct FallingRock {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct ActorSpawnData {
|
||||
@@ -231,6 +235,7 @@ struct YoshiValleyEgg {
|
||||
// pathCenter[0] and pathCenter[2] are the X,Z coordinates of the center of the path
|
||||
/* 0x24 */ Vec3f pathCenter;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct KiwanoFruit {
|
||||
@@ -249,6 +254,7 @@ struct KiwanoFruit {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct PaddleWheelBoat {
|
||||
@@ -263,6 +269,7 @@ struct PaddleWheelBoat {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct PiranhaPlant {
|
||||
@@ -275,6 +282,7 @@ struct PiranhaPlant {
|
||||
/* 0x24 */ Vec4s timers; // A per-camera timer. Might be more appropriate to call this state
|
||||
/* 0x2C */ f32 unk_02C;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct PalmTree {
|
||||
@@ -289,6 +297,7 @@ struct PalmTree {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
typedef struct {
|
||||
@@ -305,6 +314,7 @@ typedef struct {
|
||||
/* 0x18 */ Vec3f unk_18;
|
||||
/* 0x24 */ Vec3f shellIndices; // Indices in gActorList for the shells "owned" by this parent
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
} TripleShellParent; // size = 0x70
|
||||
|
||||
struct ShellActor {
|
||||
@@ -332,6 +342,7 @@ struct ShellActor {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity; // All 0 until the shell is fired
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct ItemBox {
|
||||
@@ -350,6 +361,7 @@ struct ItemBox {
|
||||
/* 0x28 */ f32 unk_028;
|
||||
/* 0x2C */ f32 unk_02C;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct FakeItemBox {
|
||||
@@ -366,6 +378,7 @@ struct FakeItemBox {
|
||||
/* 0x28 */ f32 targetY;
|
||||
/* 0x2C */ f32 unk_02C;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct BananaBunchParent {
|
||||
@@ -381,6 +394,7 @@ struct BananaBunchParent {
|
||||
/* 0x1E */ s16 unk_1E;
|
||||
/* 0x20 */ f32 unk_20[4];
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
struct BananaActor {
|
||||
@@ -403,6 +417,7 @@ struct BananaActor {
|
||||
/* 0x18 */ Vec3f pos;
|
||||
/* 0x24 */ Vec3f velocity;
|
||||
/* 0x30 */ Collision unk30;
|
||||
const char* model;
|
||||
}; // size = 0x70
|
||||
|
||||
// #pragma GCC diagnostic pop
|
||||
|
||||
@@ -52,67 +52,5 @@ void render_actor_falling_rock(Camera* camera, struct FallingRock* rock) {
|
||||
if (render_set_position(sp4C, 0) == 0) {
|
||||
return;
|
||||
}
|
||||
// gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_falling_rock);
|
||||
//! @todo: Placeholder DLs weird vtx issues
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_FOG);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_PASS2);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, d_course_choco_mountain_wall_texture);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_falling_rock_model, 15, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 3, 4, 5, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 6, 7, 8, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 9, 10, 11, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 12, 13, 14, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006C28, 5, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006D08, 10, 5);
|
||||
gSP1Triangle(gDisplayListHead++, 0, 5, 6, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 1, 7, 8, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 2, 9, 10, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 3, 11, 12, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 4, 13, 14, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006C78, 5, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006DA8, 10, 5);
|
||||
gSP1Triangle(gDisplayListHead++, 0, 5, 6, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 1, 7, 8, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 2, 9, 10, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 3, 11, 12, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 4, 13, 14, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006CC8, 4, 0);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006E48, 8, 4);
|
||||
gSP1Triangle(gDisplayListHead++, 0, 4, 5, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 1, 6, 7, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 2, 8, 9, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 3, 10, 11, 0);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_MIRROR | G_TX_WRAP,
|
||||
5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, d_course_choco_mountain_rock_texture);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006EC8, 3, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_FOG | G_LIGHTING);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_falling_rock);
|
||||
}
|
||||
|
||||
+9
-11
@@ -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
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
}
|
||||
@@ -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});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,10 @@ void Gizmo::Load() {
|
||||
}
|
||||
|
||||
void Gizmo::Tick() {
|
||||
if (!Enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch(SelectedHandle) {
|
||||
case GizmoHandle::X_Axis:
|
||||
Gizmo::Translate();
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
{-5, 0, 0} // Z-Axis (Blue)
|
||||
};
|
||||
FVector _ray;
|
||||
GameObject* _selected;
|
||||
GameObject* _selected = nullptr;
|
||||
private:
|
||||
bool _draw = false;
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -669,8 +669,12 @@ void CM_CleanWorld(void) {
|
||||
gWorldInstance.Reset();
|
||||
}
|
||||
|
||||
struct Actor* CM_AddBaseActor(s16 actorType) {
|
||||
return (struct Actor*) gWorldInstance.AddBaseActor(actorType);
|
||||
struct Actor* CM_AddBaseActor() {
|
||||
return (struct Actor*) gWorldInstance.AddBaseActor();
|
||||
}
|
||||
|
||||
void CM_AddEditorObject(struct Actor* actor) {
|
||||
gWorldInstance.AddEditorObject(actor);
|
||||
}
|
||||
|
||||
size_t CM_GetActorSize() {
|
||||
|
||||
+2
-1
@@ -139,7 +139,8 @@ void SetCourseByClass(void* course);
|
||||
|
||||
struct Actor* CM_GetActor(size_t index);
|
||||
void CM_DeleteActor(size_t index);
|
||||
struct Actor* CM_AddBaseActor(s16 actorType);
|
||||
struct Actor* CM_AddBaseActor();
|
||||
void CM_AddEditorObject(struct Actor* actor);
|
||||
size_t CM_GetActorSize();
|
||||
size_t CM_FindActorIndex(struct Actor* actor);
|
||||
void CM_ActorCollision(Player* player, struct Actor* actor);
|
||||
|
||||
+15
-1
@@ -135,6 +135,7 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
actor->state = 0;
|
||||
actor->unk_08 = 0.0f;
|
||||
actor->boundingBoxSize = 0.0f;
|
||||
actor->model = NULL;
|
||||
func_802AAAAC(&actor->unk30);
|
||||
switch (actorType) {
|
||||
case ACTOR_BOX_TRUCK:
|
||||
@@ -151,6 +152,7 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
actor->velocity[0] = actor->pos[0];
|
||||
actor->velocity[1] = actor->pos[1];
|
||||
actor->velocity[2] = actor->pos[2] + 70.0f;
|
||||
actor->model = d_course_yoshi_valley_dl_egg_lod0;
|
||||
break;
|
||||
case ACTOR_KIWANO_FRUIT:
|
||||
actor->state = 0;
|
||||
@@ -158,10 +160,12 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
actor->rot[1] = 0;
|
||||
actor->rot[2] = 0;
|
||||
actor->boundingBoxSize = 2.0f;
|
||||
actor->model = d_course_dks_jungle_parkway_dl_kiwano_fruit;
|
||||
break;
|
||||
case ACTOR_FALLING_ROCK:
|
||||
actor->flags |= 0x4000;
|
||||
actor->boundingBoxSize = 10.0f;
|
||||
actor->model = d_course_choco_mountain_dl_falling_rock;
|
||||
break;
|
||||
case ACTOR_TRAIN_ENGINE:
|
||||
actor->unk_08 = 10.0f;
|
||||
@@ -169,6 +173,7 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
case ACTOR_BANANA:
|
||||
actor->flags = actor->flags | 0x4000 | 0x1000;
|
||||
actor->boundingBoxSize = 2.0f;
|
||||
actor->model = common_model_flat_banana;
|
||||
break;
|
||||
case ACTOR_GREEN_SHELL:
|
||||
gNumSpawnedShells += 1;
|
||||
@@ -194,27 +199,32 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
actor->state = 0x0043;
|
||||
actor->boundingBoxSize = 3.0f;
|
||||
actor->unk_08 = 20.0f;
|
||||
actor->model = d_course_mario_raceway_dl_tree;
|
||||
break;
|
||||
case ACTOR_MARIO_SIGN:
|
||||
actor->flags |= 0x4000;
|
||||
actor->model = d_course_mario_raceway_dl_sign;
|
||||
break;
|
||||
case ACTOR_TREE_YOSHI_VALLEY:
|
||||
actor->flags |= 0x4000;
|
||||
actor->state = 0x0043;
|
||||
actor->boundingBoxSize = 3.0f;
|
||||
actor->unk_08 = 23.0f;
|
||||
actor->model = d_course_yoshi_valley_dl_tree;
|
||||
break;
|
||||
case ACTOR_TREE_ROYAL_RACEWAY:
|
||||
actor->flags |= 0x4000;
|
||||
actor->state = 0x0043;
|
||||
actor->boundingBoxSize = 3.0f;
|
||||
actor->unk_08 = 17.0f;
|
||||
actor->model = d_course_royal_raceway_dl_tree;
|
||||
break;
|
||||
case ACTOR_TREE_MOO_MOO_FARM:
|
||||
actor->state = 0x0043;
|
||||
actor->flags = -0x8000;
|
||||
actor->boundingBoxSize = 3.0f;
|
||||
actor->unk_08 = 17.0f;
|
||||
actor->model = d_course_moo_moo_farm_dl_tree;
|
||||
break;
|
||||
case 26:
|
||||
actor->flags |= 0x4000;
|
||||
@@ -275,17 +285,20 @@ void actor_init(struct Actor* actor, Vec3f startingPos, Vec3s startingRot, Vec3f
|
||||
actor->unk_04 = 0;
|
||||
actor->state = 5;
|
||||
actor->boundingBoxSize = 5.5f;
|
||||
actor->model = D_0D003090;
|
||||
break;
|
||||
case ACTOR_ITEM_BOX:
|
||||
actor->flags |= 0x4000;
|
||||
actor->unk_04 = 0;
|
||||
actor->state = 0;
|
||||
actor->boundingBoxSize = 5.5f;
|
||||
actor->model = D_0D003090;
|
||||
break;
|
||||
case ACTOR_PIRANHA_PLANT:
|
||||
actor->flags |= 0x4000;
|
||||
actor->state = 0x001E;
|
||||
actor->boundingBoxSize = 5.0f;
|
||||
actor->model = d_course_mario_raceway_dl_piranha_plant;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -1400,8 +1413,9 @@ s16 add_actor_to_empty_slot(Vec3f pos, Vec3s rot, Vec3f velocity, s16 actorType)
|
||||
//}
|
||||
}
|
||||
gNumActors++;
|
||||
struct Actor* actor = CM_AddBaseActor(actorType);
|
||||
struct Actor* actor = CM_AddBaseActor();
|
||||
actor_init(actor, pos, rot, velocity, actorType);
|
||||
CM_AddEditorObject(actor);
|
||||
return (s16) CM_GetActorSize() - 1; // Return current index;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user