|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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();
- }
- }
- }
|