Compare commits
8 Commits
MainMenu
...
Gameclient
| Author | SHA1 | Date | |
|---|---|---|---|
| 556fdb6090 | |||
| 43a3434e97 | |||
| 48448a9cff | |||
| b872b52632 | |||
| be595da357 | |||
| a1b40ad102 | |||
| 7294466604 | |||
| 67d3ee76c1 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -303,8 +303,6 @@ PublishScripts/
|
|||||||
*.nupkg
|
*.nupkg
|
||||||
# NuGet Symbol Packages
|
# NuGet Symbol Packages
|
||||||
*.snupkg
|
*.snupkg
|
||||||
# except build/, which is used as an MSBuild target.
|
|
||||||
!**/[Pp]ackages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
#!**/[Pp]ackages/repositories.config
|
#!**/[Pp]ackages/repositories.config
|
||||||
# NuGet v3's project.json files produces more ignorable files
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ namespace GeoSus.Client
|
|||||||
{
|
{
|
||||||
#region Základní typy
|
#region Základní typy
|
||||||
|
|
||||||
public struct Position
|
public struct Position
|
||||||
{
|
{
|
||||||
[JsonProperty("lat")]
|
[JsonProperty("lat")]
|
||||||
public double Lat { get; set; }
|
public double Lat { get; set; }
|
||||||
|
|
||||||
@@ -39,8 +39,9 @@ public struct Position
|
|||||||
|
|
||||||
return R * c;
|
return R * c;
|
||||||
}
|
}
|
||||||
}
|
public static bool operator ==(Position left, Position right) { if (left.Lat == right.Lat && left.Lon == right.Lon) { return true; } else { return false; } }
|
||||||
|
public static bool operator !=(Position left, Position right) { return !(left == right); }
|
||||||
|
}
|
||||||
[JsonConverter(typeof(StringEnumConverter))]
|
[JsonConverter(typeof(StringEnumConverter))]
|
||||||
public enum PlayerRole { Crew, Impostor }
|
public enum PlayerRole { Crew, Impostor }
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 9515330c365f1b34a9574fcf5b50aef9
|
guid: 3a4035bdb812fee4f96cb1aa1b24c999
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 0d2bf6fbc15c94c4db51c326dbaa84ee
|
guid: 131d9de257c8edc49991d792c6e702f6
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -7,8 +7,8 @@ Material:
|
|||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: textik
|
m_Name: AreaMat
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: 0}
|
||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
@@ -23,6 +23,10 @@ Material:
|
|||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
|
- _AlphaTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
- _BumpMap:
|
- _BumpMap:
|
||||||
m_Texture: {fileID: 0}
|
m_Texture: {fileID: 0}
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
@@ -61,12 +65,14 @@ Material:
|
|||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Ints: []
|
m_Ints: []
|
||||||
m_Floats:
|
m_Floats:
|
||||||
|
- PixelSnap: 0
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
- _Cutoff: 0.5
|
- _Cutoff: 0.5
|
||||||
- _DetailNormalMapScale: 1
|
- _DetailNormalMapScale: 1
|
||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
|
- _EnableExternalAlpha: 0
|
||||||
- _GlossMapScale: 1
|
- _GlossMapScale: 1
|
||||||
- _Glossiness: 0.583
|
- _Glossiness: 0.5
|
||||||
- _GlossyReflections: 1
|
- _GlossyReflections: 1
|
||||||
- _Metallic: 0
|
- _Metallic: 0
|
||||||
- _Mode: 0
|
- _Mode: 0
|
||||||
@@ -78,7 +84,9 @@ Material:
|
|||||||
- _UVSec: 0
|
- _UVSec: 0
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 0.0813297, g: 1, b: 0, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _Flip: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
m_AllowLocking: 1
|
m_AllowLocking: 1
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 299795d658d037841b1552f783d462c3
|
guid: 5a46533bdf4003449bc9146ccef44e27
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 2100000
|
mainObjectFileID: 2100000
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using GeoSus.Client;
|
using GeoSus.Client;
|
||||||
using Subsystems;
|
using Subsystems;
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System;
|
||||||
using TMPro;
|
using TMPro;
|
||||||
|
using System.Collections.Generic;
|
||||||
/*
|
/*
|
||||||
GameManager - hlavní tøida pro správu hry
|
GameManager - hlavní tøida pro správu hry
|
||||||
GameManager_Network - subsystém pro správu komunikace se serverem
|
GameManager_Network - subsystém pro správu komunikace se serverem
|
||||||
@@ -20,26 +19,65 @@ public class GameManager : MonoBehaviour
|
|||||||
[Header("Subsystems")]
|
[Header("Subsystems")]
|
||||||
protected GameManager_Network networkSubsystem;
|
protected GameManager_Network networkSubsystem;
|
||||||
protected GameManager_UI uiSubsystem;
|
protected GameManager_UI uiSubsystem;
|
||||||
|
protected GameManager_Map mapSubsystem;
|
||||||
|
protected GameManager_Input inputSubsystem;
|
||||||
|
protected GameManager_Game gameSubsystem;
|
||||||
|
|
||||||
protected GameClient gameClient;
|
protected GameClient gameClient;
|
||||||
|
|
||||||
[Header("Player Info")]
|
[Header("Player Info")]
|
||||||
public string displayName;
|
public string displayName;
|
||||||
|
|
||||||
[Header("UI Elements")]
|
[Header("UI Elements")]
|
||||||
public Canvas JoinCreateLobby;
|
public Canvas JoinCreateLobby;
|
||||||
public Canvas InLobby;
|
public Canvas InLobby;
|
||||||
|
public Canvas LoadingScreen;
|
||||||
|
public Canvas GameScreen;
|
||||||
|
|
||||||
|
|
||||||
|
[Header("Map")]
|
||||||
|
public GameObject MapCenterPoint;
|
||||||
|
public BuildingSettings buildingSettings;
|
||||||
|
public PathwaySettings pathwaySettings;
|
||||||
|
public AreaSettings areaSettings;
|
||||||
|
|
||||||
|
[Header("GPS")]
|
||||||
|
public GameObject Player;
|
||||||
|
|
||||||
|
[Header("Debug")]
|
||||||
|
public bool testMode = false;
|
||||||
|
private GameClient _secondClient;
|
||||||
|
private GameClient _thirdClient;
|
||||||
|
private GameManager_Network _secondNetwork;
|
||||||
|
private GameManager_Network _thirdNetwork;
|
||||||
|
|
||||||
|
[Header("Tasks")]
|
||||||
|
public List<TaskData> AvailableTasks = new List<TaskData>();
|
||||||
|
public StationSettings settings = new StationSettings();
|
||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
DontDestroyOnLoad(this);
|
DontDestroyOnLoad(this);
|
||||||
if (displayName == null || displayName == "")
|
if (displayName == null || displayName == "")
|
||||||
{
|
{
|
||||||
displayName = "Player_" + Random.Range(1000, 9999).ToString();
|
displayName = GenerateUsername();
|
||||||
}
|
}
|
||||||
gameClient = new GameClient(GenerateUUID(), /*displayName*/ GenerateUsername());
|
if (testMode)
|
||||||
uiSubsystem = new GameManager_UI(gameClient, JoinCreateLobby, InLobby);
|
{
|
||||||
|
_secondClient = new GameClient(GenerateUUID(), GenerateUsername());
|
||||||
|
_secondNetwork = new GameManager_Network(_secondClient);
|
||||||
|
_thirdClient = new GameClient(GenerateUUID(), GenerateUsername());
|
||||||
|
_thirdNetwork = new GameManager_Network(_thirdClient);
|
||||||
|
|
||||||
|
_secondNetwork.OpenConection();
|
||||||
|
_thirdNetwork.OpenConection();
|
||||||
|
}
|
||||||
|
gameClient = new GameClient(GenerateUUID(), displayName);
|
||||||
|
uiSubsystem = new GameManager_UI(gameClient, JoinCreateLobby, InLobby, LoadingScreen, GameScreen);
|
||||||
networkSubsystem = new GameManager_Network(gameClient);
|
networkSubsystem = new GameManager_Network(gameClient);
|
||||||
|
mapSubsystem = new GameManager_Map(gameClient, MapCenterPoint, buildingSettings, pathwaySettings, areaSettings);
|
||||||
|
inputSubsystem = new GameManager_Input(gameClient, Player, testMode);
|
||||||
|
gameSubsystem = new GameManager_Game(gameClient, Player, MapCenterPoint, AvailableTasks);
|
||||||
networkSubsystem.OpenConection();
|
networkSubsystem.OpenConection();
|
||||||
}
|
}
|
||||||
private void Update()
|
private void Update()
|
||||||
@@ -47,8 +85,17 @@ public class GameManager : MonoBehaviour
|
|||||||
if (gameClient.CurrentLobbyState != null)
|
if (gameClient.CurrentLobbyState != null)
|
||||||
{
|
{
|
||||||
uiSubsystem.UpdateLobbyUI();
|
uiSubsystem.UpdateLobbyUI();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (gameClient.CurrentLobbyState.MapDataReady)
|
||||||
|
{
|
||||||
|
mapSubsystem.BuildMap();
|
||||||
|
gameClient.CurrentLobbyState.MapDataReady = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NullReferenceException ex) { }
|
||||||
|
inputSubsystem.positionCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -60,13 +107,17 @@ public class GameManager : MonoBehaviour
|
|||||||
}
|
}
|
||||||
protected string GenerateUsername()
|
protected string GenerateUsername()
|
||||||
{
|
{
|
||||||
string Username = Random.Range(0,10).ToString() + Random.Range(0, 10).ToString() + Random.Range(0, 10).ToString() + Random.Range(0, 10).ToString();
|
string Username = UnityEngine.Random.Range(0,10).ToString() + UnityEngine.Random.Range(0, 10).ToString() + UnityEngine.Random.Range(0, 10).ToString() + UnityEngine.Random.Range(0, 10).ToString();
|
||||||
Debug.Log(Username);
|
Debug.Log(Username);
|
||||||
return Username;
|
return Username;
|
||||||
}
|
}
|
||||||
public void CreateLobbyButton()
|
public void CreateLobbyButton()
|
||||||
{
|
{
|
||||||
networkSubsystem.CrateLobby(50.0755, 14.4378);
|
networkSubsystem.CrateLobby(50.7727264, 15.0719876);
|
||||||
|
if (testMode)
|
||||||
|
{
|
||||||
|
StartCoroutine(ConnectTestClients());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public void JoinLobbyButton()
|
public void JoinLobbyButton()
|
||||||
{
|
{
|
||||||
@@ -84,8 +135,24 @@ public class GameManager : MonoBehaviour
|
|||||||
{
|
{
|
||||||
networkSubsystem.LeaveLobby();
|
networkSubsystem.LeaveLobby();
|
||||||
}
|
}
|
||||||
|
public void StartGameButton()
|
||||||
|
{
|
||||||
|
networkSubsystem.StartGame();
|
||||||
|
}
|
||||||
|
public void Interact()
|
||||||
|
{
|
||||||
|
//TODO: Interakce s úkoly
|
||||||
|
}
|
||||||
void OnApplicationQuit()
|
void OnApplicationQuit()
|
||||||
{
|
{
|
||||||
gameClient.Disconnect();
|
gameClient.Disconnect();
|
||||||
|
_secondClient?.Disconnect();
|
||||||
|
_thirdClient?.Disconnect();
|
||||||
|
}
|
||||||
|
IEnumerator ConnectTestClients()
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(2f);
|
||||||
|
_secondNetwork.JoinLobby(gameClient.CurrentLobbyState.JoinCode);
|
||||||
|
_thirdNetwork.JoinLobby(gameClient.CurrentLobbyState.JoinCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 22bf82e679cf6e1419440d236360ba3b
|
guid: 9e2c3e4ba4e36ea40a686e58feca4d2b
|
||||||
141
Assets/GameManager/GameManager_Game.cs
Normal file
141
Assets/GameManager/GameManager_Game.cs
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
using GeoSus.Client;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using static UnityEngine.Rendering.RayTracingAccelerationStructure;
|
||||||
|
|
||||||
|
namespace Subsystems
|
||||||
|
{
|
||||||
|
[System.Serializable]
|
||||||
|
public class StationSettings
|
||||||
|
{
|
||||||
|
public GameObject TaskStationPrefab;
|
||||||
|
public GameObject SabotageStationPrefab;
|
||||||
|
public GameObject MeetingStationPrefab;
|
||||||
|
public GameObject BodyStationPrefab;
|
||||||
|
|
||||||
|
}
|
||||||
|
public class GameManager_Game
|
||||||
|
{
|
||||||
|
private GameClient _gameClient;
|
||||||
|
private GameObject _player;
|
||||||
|
private GameObject _map;
|
||||||
|
private float _range;
|
||||||
|
private List<TaskData> _availableTasks;
|
||||||
|
public List<GameObject> Stations { get; private set; }
|
||||||
|
public List<GameObject> TaskStations { get; private set; } = new List<GameObject>();
|
||||||
|
private StationSettings _stationSettings;
|
||||||
|
public GameManager_Game(GameClient client, GameObject player, GameObject map, List<TaskData> availableTasks, float range = 20f, StationSettings stationSettings = null)
|
||||||
|
{
|
||||||
|
_gameClient = client;
|
||||||
|
_player = player;
|
||||||
|
_map = map;
|
||||||
|
_availableTasks = availableTasks;
|
||||||
|
_range = range;
|
||||||
|
_stationSettings = stationSettings;
|
||||||
|
}
|
||||||
|
public bool CheckSightLine(Vector3 target)
|
||||||
|
{
|
||||||
|
RaycastHit hit;
|
||||||
|
Vector3 direction = target - _player.transform.position;
|
||||||
|
Ray ray = new Ray(new Vector3(_player.transform.position.x, 0.1f, _player.transform.position.z), direction);
|
||||||
|
Physics.Raycast(ray, out hit, _range);
|
||||||
|
if (hit.collider.tag == "Player")
|
||||||
|
{
|
||||||
|
Debug.Log("Target is visible");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("Target is not visible");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void InitializeTaskStations()
|
||||||
|
{
|
||||||
|
for(int i = 0; i < _gameClient.MyTasks.Count; i++)
|
||||||
|
{
|
||||||
|
System.Random rnd = new System.Random();
|
||||||
|
var task = _availableTasks[rnd.Next(0,_availableTasks.Count)];
|
||||||
|
CreateStation(_gameClient.MyTasks[i].Location, StationType.Task, _gameClient.MyTasks[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void CreateStation(Position pos, StationType type)
|
||||||
|
{
|
||||||
|
GameObject stationPrefab = null;
|
||||||
|
PlayerRole? reqRole = null;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case StationType.Task:
|
||||||
|
stationPrefab = _stationSettings.TaskStationPrefab;
|
||||||
|
reqRole = PlayerRole.Crew;
|
||||||
|
Debug.LogError("Task station creation not fully implemented, using task station prefab as placeholder");
|
||||||
|
break;
|
||||||
|
case StationType.Sabotage:
|
||||||
|
stationPrefab = _stationSettings.SabotageStationPrefab;
|
||||||
|
break;
|
||||||
|
case StationType.Meeting:
|
||||||
|
stationPrefab = _stationSettings.MeetingStationPrefab;
|
||||||
|
break;
|
||||||
|
case StationType.Body:
|
||||||
|
stationPrefab = _stationSettings.BodyStationPrefab;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Debug.LogError("Invalid station type");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var station = UnityEngine.Object.Instantiate(stationPrefab);
|
||||||
|
station.transform.position = pos.ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
|
Stations.Add(station);
|
||||||
|
IInteractable interactable = station.GetComponent<IInteractable>();
|
||||||
|
interactable.Location = pos;
|
||||||
|
interactable.InteractionRange = _range;
|
||||||
|
/*Stations = new List<GameObject>();
|
||||||
|
foreach (var task in _gameClient.MyTasks)
|
||||||
|
{
|
||||||
|
System.Random rnd = new System.Random();
|
||||||
|
int index = rnd.Next(0, _availableTasks.Count);
|
||||||
|
var station = UnityEngine.Object.Instantiate(_stationPrefab);
|
||||||
|
ITask TaskSettings = station.GetComponent<ITask>();
|
||||||
|
TaskSettings.TaskID = task.TaskId;
|
||||||
|
TaskSettings.TaskLocation = task.Location;
|
||||||
|
station.transform.position = TaskSettings.TaskLocation.ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
|
station.SetActive(false);
|
||||||
|
|
||||||
|
Stations.Add(station);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
private void CreateStation(Position pos, StationType type, GameTask taskInfo)
|
||||||
|
{
|
||||||
|
GameObject stationPrefab = _stationSettings.TaskStationPrefab;
|
||||||
|
var station = UnityEngine.Object.Instantiate(stationPrefab);
|
||||||
|
station.transform.position = pos.ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
|
Stations.Add(station);
|
||||||
|
TaskStation interactable = station.GetComponent<TaskStation>();
|
||||||
|
interactable.Location = pos;
|
||||||
|
interactable.InteractionRange = _range;
|
||||||
|
interactable.TaskID = taskInfo.TaskId;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckForPlayers()
|
||||||
|
{
|
||||||
|
foreach (var player in _gameClient.PlayerPositions.Where(p => p.Value.State == PlayerState.Alive))
|
||||||
|
{
|
||||||
|
if (CheckSightLine(player.Value.Position.ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center)))
|
||||||
|
{
|
||||||
|
Debug.Log($"Player {player.Key} is visible");
|
||||||
|
//TODO: Render player on map
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log($"Player {player.Key} is not visible");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/GameManager/GameManager_Game.cs.meta
Normal file
2
Assets/GameManager/GameManager_Game.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aba57c59fb2a19141a4868fa6a5c924c
|
||||||
254
Assets/GameManager/GameManager_Input.cs
Normal file
254
Assets/GameManager/GameManager_Input.cs
Normal file
@@ -0,0 +1,254 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using GeoSus.Client;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
namespace Subsystems
|
||||||
|
{
|
||||||
|
internal class CoroutineHost : MonoBehaviour
|
||||||
|
{
|
||||||
|
public CoroutineHost() { }
|
||||||
|
}
|
||||||
|
internal enum GPSState
|
||||||
|
{
|
||||||
|
Uninitialized,
|
||||||
|
Initializing,
|
||||||
|
Running,
|
||||||
|
Failed
|
||||||
|
}
|
||||||
|
public static class PositonExtensions
|
||||||
|
{
|
||||||
|
public static Position ToLocal(this Position position, Position center)
|
||||||
|
{
|
||||||
|
double latDiff = position.Lat - center.Lat;
|
||||||
|
double lonDiff = position.Lon - center.Lon;
|
||||||
|
double metersPerDegreeLat = 111320.0;
|
||||||
|
double metersPerDegreeLon = 111320.0 * Math.Cos(center.Lat * Math.PI / 180.0);
|
||||||
|
float x = (float)(lonDiff * metersPerDegreeLon);
|
||||||
|
float z = (float)(latDiff * metersPerDegreeLat);
|
||||||
|
return new Position(z, x);
|
||||||
|
}
|
||||||
|
public static Vector3 ToLocalVector3(this Position position, Position center)
|
||||||
|
{
|
||||||
|
return position.ToLocal(center).ToVector3(); //TODO: Implementace v subsystemech
|
||||||
|
}
|
||||||
|
public static Vector3 ToVector3(this Position position)
|
||||||
|
{
|
||||||
|
return new Vector3((float)position.Lon, 0, (float)position.Lat); //TODO: Implementace v subsystemech
|
||||||
|
}
|
||||||
|
public static double DistanceTo(this Vector3 pos, Vector3 other)
|
||||||
|
{
|
||||||
|
return Math.Sqrt((other.x - pos.x) * (other.x - pos.x) + (other.z - pos.z) * (other.z - pos.z));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GameManager_Input
|
||||||
|
{
|
||||||
|
private GameClient _gameClient;
|
||||||
|
private Position _currentPosition;
|
||||||
|
private Position _lastSentPosition;
|
||||||
|
private GameObject _player;
|
||||||
|
private bool _testMode;
|
||||||
|
|
||||||
|
private GPSState _GPSState = GPSState.Uninitialized;
|
||||||
|
private float _speed = 0.00001f;
|
||||||
|
private Position _mapCenter;
|
||||||
|
private CoroutineHost _coroutineHost = new CoroutineHost();
|
||||||
|
public GameManager_Input(GameClient gameClient, GameObject player, bool testMode)
|
||||||
|
{
|
||||||
|
_gameClient = gameClient;
|
||||||
|
_player = player;
|
||||||
|
_testMode = testMode;
|
||||||
|
}
|
||||||
|
public void positionCheck()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_gameClient.CurrentLobbyState.Phase == GamePhase.Playing)
|
||||||
|
{
|
||||||
|
if (_testMode)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (_currentPosition == null || _currentPosition == new Position(0, 0))
|
||||||
|
{
|
||||||
|
//Init blok
|
||||||
|
_currentPosition = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
|
_mapCenter = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
|
_lastSentPosition = _currentPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
TestPlayerPosition();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_GPSState == GPSState.Uninitialized)
|
||||||
|
{
|
||||||
|
_coroutineHost.StartCoroutine(InitiallizeGPS());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (_GPSState == GPSState.Initializing)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (_GPSState == GPSState.Running)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_currentPosition != _lastSentPosition)
|
||||||
|
{
|
||||||
|
_gameClient.UpdatePosition(_currentPosition);
|
||||||
|
_lastSentPosition = _currentPosition;
|
||||||
|
_player.transform.position = _currentPosition.ToLocalVector3(_mapCenter);
|
||||||
|
_player.transform.rotation = Quaternion.Euler(0, (float)CalculateHeading(_lastSentPosition.ToLocalVector3(_mapCenter), _currentPosition.ToLocalVector3(_mapCenter)), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Debug.Log(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Log("GPS failed, trying again...");
|
||||||
|
_GPSState = GPSState.Uninitialized;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (NullReferenceException ex) { Debug.Log(ex); }
|
||||||
|
}
|
||||||
|
private void TestPlayerPosition()
|
||||||
|
{
|
||||||
|
double x = Input.GetAxis("Horizontal");
|
||||||
|
double y = Input.GetAxis("Vertical");
|
||||||
|
Debug.Log($"Input: {x}, {y}");
|
||||||
|
_currentPosition = new Position( _lastSentPosition.Lat + y * _speed, _lastSentPosition.Lon + x * _speed);
|
||||||
|
Debug.Log($"Current Position: {_currentPosition.Lat}, {_currentPosition.Lon}");
|
||||||
|
var localCurrent = _currentPosition.ToLocalVector3(_mapCenter);
|
||||||
|
Debug.Log($"Local Current Position: {localCurrent}");
|
||||||
|
var heading = CalculateHeading(_lastSentPosition.ToLocalVector3(_mapCenter), localCurrent);
|
||||||
|
if (heading != null)
|
||||||
|
{
|
||||||
|
Debug.Log($"Heading: {heading}");
|
||||||
|
_player.transform.rotation = Quaternion.Euler(0, (float)heading, 0);
|
||||||
|
}
|
||||||
|
_player.transform.position = localCurrent;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_currentPosition != _lastSentPosition)
|
||||||
|
{
|
||||||
|
_gameClient.UpdatePosition(_currentPosition);
|
||||||
|
_lastSentPosition = _currentPosition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
_gameClient.UpdatePosition(_currentPosition);
|
||||||
|
_lastSentPosition = _currentPosition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private double? CalculateHeading(Vector3 first, Vector3 second)
|
||||||
|
{
|
||||||
|
double? heading = null;
|
||||||
|
if ((first - second).magnitude == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else if (first.x == second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if (first.x == second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
return 180;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z == second.z)
|
||||||
|
{
|
||||||
|
return 270;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z == second.z)
|
||||||
|
{
|
||||||
|
return 90;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI;
|
||||||
|
}
|
||||||
|
else if (first.x < second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI + 180;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z < second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI - 90;
|
||||||
|
}
|
||||||
|
else if (first.x > second.x && first.z > second.z)
|
||||||
|
{
|
||||||
|
heading = Math.Asin((second.z - first.z) / first.DistanceTo(second));
|
||||||
|
return (heading * 180) / Math.PI - 90;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return heading;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
IEnumerator InitiallizeGPS()
|
||||||
|
{
|
||||||
|
_GPSState = GPSState.Initializing;
|
||||||
|
if (!Input.location.isEnabledByUser)
|
||||||
|
{
|
||||||
|
Debug.LogError("Location not enabled on device or app does not have permission to access location");
|
||||||
|
}
|
||||||
|
// Starts the location service.
|
||||||
|
|
||||||
|
float desiredAccuracyInMeters = 10f;
|
||||||
|
float updateDistanceInMeters = 10f;
|
||||||
|
|
||||||
|
Input.location.Start(desiredAccuracyInMeters, updateDistanceInMeters);
|
||||||
|
|
||||||
|
// Waits until the location service initializes
|
||||||
|
int maxWait = 20;
|
||||||
|
while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
|
||||||
|
{
|
||||||
|
yield return new WaitForSeconds(1);
|
||||||
|
maxWait--;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the service didn't initialize in 20 seconds this cancels location service use.
|
||||||
|
if (maxWait < 1)
|
||||||
|
{
|
||||||
|
_GPSState = GPSState.Failed;
|
||||||
|
Debug.LogError("Timed out");
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
_GPSState = GPSState.Running;
|
||||||
|
yield return _coroutineHost.StartCoroutine(GPSService());
|
||||||
|
}
|
||||||
|
IEnumerator GPSService()
|
||||||
|
{
|
||||||
|
// Check if the user has location service enabled.
|
||||||
|
|
||||||
|
|
||||||
|
// If the connection failed this cancels location service use.
|
||||||
|
if (Input.location.status == LocationServiceStatus.Failed)
|
||||||
|
{
|
||||||
|
Debug.LogError("Unable to determine device location");
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If the connection succeeded, this retrieves the device's current location and displays it in the Console window.
|
||||||
|
_currentPosition = new Position(Input.location.lastData.latitude, Input.location.lastData.longitude);
|
||||||
|
Debug.Log("Location: " + Input.location.lastData.latitude + " " + Input.location.lastData.longitude + " " + Input.location.lastData.altitude + " " + Input.location.lastData.horizontalAccuracy + " " + Input.location.lastData.timestamp);
|
||||||
|
yield return new WaitForSeconds(5f);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stops the location service if there is no need to query location updates continuously.
|
||||||
|
yield return _coroutineHost.StartCoroutine(GPSService());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/GameManager/GameManager_Input.cs.meta
Normal file
2
Assets/GameManager/GameManager_Input.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2ef1abfb1e85a7943925f9dc3cfea742
|
||||||
381
Assets/GameManager/GameManager_Map.cs
Normal file
381
Assets/GameManager/GameManager_Map.cs
Normal file
@@ -0,0 +1,381 @@
|
|||||||
|
using GeoSus.Client;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Localization.Pseudo;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Subsystems{
|
||||||
|
[System.Serializable]
|
||||||
|
public class BuildingSettings
|
||||||
|
{
|
||||||
|
public Material ResidentalBuildingsMat;
|
||||||
|
public float ResidentalBuildingHeight;
|
||||||
|
public Material CommercialBuildingsMat;
|
||||||
|
public float CommercialBuildingHeight;
|
||||||
|
public Material IndustrialBuildingsMat;
|
||||||
|
public float IndustrialBuildingHeight;
|
||||||
|
public Material DefaultBuildingMat;
|
||||||
|
public float DefaultBuildingHeight;
|
||||||
|
}
|
||||||
|
[System.Serializable]
|
||||||
|
public class PathwaySettings
|
||||||
|
{
|
||||||
|
public Material FootwayMat;
|
||||||
|
public float FootwayWidth;
|
||||||
|
public Material PathMat;
|
||||||
|
public float PathWidth;
|
||||||
|
public Material StepsMat;
|
||||||
|
public float StepsWidth;
|
||||||
|
public Material CyclewayMat;
|
||||||
|
public float CyclewayWidth;
|
||||||
|
public Material PedestrianMat;
|
||||||
|
public float PedestrianWidth;
|
||||||
|
public Material RoadMat;
|
||||||
|
public float RoadWidth;
|
||||||
|
public Material ServiceMat;
|
||||||
|
public float ServiceWidth;
|
||||||
|
public Material ResidentialMat;
|
||||||
|
public float ResidentialWidth;
|
||||||
|
public Material TrackMat;
|
||||||
|
public float TrackWidth;
|
||||||
|
public Material DefaultMat;
|
||||||
|
public float DefaultWidth;
|
||||||
|
}
|
||||||
|
[System.Serializable]
|
||||||
|
public class AreaSettings
|
||||||
|
{
|
||||||
|
public Material ParkMat;
|
||||||
|
public Material GardenMat;
|
||||||
|
public Material PlaygroundMat;
|
||||||
|
public Material ForestMat;
|
||||||
|
public Material GrassMat;
|
||||||
|
public Material WaterMat;
|
||||||
|
public Material DefaultMat;
|
||||||
|
}
|
||||||
|
public class GameManager_Map
|
||||||
|
{
|
||||||
|
private GameClient _gameClient;
|
||||||
|
private GameObject _mapCenterPoint;
|
||||||
|
private Position _centerPosition;
|
||||||
|
private BuildingSettings _buildingSettings;
|
||||||
|
private PathwaySettings _pathwaySettings;
|
||||||
|
private AreaSettings _areaSettings;
|
||||||
|
private const float _metersPerUnit = 1f;
|
||||||
|
public GameManager_Map(GameClient gameClient, GameObject mapCenterPoint, BuildingSettings buildingSettings, PathwaySettings pathwaySettings, AreaSettings areaSettings)
|
||||||
|
{
|
||||||
|
_gameClient = gameClient;
|
||||||
|
_mapCenterPoint = mapCenterPoint;
|
||||||
|
_buildingSettings = buildingSettings;
|
||||||
|
_pathwaySettings = pathwaySettings;
|
||||||
|
_areaSettings = areaSettings;
|
||||||
|
}
|
||||||
|
public void BuildMap()
|
||||||
|
{
|
||||||
|
ClearChildren();
|
||||||
|
_centerPosition = _gameClient.CurrentLobbyState.MapData.Center;
|
||||||
|
GameObject buildingsRoot = new GameObject("Buildings");
|
||||||
|
buildingsRoot.transform.parent = _mapCenterPoint.transform;
|
||||||
|
|
||||||
|
GameObject pathRoot = new GameObject("Pathways");
|
||||||
|
pathRoot.transform.parent = _mapCenterPoint.transform;
|
||||||
|
|
||||||
|
GameObject areaRoot = new GameObject("Areas");
|
||||||
|
areaRoot.transform.parent = _mapCenterPoint.transform;
|
||||||
|
|
||||||
|
foreach (var building in _gameClient.CurrentLobbyState.MapData.GetBuildings())
|
||||||
|
{
|
||||||
|
string buildingType = "Unknown";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
buildingType = _gameClient.CurrentLobbyState.MapData.BuildingTypes[_gameClient.CurrentLobbyState.MapData.GetBuildings().IndexOf(building)];
|
||||||
|
}
|
||||||
|
catch (Exception ex) { Debug.Log($"Error: {ex.Message}"); }
|
||||||
|
building.Name = buildingType;
|
||||||
|
GameObject b = BuildBuildingMesh(building);
|
||||||
|
b.transform.parent = buildingsRoot.transform;
|
||||||
|
}
|
||||||
|
foreach (var path in _gameClient.CurrentLobbyState.MapData.GetPathways())
|
||||||
|
{
|
||||||
|
GameObject p = BuildPathwayMesh(path);
|
||||||
|
p.transform.parent = pathRoot.transform;
|
||||||
|
}
|
||||||
|
foreach (var area in _gameClient.CurrentLobbyState.MapData.GetAreas())
|
||||||
|
{
|
||||||
|
GameObject a = BuildAreaMesh(area);
|
||||||
|
a.transform.parent = areaRoot.transform;
|
||||||
|
}
|
||||||
|
//TODO: POIs
|
||||||
|
}
|
||||||
|
void ClearChildren()
|
||||||
|
{
|
||||||
|
List<GameObject> toDestroy = new List<GameObject>();
|
||||||
|
foreach (Transform t in _mapCenterPoint.transform)
|
||||||
|
toDestroy.Add(t.gameObject);
|
||||||
|
foreach (var g in toDestroy)
|
||||||
|
{
|
||||||
|
UnityEngine.Object.DestroyImmediate(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#region Mesh Building
|
||||||
|
GameObject BuildBuildingMesh(MapBuilding b)
|
||||||
|
{
|
||||||
|
var building = new GameObject($"Building_{b.Name ?? "Unknown"}");
|
||||||
|
|
||||||
|
// Výpočet středu budovy
|
||||||
|
Vector3 center = CalculatePolygonCenter(b.Outline);
|
||||||
|
building.transform.position = center;
|
||||||
|
|
||||||
|
// Vytvoření mesh pro budovu
|
||||||
|
MeshFilter meshFilter = building.AddComponent<MeshFilter>();
|
||||||
|
MeshRenderer meshRenderer = building.AddComponent<MeshRenderer>();
|
||||||
|
MeshCollider meshCollider = building.AddComponent<MeshCollider>();
|
||||||
|
building.tag = "Map";
|
||||||
|
|
||||||
|
float height;
|
||||||
|
Material mat;
|
||||||
|
switch (b.BuildingType.ToLower())
|
||||||
|
{
|
||||||
|
case "residential":
|
||||||
|
mat = _buildingSettings.ResidentalBuildingsMat;
|
||||||
|
height = _buildingSettings.ResidentalBuildingHeight;
|
||||||
|
break;
|
||||||
|
case "commercial":
|
||||||
|
mat = _buildingSettings.CommercialBuildingsMat;
|
||||||
|
height = _buildingSettings.CommercialBuildingHeight;
|
||||||
|
break;
|
||||||
|
case "industrial":
|
||||||
|
mat = _buildingSettings.IndustrialBuildingsMat;
|
||||||
|
height = _buildingSettings.IndustrialBuildingHeight;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mat = _buildingSettings.DefaultBuildingMat;
|
||||||
|
height = _buildingSettings.DefaultBuildingHeight;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Mesh mesh = CreateExtrudedPolygonMesh(b.Outline, height);
|
||||||
|
meshFilter.mesh = mesh;
|
||||||
|
meshCollider.sharedMesh = mesh;
|
||||||
|
|
||||||
|
//TODO: material by type
|
||||||
|
// Použijeme barvu podle typu budovy
|
||||||
|
meshRenderer.material = mat;
|
||||||
|
|
||||||
|
// Přidání collideru pro interakci
|
||||||
|
building.AddComponent<MeshCollider>();
|
||||||
|
return building;
|
||||||
|
}
|
||||||
|
GameObject BuildPathwayMesh(MapPathway w)
|
||||||
|
{
|
||||||
|
var path = new GameObject($"Path_{w.Name ?? "Unknown"}");
|
||||||
|
path.tag = "Map";
|
||||||
|
|
||||||
|
// Použijeme LineRenderer pro jednoduchost
|
||||||
|
LineRenderer line = path.AddComponent<LineRenderer>();
|
||||||
|
float width;
|
||||||
|
Material mat;
|
||||||
|
|
||||||
|
switch (w.PathType)
|
||||||
|
{
|
||||||
|
case PathType.Footway:
|
||||||
|
mat = _pathwaySettings.FootwayMat;
|
||||||
|
width = _pathwaySettings.FootwayWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Path:
|
||||||
|
mat = _pathwaySettings.PathMat;
|
||||||
|
width = _pathwaySettings.PathWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Steps:
|
||||||
|
mat = _pathwaySettings.StepsMat;
|
||||||
|
width = _pathwaySettings.PathWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Cycleway:
|
||||||
|
mat = _pathwaySettings.CyclewayMat;
|
||||||
|
width = _pathwaySettings.CyclewayWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Pedestrian:
|
||||||
|
mat = _pathwaySettings.PedestrianMat;
|
||||||
|
width = _pathwaySettings.PedestrianWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Road:
|
||||||
|
mat = _pathwaySettings.RoadMat;
|
||||||
|
width = _pathwaySettings.RoadWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Service:
|
||||||
|
mat = _pathwaySettings.ServiceMat;
|
||||||
|
width = _pathwaySettings.ServiceWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Residential:
|
||||||
|
mat = _pathwaySettings.ResidentialMat;
|
||||||
|
width = _pathwaySettings.ResidentialWidth;
|
||||||
|
break;
|
||||||
|
case PathType.Track:
|
||||||
|
mat = _pathwaySettings.TrackMat;
|
||||||
|
width = _pathwaySettings.TrackWidth;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mat = _pathwaySettings.DefaultMat;
|
||||||
|
width = _pathwaySettings.DefaultWidth;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
line.material = mat;
|
||||||
|
line.widthMultiplier = width;
|
||||||
|
|
||||||
|
// Nastavení bodů cesty
|
||||||
|
line.positionCount = w.Points.Count;
|
||||||
|
for (int i = 0; i < w.Points.Count; i++)
|
||||||
|
{
|
||||||
|
Vector3 pos = w.Points[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
|
pos.y = 0.1f; // Mírně nad zemí
|
||||||
|
line.SetPosition(i, pos);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
GameObject BuildAreaMesh(MapArea a)
|
||||||
|
{
|
||||||
|
var area = new GameObject($"Area_{a.Name ?? "Unknown"}");
|
||||||
|
area.tag = "Map";
|
||||||
|
|
||||||
|
MeshFilter meshFilter = area.AddComponent<MeshFilter>();
|
||||||
|
MeshRenderer meshRenderer = area.AddComponent<MeshRenderer>();
|
||||||
|
|
||||||
|
// Vytvoření plochého mesh
|
||||||
|
Mesh mesh = CreateFlatPolygonMesh(a.Outline);
|
||||||
|
meshFilter.mesh = mesh;
|
||||||
|
|
||||||
|
|
||||||
|
Material mat;
|
||||||
|
switch (a.AreaType)
|
||||||
|
{
|
||||||
|
case MapAreaType.Park:
|
||||||
|
mat = _areaSettings.ParkMat;
|
||||||
|
break;
|
||||||
|
case MapAreaType.Garden:
|
||||||
|
mat = _areaSettings.GardenMat;
|
||||||
|
break;
|
||||||
|
case MapAreaType.Playground:
|
||||||
|
mat = _areaSettings.PlaygroundMat;
|
||||||
|
break;
|
||||||
|
case MapAreaType.Forest:
|
||||||
|
mat = _areaSettings.ForestMat;
|
||||||
|
break;
|
||||||
|
case MapAreaType.Grass:
|
||||||
|
mat = _areaSettings.GrassMat;
|
||||||
|
break;
|
||||||
|
case MapAreaType.Water:
|
||||||
|
mat = _areaSettings.WaterMat;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
mat = _areaSettings.DefaultMat;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
meshRenderer.material = mat;
|
||||||
|
|
||||||
|
area.transform.position = new Vector3(0, 0.05f, 0); // Těsně nad zemí
|
||||||
|
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
//TODO: POIs
|
||||||
|
#endregion
|
||||||
|
#region Polygon Utils
|
||||||
|
private Vector3 CalculatePolygonCenter(List<Position> points)
|
||||||
|
{
|
||||||
|
Vector3 center = Vector3.zero;
|
||||||
|
foreach (var point in points)
|
||||||
|
{
|
||||||
|
center += point.ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center);
|
||||||
|
}
|
||||||
|
return center / points.Count;
|
||||||
|
}
|
||||||
|
private Mesh CreateExtrudedPolygonMesh(List<Position> outline, float height)
|
||||||
|
{
|
||||||
|
Mesh mesh = new Mesh();
|
||||||
|
|
||||||
|
int vertexCount = outline.Count;
|
||||||
|
|
||||||
|
// Vertices - spodní a horní podstava
|
||||||
|
Vector3[] vertices = new Vector3[vertexCount * 2];
|
||||||
|
Vector3 center = CalculatePolygonCenter(outline);
|
||||||
|
|
||||||
|
for (int i = 0; i < vertexCount; i++)
|
||||||
|
{
|
||||||
|
Vector3 pos = outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center;
|
||||||
|
vertices[i] = pos; // Spodní
|
||||||
|
vertices[i + vertexCount] = pos + Vector3.up * height; // Horní
|
||||||
|
}
|
||||||
|
|
||||||
|
// Triangles - jen boční stěny pro jednoduchost
|
||||||
|
List<int> triangles = new List<int>();
|
||||||
|
|
||||||
|
for (int i = 0; i < vertexCount; i++)
|
||||||
|
{
|
||||||
|
int next = (i + 1) % vertexCount;
|
||||||
|
|
||||||
|
// Boční stěna - dva trojúhelníky
|
||||||
|
triangles.Add(i);
|
||||||
|
triangles.Add(i + vertexCount);
|
||||||
|
triangles.Add(next);
|
||||||
|
|
||||||
|
triangles.Add(next);
|
||||||
|
triangles.Add(i + vertexCount);
|
||||||
|
triangles.Add(next + vertexCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Horní podstava - zjednodušená triangulace (fan)
|
||||||
|
if (vertexCount >= 3)
|
||||||
|
{
|
||||||
|
for (int i = 1; i < vertexCount - 1; i++)
|
||||||
|
{
|
||||||
|
triangles.Add(vertexCount); // Střed (první bod horní)
|
||||||
|
triangles.Add(vertexCount + i);
|
||||||
|
triangles.Add(vertexCount + i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mesh.vertices = vertices;
|
||||||
|
mesh.triangles = triangles.ToArray();
|
||||||
|
mesh.RecalculateNormals();
|
||||||
|
mesh.RecalculateBounds();
|
||||||
|
|
||||||
|
return mesh;
|
||||||
|
}
|
||||||
|
private Mesh CreateFlatPolygonMesh(List<Position> outline)
|
||||||
|
{
|
||||||
|
Mesh mesh = new Mesh();
|
||||||
|
|
||||||
|
int vertexCount = outline.Count;
|
||||||
|
Vector3[] vertices = new Vector3[vertexCount];
|
||||||
|
Vector3 center = CalculatePolygonCenter(outline);
|
||||||
|
|
||||||
|
for (int i = 0; i < vertexCount; i++)
|
||||||
|
{
|
||||||
|
vertices[i] = outline[i].ToLocalVector3(_gameClient.CurrentLobbyState.MapData.Center) - center;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Triangulace - fan pattern
|
||||||
|
List<int> triangles = new List<int>();
|
||||||
|
if (vertexCount >= 3)
|
||||||
|
{
|
||||||
|
for (int i = 1; i < vertexCount - 1; i++)
|
||||||
|
{
|
||||||
|
triangles.Add(0);
|
||||||
|
triangles.Add(i);
|
||||||
|
triangles.Add(i + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mesh.vertices = vertices;
|
||||||
|
mesh.triangles = triangles.ToArray();
|
||||||
|
mesh.RecalculateNormals();
|
||||||
|
|
||||||
|
return mesh;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/GameManager/GameManager_Map.cs.meta
Normal file
2
Assets/GameManager/GameManager_Map.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 71870ee18b89dd7438e5362ff9e02a3b
|
||||||
@@ -2,6 +2,9 @@ using GeoSus.Client;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Subsystems;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Subsystems
|
namespace Subsystems
|
||||||
{
|
{
|
||||||
@@ -10,6 +13,7 @@ namespace Subsystems
|
|||||||
private const string _serverAddress = "geosus.honzuvkod.dev";
|
private const string _serverAddress = "geosus.honzuvkod.dev";
|
||||||
private const int _serverPort = 7777;
|
private const int _serverPort = 7777;
|
||||||
private GameClient _gameClient;
|
private GameClient _gameClient;
|
||||||
|
private GameManager_Map _mapSubsystem;
|
||||||
public async void OpenConection()
|
public async void OpenConection()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
@@ -78,14 +82,35 @@ namespace Subsystems
|
|||||||
}
|
}
|
||||||
private void OnGameEvent(GameEvent gameEvent)
|
private void OnGameEvent(GameEvent gameEvent)
|
||||||
{
|
{
|
||||||
switch (gameEvent.Type)
|
switch (gameEvent.EventType)
|
||||||
{
|
{
|
||||||
case "PlayerJoined":
|
case "PlayerJoined":
|
||||||
Debug.Log($"Player {gameEvent.GetPayload<PlayerJoinedPayload>().DisplayName} joined");
|
Debug.Log($"Player {gameEvent.GetPayload<PlayerJoinedPayload>().DisplayName} joined");
|
||||||
HandlePlayerJoined(gameEvent);
|
break;
|
||||||
|
case "PlayerLeft":
|
||||||
|
Debug.Log($"Player {gameEvent.GetPayload<PlayerLeftPayload>()} left");
|
||||||
|
break;
|
||||||
|
case "GameStarting":
|
||||||
|
Debug.Log("Game is starting!");
|
||||||
|
break;
|
||||||
|
case "GameStarted":
|
||||||
|
Debug.Log("Game started");
|
||||||
|
break;
|
||||||
|
case "MapDataReady":
|
||||||
|
Debug.Log("Map data ready");
|
||||||
|
break;
|
||||||
|
case "PlayerMapDataReceived":
|
||||||
|
Debug.Log("Player map data recieved");
|
||||||
|
break;
|
||||||
|
case "MapDataError":
|
||||||
|
Debug.Log("Received MapData server error");
|
||||||
|
break;
|
||||||
|
case "SabotageStarted":
|
||||||
|
Debug.Log("Sabotage started");
|
||||||
|
HandleSabotageStarted(gameEvent);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Debug.Log("Received GameEvent of type: " + gameEvent.Type);
|
Debug.Log("Received GameEvent of type: " + gameEvent.EventType);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,20 +136,6 @@ namespace Subsystems
|
|||||||
Debug.LogError("Failed to create lobby: " + message.Error);
|
Debug.LogError("Failed to create lobby: " + message.Error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void HandlePlayerJoined(GameEvent gameEvent)
|
|
||||||
{
|
|
||||||
var payload = gameEvent.GetPayload<PlayerJoinedPayload>();
|
|
||||||
_gameClient.CurrentLobbyState.Players.Add(new PlayerInfo
|
|
||||||
{
|
|
||||||
ClientUuid = payload.ClientUuid,
|
|
||||||
DisplayName = payload.DisplayName,
|
|
||||||
IsOwner = false,
|
|
||||||
IsReady = false,
|
|
||||||
State = PlayerState.Alive
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void CrateLobby(double lat, double lon)
|
public void CrateLobby(double lat, double lon)
|
||||||
{
|
{
|
||||||
_gameClient.CreateLobby(new Position(lat, lon));
|
_gameClient.CreateLobby(new Position(lat, lon));
|
||||||
@@ -145,8 +156,41 @@ namespace Subsystems
|
|||||||
_gameClient.Disconnect();
|
_gameClient.Disconnect();
|
||||||
Application.Quit();
|
Application.Quit();
|
||||||
}
|
}
|
||||||
|
public void StartGame()
|
||||||
|
{
|
||||||
|
_gameClient.StartGame();
|
||||||
|
|
||||||
|
}
|
||||||
|
#region GameEvent Handlers
|
||||||
|
private void HandleSabotageStarted(GameEvent gameEvent)
|
||||||
|
{
|
||||||
|
SabotageStartedPayload payload = gameEvent.GetPayload<SabotageStartedPayload>();
|
||||||
|
switch (payload.Type)
|
||||||
|
{
|
||||||
|
case SabotageType.CommsBlackout:
|
||||||
|
for(int i = 0;i < payload.RequiredSimultaneousRepairs; i++)
|
||||||
|
{
|
||||||
|
//create stations
|
||||||
|
}
|
||||||
|
//Ui.alert
|
||||||
|
//DisableComms
|
||||||
|
return;
|
||||||
|
case SabotageType.CriticalMeltdown:
|
||||||
|
for (int i = 0; i < payload.RequiredSimultaneousRepairs; i++)
|
||||||
|
{
|
||||||
|
//create stations
|
||||||
|
}
|
||||||
|
//UI.alert
|
||||||
|
//UI Time remain
|
||||||
|
return;
|
||||||
|
|
||||||
|
default:
|
||||||
|
Debug.Log($"Sabotage of unknown type: {payload.Type}");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 989e9292fe24c2a4ba95ceae191dd330
|
guid: 9c2032ed1184ad7418cc415edf97b69e
|
||||||
@@ -2,7 +2,7 @@ using UnityEngine;
|
|||||||
using Subsystems;
|
using Subsystems;
|
||||||
using GeoSus.Client;
|
using GeoSus.Client;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace Subsystems
|
namespace Subsystems
|
||||||
{
|
{
|
||||||
@@ -11,15 +11,39 @@ namespace Subsystems
|
|||||||
private GameClient _gameClient;
|
private GameClient _gameClient;
|
||||||
private Canvas _CreateJoinLobby;
|
private Canvas _CreateJoinLobby;
|
||||||
private Canvas _InLobby;
|
private Canvas _InLobby;
|
||||||
public GameManager_UI(GameClient gameClient, Canvas CreateJoinLobby, Canvas InLobby)
|
private Canvas _LoadingScreen;
|
||||||
|
private Canvas _GameScreen;
|
||||||
|
public GameManager_UI(GameClient gameClient, Canvas CreateJoinLobby, Canvas InLobby, Canvas LoadingScreen, Canvas GameScreen)
|
||||||
{
|
{
|
||||||
_gameClient = gameClient;
|
_gameClient = gameClient;
|
||||||
_CreateJoinLobby = CreateJoinLobby;
|
_CreateJoinLobby = CreateJoinLobby;
|
||||||
|
_LoadingScreen = LoadingScreen;
|
||||||
|
_GameScreen = GameScreen;
|
||||||
_InLobby = InLobby;
|
_InLobby = InLobby;
|
||||||
_CreateJoinLobby.enabled = true;
|
_CreateJoinLobby.enabled = true;
|
||||||
_InLobby.enabled = false;
|
_InLobby.enabled = false;
|
||||||
|
_GameScreen.enabled = false;
|
||||||
|
_LoadingScreen.enabled = false;
|
||||||
}
|
}
|
||||||
public void UpdateLobbyUI()
|
public void UpdateLobbyUI()
|
||||||
|
{
|
||||||
|
if (_gameClient.CurrentLobbyState == null)
|
||||||
|
{
|
||||||
|
_CreateJoinLobby.enabled = true;
|
||||||
|
_InLobby.enabled = false;
|
||||||
|
_GameScreen.enabled = false;
|
||||||
|
_LoadingScreen.enabled = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (_gameClient.CurrentLobbyState.Phase == GamePhase.Loading)
|
||||||
|
{
|
||||||
|
_CreateJoinLobby.enabled = false;
|
||||||
|
_InLobby.enabled = false;
|
||||||
|
_GameScreen.enabled = false;
|
||||||
|
_LoadingScreen.enabled = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (_gameClient.CurrentLobbyState.Phase == GamePhase.Lobby)
|
||||||
{
|
{
|
||||||
_InLobby.enabled = true;
|
_InLobby.enabled = true;
|
||||||
_CreateJoinLobby.enabled = false;
|
_CreateJoinLobby.enabled = false;
|
||||||
@@ -30,6 +54,18 @@ namespace Subsystems
|
|||||||
playerList.text += player.DisplayName + "\n";
|
playerList.text += player.DisplayName + "\n";
|
||||||
}
|
}
|
||||||
_InLobby.transform.Find("JoinCode").GetComponent<TMPro.TMP_Text>().text = _gameClient.CurrentLobbyState.JoinCode;
|
_InLobby.transform.Find("JoinCode").GetComponent<TMPro.TMP_Text>().text = _gameClient.CurrentLobbyState.JoinCode;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (_gameClient.CurrentLobbyState.Phase == GamePhase.Playing)
|
||||||
|
{
|
||||||
|
_CreateJoinLobby.enabled = false;
|
||||||
|
_InLobby.enabled = false;
|
||||||
|
_GameScreen.enabled = true;
|
||||||
|
_LoadingScreen.enabled = false;
|
||||||
|
_GameScreen.transform.Find("Role").GetComponent<TMPro.TMP_Text>().text = _gameClient.MyRole.ToString() ;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: cbe0afd6cfb57b44781533cfa4ce4196
|
guid: f575016e02384774d88b46ed7f09579f
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: feb806f8c9bbde347862d714c4e96c61
|
|
||||||
@@ -2,20 +2,24 @@ using GeoSus.Client;
|
|||||||
using System;
|
using System;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public enum TaskType
|
/*public enum TaskType
|
||||||
{
|
{
|
||||||
Task //TODO: Typy úkolù
|
Task //TODO: Typy úkolù
|
||||||
|
}*/
|
||||||
|
[System.Serializable]
|
||||||
|
public class TaskData
|
||||||
|
{
|
||||||
|
//TaskType
|
||||||
|
public GameObject TaskPrefab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public interface ITask
|
public interface ITask
|
||||||
{
|
{
|
||||||
public string TaskID { get; } // Unikátní ID úkolu pro server
|
public string TaskID { get; set; } // Unikátní ID úkolu pro server
|
||||||
public TaskType TaskType { get; } // Typ úkolu
|
public TaskType TaskType { get; set; } // Typ úkolu
|
||||||
public string TaskName { get; } // Viditelný název úkolu
|
public string TaskName { get; set; } // Viditelný název úkolu
|
||||||
public (double, double) TaskLocation { get; } // Polohy na mapì
|
public Position TaskLocation { get; set; } // Polohy na mapì
|
||||||
public bool IsCompleted { get; } // Stav dokonèení úkolu
|
public bool IsCompleted { get; } // Stav dokončení úkolu
|
||||||
|
|
||||||
|
|
||||||
void Initialize(Action<ITask> onCompleted); // Vytvoøení tasku + naètení postupu
|
void Initialize(Action<ITask> onCompleted); // Vytvoøení tasku + naètení postupu
|
||||||
void ExitTask(Action<ITask> onExit); // Pøi opuštìní úkolu poslat hotovo / uložit postup / reset
|
void ExitTask(Action<ITask> onExit); // Pøi opuštìní úkolu poslat hotovo / uložit postup / reset
|
||||||
@@ -27,7 +31,7 @@ public class Wires : ITask{
|
|||||||
public string TaskID { get; set; } // Unikátní ID úkolu pro server
|
public string TaskID { get; set; } // Unikátní ID úkolu pro server
|
||||||
public TaskType TaskType { get; set; } // Typ úkolu
|
public TaskType TaskType { get; set; } // Typ úkolu
|
||||||
public string TaskName { get; set; } // Viditelný název úkolu
|
public string TaskName { get; set; } // Viditelný název úkolu
|
||||||
public (double, double) TaskLocation { get; set; } // Poloha na mapì
|
public Position TaskLocation { get; set; } // Poloha na mapì
|
||||||
public bool IsCompleted { get; private set; } // Stav dokonèení úkolu
|
public bool IsCompleted { get; private set; } // Stav dokonèení úkolu
|
||||||
private Action<ITask> _onCompleted;
|
private Action<ITask> _onCompleted;
|
||||||
|
|
||||||
@@ -35,6 +39,7 @@ public class Wires : ITask{
|
|||||||
{
|
{
|
||||||
IsCompleted = false;
|
IsCompleted = false;
|
||||||
_onCompleted = onCompleted;
|
_onCompleted = onCompleted;
|
||||||
|
|
||||||
}
|
}
|
||||||
public void ExitTask(Action<ITask> onExit) //Zavøení tasku
|
public void ExitTask(Action<ITask> onExit) //Zavøení tasku
|
||||||
{
|
{
|
||||||
@@ -51,3 +56,18 @@ public class Wires : ITask{
|
|||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
public enum StationType
|
||||||
|
{
|
||||||
|
Sabotage,
|
||||||
|
Task,
|
||||||
|
Meeting,
|
||||||
|
Body
|
||||||
|
}
|
||||||
|
public interface IInteractable
|
||||||
|
{
|
||||||
|
public StationType Type { get; set; } // Typ stanice
|
||||||
|
public Position Location { get; set; } // Pozice na mapě
|
||||||
|
public PlayerRole? ReqRole { get; set; } // Požadovaná role hráče Impostor / Crewmate / Any = null
|
||||||
|
public float InteractionRange { get; set; } // Dosah interakce
|
||||||
|
void Interact(PlayerRole role); // Spuštění interakce
|
||||||
|
}
|
||||||
2
Assets/GameManager/Interfaces.cs.meta
Normal file
2
Assets/GameManager/Interfaces.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e926b313c00d4f48ad68750c88817bf
|
||||||
83
Assets/GameManager/Stations.cs
Normal file
83
Assets/GameManager/Stations.cs
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
using GeoSus.Client;
|
||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
public class Station : IInteractable
|
||||||
|
{
|
||||||
|
public StationType Type { get; set; }
|
||||||
|
public Position Location { get; set; }
|
||||||
|
public PlayerRole? ReqRole { get; set; }
|
||||||
|
public float InteractionRange { get; set; }
|
||||||
|
protected GameObject interfaceInstance;
|
||||||
|
public GameObject Interface { get; set; } // Prefab pro interakci (napø. UI pro úkol nebo sabotáže)
|
||||||
|
|
||||||
|
public virtual void Interact(PlayerRole role)
|
||||||
|
{
|
||||||
|
if (ReqRole.HasValue && role != ReqRole.Value)
|
||||||
|
{
|
||||||
|
Debug.Log("You do not have the required role to interact with this station.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
interfaceInstance = UnityEngine.Object.Instantiate(Interface); // Zobrazí interakèní UI
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public Station(Position location, float interactionRange)
|
||||||
|
{
|
||||||
|
Location = location;
|
||||||
|
InteractionRange = interactionRange;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public class TaskStation : Station
|
||||||
|
{
|
||||||
|
public string TaskID { get; set; } // Unikátní ID úkolu pro server
|
||||||
|
private GameClient _gameClient;
|
||||||
|
public TaskStation(Position pos, float interactionRange, GameClient gameClient, string taskID) : base(pos, interactionRange)
|
||||||
|
{
|
||||||
|
Type = StationType.Task;
|
||||||
|
ReqRole = PlayerRole.Crew;
|
||||||
|
_gameClient = gameClient;
|
||||||
|
}
|
||||||
|
public ITask Task { get; set; }
|
||||||
|
public override void Interact(PlayerRole role)
|
||||||
|
{
|
||||||
|
if(interfaceInstance != null)
|
||||||
|
{
|
||||||
|
ResumeTask();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
base.Interact(role);
|
||||||
|
Task = interfaceInstance.GetComponent<ITask>();
|
||||||
|
Task.TaskID = TaskID;
|
||||||
|
Task.Initialize(OnTaskCompleted);
|
||||||
|
}
|
||||||
|
private void ResumeTask()
|
||||||
|
{
|
||||||
|
interfaceInstance.SetActive(true); // Zobrazí interakèní UI
|
||||||
|
}
|
||||||
|
private void OnTaskCompleted(ITask task)
|
||||||
|
{
|
||||||
|
_gameClient.CompleteTask(task.TaskID);
|
||||||
|
task.ExitTask(OnTaskExit);
|
||||||
|
Debug.Log($"Task {task.TaskName} completed and sent to server.");
|
||||||
|
}
|
||||||
|
private void OnTaskExit(ITask task)
|
||||||
|
{
|
||||||
|
if (task.IsCompleted)
|
||||||
|
{
|
||||||
|
UnityEngine.Object.Destroy(interfaceInstance); // Znièí interakèní UI
|
||||||
|
Debug.Log($"Task {task.TaskName} completed and sent to server.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
interfaceInstance.SetActive(false); // Skryje interakèní UI
|
||||||
|
Debug.Log($"Task {task.TaskName} was not completed, but exited.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
2
Assets/GameManager/Stations.cs.meta
Normal file
2
Assets/GameManager/Stations.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ca1825585bf9bc42bd3b11985048465
|
||||||
@@ -7,8 +7,8 @@ Material:
|
|||||||
m_CorrespondingSourceObject: {fileID: 0}
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_Name: New Material
|
m_Name: TestMaterial
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Parent: {fileID: 0}
|
m_Parent: {fileID: 0}
|
||||||
m_ModifiedSerializedProperties: 0
|
m_ModifiedSerializedProperties: 0
|
||||||
m_ValidKeywords: []
|
m_ValidKeywords: []
|
||||||
@@ -23,6 +23,10 @@ Material:
|
|||||||
m_SavedProperties:
|
m_SavedProperties:
|
||||||
serializedVersion: 3
|
serializedVersion: 3
|
||||||
m_TexEnvs:
|
m_TexEnvs:
|
||||||
|
- _AlphaTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
- _BumpMap:
|
- _BumpMap:
|
||||||
m_Texture: {fileID: 0}
|
m_Texture: {fileID: 0}
|
||||||
m_Scale: {x: 1, y: 1}
|
m_Scale: {x: 1, y: 1}
|
||||||
@@ -61,10 +65,12 @@ Material:
|
|||||||
m_Offset: {x: 0, y: 0}
|
m_Offset: {x: 0, y: 0}
|
||||||
m_Ints: []
|
m_Ints: []
|
||||||
m_Floats:
|
m_Floats:
|
||||||
|
- PixelSnap: 0
|
||||||
- _BumpScale: 1
|
- _BumpScale: 1
|
||||||
- _Cutoff: 0.5
|
- _Cutoff: 0.5
|
||||||
- _DetailNormalMapScale: 1
|
- _DetailNormalMapScale: 1
|
||||||
- _DstBlend: 0
|
- _DstBlend: 0
|
||||||
|
- _EnableExternalAlpha: 0
|
||||||
- _GlossMapScale: 1
|
- _GlossMapScale: 1
|
||||||
- _Glossiness: 0.5
|
- _Glossiness: 0.5
|
||||||
- _GlossyReflections: 1
|
- _GlossyReflections: 1
|
||||||
@@ -78,7 +84,9 @@ Material:
|
|||||||
- _UVSec: 0
|
- _UVSec: 0
|
||||||
- _ZWrite: 1
|
- _ZWrite: 1
|
||||||
m_Colors:
|
m_Colors:
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
- _Color: {r: 0, g: 0, b: 0, a: 1}
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _Flip: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_BuildTextureStacks: []
|
m_BuildTextureStacks: []
|
||||||
m_AllowLocking: 1
|
m_AllowLocking: 1
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 4cf6d1d65bc4af24fa762f6801fcc7c4
|
guid: 6744524496c8e1549882277283c132cc
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 2100000
|
mainObjectFileID: 2100000
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 8
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: Zeme_Textura
|
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _BumpMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailAlbedoMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailMask:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailNormalMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _EmissionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: d1443c0777d81e24caecc3991b8bf225, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MetallicGlossMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _OcclusionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParallaxMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 0
|
|
||||||
- _GlossMapScale: 1
|
|
||||||
- _Glossiness: 0.5
|
|
||||||
- _GlossyReflections: 1
|
|
||||||
- _Metallic: 0
|
|
||||||
- _Mode: 0
|
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.02
|
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _UVSec: 0
|
|
||||||
- _ZWrite: 1
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
//clankr
|
|
||||||
public class RotaceZeme : MonoBehaviour
|
|
||||||
{
|
|
||||||
public float rychlost = 20f;
|
|
||||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
||||||
void Start()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update is called once per frame
|
|
||||||
void Update()
|
|
||||||
{
|
|
||||||
transform.Rotate(Vector3.up, rychlost * Time.deltaTime);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2167308ece2e6664fa472e3dff700350
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 8
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: Zeme_Material
|
|
||||||
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _BumpMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailAlbedoMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailMask:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailNormalMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _EmissionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: d1443c0777d81e24caecc3991b8bf225, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MetallicGlossMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _OcclusionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParallaxMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 0
|
|
||||||
- _GlossMapScale: 1
|
|
||||||
- _Glossiness: 0.414
|
|
||||||
- _GlossyReflections: 1
|
|
||||||
- _Metallic: 0
|
|
||||||
- _Mode: 0
|
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.02
|
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _UVSec: 0
|
|
||||||
- _ZWrite: 1
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 404 KiB |
@@ -1,143 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d1443c0777d81e24caecc3991b8bf225
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 1
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 0
|
|
||||||
wrapV: 0
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 1
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 0
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 0
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 0
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 2
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: iOS
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID:
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!84 &8400000
|
|
||||||
RenderTexture:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: Zeme_vystup
|
|
||||||
m_ImageContentsHash:
|
|
||||||
serializedVersion: 2
|
|
||||||
Hash: 00000000000000000000000000000000
|
|
||||||
m_IsAlphaChannelOptional: 0
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Width: 1048
|
|
||||||
m_Height: 1048
|
|
||||||
m_AntiAliasing: 1
|
|
||||||
m_MipCount: -1
|
|
||||||
m_DepthStencilFormat: 94
|
|
||||||
m_ColorFormat: 8
|
|
||||||
m_MipMap: 0
|
|
||||||
m_GenerateMips: 1
|
|
||||||
m_SRGB: 0
|
|
||||||
m_UseDynamicScale: 0
|
|
||||||
m_UseDynamicScaleExplicit: 0
|
|
||||||
m_BindMS: 0
|
|
||||||
m_EnableCompatibleFormat: 1
|
|
||||||
m_EnableRandomWrite: 0
|
|
||||||
m_TextureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_FilterMode: 1
|
|
||||||
m_Aniso: 0
|
|
||||||
m_MipBias: 0
|
|
||||||
m_WrapU: 1
|
|
||||||
m_WrapV: 1
|
|
||||||
m_WrapW: 1
|
|
||||||
m_Dimension: 2
|
|
||||||
m_VolumeDepth: 1
|
|
||||||
m_ShadowSamplingMode: 2
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4d595312cdcdd094cbe411227603ceea
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 8400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,110 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0e125acbe6e192344a3f1c6d4a54f131
|
|
||||||
ModelImporter:
|
|
||||||
serializedVersion: 24200
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
materials:
|
|
||||||
materialImportMode: 2
|
|
||||||
materialName: 0
|
|
||||||
materialSearch: 1
|
|
||||||
materialLocation: 1
|
|
||||||
animations:
|
|
||||||
legacyGenerateAnimations: 4
|
|
||||||
bakeSimulation: 0
|
|
||||||
resampleCurves: 1
|
|
||||||
optimizeGameObjects: 0
|
|
||||||
removeConstantScaleCurves: 0
|
|
||||||
motionNodeName:
|
|
||||||
animationImportErrors:
|
|
||||||
animationImportWarnings:
|
|
||||||
animationRetargetingWarnings:
|
|
||||||
animationDoRetargetingWarnings: 0
|
|
||||||
importAnimatedCustomProperties: 0
|
|
||||||
importConstraints: 0
|
|
||||||
animationCompression: 1
|
|
||||||
animationRotationError: 0.5
|
|
||||||
animationPositionError: 0.5
|
|
||||||
animationScaleError: 0.5
|
|
||||||
animationWrapMode: 0
|
|
||||||
extraExposedTransformPaths: []
|
|
||||||
extraUserProperties: []
|
|
||||||
clipAnimations: []
|
|
||||||
isReadable: 0
|
|
||||||
meshes:
|
|
||||||
lODScreenPercentages: []
|
|
||||||
globalScale: 1
|
|
||||||
meshCompression: 0
|
|
||||||
addColliders: 0
|
|
||||||
useSRGBMaterialColor: 1
|
|
||||||
sortHierarchyByName: 1
|
|
||||||
importPhysicalCameras: 1
|
|
||||||
importVisibility: 1
|
|
||||||
importBlendShapes: 1
|
|
||||||
importCameras: 1
|
|
||||||
importLights: 1
|
|
||||||
nodeNameCollisionStrategy: 1
|
|
||||||
fileIdsGeneration: 2
|
|
||||||
swapUVChannels: 0
|
|
||||||
generateSecondaryUV: 0
|
|
||||||
useFileUnits: 1
|
|
||||||
keepQuads: 0
|
|
||||||
weldVertices: 1
|
|
||||||
bakeAxisConversion: 0
|
|
||||||
preserveHierarchy: 0
|
|
||||||
skinWeightsMode: 0
|
|
||||||
maxBonesPerVertex: 4
|
|
||||||
minBoneWeight: 0.001
|
|
||||||
optimizeBones: 1
|
|
||||||
generateMeshLods: 0
|
|
||||||
meshLodGenerationFlags: 0
|
|
||||||
maximumMeshLod: -1
|
|
||||||
meshOptimizationFlags: -1
|
|
||||||
indexFormat: 0
|
|
||||||
secondaryUVAngleDistortion: 8
|
|
||||||
secondaryUVAreaDistortion: 15.000001
|
|
||||||
secondaryUVHardAngle: 88
|
|
||||||
secondaryUVMarginMethod: 1
|
|
||||||
secondaryUVMinLightmapResolution: 40
|
|
||||||
secondaryUVMinObjectScale: 1
|
|
||||||
secondaryUVPackMargin: 4
|
|
||||||
useFileScale: 1
|
|
||||||
strictVertexDataChecks: 0
|
|
||||||
tangentSpace:
|
|
||||||
normalSmoothAngle: 60
|
|
||||||
normalImportMode: 0
|
|
||||||
tangentImportMode: 3
|
|
||||||
normalCalculationMode: 4
|
|
||||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
|
||||||
blendShapeNormalImportMode: 1
|
|
||||||
normalSmoothingSource: 0
|
|
||||||
referencedClips: []
|
|
||||||
importAnimation: 1
|
|
||||||
humanDescription:
|
|
||||||
serializedVersion: 3
|
|
||||||
human: []
|
|
||||||
skeleton: []
|
|
||||||
armTwist: 0.5
|
|
||||||
foreArmTwist: 0.5
|
|
||||||
upperLegTwist: 0.5
|
|
||||||
legTwist: 0.5
|
|
||||||
armStretch: 0.05
|
|
||||||
legStretch: 0.05
|
|
||||||
feetSpacing: 0
|
|
||||||
globalScale: 1
|
|
||||||
rootMotionBoneName:
|
|
||||||
hasTranslationDoF: 0
|
|
||||||
hasExtraRoot: 0
|
|
||||||
skeletonHasParents: 1
|
|
||||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
|
||||||
autoGenerateAvatarMappingIfUnspecified: 1
|
|
||||||
animationType: 2
|
|
||||||
humanoidOversampling: 1
|
|
||||||
avatarSetup: 0
|
|
||||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
|
||||||
importBlendShapeDeformPercent: 1
|
|
||||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
|
||||||
additionalBone: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e00f6447ca0dc7646b73cb387d282a47
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 2100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 8
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: HDR_multi_nebulae_1
|
|
||||||
m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _Tex:
|
|
||||||
m_Texture: {fileID: 8900000, guid: bbe6dc8ab03108a488246bb64d4078ff, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
|
||||||
- _Exposure: 1
|
|
||||||
- _Rotation: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b8ea26def9472484b87d08513faa2756
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 2100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 50581ab638a21e9488545b33a5c248d4
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 99349b837685d91408e5eb5bac237678
|
guid: 8f736798e2d13f14f903b26a2df0eed8
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
userData:
|
userData:
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 42774ddf02ffd1747898d12625c667b0
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3347745980e97824f9dda5b6043b57e7
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,23 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: fa27202025a24b6418e644af57608959
|
|
||||||
AudioImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 8
|
|
||||||
defaultSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
loadType: 0
|
|
||||||
sampleRateSetting: 0
|
|
||||||
sampleRateOverride: 44100
|
|
||||||
compressionFormat: 1
|
|
||||||
quality: 1
|
|
||||||
conversionMode: 0
|
|
||||||
preloadAudioData: 0
|
|
||||||
platformSettingOverrides: {}
|
|
||||||
forceToMono: 0
|
|
||||||
normalize: 1
|
|
||||||
loadInBackground: 0
|
|
||||||
ambisonic: 0
|
|
||||||
3D: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 6b025445e5a6de74780d752e5354a0a9
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,143 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: bbe6dc8ab03108a488246bb64d4078ff
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 1
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 0
|
|
||||||
wrapV: 0
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 1
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 0
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 0
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 0
|
|
||||||
textureShape: 2
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: iOS
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID:
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0cff73c6845b7cb40877239c2a7e25fc
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 8
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: HDR_multi_nebulae_1
|
|
||||||
m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Parent: {fileID: 0}
|
|
||||||
m_ModifiedSerializedProperties: 0
|
|
||||||
m_ValidKeywords: []
|
|
||||||
m_InvalidKeywords: []
|
|
||||||
m_LightmapFlags: 4
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_LockedProperties:
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _Tex:
|
|
||||||
m_Texture: {fileID: 8900000, guid: bbe6dc8ab03108a488246bb64d4078ff, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Ints: []
|
|
||||||
m_Floats:
|
|
||||||
- _Exposure: 1
|
|
||||||
- _Rotation: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
m_AllowLocking: 1
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 628af2744593aaf4fbadc7aec37b8b41
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 2100000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 MiB |
@@ -1,143 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 34374eb00c6777a4e973713c0773ad4a
|
|
||||||
TextureImporter:
|
|
||||||
internalIDToNameTable: []
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 13
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 1
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapsPreserveCoverage: 0
|
|
||||||
alphaTestReferenceValue: 0.5
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
flipGreenChannel: 0
|
|
||||||
isReadable: 0
|
|
||||||
streamingMipmaps: 0
|
|
||||||
streamingMipmapsPriority: 0
|
|
||||||
vTOnly: 0
|
|
||||||
ignoreMipmapLimit: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
filterMode: 1
|
|
||||||
aniso: 1
|
|
||||||
mipBias: 0
|
|
||||||
wrapU: 1
|
|
||||||
wrapV: 1
|
|
||||||
wrapW: 0
|
|
||||||
nPOTScale: 0
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 1
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
|
||||||
alphaUsage: 1
|
|
||||||
alphaIsTransparency: 1
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 8
|
|
||||||
textureShape: 1
|
|
||||||
singleChannelComponent: 0
|
|
||||||
flipbookRows: 1
|
|
||||||
flipbookColumns: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
ignorePngGamma: 0
|
|
||||||
applyGammaDecoding: 0
|
|
||||||
swizzle: 50462976
|
|
||||||
cookieLightType: 0
|
|
||||||
platformSettings:
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 4
|
|
||||||
buildTarget: iOS
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
ignorePlatformSupport: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
customData:
|
|
||||||
physicsShape: []
|
|
||||||
bones: []
|
|
||||||
spriteID: 5e97eb03825dee720800000000000000
|
|
||||||
internalID: 0
|
|
||||||
vertices: []
|
|
||||||
indices:
|
|
||||||
edges: []
|
|
||||||
weights: []
|
|
||||||
secondaryTextures: []
|
|
||||||
spriteCustomMetadata:
|
|
||||||
entries: []
|
|
||||||
nameFileIdTable: {}
|
|
||||||
mipmapLimitGroupName:
|
|
||||||
pSDRemoveMatte: 0
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 52bdfdf1d7e2c6c40a8cdd507da420a8
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a173f2d64d95c1a4f804bea472fbde86
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1957a0d79dde42e4f87f545f2382a021
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d85917757cff61e46bfbffa6ca06d452
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 883a00b104e0a9f4195fa2ed71d989e6
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 635ebc63895da35489dd1dba41818ea5
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8c12c1f44e7180c4caf6d4a2d8690d7a
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ac97b3e85e9597848a8eb1b9e30e59a9
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 324e45e0718fdb44ca40dfde0812dd33
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4f264d72c6679ab4393c88b7a78aaf6a
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4fd8bc71bae2ede41a6ae4eb91913236
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 50c6d237583d76d4bbd65fea0f7c92e2
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: fefbc330c0e86ef43a97fb476e9b0783
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4339700de0751774da9c5890da773023
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a36dfaed1675be1408198118d6833d59
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f5e78d40275d15f4b9290d113a80ea8b
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 8a13e20c49f7db440aa1e34c53005080
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0a66ee802c65aa84abf1b5a98d05c226
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 75dccbc62be30734ebd6f3c655a931cd
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Binary file not shown.
@@ -1,21 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f062dd6db98f07a4db0ada7644cafc09
|
|
||||||
TrueTypeFontImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
fontSize: 16
|
|
||||||
forceTextureCase: -2
|
|
||||||
characterSpacing: 0
|
|
||||||
characterPadding: 1
|
|
||||||
includeFontData: 1
|
|
||||||
fontNames:
|
|
||||||
- Nunito
|
|
||||||
fallbackFontReferences: []
|
|
||||||
customCharacters:
|
|
||||||
fontRenderingMode: 0
|
|
||||||
ascentCalculationMode: 1
|
|
||||||
useLegacyBoundsCalculation: 0
|
|
||||||
shouldRoundAdvanceValue: 1
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 60b609405d1182342a835866a25ce8ae
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2ac55b32f60c0f44691e1588d19d610f
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: bb0f4b90bb4ebfe47b92da609060694b
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user