示例#1
0
    public static void IniBestiary()
    {
        MonsterList  = new Monster [Enum.GetValues(typeof(MonsterName) ).Length];
        _PrefabManager = GameObject.FindGameObjectWithTag("GameMaster").GetComponent<PrefabManager>();

        IniMonsterList();
    }
示例#2
0
	void Awake()
	{
		mInstance = this;

		testEnemyPool = new GameObjectPool(testEnemy, 1);
		projectilePool = new GameObjectPool(projectile, 10);
	}
示例#3
0
 void Start()
 {
     Instance = this;
     prefabDict = new Dictionary<string, GameObject>();
     for (int i = 0, len = keyList.Count; i < len; i++)
     {
         string key = keyList[i];
         GameObject prefab = prefabList[i];
         prefabDict[key] = prefab;
     }
 }
示例#4
0
    private void GameQuit()
    {
        DG.Tweening.DOTween.isQuitting = true;
        SaveUnityTXTLog();
        InputManager.Clear();
        EntityFactory.Instance.Clear();
        UTopNameManager.Instance.Clear();
        USpeedUI.Blood.UBloodManager.Instance.Clear();
        SoundManager.Clear();
        SkinManager.Clear();
        PrefabManager.Clear();
        ImageSetting.Clear();
        if (AnimationEffectFactory.Instance)
        {
            AnimationEffectFactory.Instance.UnLoadAnimEffectData();
        }

        if (LightingEffectFactory.Instance)
        {
            LightingEffectFactory.Instance.ClearCache();
            LightingEffectFactory.Instance.ClearWhenGameEnd();
        }

        if (Application.isEditor)
        {
            Shader.globalMaximumLOD = int.MaxValue;
        }

        ImageEffectManager.API_GameEnd();
        SafeZoneEffectManager.Clear();
        //清除资源
        AssetBundleManager.Clear();
        SceneResInfoManager.ClearOnAppQuit();
        Resources.UnloadUnusedAssets();
        //GC.Collect();
    }
示例#5
0
        public static void PrefabHierachyOptions(PrefabHierarchyTreeView treeView, ref string name, ref bool replace)
        {
            Elements.MiniBoldLabel(ToolTips.hierachyOptionsLabel);

            Elements.BeginToolbarHorizontal();
            name = Elements.ToolbarTextField(name);
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.hierachyCategoryRename))
            {
                name = String.IsNullOrEmpty(name) ? "" : name;
                PrefabManager.RenamePrefabCategories(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView), name);
                ReloadTreeViews();
            }
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            replace = Elements.ToolbarToggle(ToolTips.hierachyReplace, replace);
            if (Elements.ToolbarButton(ToolTips.hierachyIDRename))
            {
                if (uint.TryParse(name, out uint result))
                {
                    PrefabManager.RenamePrefabIDs(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView), result, replace);
                    ReloadTreeViews();
                }
            }
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.hierachyDelete))
            {
                PrefabManager.DeletePrefabs(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView));
            }
            Elements.EndToolbarHorizontal();
        }
示例#6
0
 // Use this for initialization
 void Start()
 {
     StarSystem    = GetComponent <StarSystem>();
     PrefabManager = GetComponent <PrefabManager>();
     BattlePrefab  = PrefabManager.GetPrefab("Battle");
 }
示例#7
0
 // Start is called before the first frame update
 void Start()
 {
     gameManager   = GameObject.FindWithTag("GameManager").GetComponent <GameManager>();
     prefabManager = GameObject.FindWithTag("PrefabManager").GetComponent <PrefabManager>();
 }
示例#8
0
 public void StartGame()
 {
     Debug.Log("Starting gamelogic...");
     PrefabManager.Instantiate("Portraits", transform.position);
     Invoke("RealStart", 5f);
 }
 void Start()
 {
     Manager = GameObject.FindGameObjectWithTag("RespawnManager").GetComponent<PrefabManager>();
 }
示例#10
0
 private void Awake()
 {
     instance = this;
 }
示例#11
0
        private void Spawn(AssetItem item, SceneGraphNode hit, ref Vector3 hitLocation)
        {
            switch (item.ItemDomain)
            {
            case ContentDomain.Material:
            {
                if (hit is StaticModelNode.EntryNode meshNode)
                {
                    var material = FlaxEngine.Content.LoadAsync <MaterialBase>(item.ID);
                    using (new UndoBlock(Undo, meshNode.Model, "Change material"))
                        meshNode.Entry.Material = material;
                }
                else if (hit is BoxBrushNode.SideLinkNode brushSurfaceNode)
                {
                    var material = FlaxEngine.Content.LoadAsync <MaterialBase>(item.ID);
                    using (new UndoBlock(Undo, brushSurfaceNode.Brush, "Change material"))
                        brushSurfaceNode.Surface.Material = material;
                }

                break;
            }

            case ContentDomain.Model:
            {
                if (item.TypeName == typeof(SkinnedModel).FullName)
                {
                    var model = FlaxEngine.Content.LoadAsync <SkinnedModel>(item.ID);
                    var actor = AnimatedModel.New();
                    actor.Name         = item.ShortName;
                    actor.SkinnedModel = model;
                    actor.Position     = PostProcessSpawnedActorLocation(actor, ref hitLocation);
                    Editor.Instance.SceneEditing.Spawn(actor);
                }
                else
                {
                    var model = FlaxEngine.Content.LoadAsync <Model>(item.ID);
                    var actor = StaticModel.New();
                    actor.Name     = item.ShortName;
                    actor.Model    = model;
                    actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
                    Editor.Instance.SceneEditing.Spawn(actor);
                }

                break;
            }

            case ContentDomain.Audio:
            {
                var clip  = FlaxEngine.Content.LoadAsync <AudioClip>(item.ID);
                var actor = AudioSource.New();
                actor.Name     = item.ShortName;
                actor.Clip     = clip;
                actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
                Editor.Instance.SceneEditing.Spawn(actor);

                break;
            }

            case ContentDomain.Prefab:
            {
                var prefab = FlaxEngine.Content.LoadAsync <Prefab>(item.ID);
                var actor  = PrefabManager.SpawnPrefab(prefab, null);
                actor.Name     = item.ShortName;
                actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
                Editor.Instance.SceneEditing.Spawn(actor);

                break;
            }

            case ContentDomain.Scene:
            {
                Editor.Instance.Scene.OpenScene(item.ID, true);
                break;
            }

            default: throw new ArgumentOutOfRangeException();
            }
        }
示例#12
0
 public static PrefabManager Get()
 {
     if (m_Instance == null)
         m_Instance = (PrefabManager)FindObjectOfType(typeof(PrefabManager));
     return m_Instance;
 }
 public LoginResultHandler()
 {
     prefab_manager = GameObject.Find ("Prefab Manager").GetComponent<PrefabManager> ();
 }
示例#14
0
    void Awake()
    {
        mInstance = this;

        testEnemyPool = new GameObjectPool(testEnemy, 1);
    }
	public static PrefabManager Instance()
	{
		if (_instance == null) {
			_instance = new PrefabManager();
		}
		return _instance;
	}
示例#16
0
 public void Construct(DiContainer container, PrefabManager prefabManager, GameManager gameManager)
 {
     _container     = container;
     _prefabManager = prefabManager;
     _gameManager   = gameManager;
 }
示例#17
0
    // Use this for initialization
    public override void Start()
    {
        if (prefabManager == null)
        {
            DontDestroyOnLoad(gameObject);
            prefabManager = this;
        }
        else if (prefabManager != this)
        {
            Destroy(gameObject);
        }

        GeneratePrefabLists();
        SetIDs();
    }
示例#18
0
    private IEnumerator MeteorPause()
    {
        if (GridLevel != 1)
        {
            yield return(new WaitForSeconds(3f));

            _meteor = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.Meteor)).GetComponent <MeteorController>();
        }

        yield return(new WaitForSeconds(0.9f));

        GameObject manualPivot = new GameObject("ManualPivot");

        if (_firstPlay)
        {
            manualPivot.transform.position = CameraController.Instance.Pivot;

            CameraController.Instance.ManualPivot = manualPivot.transform;

            _meteor.PauseMeteor();

            MeteorArrow.SetActive(true);
            MeteorText.SetActive(true);

            for (int i = 0; i < Instance._currentCiv.transform.childCount; i++)
            {
                Instance._currentCiv.transform.GetChild(i).GetComponent <PlayerCivController>().Pause = true;
            }

            while (Vector3.Distance(manualPivot.transform.position, _meteor.transform.position) > 0.1f)
            {
                manualPivot.transform.position = Vector3.MoveTowards(manualPivot.transform.position, _meteor.transform.position, 0.5f);

                yield return(null);
            }
        }

        yield return(new WaitForSeconds(0.5f));

        if (GridLevel == 2)
        {
            CreatePieceOnGrid(new Vector2Int(2, 2)).ConvertPieceType(PieceController.PieceType.MeteorResidue);
        }

        yield return(new WaitForSeconds(1f));

        if (_firstPlay)
        {
            MeteorArrow.GetComponent <Animator>().SetTrigger("Switch");
            MeteorText.GetComponent <Animator>().SetTrigger("Switch");

            yield return(new WaitForSeconds(0.5f));

            MeteorArrow.SetActive(false);
            MeteorText.SetActive(false);

            _meteor.ResumeMeteor();

            Vector3 targetPosition = ActiveGrid.CenterPosition + Vector3.up * 0.8f;

            while (Vector3.Distance(manualPivot.transform.position, targetPosition) > 0.1f)
            {
                manualPivot.transform.position = Vector3.MoveTowards(manualPivot.transform.position, targetPosition, 0.5f);

                yield return(null);
            }

            Destroy(manualPivot);
        }

        if (_firstPlay)
        {
            RebuildText.SetActive(true);

            yield return(new WaitForSeconds(0.9f));
        }

        _gameStarted = true;

        _firstPlay = false;

        yield return(new WaitForSeconds(2f));

        if (_firstPlay)
        {
            RebuildText.GetComponent <Animator>().SetTrigger("Switch");
        }
        else
        {
            Destroy(manualPivot);
        }

        yield return(new WaitForSeconds(0.5f));

        if (_firstPlay)
        {
            RebuildText.SetActive(false);
        }
    }
 //Awake
 void Awake()
 {
     mgPrefab = GetComponent <PrefabManager>();
 }
 private void Spawn(AssetItem item, SceneGraphNode hit, ref Vector2 location, ref Vector3 hitLocation)
 {
     if (item is BinaryAssetItem binaryAssetItem)
     {
         if (binaryAssetItem.Type == typeof(ParticleSystem))
         {
             var particleSystem = FlaxEngine.Content.LoadAsync <ParticleSystem>(item.ID);
             var actor          = new ParticleEffect
             {
                 Name           = item.ShortName,
                 ParticleSystem = particleSystem
             };
             actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
             Spawn(actor);
             return;
         }
         if (typeof(MaterialBase).IsAssignableFrom(binaryAssetItem.Type))
         {
             if (hit is StaticModelNode staticModelNode)
             {
                 var staticModel = (StaticModel)staticModelNode.Actor;
                 var ray         = ConvertMouseToRay(ref location);
                 if (staticModel.IntersectsEntry(ref ray, out _, out _, out var entryIndex))
                 {
                     var material = FlaxEngine.Content.LoadAsync <MaterialBase>(item.ID);
                     using (new UndoBlock(Undo, staticModel, "Change material"))
                         staticModel.SetMaterial(entryIndex, material);
                 }
             }
             return;
         }
         if (typeof(SkinnedModel).IsAssignableFrom(binaryAssetItem.Type))
         {
             var model = FlaxEngine.Content.LoadAsync <SkinnedModel>(item.ID);
             var actor = new AnimatedModel
             {
                 Name         = item.ShortName,
                 SkinnedModel = model
             };
             actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
             Spawn(actor);
             return;
         }
         if (typeof(Model).IsAssignableFrom(binaryAssetItem.Type))
         {
             var model = FlaxEngine.Content.LoadAsync <Model>(item.ID);
             var actor = new StaticModel
             {
                 Name  = item.ShortName,
                 Model = model
             };
             actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
             Spawn(actor);
             return;
         }
         if (typeof(AudioClip).IsAssignableFrom(binaryAssetItem.Type))
         {
             var clip  = FlaxEngine.Content.LoadAsync <AudioClip>(item.ID);
             var actor = new AudioSource
             {
                 Name = item.ShortName,
                 Clip = clip
             };
             actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
             Spawn(actor);
             return;
         }
         if (typeof(Prefab).IsAssignableFrom(binaryAssetItem.Type))
         {
             var prefab = FlaxEngine.Content.LoadAsync <Prefab>(item.ID);
             var actor  = PrefabManager.SpawnPrefab(prefab, null);
             actor.Name     = item.ShortName;
             actor.Position = PostProcessSpawnedActorLocation(actor, ref hitLocation);
             Spawn(actor);
             return;
         }
     }
 }
示例#21
0
 void Awake()
 {
     scriptManager = ScriptManager.instance;
     prefabManager = PrefabManager.instance;
 }
示例#22
0
 PrefabManager()
 {
     _singleton = this;
 }
示例#23
0
 public void Construct(ServiceProvider provider, PrefabManager prefabManager, DiContainer container)
 {
     _netDiscovery  = provider.networkDiscovery;
     _prefabManager = prefabManager;
     _container     = container;
 }
示例#24
0
 void SpawnLevel()
 {
     PrefabManager.Instantiate("Level");
 }
示例#25
0
    private static GameObject entry_loadEntry(EntityView objev)
    {
        ENTITY_ID id = objev.ID;

        //已经被卸载了.
        if (EntityFactory.Instance.m_entityContainer.Get(id) == null)
        {
            return(null);
        }
        EntityViewItem evItem = objev.createinfo;

        ENTITY_TYPE entityType = (ENTITY_TYPE)evItem.EntityType;

        UnityEngine.Object objPrefab = PrefabManager.GetPrefab(entityType);
        if (null == objPrefab)
        {
            Trace.LogError("找不到对应的类型的prefab,请检查PrefabManager中的Init函数,是否忘记加载? " + entityType.ToString());
            return(null);
        }
        GameObject entity = null;

        entity = objPrefab as GameObject;

        if (entity == null)
        {
            Trace.LogError("实例预设体对象失败! " + entityType.ToString());
            return(null);
        }

        entity.name += "-" + id.ToString();
        if (entity.transform.childCount > 0)
        {
            Trace.LogWarning("EntityView GameObject 有子节点!" + entity.transform.GetChild(0).name);
        }

        // 设置游戏对象
        objev.SetGameObject(entity);

        // 设置创建数据
        if (!objev.InitBuildeData(evItem))
        {
            Trace.LogError("初始化实体对象数据失败! id=" + id.ToString());
            return(null);
        }


        //如果是队友,则加入队友列表,
        if (objev.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE && objev.CampFlag == CampFlag.CampFlag_Friend)
        {
            if (!m_friendPlayerList.Contains((uint)objev.ID))
            {
                m_friendPlayerList.Add((uint)objev.ID);
            }
        }

        //string entityname = "UnKnow";
        //Skin sk = SkinManager.GetSkin(objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN));
        //if (sk != null)
        //{
        //    entityname = sk.ResSkinObj.AssetName;
        //}
        //entity.name = entityname;
        //entity.name += "(entity" + evItem.EntityID.ToString() + ")";

        if (id == MainHeroID)
        {
            entity.transform.parent = null;
            MainHeroView            = objev;

            if (CreateMainHeroEntityEvent != null)
            {
                CreateMainHeroEntityEventArgs e = new CreateMainHeroEntityEventArgs();
                e.MainHeroID   = evItem.nHeroID;
                e.MainHeroUID  = MainHeroID;
                e.nMatchTypeID = GameLogicAPI.getCurRoomMatchType();
                CreateMainHeroEntityEvent(e);
                LogicDataCenter.playerSystemDataManager.Reset();
            }

            ViewEventHelper.Instance.SendCommand(GameLogicDef.GVIEWCMD_MASTER_VIEW_LOADED);
            Trace.Log("Load Hero Entry:" + entity.name);
        }
        else
        {
            entity.transform.parent = Instance.transform;
        }

        objPrefab = null;
        if (ENTITY_TYPE.TYPE_PLAYER_ROLE == entityType)
        {
            // 发送人物加载完指令到逻辑层
            EntityEventHelper.Instance.SendCommand(id, EntityLogicDef.ENTITY_CMD_LOAD_COMPLETED);
        }

        BaseStateMachine bs = entity.GetComponent <BaseStateMachine>();

        //已经有位置信息,创建模型时立即同步瞬移过去,之后的同步消息是走过去
        if (objev.data.nActorID == evItem.EntityID)
        {
            Vector3 pos;
            pos.x = objev.data.fPosition_x;
            pos.y = objev.data.fPosition_y;
            pos.z = objev.data.fPosition_z;

            Vector3 rot;
            rot.x = objev.data.fRotation_x;
            rot.y = objev.data.fRotation_y;
            rot.z = objev.data.fRotation_z;

            //怪物要走传送,不能直接设置位置
            if (entityType == ENTITY_TYPE.TYPE_MONSTER)
            {
                if (bs)
                {
                    cmd_creature_transport data = new cmd_creature_transport();
                    data.fPosition_x = pos.x;
                    data.fPosition_y = pos.y;
                    data.fPosition_z = pos.z;

                    data.fRotation_x = rot.x;
                    data.fRotation_y = rot.y;
                    data.fRotation_z = rot.z;

                    data.bUseAngle = 1;
                    bs.Transport(data);
                }
            }
            else
            {
                entity.transform.SetPosition(pos);
                entity.transform.eulerAngles = rot;
            }
        }

        CheckEntityMaskToRangeSearch(objev);
        //执行延迟处理的消息
        EntityViewCommandHandler.onCommandsDelay(objev);
        return(entity);
    }
示例#26
0
    public void Setup()
    {
        if (Rules != null)
        {
            Settings s = new Settings();
            s.Rules = Rules;
            s.PrefabRules = PrefabRules;

            s.MainMaterial = MainMaterial;
            s.MainMaterialXTiling = MainMaterialXTiling;
            s.MainMaterialYTiling = MainMaterialYTiling;
            s.MainMaterialRotation = MainMaterialRotation;

            s.TopMaterial = TopMaterial;
            s.TopMaterialXTiling = TopMaterialXTiling;
            s.TopMaterialYTiling = TopMaterialYTiling;
            s.TopMaterialRotation = TopMaterialRotation;
            s.DrawTopMeshCollider = DrawTopMeshCollider;
            s.DrawTopMeshRenderer = DrawTopMeshRenderer;

            s.DetailMaterial = DetailMaterial;
            s.DetailMaterialXTiling = DetailMaterialXTiling;
            s.DetailMaterialYTiling = DetailMaterialYTiling;
            s.DetailMaterialRotation = DetailMaterialRotation;
            s.DrawDetailMeshRenderer = DrawDetailMeshRenderer;

            s.MainPlaneHeight = MainPlaneHeight;
            s.TopPlaneHeight = TopPlaneHeight;
            s.DetailPlaneHeight = DetailPlaneHeight;

            s.CornerMeshWidth = CornerMeshWidth;

            s.OriginalStartPoint = this.transform.position;
            s.DetailPlaneOffset = new Vector3(0,.1f,-.2f);

            s.MainPlaneFollowTerrainCurve = MainPlaneFollowTerrainCurve;
            s.DetailPlaneFollowTerrainCurve = DetailPlaneFollowTerrainCurve;

            s.ParentGameObjectName = this.name;
            s.terrainDisplayer = this;

            TerrainManager = new TerrainManager(s);
            PrefabManager = new PrefabManager(s);

            Cleanup();

        }
    }
        void AddPrefabCreators(string dir, ShapeCreatorTreeNode parent)
        {
            EditorProject project       = EditorApp.Project;
            int           iIcon         = EditorManager.GUI.ShapeTreeImages.AddBitmap(Path.Combine(EditorManager.AppDataDir, @"bitmaps\Shapes\lock_ok.png"), Color.Magenta);
            int           iCategoryIcon = EditorManager.GUI.ShapeTreeImages.AddBitmap(Path.Combine(EditorManager.AppDataDir, @"bitmaps\Shapes\folder_new.png"), Color.Magenta);

            // Create the prefab category, if still missing
            ShapeCreatorTreeNode catParent = null;

            if (parent == null)
            {
                catParent = this.AddCategory(null, "Prefabs", iCategoryIcon);
            }
            else
            {
                catParent = this.AddCategory(parent, dir.Substring(dir.LastIndexOf('\\')), iCategoryIcon);
            }

            // Iterate all subdirectories
            string[] directories = Directory.GetDirectories(dir);
            foreach (string directory in directories)
            {
                AddPrefabCreators(directory, catParent);
            }

            // Iterate all files
            string[] files = Directory.GetFiles(dir, "*.prefab");
            Array.Sort(files, new NaturalFileNameComparer());

            foreach (string filename in files)
            {
                string     relname = project.MakeRelative(filename);
                PrefabDesc desc    = PrefabManager.CreatePrefab(relname);
                if (!desc.Loaded)
                {
                    continue;
                }

                // Get the name of the prefab
                string _name = desc.Name;
                if (_name == null || _name == "")
                {
                    _name = relname;
                }

                // Apply the search filter
                if (!searchPanel.MatchesFilter(_name))
                {
                    continue;
                }

                // Add the category path to the tree
                ShapeCreatorTreeNode cat = catParent;
                string catName           = desc.Category;
                if (catName != null && catName != "")
                {
                    cat = AddCategoryPath(catParent, catName, "\\", -1);
                }

                AddCreator(cat, desc, _name, iIcon);
            }

            // Check whether any prefab creators has been added
            if (catParent.Nodes.Count == 0)
            {
                catParent.Remove();
            }
        }
示例#28
0
        /// <inheritdoc />
        protected override DragDropEffect OnDragDropHeader(DragData data)
        {
            var result = DragDropEffect.None;

            Actor myActor = Actor;
            Actor newParent;
            int   newOrder = -1;

            // Check if has no actor (only for Root Actor)
            if (myActor == null)
            {
                // Append to the last scene
                var scenes = Level.Scenes;
                if (scenes == null || scenes.Length == 0)
                {
                    throw new InvalidOperationException("No scene loaded.");
                }
                newParent = scenes[scenes.Length - 1];
            }
            else
            {
                newParent = myActor;

                // Use drag positioning to change target parent and index
                if (DragOverMode == DragItemPositioning.Above)
                {
                    if (myActor.HasParent)
                    {
                        newParent = myActor.Parent;
                        newOrder  = myActor.OrderInParent;
                    }
                }
                else if (DragOverMode == DragItemPositioning.Below)
                {
                    if (myActor.HasParent)
                    {
                        newParent = myActor.Parent;
                        newOrder  = myActor.OrderInParent + 1;
                    }
                }
            }
            if (newParent == null)
            {
                throw new InvalidOperationException("Missing parent actor.");
            }

            // Drag actors
            if (_dragActors != null && _dragActors.HasValidDrag)
            {
                bool worldPositionLock = Root.GetKey(KeyboardKeys.Control) == false;
                var  singleObject      = _dragActors.Objects.Count == 1;
                if (singleObject)
                {
                    var targetActor  = _dragActors.Objects[0].Actor;
                    var customAction = targetActor.HasPrefabLink ? new ReparentAction(targetActor) : null;
                    using (new UndoBlock(ActorNode.Root.Undo, targetActor, "Change actor parent", customAction))
                    {
                        targetActor.SetParent(newParent, worldPositionLock);
                        targetActor.OrderInParent = newOrder;
                    }
                }
                else
                {
                    var targetActors = _dragActors.Objects.ConvertAll(x => x.Actor);
                    var customAction = targetActors.Any(x => x.HasPrefabLink) ? new ReparentAction(targetActors) : null;
                    using (new UndoMultiBlock(ActorNode.Root.Undo, targetActors, "Change actors parent", customAction))
                    {
                        for (int i = 0; i < targetActors.Count; i++)
                        {
                            var targetActor = targetActors[i];
                            targetActor.SetParent(newParent, worldPositionLock);
                            targetActor.OrderInParent = newOrder;
                        }
                    }
                }

                result = DragDropEffect.Move;
            }
            // Drag assets
            else if (_dragAssets != null && _dragAssets.HasValidDrag)
            {
                for (int i = 0; i < _dragAssets.Objects.Count; i++)
                {
                    var assetItem = _dragAssets.Objects[i];

                    if (assetItem.IsOfType <SkinnedModel>())
                    {
                        // Create actor
                        var model = FlaxEngine.Content.LoadAsync <SkinnedModel>(assetItem.ID);
                        var actor = new AnimatedModel();
                        actor.StaticFlags  = Actor.StaticFlags;
                        actor.Name         = assetItem.ShortName;
                        actor.SkinnedModel = model;
                        actor.Transform    = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem.IsOfType <Model>())
                    {
                        // Create actor
                        var model = FlaxEngine.Content.LoadAsync <Model>(assetItem.ID);
                        var actor = new StaticModel();
                        actor.StaticFlags = Actor.StaticFlags;
                        actor.Name        = assetItem.ShortName;
                        actor.Model       = model;
                        actor.Transform   = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem.IsOfType <CollisionData>())
                    {
                        // Create actor
                        var actor = new MeshCollider();
                        actor.StaticFlags   = Actor.StaticFlags;
                        actor.Name          = assetItem.ShortName;
                        actor.CollisionData = FlaxEngine.Content.LoadAsync <CollisionData>(assetItem.ID);
                        actor.Transform     = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem.IsOfType <ParticleSystem>())
                    {
                        // Create actor
                        var actor = new ParticleEffect();
                        actor.StaticFlags    = Actor.StaticFlags;
                        actor.Name           = assetItem.ShortName;
                        actor.ParticleSystem = FlaxEngine.Content.LoadAsync <ParticleSystem>(assetItem.ID);
                        actor.Transform      = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem.IsOfType <SceneAnimation>())
                    {
                        // Create actor
                        var actor = new SceneAnimationPlayer();
                        actor.StaticFlags = Actor.StaticFlags;
                        actor.Name        = assetItem.ShortName;
                        actor.Animation   = FlaxEngine.Content.LoadAsync <SceneAnimation>(assetItem.ID);
                        actor.Transform   = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem.IsOfType <AudioClip>())
                    {
                        // Create actor
                        var actor = new AudioSource();
                        actor.StaticFlags = Actor.StaticFlags;
                        actor.Name        = assetItem.ShortName;
                        actor.Clip        = FlaxEngine.Content.LoadAsync <AudioClip>(assetItem.ID);
                        actor.Transform   = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);

                        break;
                    }
                    else if (assetItem.IsOfType <Prefab>())
                    {
                        // Create prefab instance
                        var prefab = FlaxEngine.Content.LoadAsync <Prefab>(assetItem.ID);
                        var actor  = PrefabManager.SpawnPrefab(prefab, null);
                        actor.StaticFlags = Actor.StaticFlags;
                        actor.Name        = assetItem.ShortName;
                        actor.Transform   = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                    else if (assetItem is VisualScriptItem visualScriptItem && new ScriptType(typeof(Actor)).IsAssignableFrom(visualScriptItem.ScriptType) && visualScriptItem.ScriptType.CanCreateInstance)
                    {
                        // Create actor
                        var actor = (Actor)visualScriptItem.ScriptType.CreateInstance();
                        actor.StaticFlags = Actor.StaticFlags;
                        actor.Name        = assetItem.ShortName;
                        actor.Transform   = Actor.Transform;

                        // Spawn
                        ActorNode.Root.Spawn(actor, Actor);
                    }
                }

                result = DragDropEffect.Move;
            }
            // Drag actor type
            else if (_dragActorType != null && _dragActorType.HasValidDrag)
            {
                for (int i = 0; i < _dragActorType.Objects.Count; i++)
                {
                    var item = _dragActorType.Objects[i];

                    // Create actor
                    var actor = item.CreateInstance() as Actor;
                    if (actor == null)
                    {
                        Editor.LogWarning("Failed to spawn actor of type " + item.TypeName);
                        continue;
                    }
                    actor.StaticFlags = Actor.StaticFlags;
                    actor.Name        = item.Name;
                    actor.Transform   = Actor.Transform;

                    // Spawn
                    ActorNode.Root.Spawn(actor, Actor);
                }

                result = DragDropEffect.Move;
            }

            // Clear cache
            _dragHandlers.OnDragDrop(null);

            // Check if scene has been modified
            if (result != DragDropEffect.None)
            {
                var node = SceneGraphFactory.FindNode(newParent.ID) as ActorNode;
                node?.TreeNode.Expand();
            }

            return(result);
        }
示例#29
0
 private void Start()
 {
     PrefabManager.GetInstance().CreateGameObjectByPrefab("RedPanel",
                                                          transform, Vector3.zero, Quaternion.identity);
 }
示例#30
0
 private void Start()
 {
     Plr             = GetComponent <Player>();
     HighlightPrefab = PrefabManager.GetPrefab("UI/Highlight");
 }
示例#31
0
 void OnEnable()
 {
     this.prefabManager = (PrefabManager)this.target;
 }
示例#32
0
 private void Start()
 {
     inputManager  = ClassManager.instance.inputManager;
     prefabManager = ClassManager.instance.prefabManager;
 }
示例#33
0
 void Start()
 {
     prefabManager = GameObject.Find("PrefabManager").GetComponent <PrefabManager>();
 }
示例#34
0
 // Use this for initialization
 void Start()
 {
     _instance = this;
 }
 void Awake()
 {
     instance = this;
 }
示例#36
0
    private void Update()
    {
        int x = (int)Input.GetAxisRaw("Horizontal");
        int z = (int)Input.GetAxisRaw("Vertical");

        if (Input.GetKeyDown(KeyCode.G))
        {
            if (_meteor == null)
            {
                _meteor = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.Meteor)).GetComponent <MeteorController>();

                StartCoroutine(MeteorPause());

                _gameStarted = false;
            }
            return;
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }


        if (!_gameStarted)
        {
            return;
        }

        if (Input.anyKeyDown)
        {
            if (_playerMoving)
            {
                return;
            }

            if (Mathf.Abs(x) > 0f || Mathf.Abs(z) > 0f)
            {
                if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Mirror)
                {
                    PieceController nextPiece = ActiveGrid.ProcessInput(_playerPiece.GridPosition, new Vector2Int(x, z));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerPiece, nextPiece));
                    }

                    nextPiece = ActiveGrid.ProcessInput(_playerMirrorPiece.GridPosition, new Vector2Int(x * -1, z * -1));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerMirrorPiece, nextPiece));
                    }
                }
                else
                {
                    PieceController nextPiece = ActiveGrid.ProcessInput(_playerPiece.GridPosition, new Vector2Int(x, z));

                    if (nextPiece != null)
                    {
                        StartCoroutine(AnimatePlayerMovement(_playerPiece, nextPiece));
                    }
                }
            }

            if (Input.GetKeyDown(KeyCode.Space))
            {
                if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Destroy)
                {
                    PieceController destroyedPiece = _playerPiece.DestroyAction();

                    if (destroyedPiece != null)
                    {
                        ActiveGrid.PlayingPieces.Remove(destroyedPiece);
                    }
                }
                else if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Normal)
                {
                    _playerPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerPiece);
                }
                else if (_playerPiece.PPieceType == PlayerPieceController.PlayerPieceType.Mirror)
                {
                    _playerPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerPiece);

                    _playerMirrorPiece.ConvertPieceType(PieceController.PieceType.Normal);
                    ActiveGrid.AddPlayingPiece(_playerMirrorPiece);
                }

                _cubesUsed++;

                if (ActiveGrid.CheckComplete())
                {
                    PlaceCivsOnPiece(ActiveGrid.Pieces[1, 1]);

                    StartCoroutine(SceneTransition());

                    _gameStarted = false;
                }
                else
                {
                    _playerPiece = Instantiate(PrefabManager.GetPrefab(PrefabManager.PrefabType.PlayerPiece), Vector3.zero, Quaternion.identity)
                                   .GetComponent <PlayerPieceController>();

                    if (GridLevel == 3)
                    {
                        if (_cubesUsed == 1)
                        {
                            _playerPiece.ConvertPlayerPieceType(PlayerPieceController.PlayerPieceType.Destroy);
                        }
                    }

                    _playerPiece.PlaceOnTop(ActiveGrid.Pieces[0, 0]);
                }

                //_playerPiece.ConvertPlayerPieceType(PlayerPieceController.PlayerPieceType.Destroy);
            }
        }
    }
示例#37
0
    public void CreateDungeon(int room_number)
    {
        //Construct Spawn Room.
        InstantiateIRoom(RoomFactory.Build("SpawningRoom", PrefabManager.GetInstance().GetAllRoomTiles(), 5, 5), new Vector3(0, 0, 0), PrefabManager.GetInstance().GetAllRoomTiles());
        //TO BE REMOVED! TESTING CODE.
        allrooms[0].RoomObject.AddComponent <SpawnRoomScript>();
        allrooms[0].RoomObject.AddComponent <BoxCollider>();                                                                                                                            //Create new collider for the room.
        allrooms[0].RoomObject.GetComponent <BoxCollider>().size      = new Vector3(allrooms[0].Tiles_number_x * Tile.X_length - 2, 5, allrooms[0].Tiles_number_z * Tile.Z_length - 2); //Set the size of the collider to cover all the room.
        allrooms[0].RoomObject.GetComponent <BoxCollider>().isTrigger = true;                                                                                                           //Set collider to trigger.
        //TO BE REMOVED!
        bool foundcorridor, foundroom;

        while (true)
        {
            int openroomindex = -1;
            foundcorridor = false;
            foundroom     = false;
            //Used to find corridor with available sides.
            for (int i = 0; i < allrooms.Count; i++)
            {
                if (allrooms[i].Available_Sides.Count > 0)
                {
                    if (allrooms[i].Category == "Corridor")
                    {
                        foundcorridor = true;
                        openroomindex = i;
                        break;
                    }
                }
            }
            //Gives priority to available corridors.
            //Used to find available room.
            if (!foundcorridor)
            {
                for (int i = 0; i < allrooms.Count; i++)
                {
                    if (allrooms[i].Available_Sides.Count > 0)
                    {
                        if (allrooms[i].Category == "Room")
                        {
                            foundroom     = true;
                            openroomindex = i;
                            break;
                        }
                    }
                }
            }
            //Something went wrong and there is no available side to none of the rooms.
            if (!foundcorridor && !foundroom)
            {
                Debug.LogError("Finished dungeon generator without reaching the room goal.");
                break;
            }
            (IRoom newroom, Vector3 newroomloc) = allrooms[openroomindex].CreateAdjacentRoom();
            if (newroom != null)
            {
                if (allrooms[openroomindex].Category == "Room")
                {
                    InstantiateIRoom(newroom, newroomloc, PrefabManager.GetInstance().GetAllRoomTiles());

                    if (newroom.Category == "Room")
                    {
                        roomsPlaced++;
                    }
                }
                else if (allrooms[openroomindex].Category == "Corridor")
                {
                    InstantiateIRoom(newroom, newroomloc, PrefabManager.GetInstance().GetAllRoomTiles());
                    if (newroom.Category == "Room")
                    {
                        roomsPlaced++;
                    }
                }
                if (roomsPlaced >= RoomNumber)
                {
                    break;
                }
            }
        }
    }
示例#38
0
    void Awake()
    {
        Character.IniCharacter();
        Bestiary.IniBestiary();
        Inventory.IniInventory();
        ItemInventory.IniItemInventory();

        _Player       = GameObject.FindGameObjectWithTag("Player");
        _PlayerCam    = GameObject.FindGameObjectWithTag("MainCamera").camera;
        _PlayerMaster = GameObject.FindGameObjectWithTag("PlayerMaster");
        _PlayerHUD    = _PlayerMaster.GetComponent<PlayerHUD>();
        DungeonLevelPool.IniDungeonLevelPool();

           _PrefabManager = GameObject.FindGameObjectWithTag("GameMaster").GetComponent<PrefabManager>();
    }
示例#39
0
 public UIKeyValueSpawner(PrefabManager mgPrefab, DialogManager mgDialog, GameObject layout)
 {
     this.mgPrefab = mgPrefab;
     this.mgDialog = mgDialog;
     this.layout   = layout;
 }
示例#40
0
 private void Awake()
 {
     _instance = this;
 }
示例#41
0
    // Init

    private void Start()
    {
        dataHolder         = ClassManager.instance.dataHolder;
        prefabManager      = ClassManager.instance.prefabManager;
        characterUiManager = ClassManager.instance.characterUiManager;
    }
示例#42
0
 void Start()
 {
     //最开始取得角色工厂引用
     _prefabManager = PrefabManager.instance;
     DontDestroyOnLoad(gameObject);
 }
示例#43
0
    // Use this for initialization
    void Start()
    {
        _PrefabManager = GameObject.FindGameObjectWithTag("GameMaster").GetComponent<PrefabManager>();
        _GameManager   = GameObject.FindGameObjectWithTag("GameMaster").GetComponent<GameManager>();

        // Name of GameObject used for NGUI
        _UIRoot2DName   = "UI Root (2D)";
        _panelTaskName  = _UIRoot2DName + "/Camera/Window/Anchor/PanelTask";
        _panelSkillName = _UIRoot2DName + "/Camera/Window/Anchor/PanelSkill";
        _panelBuildingName = _UIRoot2DName + "/Camera/Window/Anchor/PanelBuilding";

        // Find the GameObjects used for NGUI
        _UI_Root2D  = transform.FindChild(_UIRoot2DName).gameObject;
        _panelTask  = transform.FindChild(_panelTaskName).gameObject;
        _panelSkill = transform.FindChild(_panelSkillName).gameObject;
        _panelBuilding = transform.FindChild(_panelBuildingName).gameObject;

        _BuildingTable = _panelBuilding.transform.FindChild("Building List/SubPanelBuilding/BuildingTable").gameObject;
        if(_BuildingTable == null){Debug.LogWarning ("[NGUI_HUD.UpdateBuildList() - BuildingTable not found");}

        _BuildingTypeLabel = _panelBuilding.transform.FindChild("Building Type/Label - BuildingType").gameObject;
        if(_BuildingTypeLabel == null){Debug.LogWarning ("[NGUI_HUD.UpdateBuildList() - BuildingType not found");}

        _BuildingInfoName = _panelBuilding.transform.FindChild("Building Info/Label (Building Name)").gameObject;
        if(_BuildingInfoName == null){Debug.LogWarning ("[NGUI_HUD.BuildingType_Choose() - _BuildingInfoName not found");}

        _BuildingInfoRecipe = _panelBuilding.transform.FindChild("Building Info/Label (Recipe)").gameObject;
        if(_BuildingInfoRecipe == null){Debug.LogWarning ("[NGUI_HUD.BuildingType_Choose() - _BuildingInfoName not found");}

        _BuildingToTween = transform.FindChild("BuildingToTween/BuildingMesh").gameObject;
        if(_BuildingInfoRecipe == null){Debug.LogWarning ("[NGUI_HUD.DisplayBuildingTween() - _BuildingToTween not found");}

        // Initialize NGUI
        UpdateAll();
        CloseAll ();
    }