private void CreateCacheModel(string equipPosition, Dictionary <string, GameObject> models) { DestroyCacheModel(equipPosition); if (models == null) { return; } foreach (var model in models) { EquipmentModelContainer container; if (!CacheEquipmentModelContainers.TryGetValue(model.Key, out container)) { continue; } if (container.defaultModel != null) { container.defaultModel.SetActive(false); } } cacheModels[equipPosition] = models; }
private void DestroyCacheModel(string equipPosition) { Dictionary <string, GameObject> oldModels; if (!string.IsNullOrEmpty(equipPosition) && cacheModels.TryGetValue(equipPosition, out oldModels) && oldModels != null) { foreach (var model in oldModels) { Destroy(model.Value); EquipmentModelContainer container; if (!CacheEquipmentModelContainers.TryGetValue(model.Key, out container)) { continue; } if (container.defaultModel != null) { container.defaultModel.SetActive(true); } } cacheModels.Remove(equipPosition); } }
public void InstantiateEquipModel(string equipPosition, EquipmentModel[] equipmentModels) { if (equipmentModels == null || equipmentModels.Length == 0) { return; } var gameInstance = GameInstance.Singleton; var models = new Dictionary <string, GameObject>(); foreach (var equipmentModel in equipmentModels) { var equipSocket = equipmentModel.equipSocket; var model = equipmentModel.model; if (string.IsNullOrEmpty(equipSocket) || model == null) { continue; } EquipmentModelContainer container; if (!CacheEquipmentModelContainers.TryGetValue(equipSocket, out container)) { continue; } var newModel = Instantiate(model, container.transform); newModel.transform.localPosition = Vector3.zero; newModel.transform.localEulerAngles = Vector3.zero; newModel.transform.localScale = Vector3.one; newModel.gameObject.SetActive(true); newModel.gameObject.layer = gameInstance.characterLayer; newModel.RemoveComponentsInChildren <Collider>(false); // Quaternion equipRotation = new Quaternion(equipmentModel.xRotationOffset, 0, 0, 0); //newModel.transform.localRotation = equipRotation; Debug.Log(newModel.transform.rotation); models.Add(equipSocket, newModel); } CreateCacheModel(equipPosition, models); }