public void PlaceMineOnGround(NodeAddedEvent e, MineInstanceNode mine) { MinePlacingTransformComponent minePlacingTransform = mine.minePlacingTransform; Transform transform = mine.effectInstance.GameObject.transform; if (!mine.minePlacingTransform.HasPlacingTransform) { transform.SetPositionSafe(mine.minePosition.Position); } else { transform.SetPositionSafe(minePlacingTransform.PlacingData.point); transform.SetRotationSafe(Quaternion.FromToRotation(Vector3.up, minePlacingTransform.PlacingData.normal)); } }
public void InitMinePlacingTransform(InitMinePlacingTransformEvent e, SingleNode <MineConfigComponent> mine, SingleNode <MapInstanceComponent> map) { if (!mine.Entity.HasComponent <MinePlacingTransformComponent>()) { RaycastHit hit; MinePlacingTransformComponent component = new MinePlacingTransformComponent(); if (!Physics.Raycast(e.Position + (Vector3.up * 3f), Vector3.down, out hit, TANK_MINE_RAYCAST_DISTANCE, LayerMasks.STATIC)) { component.HasPlacingTransform = false; } else { component.PlacingData = hit; component.HasPlacingTransform = true; } mine.Entity.AddComponent(component); } }