Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c7a4a45
cSpeciesProfile update
A-xesey Dec 29, 2025
fcec101
Add enum Ability types and rename cSpeciesProfile variables
A-xesey Dec 29, 2025
fdda447
Merge branch 'master' of https://github.com/A-xesey/Spore-ModAPI
A-xesey Dec 29, 2025
d180c42
Update cSpeciesProfile and SimulatorEnums
A-xesey Dec 29, 2025
40af39d
edit AbilityTypes names
A-xesey Dec 29, 2025
63edd46
Update plant's functions
A-xesey Dec 30, 2025
3244f67
VerbIconData update
A-xesey Jan 4, 2026
182a8b8
VerbIconData update
A-xesey Jan 4, 2026
7da2ada
modAPI folder update
A-xesey Jan 6, 2026
18e8681
Revert "modAPI folder update"
A-xesey Jan 6, 2026
2dd5e60
Reapply "modAPI folder update"
A-xesey Jan 6, 2026
48575aa
Add ThumbnailManager and SPUILargeAssetView objects, editing Addresse…
A-xesey Jan 18, 2026
f6048f0
Merge branch 'update1' of https://github.com/A-xesey/Spore-ModAPI int…
A-xesey Jan 18, 2026
1efd343
deletedVerbIconData.cpp once again
A-xesey Jan 18, 2026
8cc342a
Merge branch 'emd4600:master' into master
A-xesey Jan 18, 2026
54bb0fa
cSpeciesRelationshipManager
A-xesey Jan 23, 2026
1feda1a
Added new VerbIcon classes and cSPUIPropertyLayout class
A-xesey Feb 2, 2026
d101916
Update AssetViewManager.h
A-xesey Feb 2, 2026
f1cb015
Add Get/SetSkin functions to EditorModel class
A-xesey Feb 5, 2026
e3feecd
Add Get/SetSkin functions to EditoModel and some functions to Editor
A-xesey Feb 5, 2026
22c2d06
Update Editor.h
A-xesey Feb 18, 2026
67adb45
Update Editor.h
A-xesey Feb 18, 2026
2dc29fb
Update VerbIconData.h
A-xesey Feb 18, 2026
b7f0aba
Update GameViewManager.h
A-xesey Feb 18, 2026
609c096
Update Editor.h
A-xesey Mar 3, 2026
5952277
Update VerbIconData.h
A-xesey Mar 3, 2026
9947e74
Updated EditorBaseHandle
A-xesey Mar 30, 2026
609c558
Added new function to cScenarioTerraformMode (SetVisualEffect)
A-xesey Mar 30, 2026
8d8bac8
Updated names to cTerrainStateMgr.h
A-xesey Mar 30, 2026
85eccbd
Updated cObstacle.h names
A-xesey Mar 30, 2026
748f19d
Added functions to VerbIconData,h and comments
A-xesey Mar 30, 2026
e5e1305
Deleted one extra variable from cSPVerbTrayCollection.h
A-xesey Mar 30, 2026
bf75cf4
Reversed PreShutdown and Shutdown functions in BakeManager.h
A-xesey Mar 30, 2026
4868ac4
Updated Editor.h and added validation flags
A-xesey Mar 30, 2026
368fc71
Global update for ObjectTemplateDB.h + added enums in OTDBParameters.h
A-xesey Mar 30, 2026
356dab2
Merge remote-tracking branch 'origin/master' into update4
A-xesey Mar 30, 2026
a5df8af
Merge branch 'master' into update4
A-xesey Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion Spore ModAPI/SourceCode/DLL/AddressesEditors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ namespace Editors

DefineAddress(HandleMessage, SelectAddress(0x591C80, 0x591FA0));


DefineAddress(GetEditorForAssetType, SelectAddress(0x433010, 0x4333e0));
DefineAddress(GetNameForAssetType, SelectAddress(0x4badc0, 0x4bba50));
DefineAddress(GetTypeIDForAssetType, SelectAddress(0x4bb110, 0x4bbda0));
Expand Down Expand Up @@ -277,5 +276,27 @@ namespace Editors
DefineAddress(GetIconName, SelectAddress(0x5dc880, 0x5e5cb0));
DefineAddress(GetIconDescription, SelectAddress(0x5dc940, 0x5e5d70));
}

namespace Addresses(EditorBaseHandle)
{
DefineAddress(AddRef, SelectAddress(0x4ad110, 0x51e350));
DefineAddress(Release, SelectAddress(0x517960, 0x51e390));
DefineAddress(Cast, SelectAddress(0x47a4d0, 0x47de10));
DefineAddress(GetTypeID, SelectAddress(0x47a3f0, 0x47dd30));
DefineAddress(PlaceHandle, SelectAddress(0x459650, 0x4ae770));
DefineAddress(Init, SelectAddress(0x47a6f0, 0x47e030));
DefineAddress(Shutdown, SelectAddress(0x47ae80, 0x47e7c0));
DefineAddress(SetScale, SelectAddress(0x47bf80, 0x47f8e0));
DefineAddress(GetHandlePosition, SelectAddress(0x47b1c0, 0x47eb00));
DefineAddress(SetUIState, SelectAddress(0x47b070, 0x47e9b0));
DefineAddress(AnimateOn, SelectAddress(0x47bf50, 0x47f8b0));
DefineAddress(SetState, SelectAddress(0x47b7e0, 0x47f140));
DefineAddress(GetTuningFile, SelectAddress(0x47b780, 0x47f0e0));
DefineAddress(GetAlpha, SelectAddress(0x47b280, 0x47ebe0));
DefineAddress(GetOverdrawAlpha, SelectAddress(0x47b3d0, 0x47ed30));
DefineAddress(GetColor, SelectAddress(0x47b520, 0x47ee80));
DefineAddress(GetOverdrawColor, SelectAddress(0x47b640, 0x47efa0));
DefineAddress(GetDefaultScale, SelectAddress(0x47b760, 0x47f0c0));
}
}
#endif
1 change: 1 addition & 0 deletions Spore ModAPI/SourceCode/DLL/AddressesSimulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,7 @@ namespace Simulator
DefineAddress(SetAtmosphereColor, SelectAddress(0xF32190, 0xF31FF0));
DefineAddress(SetBeachColor, SelectAddress(0xF321E0, 0xF32040));
DefineAddress(SetCliffColor, SelectAddress(0xF32230, 0xF32090));
DefineAddress(SetVisualEffect, SelectAddress(0xf33a30, 0xf339f0));
}

namespace Addresses(cHerd)
Expand Down
1 change: 0 additions & 1 deletion Spore ModAPI/SourceCode/Editors/Editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,6 @@ namespace Editors

auto_STATIC_METHOD_VOID(cEditor, ComputeCreatureVerbIcons, Args(cCreatureDataResource* creatureData, cSPVerbTrayCollection* VerbTrayCollection, int brainLevel, float param_4), Args(creatureData, VerbTrayCollection, brainLevel, param_4));


auto_STATIC_METHOD(cEditor, bool, LoadCreatureData,Args(ResourceKey* creation, cCreatureDataResource** dst), Args(creation, dst));

auto_METHOD(EditorModel, int, GetSkinEffect, Args(int skinLayout), Args(skinLayout));
Expand Down
1 change: 1 addition & 0 deletions Spore ModAPI/SourceCode/Simulator/Scenario.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ namespace Simulator
auto_METHOD_VOID(cScenarioTerraformMode, SetAtmosphereColor, Args(const ColorRGB& color), Args(color));
auto_METHOD_VOID(cScenarioTerraformMode, SetCliffColor, Args(const ColorRGB& color), Args(color));
auto_METHOD_VOID(cScenarioTerraformMode, SetBeachColor, Args(const ColorRGB& color), Args(color));
auto_METHOD_VOID(cScenarioTerraformMode, SetVisualEffect, Args(const ResourceKey& visualEffect), Args(visualEffect));

auto_STATIC_METHOD(cScenarioClass, ScenarioObjectType, GetObjectType, Args(const ResourceKey& key), Args(key));
auto_METHOD_(cScenarioClass, bool, IsConsumible);
Expand Down
14 changes: 7 additions & 7 deletions Spore ModAPI/SourceCode/Terrain/Terrain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -136,14 +136,14 @@ namespace Terrain
, mpTextureCliff()
, mpAtmospherePackedCurves()
, mpAboveColorRamp()
, mpAboveDetailNoise()
, mpPlanetColorRampsDead()
, mpPlanetColorRampsLiving()
, mpPlanetColorRampsIce()
, mpPlanetColorRampsLava()
, mpAbovePackedDetailNoise()
, mpAboveDeadColorRamp()
, mpAboveLiveColorRamp()
, mpAboveColorRampsIce()
, mpAboveColorRampsLava()
, field_4C()
, mpJetStream()
, mpPCAWater()
, field_50()
, mpWaterPCATextureResource()
{

}
Expand Down
4 changes: 2 additions & 2 deletions Spore ModAPI/Spore/Editors/BakeManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ namespace Editors
/* 00h */ virtual int AddRef();
/* 04h */ virtual void Release();
/* 08h */ virtual bool Init();
/* 0Ch */ virtual void Shutdown();
/* 10h */ virtual void PreShutdown();
/* 0Ch */ virtual void PreShutdown();
/* 10h */ virtual void Shutdown();
/* 14h */ virtual void Update();
/* 18h */ virtual bool IsBakingOrBaked(const ResourceKey& nameKey);
/* 1Ch */ virtual bool IsBaked(const ResourceKey& nameKey, bool param);
Expand Down
62 changes: 44 additions & 18 deletions Spore ModAPI/Spore/Editors/Editor.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
#include <EASTL\map.h>
#include <EASTL\string.h>
#include <EASTL\vector.h>
#include <EASTL\bitset.h>

/// Access the active editor object; check Editors::cEditor
#define Editor (*Editors::GetEditor())
Expand All @@ -76,6 +77,38 @@ namespace Editors
{
class EditorUI;

enum eValidityTests {
kValidityTooComplex = 0,
kValidityOverBudget = 1,
kValidityIncomplete = 2,
kValidityUnloadableTextures = 3,
kValidityInvalidName = 4,
kValidityInvalidParts = 5,
kValidityInvalidParents = 6,
kValidityInvalidScales = 7,
kValidityOutOfBounds = 8,
kValidityTooSmall = 9,
kValidityNoMouth = 0xa,
kValidityNotPainted = 0xb,
kValidityStatsOutOfRange = 0xc,
kValidityHasFloatingParts = 0xd,
kValidityUnloadableBlocks = 0xe,
kValidityInvalidSymmetry = 0xf,
kValidityMissingPacks = 0x10,
kValidityHasZeroBlocks = 0x11,
kValidityInvalidPaint = 0x12,
kValidityIntersectingEndEffectors = 0x13,
kValidityBlankName = 0x14,
kValidityBadCharacters = 0x15,
kValidityTooSmallX = 0x16,
kValidityTooSmallY = 0x17,
kValidityTooSmallZ = 0x18,
kValidityTooSmallAbsoluteZ = 0x19,
kValidityFailedLoad = 0x1a,
kValidityInvalidLimb = 0x1b,
kValidityNoReason = 0x1c
};

enum class Mode : int
{
BuildMode = 0,
Expand Down Expand Up @@ -244,22 +277,16 @@ namespace Editors
/* 30h */ int mMouseFlags;
/* 34h */ MouseState mMouseState;

/* 38h */ bool field_38;
/* 3Ch */ int field_3C;
/* 40h */ int field_40; // not initialized
/* 44h */ int field_44; // not initialized
/* 48h */ int field_48;
/* 4Ch */ int field_4C;
/* 50h */ int field_50;
/* 54h */ int field_54;
/* 58h */ int field_58;
/* 5Ch */ int field_5C;
/* 60h */ int field_60;
/* 64h */ int field_64;
/* 68h */ float field_68; // Set to 0 when mouse click, and when changing mode
/* 38h */ bool mMouseMoved;
/* 3Ch */ int mModeModifiers;
/* 40h */ int mControlModifierMode; // not initialized
/* 44h */ int mEyeDropperModiferMode; // not initialized
/* 48h */ eastl::bitset<128> mModelValidity;
/* 58h */ eastl::bitset<128> mModelSaveValidity;
/* 68h */ float mIdleTime; // Set to 0 when mouse click, and when changing mode
/// Time to wait before starting animated creature (in milliseconds).
/* 6Ch */ float mCreatureIdleActivationTime;
/* 70h */ float field_70;
/* 70h */ float mSwapToModelTime;
/* 74h */ bool field_74;

//TODO ManagedPtr
Expand Down Expand Up @@ -289,12 +316,11 @@ namespace Editors
/* A8h */ ModelPtr mpBackgroundModel; // used in loc_5874D8
/// A background model used in accessories editors. It belongs to mpBackgroundModelWorld.
/* ACh */ ModelPtr mpAccBackgroundModel;
/* B0h */ eastl::string16 field_B0;
/* B0h */ eastl::string16 mOriginalTag;
// /* B9h */ bool editorShowAbilityIcons; // might also be 4B6h ?

/* C0h */ int field_C0; // not initialized // lastMouseClick[2] ?
/* C4h */ int field_C4; // not initialized
/* C8h */ int field_C8; // not initialized
/* C0h */ int mMouseDownPosition[2]; // not initialized // lastMouseClick[2] ?
/* C8h */ float mRolloverTime; // not initialized

// also valid for spines
/// Rigblock that is being hovered, and where actions like mouse wheel scaling will be applied
Expand Down
112 changes: 103 additions & 9 deletions Spore ModAPI/Spore/Editors/EditorBaseHandle.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,24 @@ namespace Editors
{
public:
static const uint32_t TYPE = 0x50A1FE5;
EditorBaseHandle();
virtual ~EditorBaseHandle();

virtual int AddRef() override;
virtual int Release() override;
virtual void* Cast(uint32_t typeID) const override;
/* 10h */ virtual uint32_t GetTypeID();
/* 14h */ virtual void func14h();
/* 14h */ virtual void PlaceHandle();
// also used to unload
/* 18h */ virtual void Load(EditorRigblock* pRigblock, bool load, uint32_t modelID, uint32_t overdrawModelID);
/* 1Ch */ virtual void Dispose();
/* 18h */ virtual void Init(EditorRigblock* pRigblock, bool initHandles, uint32_t pHandleModel, uint32_t pOverdrawHandleModel);
/* 1Ch */ virtual void Shutdown();
/// Sets the scale (scaling the model and overdraw model), which gets multiplied by `mDefaultScale`
/// @param scale
/* 20h */ virtual void SetScale(float scale);
/* 24h */ virtual Math::Vector3 GetPosition();
/* 28h */ virtual void func28h(int, bool);
/* 2Ch */ virtual void func2Ch();
/* 30h */ virtual void func30h(int, bool);
/* 24h */ virtual Math::Vector3 GetHandlePosition();
/* 28h */ virtual void SetUIState(bool pSetHightlight, EditorHandleState state);
/* 2Ch */ virtual void AnimateOn();
/* 30h */ virtual void SetState(EditorHandleState state, bool animateIt);
/* 34h */ virtual ResourceKey GetTuningFile();
/* 38h */ virtual float GetAlpha(EditorHandleState state);
/* 3Ch */ virtual float GetOverdrawAlpha(EditorHandleState state);
Expand All @@ -53,7 +58,7 @@ namespace Editors
/* 10h */ EditorRigblock* mpRigblock;
/* 14h */ ModelPtr mpModel;
/* 18h */ ModelPtr mpOverdrawModel;
/* 1Ch */ int field_1C; // not initialized, maybe state?
/* 1Ch */ EditorHandleState mCurrentState; // not initialized, maybe state?
/* 20h */ float mFadeInTime;
/* 24h */ float mFadeOutTime;
/* 28h */ float mAnimateInTime;
Expand All @@ -62,6 +67,95 @@ namespace Editors
/* 3Ch */ ResourceKey mDefaultOverdrawModel;
/* 48h */ bool mHasOverdraw;
/* 4Ch */ float mDefaultScale;
//TODO uncompleted, 8Ch is animation ID? 11Ch is string stretchSound?
};
ASSERT_SIZE(EditorBaseHandle, 0x50);

namespace Addresses(EditorBaseHandle)
{
DeclareAddress(AddRef);
DeclareAddress(Release);
DeclareAddress(Cast);
DeclareAddress(GetTypeID);
DeclareAddress(PlaceHandle);
DeclareAddress(Init);
DeclareAddress(Shutdown);
DeclareAddress(SetScale);
DeclareAddress(GetHandlePosition);
DeclareAddress(SetUIState);
DeclareAddress(AnimateOn);
DeclareAddress(SetState);
DeclareAddress(GetTuningFile);
DeclareAddress(GetAlpha);
DeclareAddress(GetOverdrawAlpha);
DeclareAddress(GetColor);
DeclareAddress(GetOverdrawColor);
DeclareAddress(GetDefaultScale);
}

inline EditorBaseHandle::EditorBaseHandle()
: mpPropList(nullptr)
, mpRigblock(nullptr)
, mpModel(nullptr)
, mpOverdrawModel(nullptr)
, mCurrentState()
, mFadeInTime()
, mFadeOutTime()
, mAnimateInTime()
, mAnimateOutTime()
, mDefaultModel()
, mDefaultOverdrawModel()
, mHasOverdraw(false)
, mDefaultScale(1.0)
{
}
inline EditorBaseHandle::~EditorBaseHandle() {
EditorBaseHandle::Shutdown();
}
inline int EditorBaseHandle::AddRef() {
return DefaultRefCounted::AddRef();
}
inline int EditorBaseHandle::Release() {
return DefaultRefCounted::Release();
}
inline void* EditorBaseHandle::Cast(uint32_t type) const {
CLASS_CAST(Object);
CLASS_CAST(EditorBaseHandle);
return nullptr;
}
inline float EditorBaseHandle::GetAlpha(EditorHandleState state)
{
return 1;
}
inline float EditorBaseHandle::GetOverdrawAlpha(EditorHandleState state)
{
return 1;
}
inline Math::ColorRGB EditorBaseHandle::GetColor(EditorHandleState state)
{
return { 1,1,1 };
}
inline Math::ColorRGB EditorBaseHandle::GetOverdrawColor(EditorHandleState state)
{
return { 1,1,1 };
}

#ifndef SDK_TO_GHIDRA

inline auto_METHOD_(EditorBaseHandle, uint32_t, GetTypeID);
inline auto_METHOD_VOID_(EditorBaseHandle, PlaceHandle);
inline auto_METHOD_VOID(EditorBaseHandle, Init, Args(EditorRigblock* pRigblock, bool initHandles, uint32_t pHandleModel, uint32_t pOverdrawHandleModel), Args(pRigblock, initHandles, pHandleModel, pOverdrawHandleModel));
inline auto_METHOD_VOID_(EditorBaseHandle, Shutdown);
inline auto_METHOD_VOID(EditorBaseHandle, SetScale, Args(float scale), Args(scale));
inline auto_METHOD_(EditorBaseHandle, Math::Vector3, GetHandlePosition);
inline auto_METHOD_VOID(EditorBaseHandle, SetUIState, Args(bool pSetHightlight, EditorHandleState state), Args(pSetHightlight, state));
inline auto_METHOD_VOID_(EditorBaseHandle, AnimateOn);
inline auto_METHOD_VOID(EditorBaseHandle, SetState, Args(EditorHandleState state, bool animateIt), Args(state, animateIt));
inline auto_METHOD_(EditorBaseHandle, ResourceKey, GetTuningFile);
//inline auto_METHOD(EditorBaseHandle, float, GetAlpha, Args(EditorHandleState state), Args(state));
//inline auto_METHOD(EditorBaseHandle, float, GetOverdrawAlpha, Args(EditorHandleState state), Args(state));
//inline auto_METHOD(EditorBaseHandle, Math::ColorRGB, GetColor, Args(EditorHandleState state), Args(state));
//inline auto_METHOD(EditorBaseHandle, Math::ColorRGB, GetOverdrawColor, Args(EditorHandleState state), Args(state));
inline auto_METHOD_(EditorBaseHandle, float, GetDefaultScale);

#endif
}
Loading
Loading