2024-03-09 15:07:52 -05:00
|
|
|
#ifndef LEGOUTILS_H
|
|
|
|
#define LEGOUTILS_H
|
2023-06-19 04:34:58 -04:00
|
|
|
|
2024-06-12 11:13:06 -04:00
|
|
|
#include "actionsfwd.h"
|
2024-05-04 10:13:05 -04:00
|
|
|
#include "decomp.h"
|
2023-09-27 15:16:46 -04:00
|
|
|
#include "extra.h"
|
2023-12-14 11:50:29 -05:00
|
|
|
#include "mxtypes.h"
|
2023-09-27 15:16:46 -04:00
|
|
|
|
2023-10-24 19:38:27 -04:00
|
|
|
#include <windows.h>
|
|
|
|
|
2024-06-01 10:07:58 -04:00
|
|
|
#define WM_ISLE_SETCURSOR 0x5400
|
|
|
|
|
2024-11-05 15:33:51 -05:00
|
|
|
// name verified by BETA10 0x100d4054
|
|
|
|
#define DS_NOT_A_STREAM -1
|
|
|
|
|
2024-06-01 10:07:58 -04:00
|
|
|
enum Cursor {
|
|
|
|
e_cursorArrow = 0,
|
|
|
|
e_cursorBusy,
|
|
|
|
e_cursorNo,
|
|
|
|
e_cursorUnused3,
|
|
|
|
e_cursorUnused4,
|
|
|
|
e_cursorUnused5,
|
|
|
|
e_cursorUnused6,
|
|
|
|
e_cursorUnused7,
|
|
|
|
e_cursorUnused8,
|
|
|
|
e_cursorUnused9,
|
|
|
|
e_cursorUnused10,
|
|
|
|
e_cursorNone
|
|
|
|
};
|
|
|
|
|
2024-11-11 09:44:03 -05:00
|
|
|
class BoundingSphere;
|
2024-01-08 06:45:07 -05:00
|
|
|
class MxAtomId;
|
|
|
|
class LegoEntity;
|
2024-05-03 12:19:12 -04:00
|
|
|
class LegoFile;
|
2024-01-26 17:52:03 -05:00
|
|
|
class LegoAnimPresenter;
|
2024-03-09 10:49:13 -05:00
|
|
|
class LegoNamedTexture;
|
2024-05-21 15:03:50 -04:00
|
|
|
class LegoPathActor;
|
2024-05-04 08:06:32 -04:00
|
|
|
class LegoROI;
|
2024-04-14 11:19:16 -04:00
|
|
|
class LegoTreeNode;
|
2024-02-02 20:03:52 -05:00
|
|
|
|
2024-06-12 11:13:06 -04:00
|
|
|
extern MxAtomId* g_isleScript;
|
|
|
|
|
2024-11-15 12:35:53 -05:00
|
|
|
LegoEntity* PickEntity(MxLong p_x, MxLong p_y);
|
|
|
|
LegoROI* PickROI(MxLong p_x, MxLong p_y);
|
|
|
|
LegoROI* PickRootROI(MxLong p_x, MxLong p_y);
|
2024-11-15 12:28:26 -05:00
|
|
|
void RotateY(LegoROI* p_roi, MxFloat p_angle);
|
2024-11-11 09:44:03 -05:00
|
|
|
MxBool SpheresIntersect(const BoundingSphere& p_sphere1, const BoundingSphere& p_sphere2);
|
2024-09-14 19:14:11 -04:00
|
|
|
MxBool FUN_1003ded0(MxFloat p_param1[2], MxFloat p_param2[3], MxFloat p_param3[3]);
|
2024-09-03 16:50:30 -04:00
|
|
|
MxBool TransformWorldToScreen(const MxFloat p_world[3], MxFloat p_screen[4]);
|
2024-04-14 11:19:16 -04:00
|
|
|
MxS16 CountTotalTreeNodes(LegoTreeNode* p_node);
|
2024-10-05 19:20:45 -04:00
|
|
|
LegoTreeNode* GetTreeNode(LegoTreeNode* p_node, MxU32 p_index);
|
2024-01-26 17:52:03 -05:00
|
|
|
void FUN_1003e050(LegoAnimPresenter* p_presenter);
|
2024-01-17 11:53:53 -05:00
|
|
|
Extra::ActionType MatchActionString(const char*);
|
2024-11-05 15:33:51 -05:00
|
|
|
void InvokeAction(Extra::ActionType p_actionId, const MxAtomId& p_pAtom, MxS32 p_streamId, LegoEntity* p_sender);
|
2024-02-24 08:55:00 -05:00
|
|
|
void SetCameraControllerFromIsle();
|
2023-12-13 05:48:14 -05:00
|
|
|
void ConvertHSVToRGB(float p_h, float p_s, float p_v, float* p_rOut, float* p_bOut, float* p_gOut);
|
2024-05-21 15:03:50 -04:00
|
|
|
void PlayCamAnim(LegoPathActor* p_actor, MxBool p_unused, MxU32 p_location, MxBool p_bool);
|
2024-04-12 07:02:32 -04:00
|
|
|
void FUN_1003eda0();
|
2024-04-22 08:24:00 -04:00
|
|
|
MxBool RemoveFromCurrentWorld(const MxAtomId& p_atomId, MxS32 p_id);
|
2024-06-03 07:00:38 -04:00
|
|
|
void EnableAnimations(MxBool p_enable);
|
2024-06-01 10:07:58 -04:00
|
|
|
void SetAppCursor(Cursor p_cursor);
|
2023-12-14 11:50:29 -05:00
|
|
|
MxBool FUN_1003ef60();
|
2024-03-23 13:06:31 -04:00
|
|
|
MxBool RemoveFromWorld(MxAtomId& p_entityAtom, MxS32 p_entityId, MxAtomId& p_worldAtom, MxS32 p_worldEntityId);
|
2024-03-29 16:42:39 -04:00
|
|
|
MxS32 UpdateLightPosition(MxS32 p_increase);
|
|
|
|
void SetLightPosition(MxS32 p_index);
|
2024-03-09 10:49:13 -05:00
|
|
|
LegoNamedTexture* ReadNamedTexture(LegoFile* p_file);
|
2024-12-12 13:02:14 -05:00
|
|
|
void WriteDefaultTexture(LegoFile* p_file, const char* p_name);
|
2024-11-10 15:26:48 -05:00
|
|
|
void WriteNamedTexture(LegoFile* p_file, LegoNamedTexture* p_namedTexture);
|
|
|
|
void FUN_1003f930(LegoNamedTexture* p_namedTexture);
|
2024-02-02 20:03:52 -05:00
|
|
|
|
2024-06-12 11:13:06 -04:00
|
|
|
// FUNCTION: BETA10 0x100260a0
|
|
|
|
inline void StartIsleAction(IsleScript::Script p_objectId)
|
|
|
|
{
|
|
|
|
if (p_objectId != (IsleScript::Script) -1) {
|
|
|
|
InvokeAction(Extra::e_start, *g_isleScript, p_objectId, NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-02-02 20:03:52 -05:00
|
|
|
// SYNTHETIC: LEGO1 0x10034b40
|
|
|
|
// LegoTexture::`scalar deleting destructor'
|
2023-06-30 19:33:59 -04:00
|
|
|
|
2024-03-09 15:07:52 -05:00
|
|
|
#endif // LEGOUTILS_H
|