NorbiPeti
abbb83da26
Added Cluster.GetSimBodies() and SimBody.GetBlocks() Fixed some issues with IDs and bad handling of them
74 lines
No EOL
2.3 KiB
C#
74 lines
No EOL
2.3 KiB
C#
using Gamecraft.Damage;
|
|
using RobocraftX.Common;
|
|
using Svelto.ECS;
|
|
|
|
namespace GamecraftModdingAPI
|
|
{
|
|
/// <summary>
|
|
/// Represnts a cluster of blocks in time running mode, meaning blocks that are connected either directly or via joints.
|
|
/// Only exists if a cluster destruction manager is present. Static blocks like grass and dirt aren't part of a cluster.
|
|
/// </summary>
|
|
public class Cluster
|
|
{
|
|
public EGID Id { get; }
|
|
|
|
public Cluster(EGID id)
|
|
{
|
|
Id = id;
|
|
}
|
|
|
|
public Cluster(uint id) : this(new EGID(id, CommonExclusiveGroups.SIMULATION_CLUSTERS_GROUP))
|
|
{
|
|
}
|
|
|
|
public float InitialHealth
|
|
{
|
|
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).initialHealth;
|
|
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).initialHealth = value;
|
|
}
|
|
|
|
public float CurrentHealth
|
|
{
|
|
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).currentHealth;
|
|
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).currentHealth = value;
|
|
}
|
|
|
|
public float HealthMultiplier
|
|
{
|
|
get => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).healthMultiplier;
|
|
set => Block.BlockEngine.GetBlockInfo<HealthEntityComponent>(Id).healthMultiplier = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the simulation-time rigid bodies for the chunks in this cluster.
|
|
/// </summary>
|
|
/// <returns>An array of sim-bodies</returns>
|
|
public SimBody[] GetSimBodies()
|
|
{
|
|
return Block.BlockEngine.GetClusterBodies(Id.entityID);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{nameof(Id)}: {Id}";
|
|
}
|
|
|
|
protected bool Equals(Cluster other)
|
|
{
|
|
return Id.Equals(other.Id);
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (ReferenceEquals(null, obj)) return false;
|
|
if (ReferenceEquals(this, obj)) return true;
|
|
if (obj.GetType() != this.GetType()) return false;
|
|
return Equals((Cluster) obj);
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return Id.GetHashCode();
|
|
}
|
|
}
|
|
} |