public static SceneStaticEffectAgent Create(int protoId, Vector3 pos, Quaternion rotation, Vector3 scale, int id = SceneMan.InvalidID) { if (null == _protoDescs) { LoadData(); } PrototypeDesc desc = _protoDescs.Find(it => it._pid == protoId); if (desc != null) { SceneStaticEffectAgent ret = new SceneStaticEffectAgent(desc._strPrefab, desc._strAssetbundle, pos, rotation, scale, id); return(ret); } return(null); }
/// <summary> /// Creates all the agents from data source /// </summary> void CreateAgents(SpawnDataSource ds) { foreach (KeyValuePair <int, MonsterSpawnPoint> kvp in ds.monsters) { SceneEntityAgent agent = _createMstAgent(kvp.Value, true, null, null, !kvp.Value.isDead); agent.ScenarioId = kvp.Value.ID; kvp.Value.agent = agent; AddMstDeadAgent(agent); } foreach (KeyValuePair <int, MonsterSpawnArea> kvp in ds.areas) { for (int i = 0; i < kvp.Value.Spawns.Count; i++) { MonsterSpawnArea.SocialSpawns mss = kvp.Value.Spawns[i]; if (!mss.isSocial) { for (int j = 0; j < mss.spawnPoints.Count; j++) { MonsterSpawnPoint sp = mss.spawnPoints[j]; SceneEntityAgent agent = _createMstAgent(sp, true, kvp.Value, null, !sp.isDead); agent.ScenarioId = kvp.Value.ID; sp.agent = agent; AddMstDeadAgent(agent); } } else { _createMstAgent(mss.centerSP, false, kvp.Value, mss.spawnPoints.ToArray()); } } } CreateNpcAgents(ds.npcs); CreateDoodadAgents(ds.doodads); foreach (KeyValuePair <int, EffectSpwanPoint> kvp in ds.effects) { SceneStaticEffectAgent agent = SceneStaticEffectAgent.Create(kvp.Value.Prototype, kvp.Value.spawnPos, kvp.Value.Rotation, kvp.Value.Scale); agent.ScenarioId = kvp.Value.ID; SceneMan.AddSceneObj(agent); } foreach (KeyValuePair <int, ItemSpwanPoint> kvp in ds.items) { if (kvp.Value.isNew) { DragArticleAgent agent = DragArticleAgent.PutItemByProroId(kvp.Value.Prototype , kvp.Value.spawnPos , kvp.Value.Scale , kvp.Value.Rotation , kvp.Value.CanPickup , kvp.Value.IsTarget); if (agent != null) { agent.ScenarioId = kvp.Value.ID; kvp.Value.isNew = false; kvp.Value.ItemObjId = agent.itemDrag.itemObj.instanceId; } } } }