public void Deserialize(HierarchyNode n)
        {
            foreach (HierarchyNode i in n.Children)
            {
                AssetRepresentation asset = KnownAssets.SingleOrDefault(o => o.Id == i.Name);

                if (asset == null)
                {
                    Debug.LogWarning("Could not find asset with id: " + i.Name);
                    continue;
                }

                asset = Instantiate(asset, Vector3.zero, Quaternion.identity);
                asset.Deserialize(i);
            }
        }
Example #2
0
    private void OnMouseDown()
    {
        EditorController ctrl = FindObjectOfType <EditorController>();

        if (FindObjectOfType <LevelLoader>().Playing)
        {
            return;
        }

        Vector2 clickedPositionExact = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 clickedPosition      = new Vector2((int)clickedPositionExact.x + 0.5f, (int)clickedPositionExact.y - 0.5f);

        Debug.Log(clickedPosition);

        AssetRepresentation clickedAsset = GetAssetAtPoint(clickedPosition);

        if (clickedAsset != null)
        {
            if (Input.GetMouseButtonDown((int)MouseButton.LeftMouse))
            {
                //Rotate it
                clickedAsset.transform.Rotate(90);
                FindObjectOfType <EditorController>().LastRotationAngle = clickedAsset.transform.eulerAngles.z;
            }
            else if (Input.GetMouseButtonDown((int)MouseButton.RightMouse))
            {
                //Delete it
                Destroy(clickedAsset.gameObject);
            }
        }
        else
        {
            if (Input.GetMouseButtonDown(0))
            {
                EditorController c = FindObjectOfType <EditorController>();

                //Add asset
                Instantiate(c.SelectedAsset, clickedPosition, Quaternion.Euler(0, 0, c.LastRotationAngle));
            }
        }
    }