/// <summary> /// Tries to spawn at the specified position, does not spawn if position is not valid (impassable) /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); position.z = 0; if (MatrixManager.IsPassableAt(position, true)) { if (CustomNetworkManager.IsServer) { if (clothingData != null) { ClothFactory.CreateCloth(clothingData, position); } else { PoolManager.PoolNetworkInstantiate(prefab, position); } } else { if (clothingData != null) { DevSpawnMessage.Send(clothingData.name, true, (Vector3)position); } else { DevSpawnMessage.Send(prefab.name, false, (Vector3)position); } } } }
/// <summary> /// Tries to spawn at the specified position, does not spawn if position is not valid (impassable) /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); position.z = 0; if (!MatrixManager.IsPassableAt(position, true) && !MatrixManager.IsTableAt(position, true)) { return; } if (CustomNetworkManager.IsServer) { if (clothingData != null) { Spawn.ServerCloth(clothingData, position); } else { Spawn.ServerPrefab(prefab, position); } } else { if (clothingData != null) { DevSpawnMessage.Send(clothingData.name, true, (Vector3)position); } else { DevSpawnMessage.Send(prefab.name, false, (Vector3)position); } } }
/// <summary> /// Ask the server to spawn a specific prefab /// </summary> /// <param name="name">name of the prefab to instantiate, or the hier of the unicloth to instantiate (network synced)</param> /// <param name="isUniCloth">true iff name is a hier (for a unicloth), false if name is a prefab</param> /// <param name="worldPosition">world position to spawn it at</param> /// <returns></returns> public static void Send(string name, Vector2 worldPosition) { DevSpawnMessage msg = new DevSpawnMessage { Name = name, WorldPosition = worldPosition }; msg.Send(); }
/// <summary> /// Ask the server to spawn a specific prefab /// </summary> /// <param name="name">name of the prefab to instantiate, or the hier of the unicloth to instantiate (network synced)</param> /// <param name="isUniCloth">true iff name is a hier (for a unicloth), false if name is a prefab</param> /// <param name="worldPosition">world position to spawn it at</param> /// <returns></returns> public static void Send(string name, bool isUniCloth, Vector2 worldPosition) { DevSpawnMessage msg = new DevSpawnMessage { Name = name, IsUniCloth = isUniCloth, WorldPosition = worldPosition }; msg.Send(); }
/// <summary> /// Ask the server to spawn a specific prefab /// </summary> /// <param name="name">name of the prefab to instantiate, or the hier of the unicloth to instantiate (network synced)</param> /// <param name="isUniCloth">true iff name is a hier (for a unicloth), false if name is a prefab</param> /// <param name="worldPosition">world position to spawn it at</param> /// <returns></returns> public static void Send(string name, Vector2 worldPosition, string adminId, string adminToken) { DevSpawnMessage msg = new DevSpawnMessage { Name = name, WorldPosition = worldPosition, AdminId = adminId, AdminToken = adminToken }; msg.Send(); }
/// <summary> /// Tries to spawn at the specified position. Lets you spawn anywhere, even impassable places. Go hog wild! /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); position.z = 0; if (CustomNetworkManager.IsServer) { Spawn.ServerPrefab(prefab, position); } else { DevSpawnMessage.Send(prefab.name, (Vector3)position); } }
/// <summary> /// Tries to spawn at the specified position. Lets you spawn anywhere, even impassable places. Go hog wild! /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); position.z = 0; if (CustomNetworkManager.IsServer) { Spawn.ServerPrefab(prefab, position); } else { DevSpawnMessage.Send(prefab.name, (Vector3)position, ServerData.UserID, PlayerList.Instance.AdminToken); } }
/// <summary> /// Tries to spawn at the specified position. Lets you spawn anywhere, even impassable places. Go hog wild! /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); if (CustomNetworkManager.IsServer) { Spawn.ServerPrefab(prefab, position); UIManager.Instance.adminChatWindows.adminToAdminChat.ServerAddChatRecord( $"{PlayerManager.LocalPlayer.Player().Username} spawned a {prefab.name} at {position}", ServerData.UserID); } else { DevSpawnMessage.Send(prefab, (Vector3)position, ServerData.UserID, PlayerList.Instance.AdminToken); } }
/// <summary> /// Tries to spawn at the specified position. Lets you spawn anywhere, even impassable places. Go hog wild! /// </summary> private void TrySpawn() { Vector3Int position = cursorObject.transform.position.RoundToInt(); if (CustomNetworkManager.IsServer) { Spawn.ServerPrefab(prefab, position); var player = PlayerManager.LocalPlayer.Player(); UIManager.Instance.adminChatWindows.adminLogWindow.ServerAddChatRecord( $"{player.Username} spawned a {prefab.name} at {position}", player.UserId); } else { DevSpawnMessage.Send(prefab, (Vector3)position); } }
/// <summary> /// Ask the server to spawn a specific prefab /// </summary> /// <param name="prefab">prefab to instantiate, must be networked (have networkidentity)</param> /// <param name="worldPosition">world position to spawn it at</param> /// <param name="adminId">user id of the admin trying to perform this action</param> /// <param name="adminToken">token of the admin trying to perform this action</param> /// <returns></returns> public static void Send(GameObject prefab, Vector2 worldPosition, string adminId, string adminToken) { if (prefab.TryGetComponent <NetworkIdentity>(out var networkIdentity)) { DevSpawnMessage msg = new DevSpawnMessage { PrefabAssetID = networkIdentity.assetId, WorldPosition = worldPosition, AdminId = adminId, AdminToken = adminToken }; msg.Send(); } else { Logger.LogWarningFormat("Prefab {0} which you are attempting to spawn has no NetworkIdentity, thus cannot" + " be spawned.", Category.Admin, prefab); } }