mirror of
https://github.com/Ragora/T2-CPP.git
synced 2026-07-16 08:34:46 +00:00
First commit in mathtesting
Added code for matrices, sceneobjects, and physics.
This commit is contained in:
parent
52c2756e5c
commit
3a55528fb5
19 changed files with 278 additions and 18 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -20,7 +20,7 @@
|
||||||
<ClCompile Include="source\DXAPI\NetConnection.cpp" />
|
<ClCompile Include="source\DXAPI\NetConnection.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\NetObject.cpp" />
|
<ClCompile Include="source\DXAPI\NetObject.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\Player.cpp" />
|
<ClCompile Include="source\DXAPI\Player.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\Point3F.cpp" />
|
<ClCompile Include="source\DXAPI\MatMath.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\Projectile.cpp" />
|
<ClCompile Include="source\DXAPI\Projectile.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\SceneObject.cpp" />
|
<ClCompile Include="source\DXAPI\SceneObject.cpp" />
|
||||||
<ClCompile Include="source\DXAPI\ScriptObject.cpp" />
|
<ClCompile Include="source\DXAPI\ScriptObject.cpp" />
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
<ClInclude Include="include\DXAPI\NetConnection.h" />
|
<ClInclude Include="include\DXAPI\NetConnection.h" />
|
||||||
<ClInclude Include="include\DXAPI\NetObject.h" />
|
<ClInclude Include="include\DXAPI\NetObject.h" />
|
||||||
<ClInclude Include="include\DXAPI\Player.h" />
|
<ClInclude Include="include\DXAPI\Player.h" />
|
||||||
<ClInclude Include="include\DXAPI\Point3F.h" />
|
<ClInclude Include="include\DXAPI\MatMath.h" />
|
||||||
<ClInclude Include="include\DXAPI\Projectile.h" />
|
<ClInclude Include="include\DXAPI\Projectile.h" />
|
||||||
<ClInclude Include="include\DXAPI\SceneObject.h" />
|
<ClInclude Include="include\DXAPI\SceneObject.h" />
|
||||||
<ClInclude Include="include\DXAPI\ScriptObject.h" />
|
<ClInclude Include="include\DXAPI\ScriptObject.h" />
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,6 @@
|
||||||
<ClCompile Include="source\DXAPI\DXAPI.cpp">
|
<ClCompile Include="source\DXAPI\DXAPI.cpp">
|
||||||
<Filter>Source Files\DXAPI</Filter>
|
<Filter>Source Files\DXAPI</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="source\DXAPI\Point3F.cpp">
|
|
||||||
<Filter>Source Files\DXAPI</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="source\DXAPI\FlyingVehicle.cpp">
|
<ClCompile Include="source\DXAPI\FlyingVehicle.cpp">
|
||||||
<Filter>Source Files\DXAPI</Filter>
|
<Filter>Source Files\DXAPI</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -87,6 +84,9 @@
|
||||||
<ClCompile Include="source\DXAPI\ScriptObject.cpp">
|
<ClCompile Include="source\DXAPI\ScriptObject.cpp">
|
||||||
<Filter>Source Files\DXAPI</Filter>
|
<Filter>Source Files\DXAPI</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="source\DXAPI\MatMath.cpp">
|
||||||
|
<Filter>Source Files\DXAPI</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="include\LinkerAPI.h">
|
<ClInclude Include="include\LinkerAPI.h">
|
||||||
|
|
@ -122,9 +122,6 @@
|
||||||
<ClInclude Include="include\DXAPI\NetObject.h">
|
<ClInclude Include="include\DXAPI\NetObject.h">
|
||||||
<Filter>Header Files\DXAPI</Filter>
|
<Filter>Header Files\DXAPI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="include\DXAPI\Point3F.h">
|
|
||||||
<Filter>Header Files\DXAPI</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="include\DXAPI\FlyingVehicle.h">
|
<ClInclude Include="include\DXAPI\FlyingVehicle.h">
|
||||||
<Filter>Header Files\DXAPI</Filter>
|
<Filter>Header Files\DXAPI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
@ -146,5 +143,8 @@
|
||||||
<ClInclude Include="include\DXAPI\ScriptObject.h">
|
<ClInclude Include="include\DXAPI\ScriptObject.h">
|
||||||
<Filter>Header Files\DXAPI</Filter>
|
<Filter>Header Files\DXAPI</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\DXAPI\MatMath.h">
|
||||||
|
<Filter>Header Files\DXAPI</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
#include "LinkerAPI.h"
|
#include "LinkerAPI.h"
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/GameBase.h>
|
#include <DXAPI/GameBase.h>
|
||||||
#include <DXAPI/NetObject.h>
|
#include <DXAPI/NetObject.h>
|
||||||
#include <DXAPI/Player.h>
|
#include <DXAPI/Player.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/NetConnection.h>
|
#include <DXAPI/NetConnection.h>
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
#include <DXAPI/ShapeBase.h>
|
#include <DXAPI/ShapeBase.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/Projectile.h>
|
#include <DXAPI/Projectile.h>
|
||||||
|
|
||||||
namespace DX
|
namespace DX
|
||||||
|
|
|
||||||
181
Mod Sources/TSExtension/TSExtension/include/DXAPI/MatMath.h
Normal file
181
Mod Sources/TSExtension/TSExtension/include/DXAPI/MatMath.h
Normal file
|
|
@ -0,0 +1,181 @@
|
||||||
|
#pragma once
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <memory.h>
|
||||||
|
#include <math.h>
|
||||||
|
#define M_PI 3.14159265359
|
||||||
|
inline float mDegToRad(float d)
|
||||||
|
{
|
||||||
|
return float((d * M_PI) / float(180));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline float mRadToDeg(float r)
|
||||||
|
{
|
||||||
|
return float((r * 180.0) / M_PI);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double mDegToRad(double d)
|
||||||
|
{
|
||||||
|
return (d * M_PI) / double(180);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline double mRadToDeg(double r)
|
||||||
|
{
|
||||||
|
return (r * 180.0) / M_PI;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace DX
|
||||||
|
{
|
||||||
|
|
||||||
|
struct Point {
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* @brief A class representing a referenced 3D vector of floats in Tribes 2.
|
||||||
|
*/
|
||||||
|
#define idx(r,c) (r*4 + c)
|
||||||
|
class MatrixF;
|
||||||
|
class Point3F
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Point3F();
|
||||||
|
Point3F(float &X, float &Y, float &Z);
|
||||||
|
float x;
|
||||||
|
float y;
|
||||||
|
float z;
|
||||||
|
};
|
||||||
|
class Angle
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Angle(float *mat){
|
||||||
|
float const *m = (float const *)mat;
|
||||||
|
|
||||||
|
float trace = m[idx(0, 0)] + m[idx(1, 1)] + m[idx(2, 2)];
|
||||||
|
if (trace > 0.0) {
|
||||||
|
float s = sqrt(trace + float(1));
|
||||||
|
w = s * 0.5;
|
||||||
|
s = 0.5 / s;
|
||||||
|
x = (m[idx(1,2)] - m[idx(2,1)]) * s;
|
||||||
|
y = (m[idx(2,0)] - m[idx(0,2)]) * s;
|
||||||
|
z = (m[idx(0,1)] - m[idx(1,0)]) * s;
|
||||||
|
} else {
|
||||||
|
float* q = &x;
|
||||||
|
unsigned int i = 0;
|
||||||
|
if (m[idx(1, 1)] > m[idx(0, 0)]) i = 1;
|
||||||
|
if (m[idx(2, 2)] > m[idx(i, i)]) i = 2;
|
||||||
|
unsigned int j = (i + 1) % 3;
|
||||||
|
unsigned int k = (j + 1) % 3;
|
||||||
|
|
||||||
|
float s = sqrt((m[idx(i, i)] - (m[idx(j, j)] + m[idx(k, k)])) + 1.0);
|
||||||
|
q[i] = s * 0.5;
|
||||||
|
s = 0.5 / s;
|
||||||
|
q[j] = (m[idx(i,j)] + m[idx(j,i)]) * s;
|
||||||
|
q[k] = (m[idx(i,k)] + m[idx(k, i)]) * s;
|
||||||
|
w = (m[idx(j,k)] - m[idx(k, j)]) * s;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
angle = acos( w ) * 2;
|
||||||
|
float sinHalfAngle = sqrt(1 - w * w);
|
||||||
|
if (sinHalfAngle != 0)
|
||||||
|
{
|
||||||
|
axis.x=(x / sinHalfAngle);
|
||||||
|
axis.y=(y / sinHalfAngle);
|
||||||
|
axis.z=(z / sinHalfAngle);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
axis.x=1.0;
|
||||||
|
axis.y=0;
|
||||||
|
axis.z=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void Angle::identity()
|
||||||
|
{
|
||||||
|
x = 0.0f;
|
||||||
|
y = 0.0f;
|
||||||
|
z = 0.0f;
|
||||||
|
w = 1.0f;
|
||||||
|
}
|
||||||
|
void Angle::normalize() {
|
||||||
|
float l = sqrt( x*x + y*y + z*z + w*w );
|
||||||
|
if( l == float(0.0) )
|
||||||
|
identity();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
x /= l;
|
||||||
|
y /= l;
|
||||||
|
z /= l;
|
||||||
|
w /= l;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
float angle;
|
||||||
|
Point axis;
|
||||||
|
float x,y,z,w,s;
|
||||||
|
|
||||||
|
};
|
||||||
|
class MatrixF
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MatrixF(float *inm) {
|
||||||
|
m=inm;
|
||||||
|
}
|
||||||
|
float *m;
|
||||||
|
void MatrixF::m_quatF_set_matF_C( float x, float y, float z, float w)
|
||||||
|
{
|
||||||
|
#define qidx(r,c) (r*4 + c)
|
||||||
|
float xs = x * 2.0f;
|
||||||
|
float ys = y * 2.0f;
|
||||||
|
float zs = z * 2.0f;
|
||||||
|
float wx = w * xs;
|
||||||
|
float wy = w * ys;
|
||||||
|
float wz = w * zs;
|
||||||
|
float xx = x * xs;
|
||||||
|
float xy = x * ys;
|
||||||
|
float xz = x * zs;
|
||||||
|
float yy = y * ys;
|
||||||
|
float yz = y * zs;
|
||||||
|
float zz = z * zs;
|
||||||
|
m[qidx(0,0)] = 1.0f - (yy + zz);
|
||||||
|
m[qidx(1,0)] = xy - wz;
|
||||||
|
m[qidx(2,0)] = xz + wy;
|
||||||
|
m[qidx(3,0)] = 0.0f;
|
||||||
|
m[qidx(0,1)] = xy + wz;
|
||||||
|
m[qidx(1,1)] = 1.0f - (xx + zz);
|
||||||
|
m[qidx(2,1)] = yz - wx;
|
||||||
|
m[qidx(3,1)] = 0.0f;
|
||||||
|
m[qidx(0,2)] = xz - wy;
|
||||||
|
m[qidx(1,2)] = yz + wx;
|
||||||
|
m[qidx(2,2)] = 1.0f - (xx + yy);
|
||||||
|
m[qidx(3,2)] = 0.0f;
|
||||||
|
|
||||||
|
m[qidx(0,3)] = 0.0f;
|
||||||
|
m[qidx(1,3)] = 0.0f;
|
||||||
|
m[qidx(2,3)] = 0.0f;
|
||||||
|
m[qidx(3,3)] = 1.0f;
|
||||||
|
#undef qidx
|
||||||
|
}
|
||||||
|
inline void getColumn(int col, Point3F *cptr)
|
||||||
|
{
|
||||||
|
cptr->x = m[col];
|
||||||
|
cptr->y = m[col+4];
|
||||||
|
cptr->z = m[col+8];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline void setColumn(int col, Point3F *cptr)
|
||||||
|
{
|
||||||
|
m[col] = cptr->x;
|
||||||
|
m[col+4] = cptr->y;
|
||||||
|
m[col+8] = cptr->z;
|
||||||
|
}
|
||||||
|
MatrixF(Angle *ang) {
|
||||||
|
m_quatF_set_matF_C(ang->x,ang->y,ang->z,ang->w);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // End NameSpace DX
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/SimObject.h>
|
#include <DXAPI/SimObject.h>
|
||||||
#include <DXAPI/NetObject.h>
|
#include <DXAPI/NetObject.h>
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/ShapeBase.h>
|
#include <DXAPI/ShapeBase.h>
|
||||||
|
|
||||||
namespace DX
|
namespace DX
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/GameBase.h>
|
#include <DXAPI/GameBase.h>
|
||||||
|
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/NetObject.h>
|
#include <DXAPI/NetObject.h>
|
||||||
|
|
||||||
namespace DX
|
namespace DX
|
||||||
|
|
@ -12,5 +12,28 @@ namespace DX
|
||||||
|
|
||||||
Point3F position;
|
Point3F position;
|
||||||
Point3F scale;
|
Point3F scale;
|
||||||
|
float * worldtoobj;
|
||||||
|
float * objtoworld;
|
||||||
|
Point3F objboxmin;
|
||||||
|
Point3F objboxmax;
|
||||||
|
Point3F worldboxmin;
|
||||||
|
Point3F worldboxmax;
|
||||||
|
Point3F worldspherecenter;
|
||||||
|
float &worldsphereradius;
|
||||||
|
float *renderobjtoworld;
|
||||||
|
float *renderworldtoobj;
|
||||||
|
void setTransform(float *matrixinput) {
|
||||||
|
unsigned int bpv=this->base_pointer_value;
|
||||||
|
unsigned int minp = (unsigned int) matrixinput;
|
||||||
|
|
||||||
|
__asm {
|
||||||
|
push minp
|
||||||
|
mov ecx,bpv
|
||||||
|
mov eax,bpv
|
||||||
|
mov eax,[eax]
|
||||||
|
add eax,0x74
|
||||||
|
call [eax]
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
} // End NameSpace DX
|
} // End NameSpace DX
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/ShapeBase.h>
|
#include <DXAPI/ShapeBase.h>
|
||||||
|
|
||||||
namespace DX
|
namespace DX
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
|
|
||||||
void serverProcessReplacement(unsigned int timeDelta) ;
|
void serverProcessReplacement(unsigned int timeDelta) ;
|
||||||
|
const char* conGetPosition(Linker::SimObject * obj, S32 argc, const char *argv[]);
|
||||||
const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]);
|
const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]);
|
||||||
// Returns the address of an object in memory
|
// Returns the address of an object in memory
|
||||||
const char* conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]);
|
const char* conGetAddress(Linker::SimObject *obj, S32 argc, const char *argv[]);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
* @copyright (c) 2014 Robert MacGregor
|
* @copyright (c) 2014 Robert MacGregor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <DXAPI/Point3F.h>
|
#include <DXAPI/MatMath.h>
|
||||||
#include <DXAPI/DXAPI.h>
|
#include <DXAPI/DXAPI.h>
|
||||||
|
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
|
|
|
||||||
14
Mod Sources/TSExtension/TSExtension/source/DXAPI/MatMath.cpp
Normal file
14
Mod Sources/TSExtension/TSExtension/source/DXAPI/MatMath.cpp
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
#include <DXAPI/MatMath.h>
|
||||||
|
|
||||||
|
namespace DX
|
||||||
|
{
|
||||||
|
Point3F::Point3F(float &X, float &Y, float &Z) : x(X), y(Y), z(Z)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
Point3F::Point3F()
|
||||||
|
{
|
||||||
|
x=0;
|
||||||
|
y=0;
|
||||||
|
z=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,16 @@ namespace DX
|
||||||
{
|
{
|
||||||
SceneObject::SceneObject(unsigned int obj) : position(*(float*)(obj + 168), *(float*)(obj + 184), *(float*)(obj + 200)),
|
SceneObject::SceneObject(unsigned int obj) : position(*(float*)(obj + 168), *(float*)(obj + 184), *(float*)(obj + 200)),
|
||||||
scale(*(float*)(obj + 284), *(float*)(obj + 288), *(float*)(obj + 292)),
|
scale(*(float*)(obj + 284), *(float*)(obj + 288), *(float*)(obj + 292)),
|
||||||
|
worldtoobj((float*)(obj + 0xDC)),
|
||||||
|
objtoworld((float*)(obj+0x9C)),
|
||||||
|
objboxmin(*(float*)(obj + 296), *(float*)(obj + 300), *(float*)(obj + 304)),
|
||||||
|
objboxmax(*(float*)(obj + 308), *(float*)(obj + 312), *(float*)(obj + 316)),
|
||||||
|
worldboxmin(*(float*)(obj + 320), *(float*)(obj + 324), *(float*)(obj + 328)),
|
||||||
|
worldboxmax(*(float*)(obj + 332), *(float*)(obj + 336), *(float*)(obj + 340)),
|
||||||
|
worldspherecenter(*(float*)(obj + 344), *(float*)(obj + 348), *(float*)(obj + 352)),
|
||||||
|
worldsphereradius(*(float*)(obj+356)),
|
||||||
|
renderobjtoworld((float*)(obj+360)),
|
||||||
|
renderworldtoobj((float*)(obj+424)),
|
||||||
NetObject(obj)
|
NetObject(obj)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,25 @@
|
||||||
#define endian(hex) (((hex & 0x000000FF) << 24)+((hex & 0x0000FF00) << 8)+((hex & 0x00FF0000)>>8)+((hex & 0xFF000000) >> 24))
|
#define endian(hex) (((hex & 0x000000FF) << 24)+((hex & 0x0000FF00) << 8)+((hex & 0x00FF0000)>>8)+((hex & 0xFF000000) >> 24))
|
||||||
#include <LinkerAPI.h>
|
#include <LinkerAPI.h>
|
||||||
#include <DXAPI/DXAPI.h>
|
#include <DXAPI/DXAPI.h>
|
||||||
|
#include <DXAPI/MatMath.h>
|
||||||
|
static float counter=0;
|
||||||
void serverProcessReplacement(unsigned int timeDelta) {
|
void serverProcessReplacement(unsigned int timeDelta) {
|
||||||
unsigned int servertickaddr=0x602350;
|
unsigned int servertickaddr=0x602350;
|
||||||
unsigned int serverthisptr=0x9E5EC0;
|
unsigned int serverthisptr=0x9E5EC0;
|
||||||
|
float basex=348.08;
|
||||||
|
float basey=-178.761;
|
||||||
|
float basez=113.037;
|
||||||
|
if (Sim::findObjectc("Team1TurretBaseLarge1")) {
|
||||||
|
basex+=counter/180.0;
|
||||||
|
DX::SceneObject sobj = DX::SceneObject((unsigned int)Sim::findObjectc("Team1TurretBaseLarge1"));
|
||||||
|
DX::MatrixF mat1=DX::MatrixF(sobj.objtoworld);
|
||||||
|
mat1.setColumn(3,&DX::Point3F(basex,basey,basez));
|
||||||
|
sobj.setTransform(mat1.m);
|
||||||
|
if (counter>=(30*180)){
|
||||||
|
counter=0;
|
||||||
|
}
|
||||||
|
counter+=1.0;
|
||||||
|
}
|
||||||
__asm
|
__asm
|
||||||
{
|
{
|
||||||
mov ecx,serverthisptr
|
mov ecx,serverthisptr
|
||||||
|
|
@ -16,6 +32,20 @@ void serverProcessReplacement(unsigned int timeDelta) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const char* conGetPosition(Linker::SimObject * obj, S32 argc, const char *argv[]) {
|
||||||
|
char returnstr[256]="";
|
||||||
|
DX::SceneObject sobj = DX::SceneObject((unsigned int)obj);
|
||||||
|
if (obj!=NULL) {
|
||||||
|
unsigned int bpv = (sobj.base_pointer_value);
|
||||||
|
unsigned int *matrixptr =(unsigned int *) (bpv+0x9C);
|
||||||
|
float *matrix1=(float*) matrixptr;
|
||||||
|
DX::MatrixF mat1=DX::MatrixF(sobj.objtoworld);
|
||||||
|
DX::Point3F test=DX::Point3F();
|
||||||
|
mat1.getColumn(3,&test);
|
||||||
|
sprintf (returnstr,"%g %g %g",test.x,test.y,test.z);
|
||||||
|
}
|
||||||
|
return returnstr;
|
||||||
|
}
|
||||||
const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]) {
|
const char* congetServPAddr(Linker::SimObject *obj, S32 argc, const char *argv[]) {
|
||||||
char test[256] = "";
|
char test[256] = "";
|
||||||
char test2[256]="";
|
char test2[256]="";
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ extern "C"
|
||||||
Con::addMethodS("GrenadeProjectile", "getposition", &conGrenadeProjectileGetPosition,"Accurately gets the position of the GrenadeProjectile", 2, 2);
|
Con::addMethodS("GrenadeProjectile", "getposition", &conGrenadeProjectileGetPosition,"Accurately gets the position of the GrenadeProjectile", 2, 2);
|
||||||
Con::addMethodS("GrenadeProjectile", "getvelocity", &conGrenadeProjectileGetVelocity,"Gets the velocity of the GrenadeProjectile", 2, 2);
|
Con::addMethodS("GrenadeProjectile", "getvelocity", &conGrenadeProjectileGetVelocity,"Gets the velocity of the GrenadeProjectile", 2, 2);
|
||||||
Con::addMethodB("Projectile", "makeNerf", &conProjectileMakeNerf,"Makes the Projectile deal no damage", 2, 2);
|
Con::addMethodB("Projectile", "makeNerf", &conProjectileMakeNerf,"Makes the Projectile deal no damage", 2, 2);
|
||||||
|
Con::addMethodS("SceneObject", "getPositionTest", &conGetPosition,"Gets the Rotation by alternate means as a test", 2, 2);
|
||||||
// TCPObject
|
// TCPObject
|
||||||
#ifdef ENABLE_TCPOBJECT
|
#ifdef ENABLE_TCPOBJECT
|
||||||
Con::addMethodS("TCPObject", "connect", &conTCPObjectConnect, "Connects to a remote server", 3, 3);
|
Con::addMethodS("TCPObject", "connect", &conTCPObjectConnect, "Connects to a remote server", 3, 3);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue