//
// Created by nepushiro on 5/29/26.
//

#ifndef LIBSM64_FAKEOBJECT_H
#define LIBSM64_FAKEOBJECT_H

#endif //LIBSM64_FAKEOBJECT_H

#include <stdint.h>
#include <types.h>
#include <stdbool.h>

struct FakeObject
{
    struct Object object;
};

struct Object* cur_obj_find_nearest_pole(void);
f32 dist_between_objects(struct Object *obj1, struct Object *obj2);

void fake_object_init(struct FakeObject *fake, float x, float y, float z);
void fake_object_sync_position(struct FakeObject *fake);

bool fake_object_overlaps_mario(struct FakeObject *fake, struct MarioState *m);
void fake_object_add_collision(struct FakeObject *fake, struct MarioState *m);
void fake_object_apply_pole(struct FakeObject *fake);
void fake_object_set_preset(struct FakeObject *fake, uint32_t preset);