Skip to content

Commit e89f8ef

Browse files
committed
Completed TextureManager; added fields to cTerrainSphereQuad; added many rendering functions to it and cTerrainSphere; added cTerrainShaderMgr class and TerrainRendering.h; added RenderStatistics and BufferDraw.
1 parent 87453cc commit e89f8ef

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+1921
-472
lines changed

Spore ModAPI/SourceCode/App/App.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef MODAPI_DLL_EXPORT
22
#include <Spore\App\Thumbnail_cImportExport.h>
33
#include <Spore\App\AppData.h>
4-
#include <Spore\App\ResourceKeyGenerator.h>
4+
#include <Spore\App\IDGenerator.h>
55

66
namespace App
77
{
@@ -24,6 +24,6 @@ namespace App
2424
Args(uint32_t arg, Resource::DBPF* package, bool b), Args(arg, package, b));
2525

2626

27-
auto_STATIC_METHOD_(cResourceKeyGenerator, cResourceKeyGenerator*, Get);
27+
auto_STATIC_METHOD_(cIDGenerator, cIDGenerator*, Get);
2828
}
2929
#endif

Spore ModAPI/SourceCode/App/Viewer.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,13 @@ namespace App
4949
auto_METHOD_const(cViewer, bool, GetCameraToMouse, Args(Vector3& dst1, Vector3& dst2), Args(dst1, dst2));
5050

5151
auto_METHOD_const(cViewer, bool, GetCameraToPoint, Args(float x, float y, Vector3& dst1, Vector3& dst2), Args(x, y, dst1, dst2));
52+
53+
auto_METHOD_VOID_(cViewer, Dispose);
54+
55+
auto_METHOD_VOID(cViewer, SetPerspectiveProjection, Args(float arg), Args(arg));
56+
auto_METHOD_VOID(cViewer, SetParallelProjection, Args(float arg, float arg2), Args(arg, arg2));
57+
auto_METHOD_VOID(cViewer, SetViewport, Args(const IntRectangle& arg), Args(arg));
58+
auto_METHOD_VOID(cViewer, SetViewWindow, Args(const Vector2& arg), Args(arg));
59+
auto_METHOD_VOID(cViewer, SetViewOffset, Args(const Vector2& arg), Args(arg));
5260
}
5361
#endif

Spore ModAPI/SourceCode/DLL/AddressesApp.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <Spore\App\Thumbnail_cImportExport.h>
2121
#include <Spore\App\cLocaleManager.h>
2222
#include <Spore\App\AppData.h>
23-
#include <Spore\App\ResourceKeyGenerator.h>
23+
#include <Spore\App\IDGenerator.h>
2424

2525
namespace Addresses(App)
2626
{
@@ -183,6 +183,12 @@ namespace App
183183
DefineAddress(SetRenderType, SelectAddress(0x7C4380, 0x7C3D50, 0x7C3DB0));
184184
DefineAddress(GetCameraToMouse, SelectAddress(0x7C4FA0, 0x7C4970, 0x7C49D0));
185185
DefineAddress(GetCameraToPoint, SelectAddress(0x7C4DD0, 0x7C47A0, 0x7C4800));
186+
DefineAddress(SetViewWindow, SelectAddress(0x7C51A0, , 0x7C4BD0));
187+
DefineAddress(SetViewOffset, SelectAddress(0x7C5170, , 0x7C4BA0));
188+
DefineAddress(SetViewport, SelectAddress(0x7C5100, , 0x7C4B30));
189+
DefineAddress(SetPerspectiveProjection, SelectAddress(0x7C5A50, , 0x7C5480));
190+
DefineAddress(SetParallelProjection, SelectAddress(0x7C5AC0, , 0x7C54F0));
191+
DefineAddress(Dispose, SelectAddress(0x7C4240, , 0x7C3C70));
186192
}
187193

188194
namespace Addresses(DirectPropertyList)
@@ -373,5 +379,10 @@ namespace App
373379
{
374380
DefineAddress(Get, SelectAddress(0x67DF80, , 0x67DE20));
375381
}
382+
383+
namespace Addresses(cIDGenerator)
384+
{
385+
DefineAddress(Get, SelectAddress(0x67DF80, , 0x67DE20));
386+
}
376387
}
377388
#endif

Spore ModAPI/SourceCode/DLL/AddressesGraphics.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <Spore\Graphics\cMaterialManager.h>
1616
#include <Spore\Graphics\ShaderDataUniform.h>
1717
#include <Spore\Graphics\GlobalState.h>
18+
#include <Spore\Graphics\BufferDraw.h>
1819

1920
namespace Addresses(Graphics)
2021
{
@@ -150,5 +151,15 @@ namespace Graphics
150151
DefineAddress(renderStates_ptr, SelectAddress(0x01700510, , 0x16F91E0));
151152
DefineAddress(renderStateDirty_ptr, SelectAddress(0x017016BC, , 0x16FA38C));
152153
}
154+
155+
namespace Addresses(cBufferDraw)
156+
{
157+
DefineAddress(ptr, SelectAddress(0x160B998, , 0x1607728));
158+
DefineAddress(LockVertexBuffer, SelectAddress(0x6DE220, , 0x6DDD40));
159+
DefineAddress(UnlockVertexBuffer, SelectAddress(0x6DE440, , 0x6DDF60));
160+
DefineAddress(UnlockAndDrawMaterial1Texture, SelectAddress(0x6DE2E0, , 0x6DDE00));
161+
DefineAddress(UnlockAndDrawMaterial, SelectAddress(0x6DE2A0, , 0x6DDDC0));
162+
DefineAddress(UnlockAndDrawNoMaterial, SelectAddress(0x6DE270, , 0x6DDD90));
163+
}
153164
}
154165
#endif

Spore ModAPI/SourceCode/DLL/AddressesSimulator.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
#include "stdafx.h"
33
#include <Spore\Simulator\cAbductToolStrategy.h>
44
#include <Spore\Simulator\cArtilleryWeaponStrategy.h>
5+
#include <Spore\Simulator\cBadgeManager.h>
56
#include <Spore\Simulator\cCity.h>
67
#include <Spore\Simulator\cCombatant.h>
8+
#include <Spore\Simulator\cCelestialBody.h>
79
#include <Spore\Simulator\cCreatureAbility.h>
810
#include <Spore\Simulator\cCreatureAnimal.h>
911
#include <Spore\Simulator\cCreatureBase.h>
@@ -646,6 +648,8 @@ namespace Simulator
646648
namespace Addresses(cSolarSystem)
647649
{
648650
DefineAddress(Load, SelectAddress(0xC85AC0, , 0xC868F0));
651+
DefineAddress(LoadBinaryStar, SelectAddress(0xC848A0, , 0xC856D0));
652+
DefineAddress(LoadAsteroids, SelectAddress(0xC84D90, , 0xC85BC0));
649653
DefineAddress(GenerateGraphics, SelectAddress(0xC85FD0, , 0xC86E00));
650654
DefineAddress(CreateStarEffect, SelectAddress(0xC82FF0, , 0xC83E80));
651655
DefineAddress(GenerateCelestialBodiesEffects, SelectAddress(0xC83920, , 0xC847B0));
@@ -654,6 +658,8 @@ namespace Simulator
654658
namespace Addresses(cStar)
655659
{
656660
DefineAddress(GetSolarSystem, SelectAddress(0xC8AA90, , 0xC8B900));
661+
DefineAddress(IsBinaryStar, SelectAddress(0xC8AB00, , 0xC8B970));
662+
DefineAddress(IsStarOrBinaryStar, SelectAddress(0xC8AB20, , 0xC8B990));
657663
}
658664

659665
namespace Addresses(cScenarioEditHistory)
@@ -731,6 +737,7 @@ namespace Simulator
731737
namespace Addresses(cPlanetRecord)
732738
{
733739
DefineAddress(Create, SelectAddress(0xBA5920, , 0xBA6300));
740+
DefineAddress(GetPerihelion, SelectAddress(0xC70190, , 0xC70FC0));
734741
}
735742

736743
namespace Addresses(cSpaceGfx)
@@ -739,5 +746,18 @@ namespace Simulator
739746
DefineAddress(InitializeInternal, SelectAddress(0x10367E0, , 0x1035910));
740747
DefineAddress(DisposeInternal, SelectAddress(0x1038190, , 0x10372C0));
741748
}
749+
750+
namespace Addresses(cBadgeManager)
751+
{
752+
DefineAddress(AddToBadgeProgress, SelectAddress(0xFE5BF0, , 0xFE52C0));
753+
}
754+
755+
namespace Addresses(cCelestialBody)
756+
{
757+
DefineAddress(Write, SelectAddress(0xBD56B0, , 0xBD6380));
758+
DefineAddress(Read, SelectAddress(0xBD5720, , 0xBD63F0));
759+
DefineAddress(WriteToXML, SelectAddress(0xBD5960, , 0xBD6630));
760+
DefineAddress(RemoveOwner, SelectAddress(0xBD5640, , 0xBD6310));
761+
}
742762
}
743763
#endif

Spore ModAPI/SourceCode/DLL/AddressesTerrain.cpp

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#ifdef MODAPI_DLL_EXPORT
22
#include "stdafx.h"
3-
#include <Spore\Terrain\Sphere\cTerrainSphere.h>
3+
#include <Spore\Terrain\cTerrainSphere.h>
4+
#include <Spore\Terrain\cTerrainSphereQuad.h>
45
#include <Spore\Terrain\ITerrainResourceManager.h>
6+
#include <Spore\Terrain\TerrainRendering.h>
57

68
namespace Terrain
79
{
@@ -14,6 +16,39 @@ namespace Terrain
1416
DefineAddress(GetHeight, SelectAddress(0xF92C50, , 0xF92760));
1517
}
1618

19+
namespace Addresses(cTerrainSphere)
20+
{
21+
DefineAddress(Create, SelectAddress(0xFA29A0, , 0xFA2350));
22+
DefineAddress(Generate, SelectAddress(0xF9BF30, , 0xF9B860));
23+
DefineAddress(PrepareShaderData, SelectAddress(0xF99010, , 0xF98910));
24+
DefineAddress(RenderTerrainLand, SelectAddress(0xF985F0, , 0xF97EF0));
25+
DefineAddress(RenderTerrainSeabedAsLand, SelectAddress(0xF98BD0, , 0xF984D0));
26+
DefineAddress(RenderTerrainWater, SelectAddress(0xF986C0, , 0xF97FC0));
27+
DefineAddress(RenderTerrainDecals, SelectAddress(0xF98810, , 0xF98110));
28+
DefineAddress(RenderTerrainRibbons, SelectAddress(0xF9C2B0, , 0xF9BBE0));
29+
DefineAddress(RenderTerrainAtmosphere, SelectAddress(0xF98870, , 0xF98170));
30+
DefineAddress(GetSimDataRTT, SelectAddress(0xF96FF0, , 0xF968B0));
31+
DefineAddress(RenderWaterReflectionAndRefraction, SelectAddress(0xFA62D0, , 0xFA5C70));
32+
DefineAddress(RenderWaterRefraction, SelectAddress(0xFA3E70, , 0xFA3810));
33+
DefineAddress(RenderWaterReflection, SelectAddress(0xF9CAE0, , 0xF9C420));
34+
DefineAddress(MainRenderPass, SelectAddress(0xF9C370, , 0xF9BCA0));
35+
DefineAddress(CreateRTTs, SelectAddress(0xFA0A20, , 0xFA03C0));
36+
}
37+
38+
namespace Addresses(cTerrainSphereQuad)
39+
{
40+
DefineAddress(Initialize, SelectAddress(0xFB5540, , 0xFB4DE0));
41+
DefineAddress(LoadTerrainTransform, SelectAddress(0xFB73F3, , 0xFB1750));
42+
DefineAddress(Draw, SelectAddress(0xFAF550, , 0xFAEEC0));
43+
DefineAddress(RenderLand, SelectAddress(0xFB6DC0, , 0xFB66A0));
44+
DefineAddress(RenderSeabedAsLand, SelectAddress(0xFB74F0, , 0xFB6DD0));
45+
DefineAddress(RenderWater, SelectAddress(0xFB6F40, , 0xFB6820));
46+
DefineAddress(RenderAtmosphere, SelectAddress(0xFB73C0, , 0xFB6CA0));
47+
DefineAddress(RenderDecals, SelectAddress(0xFB36C0, , 0xFB3010));
48+
DefineAddress(UpdateVertexBuffer, SelectAddress(0xFB6D20, , 0xFB6600));
49+
DefineAddress(UpdateIndexBuffer, SelectAddress(0xFB4AE0, , 0xFB4380));
50+
}
51+
1752
namespace Sphere
1853
{
1954
namespace Addresses(cTerrainSphere)
@@ -23,4 +58,29 @@ namespace Terrain
2358
}
2459
}
2560
}
61+
namespace Addresses(Terrain)
62+
{
63+
DefineAddress(CurrentMaterialIndex_ptr, SelectAddress(0x15B5518, , 0x15B1538));
64+
DefineAddress(CurrentQuadIndex_ptr, SelectAddress(0x15B551C, , 0x15B153C));
65+
DefineAddress(TerrainRefractionBuffersRTT_ID_ptr, SelectAddress(0x15B51E0, , 0x15B1200));
66+
DefineAddress(TerrainRefractionBuffersRTTTexture_ptr, SelectAddress(0x16CE0E8, , 0x16C9E68));
67+
DefineAddress(TerrainRefractionBlur1RTT_ID_ptr, SelectAddress(0x15B51E8, , 0x15B1208));
68+
DefineAddress(TerrainRefractionBlur2RTT_ID_ptr, SelectAddress(0x15B51F0, , 0x15B1214));
69+
DefineAddress(TerrainRefractionViewer_ptr, SelectAddress(0x16CE358, , 0x16CA0D8));
70+
DefineAddress(CreateRefractionRTTs, SelectAddress(0xF97220, , 0xF96AE0));
71+
DefineAddress(DisposeRefractionRTTs, SelectAddress(0xF97340, , 0xF96C00));
72+
DefineAddress(CreateReflectionRTTs, SelectAddress(0xF9E8F0, , 0xF9E240));
73+
DefineAddress(DisposeReflectionRTTs, SelectAddress(0xF9E9C0, , 0xF9E310));
74+
DefineAddress(CreateScatterRTTs, SelectAddress(0xF9E790, , 0xF9E0E0));
75+
DefineAddress(TerrainBakeInScatterTexture_ptr, SelectAddress(0x16CE1D4, , 0x16C9F54));
76+
DefineAddress(TerrainScatterTexture_ptr, SelectAddress(0x16CE1D8, , 0x16C9F58));
77+
DefineAddress(TerrainScatterViewer_ptr, SelectAddress(0x16CE1E0, , 0x16C9F60));
78+
DefineAddress(TerrainSimDataTextures_ptr, SelectAddress(0x16CE0C4, , 0x16C9E44));
79+
DefineAddress(TerrainSimDataRTTs_ID_ptr, SelectAddress(0x16CE654, , 0x16CA3D4));
80+
DefineAddress(TerrainReflectionTexture_ptr, SelectAddress(0x16CE1DC, , 0x16C9F5C));
81+
DefineAddress(TerrainReflectionViewer_ptr, SelectAddress(0x16CE4E0, , 0x16CA260));
82+
DefineAddress(TerrainColorMapRTT_ID_ptr, SelectAddress(0x15B51F8, , 0x15B1218));
83+
DefineAddress(TerrainColorMapRTT_ptr, SelectAddress(0x16CE0C0, , 0x16C9E40));
84+
DefineAddress(TerrainColorMapViewer_ptr, SelectAddress(0x16CE690, , 0x16CA410));
85+
}
2686
#endif

Spore ModAPI/SourceCode/Graphics/Rendering.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace Graphics
5050
return mnRefCount;
5151
}
5252

53-
void LambdaRenderable::Render(int arg_0, int arg_4, App::cViewer** arg_8, void* arg_C)
53+
void LambdaRenderable::Render(int arg_0, int arg_4, App::cViewer** arg_8, RenderStatistics& arg_C)
5454
{
5555
mFunction(arg_0, arg_4, arg_8, arg_C);
5656
}
@@ -91,7 +91,7 @@ namespace Graphics
9191
}
9292
}
9393

94-
void SequenceRenderable::Render(int, int, App::cViewer** arg_8, void* arg_C)
94+
void SequenceRenderable::Render(int, int, App::cViewer** arg_8, RenderStatistics& arg_C)
9595
{
9696
for (auto& entry : mEntries) {
9797
entry.pRenderable->Render(entry.flags, entry.layer, arg_8, arg_C);

Spore ModAPI/SourceCode/Graphics/Textures.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,12 @@
2222
namespace Graphics
2323
{
2424
auto_STATIC_METHOD_(ITextureManager, ITextureManager*, Get);
25+
26+
RenderWare::Raster* Texture::GetLoadedRaster()
27+
{
28+
if (!IsLoaded()) {
29+
TextureManager.WaitForLoadInternal(this);
30+
}
31+
return mpRaster;
32+
}
2533
}

Spore ModAPI/SourceCode/RenderWare/Raster.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef MODAPI_DLL_EXPORT
22
#include <Spore\Graphics\Renderer.h>
33
#include <Spore\RenderWare\Raster.h>
4+
#include <Spore\RenderWare\CompiledState.h>
45

56
namespace RenderWare
67
{
@@ -36,5 +37,20 @@ namespace RenderWare
3637
auto_STATIC_METHOD(Raster, Raster*, CreateRaster,
3738
Args(Raster*& pDst, uint16_t width, uint16_t height, uint8_t levels, int flagsDepth, D3DFORMAT format),
3839
Args(pDst, width, height, levels, flagsDepth, format));
40+
41+
42+
TextureSlot::TextureSlot()
43+
: compiledState(nullptr)
44+
, slotIndex(0)
45+
, raster(nullptr)
46+
, originalRaster(nullptr)
47+
{}
48+
49+
TextureSlot::~TextureSlot()
50+
{
51+
if (compiledState) {
52+
compiledState->SetRaster(slotIndex, originalRaster);
53+
}
54+
}
3955
}
4056
#endif

Spore ModAPI/SourceCode/Simulator/Planets.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ namespace Simulator
5353

5454
auto_STATIC_METHOD_VOID(cPlanetRecord, Create, Args(PlanetID planetId, cPlanetRecordPtr& dst), Args(planetId, dst));
5555

56+
auto_STATIC_METHOD(cPlanetRecord, float, GetPerihelion,
57+
Args(cPlanetRecord* pRecord, MoonPerihelionType moonType), Args(pRecord, moonType));
58+
5659
auto_METHOD(cPlanet, uint32_t, GetRingEffect, Args(bool isFromPlanet), Args(isFromPlanet));
5760
}
5861
#endif

0 commit comments

Comments
 (0)