Roblox-File-Format/DataTypes/PhysicalProperties.cs

75 lines
2.2 KiB
C#
Raw Permalink Normal View History

using RobloxFiles.Enums;
using RobloxFiles.Utility;
namespace RobloxFiles.DataTypes
{
public class PhysicalProperties
{
public readonly float Density = 1.0f;
public readonly float Friction = 1.0f;
public readonly float Elasticity = 0.5f;
public readonly float FrictionWeight = 1.0f;
public readonly float ElasticityWeight = 1.0f;
public override string ToString()
{
return $"{Density}, {Friction}, {Elasticity}, {FrictionWeight}, {ElasticityWeight}";
}
public PhysicalProperties(Material material)
{
if (MaterialInfo.FrictionWeightMap.ContainsKey(material))
FrictionWeight = MaterialInfo.FrictionWeightMap[material];
Density = MaterialInfo.DensityMap[material];
Friction = MaterialInfo.FrictionMap[material];
Elasticity = MaterialInfo.ElasticityMap[material];
}
public PhysicalProperties(float density, float friction, float elasticity, float frictionWeight = 1f, float elasticityWeight = 1f)
{
Density = density;
Friction = friction;
Elasticity = elasticity;
FrictionWeight = frictionWeight;
ElasticityWeight = elasticityWeight;
}
2020-09-13 01:16:19 +00:00
public override int GetHashCode()
{
int hash = Density.GetHashCode()
^ Friction.GetHashCode()
^ Elasticity.GetHashCode()
^ FrictionWeight.GetHashCode()
^ ElasticityWeight.GetHashCode();
return hash;
}
public override bool Equals(object obj)
{
2021-02-18 19:15:08 +00:00
if (!(obj is PhysicalProperties other))
2020-09-13 01:16:19 +00:00
return false;
if (!Density.Equals(other.Density))
return false;
if (!Friction.Equals(other.Friction))
return false;
if (!Elasticity.Equals(other.Elasticity))
return false;
if (!FrictionWeight.Equals(other.FrictionWeight))
return false;
if (!ElasticityWeight.Equals(other.ElasticityWeight))
return false;
return true;
}
}
}