public void StartLootOneMove(LootObjData lootObjData, Vector3 pos, Vector3 offset) { Assertion.Check(lootObjData._lootObject != null); //active the move object lootObjData._lootObject.SetActive(true); //set transfrom and start move LootMove move = lootObjData._lootObject.GetComponent <LootMove>(); move.transform.localPosition = pos; move.StartMove(offset, _time); }
//WARNING!!!!!!!!!!! only use for cheat drop!!! public void LootOneForCheatDrop(LootObjData lootObjData, Vector3 pos, Vector3 offset) { GameObject moveObj = new GameObject("Loot[" + lootObjData._lootId + "]"); LootMove move = moveObj.AddComponent <LootMove>(); move.transform.parent = _lootRoot; move.transform.localPosition = pos; GameObject lootMovePrefab = null; GameObject lootObjPrefab = null; GameObject lootParticlePrefab = null; int particleIndex = 0; if (lootObjData._lootId == "money") { lootMovePrefab = _lootMoveParticlePrefab; if (lootObjData._lootCount <= _smallScMax) { lootObjPrefab = _lootSmallScPrefab; particleIndex = 0; } else if (lootObjData._lootCount <= _middleScMax) { lootObjPrefab = _lootMiddleScPrefab; particleIndex = 1; } else { lootObjPrefab = _lootLargeScPrefab; particleIndex = 2; } } else { lootMovePrefab = _lootMoveMathfPrefab; ItemData itemData = getItemData(lootObjData._lootId); if (itemData.subType == ItemSubType.weapon) { // get entity. int role = (int)PlayerInfo.Instance.Role; string entityPath = itemData.instance; GameObject entity = InJoy.AssetBundles.AssetBundles.Load(entityPath) as GameObject; FCEquipmentsBase eb = entity.GetComponent <FCEquipmentsBase>(); Assertion.Check(eb != null); // get model. Assertion.Check(eb._equipmentSlots.Length > 0); GameObject model = InJoy.AssetBundles.AssetBundles.Load(eb._equipmentSlots[0]._modelPath) as GameObject; if (model == null) { Debug.LogError("[Loot Manager] Can not find asset " + eb._equipmentSlots[0]._modelPath); } lootObjPrefab = model; } else { string path = _lootArmors[(int)itemData.subType]; int level = itemData.rareLevel; string [] levelsuffix = new string[] { "0", "0", "1", "2", "2", "2", "2", "2" }; path = path.Replace(".prefab", levelsuffix[level] + ".prefab"); GameObject model = InJoy.AssetBundles.AssetBundles.Load(path) as GameObject; if (model == null) { Debug.LogError("[Loot Manager] Can not find asset " + path); } lootObjPrefab = model; } particleIndex = itemData.rareLevel; } if (particleIndex > _lootParticlePath.Count - 1) { particleIndex = _lootParticlePath.Count - 1; } lootParticlePrefab = _lootParticlePrefab[particleIndex]; move.SetData(lootMovePrefab, lootObjPrefab, lootParticlePrefab, lootObjData._lootId, lootObjData._lootCount, _liftTime); move.StartMoveForCheatDrop(offset, _time); }
public void PrepareOneLootPrefab(LootObjData lootObjData) { GameObject lootMovePrefab = null; //move trace GameObject lootObjPrefab = null; //loot obj GameObject lootParticlePrefab = null; //particle //creata move object GameObject moveObj = new GameObject("Loot[" + lootObjData._lootId + "]"); lootObjData._lootObject = moveObj; LootMove move = moveObj.AddComponent <LootMove>(); //add move obj to root move.transform.parent = _lootRoot; Debug.Log("prepare loot object " + lootObjData._lootId + ":" + lootObjData._lootObject.name); //determine the 3 prefabs int particleIndex = 0; if (lootObjData._lootId == "money") { lootMovePrefab = _lootMoveParticlePrefab; if (lootObjData._lootCount <= _smallScMax) { lootObjPrefab = _lootSmallScPrefab; particleIndex = 0; } else if (lootObjData._lootCount <= _middleScMax) { lootObjPrefab = _lootMiddleScPrefab; particleIndex = 1; } else { lootObjPrefab = _lootLargeScPrefab; particleIndex = 2; } } else { ItemData itemData = getItemData(lootObjData._lootId); if (itemData == null) { Destroy(moveObj); Debug.LogError("Loot id (" + lootObjData._lootId + ") not found."); return; } lootMovePrefab = _lootMoveMathfPrefab; if (itemData.subType == ItemSubType.weapon) { // get entity. int role = (int)PlayerInfo.Instance.Role; string entityPath = itemData.instance; GameObject entity = InJoy.AssetBundles.AssetBundles.Load(entityPath) as GameObject; FCEquipmentsBase eb = entity.GetComponent <FCEquipmentsBase>(); Assertion.Check(eb != null); eb = EquipmentAssembler.Singleton.CheckEquipmentResource(eb); // get model. Assertion.Check(eb._equipmentSlots.Length > 0); GameObject model = InJoy.AssetBundles.AssetBundles.Load(eb._equipmentSlots[0]._modelPath) as GameObject; if (model == null) { Debug.LogError("[Loot Manager] Can not find asset " + eb._equipmentSlots[0]._modelPath); } lootObjPrefab = model; } else { string path; if (itemData.subType == ItemSubType.none) { path = _lootArmors[(int)ItemSubType.weapon]; } else { path = _lootArmors[(int)itemData.subType]; } int level = itemData.rareLevel; string [] levelsuffix = new string[] { "0", "0", "1", "2", "2", "2", "2", "2" }; path = path.Replace(".prefab", levelsuffix[level] + ".prefab"); GameObject model = InJoy.AssetBundles.AssetBundles.Load(path) as GameObject; if (model == null) { Debug.LogError("[Loot Manager] Can not find asset " + path); } lootObjPrefab = model; } particleIndex = itemData.rareLevel; } if (particleIndex > _lootParticlePath.Count - 1) { particleIndex = _lootParticlePath.Count - 1; } lootParticlePrefab = _lootParticlePrefab[particleIndex]; move.SetData(lootMovePrefab, lootObjPrefab, lootParticlePrefab, lootObjData._lootId, lootObjData._lootCount, _liftTime); move.PrepareMovePrefabs(); moveObj.SetActive(false); }