commit x64 compilation from lulu cause the other branch dont seems to compile properly at home

This commit is contained in:
2026-07-17 16:08:20 +02:00
parent c0f3eeb00d
commit 0efa4ee6f7
625 changed files with 117283 additions and 4426 deletions

View File

@ -0,0 +1,100 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "physic/physic_shape.h"
#include "math/matrix4.h"
using namespace GS::S3D;
//------------------------------------------------------------------------------
GS::Matrix4 PhysicShape::GetMatrix()
{ return Matrix4::TransformationMatrix(position, rotation, dimensions); }
void PhysicShape::SetMatrix(const GS::Matrix4 &m)
{ m.Decompose(&position, &dimensions, &rotation); }
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool PhysicShape::Set(Type t, const char *p)
{
Free();
type = t;
path = p;
return true;
}
bool PhysicShape::Set(Type t, const GS::Vector4 &d)
{
Free();
type = t;
dimensions = d;
return true;
}
bool PhysicShape::Set(float *ph, int w, int h, float r)
{
Free();
type = TypeHeightmap;
// Resample the terrain heightfield to a meter resolution.
width = (int)((float)w * r);
height = (int)((float)h * r);
//
float i = (float)w / (float)width, j = (float)h / (float)height;
heightmap.Allocate(width * height);
if (float *po = heightmap)
{
float y = 0;
for (int v = 0; v < height; ++v)
{
float x = 0;
for (int u = 0; u < width; ++u)
{
// *po++ = ph[int(h - y - 1) * w + int(x)];
*po++ = ph[int(y) * w + int(x)];
x += i;
}
y += j;
}
}
resolution = 1.f; // Resampled
return true;
}
void PhysicShape::Free()
{
type = TypeNone;
heightmap.Free();
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
PhysicShape::PhysicShape()
{
type = TypeNone;
mass = 0; // Static.
position.Set();
rotation.Set();
dimensions.Set(1, 1, 1);
scale.Set(1, 1, 1);
restitution = 0.5;
static_friction = 0.5;
dynamic_friction = 0.5;
width = height = 0;
resolution = 1;
}
PhysicShape::~PhysicShape()
{
Free();
}
//------------------------------------------------------------------------------