예제 #1
0
        public void Init(EditorSpawnerData referenceData)
        {
            assetCode   = referenceData.assetCode;
            spawnType   = (SpawnerTypeEditor)referenceData.spawnerType;
            spawnMethod = (SpawnerMethodEditor)referenceData.spawnerMethod;

            if (spawnMethod == SpawnerMethodEditor.Line)
            {
                spawnerLine = this.gameObject.GetComponent <SpawnerLine>();
            }

            spawnInterval = referenceData.spawnInterval;
            spawnRate     = referenceData.spawnRate;
            maxSpawn      = referenceData.maxSpawn;
            spawnItems    = referenceData.spawnItem;

            SetPosition(referenceData.spawnStartPos, referenceData.spawnEndPos);
            SetAngle(referenceData.angle);
            SetRadius(referenceData.radius);

            if (spawnMethod == SpawnerMethodEditor.Line)
            {
                SetDistance(distance);
            }
        }
예제 #2
0
        public EditorSpawnerData GenerateData()
        {
            EditorSpawnerData data = new EditorSpawnerData();

            data.assetCode     = assetCode;
            data.spawnerMethod = (int)spawnMethod;
            data.spawnerType   = (int)spawnType;
            data.spawnInterval = spawnInterval;
            data.spawnRate     = spawnRate;
            data.maxSpawn      = maxSpawn;
            data.spawnItem     = spawnItems;
            data.angle         = GetAngle();
            data.radius        = GetRadius();

            if (spawnMethod == SpawnerMethodEditor.Line)
            {
                data.spawnStartPos = spawnerLine.firstPoint.position;
                data.spawnEndPos   = spawnerLine.secondPoint.position;
            }
            else
            {
                data.spawnStartPos = new Vector2(transform.localPosition.x, transform.localPosition.y);
                data.spawnEndPos   = data.spawnStartPos;
            }

            return(data);
        }
예제 #3
0
        void GenerateSpawner(List <EditorSpawnerData> spawners)
        {
            for (int i = 0; i < spawners.Count; i++)
            {
                EditorSpawnerData referenceData = spawners[i];
                Object            prefab        = AssetManager.Instance.GetPrefabByKeyword(referenceData.assetCode);
                GameObject        go            = Instantiate(prefab) as GameObject;
                go.transform.SetParent(spawnerParent);

                MapEditorSpawnerController controller = go.AddComponent <MapEditorSpawnerController>();
                controller.Init(referenceData);
            }
        }
예제 #4
0
        public EditorMapData(Dictionary <string, object> rawData)
        {
            mapName = JsonUtility.GetString(rawData, TAG_NAME);
            width   = JsonUtility.GetInt(rawData, TAG_WIDTH);
            height  = JsonUtility.GetInt(rawData, TAG_HEIGHT);
            //Load tiles from given dictionary
            listTile = new List <EditorTileData>();
            if (rawData.ContainsKey(TAG_TILES))
            {
                var tiles = rawData[TAG_TILES] as List <object>;
                for (int i = 0; i < tiles.Count; i++)
                {
                    var            rawTile  = tiles[i] as Dictionary <string, object>;
                    EditorTileData tileData = new EditorTileData(rawTile);
                    listTile.Add(tileData);
                }
            }
            //Load map features from given dictionary
            listFeature = new List <EditorMapFeatureData>();
            if (rawData.ContainsKey(TAG_FEATURE))
            {
                var features = rawData[TAG_FEATURE] as List <object>;
                for (int i = 0; i < features.Count; i++)
                {
                    var rawFeature = features[i] as Dictionary <string, object>;
                    EditorMapFeatureData featureData = new EditorMapFeatureData(rawFeature);
                    listFeature.Add(featureData);
                }
            }

            //Load saved spawner data
            listSpawner = new List <EditorSpawnerData>();
            if (rawData.ContainsKey(TAG_SPAWNER))
            {
                var spawners = rawData[TAG_SPAWNER] as List <object>;
                for (int i = 0; i < spawners.Count; i++)
                {
                    var rawSpanwer = spawners[i] as Dictionary <string, object>;
                    EditorSpawnerData spawnerData = new EditorSpawnerData(rawSpanwer);
                    listSpawner.Add(spawnerData);
                }
            }
        }
        public void OnPointerClick(PointerEventData eventData)
        {
            if (ToolboxManager.Instance.selectedTileType == ToolBoxTileType.Spawner)
            {
                Vector3 pressPosition = eventData.pointerPressRaycast.worldPosition;

                ToolBoxSpawnerTemplate template = (ToolBoxSpawnerTemplate)ToolboxManager.Instance.tileTemplate;
                Object     prefab = AssetManager.Instance.GetPrefabByKeyword(template.assetCode);
                GameObject go     = Instantiate(prefab) as GameObject;
                go.transform.SetParent(EditorTileManager.Instance.spawnerParent);

                MapEditorSpawnerController spawnControl = go.AddComponent <MapEditorSpawnerController>();
                EditorSpawnerData          spawnData    = new EditorSpawnerData();
                spawnData.assetCode     = template.assetCode;
                spawnData.spawnerMethod = (int)template.spawnMethod;
                spawnData.spawnerType   = (int)template.spawnerType;
                spawnData.spawnInterval = 1;
                spawnData.spawnRate     = 1;
                spawnData.maxSpawn      = 10;
                spawnData.radius        = 0.5f;

                if (template.spawnMethod == SpawnerMethodEditor.Point)
                {
                    spawnData.spawnStartPos = spawnData.spawnEndPos = new Vector2(pressPosition.x, pressPosition.y);
                }
                else if (template.spawnMethod == SpawnerMethodEditor.Line)
                {
                    spawnData.spawnStartPos = new Vector2(pressPosition.x - 0.5f, pressPosition.y);
                    spawnData.spawnEndPos   = new Vector2(pressPosition.x + 0.5f, pressPosition.y);
                }

                spawnControl.Init(spawnData);

                Debug.Log("Spawner Spawn " + spawnData.assetCode);
            }
        }