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);
    }
Example #2
0
        /// <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;
                    }
                }
            }
        }