using Svelto.ECS; using Techblox.TimeRunning.Clusters; namespace TechbloxModdingAPI { /// /// 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. /// public class Cluster : EcsObjectBase { public Cluster(EGID id) : base(id) { } public Cluster(uint id) : this(new EGID(id, ClustersExclusiveGroups.SIMULATION_CLUSTERS_GROUP)) { } public float InitialHealth //TODO { get => 0f; set { } } public float CurrentHealth { get => 0f; set { } } public float HealthMultiplier { get => 0f; set { } } /// /// The mass of the cluster. /// public float Mass => Block.BlockEngine.GetBlockInfo(this).mass; /// /// Returns the simulation-time rigid bodies for the chunks in this cluster. /// /// An array of sim-bodies 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(); } } }