コード例 #1
0
    public override void UpdateEntity(bool for_editor)
    {
        if (for_editor)
        {
            VCEComponentTool tool = m_Entity.GetComponent <VCEComponentTool>();
            tool.m_Data = this;
        }
        m_Rotation = VCEMath.NormalizeEulerAngle(m_Rotation);
        m_Entity.transform.localPosition    = m_Position;
        m_Entity.transform.localEulerAngles = m_Rotation;
        m_Entity.transform.localScale       = m_Scale;
        VCDecalHandler dh = m_Entity.GetComponent <VCDecalHandler>();

        if (for_editor)
        {
            dh.m_Guid       = m_Guid;
            dh.m_Iso        = null;
            dh.m_AssetIndex = -1;
        }
        else
        {
            dh.m_Guid       = 0;
            dh.m_Iso        = m_CurrIso;
            dh.m_AssetIndex = m_AssetIndex;
        }
        dh.m_Size        = m_Size;
        dh.m_Depth       = m_Depth;
        dh.m_Mirrored    = m_Mirrored;
        dh.m_ShaderIndex = m_ShaderIndex;
        dh.m_Color       = m_Color;
    }
コード例 #2
0
 public List <VCEComponentTool> MirrorImage(VCEComponentTool c)
 {
     VCEditor.s_Mirror.CalcPrepare(VCEditor.s_Scene.m_Setting.m_VoxelSize);
     // Mirror
     if (VCEditor.s_Mirror.Enabled_Masked)
     {
         List <VCEComponentTool> list_ret = new List <VCEComponentTool> ();
         VCEditor.s_Mirror.MirrorComponent(c.m_Data);
         for (int i = 1; i < VCEditor.s_Mirror.OutputCnt; ++i)
         {
             VCComponentData        image       = VCEditor.s_Mirror.ComponentOutput[i];
             List <VCComponentData> projections = VCEditor.s_Scene.m_IsoData.FindComponentsAtPos(image.m_Position, image.m_ComponentId);
             foreach (VCComponentData iter in projections)
             {
                 if (!VCEMath.IsEqualRotation(iter.m_Rotation, image.m_Rotation))
                 {
                     continue;
                 }
                 if (iter.m_Scale != image.m_Scale)
                 {
                     continue;
                 }
                 if (iter.m_Visible != image.m_Visible)
                 {
                     continue;
                 }
                 if (image is IVCMultiphaseComponentData && iter is IVCMultiphaseComponentData)
                 {
                     if ((image as IVCMultiphaseComponentData).Phase != (iter as IVCMultiphaseComponentData).Phase)
                     {
                         continue;
                     }
                 }
                 VCEComponentTool imct = iter.m_Entity.GetComponent <VCEComponentTool>();
                 if (imct == null)
                 {
                     continue;
                 }
                 if (imct == c)
                 {
                     continue;
                 }
                 list_ret.Add(imct);
             }
         }
         return(list_ret);
     }
     // No mirror
     else
     {
         return(new List <VCEComponentTool> ());
     }
 }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        VCEComponentTool ctool = VCUtils.GetComponentOrOnParent <VCEComponentTool>(this.gameObject);

        if (ctool != null)
        {
            GetComponent <Renderer>().enabled = ctool.m_InEditor;
        }
        else
        {
            GameObject.Destroy(this.gameObject);
        }
    }
コード例 #4
0
 void ToggleComponentColliders(bool _enabled)
 {
     if (!VCEditor.DocumentOpen())
     {
         return;
     }
     foreach (VCComponentData cd in VCEditor.s_Scene.m_IsoData.m_Components)
     {
         VCEComponentTool c = cd.m_Entity.GetComponent <VCEComponentTool>();
         c.m_SelBound.enabled = _enabled;
         c.m_SelBound.GetComponent <Collider>().enabled = _enabled;
     }
 }
コード例 #5
0
 void OnDestroy()
 {
     ClearSelection();
     ToggleComponentColliders(false);
     if (m_MainInspector != null)
     {
         GameObject.Destroy(m_MainInspector);
         m_MainInspector = null;
     }
     HideDataInspector();
     s_LastCreate            = null;
     VCEditor.s_ProtectLock0 = false;
 }
コード例 #6
0
 public SelectInfo FindSelected(VCEComponentTool ct)
 {
     if (ct == null)
     {
         return(null);
     }
     foreach (SelectInfo si in m_Selection)
     {
         if (si.m_Component == ct)
         {
             return(si);
         }
     }
     return(null);
 }
コード例 #7
0
    public override void UpdateEntity(bool for_editor)
    {
        if (for_editor)
        {
            VCEComponentTool tool = m_Entity.GetComponent <VCEComponentTool>();
            tool.m_Data = this;
        }
        m_Rotation = VCEMath.NormalizeEulerAngle(m_Rotation);
        m_Entity.transform.localPosition    = m_Position;
        m_Entity.transform.localEulerAngles = m_Rotation;
        m_Entity.transform.localScale       = m_Scale;

        VCPSimpleLight func = m_Entity.GetComponent <VCPSimpleLight>();

        if (func != null)
        {
            func.color = m_Color;
        }

        Renderer[] rs = m_Entity.GetComponentsInChildren <Renderer>(true);
        foreach (Renderer r in rs)
        {
            if (r is TrailRenderer)
            {
                r.enabled = true;
            }
            else if (r is ParticleRenderer)
            {
                r.enabled = true;
            }
            else if (r is ParticleSystemRenderer)
            {
                r.enabled = true;
            }
            else if (r is LineRenderer)
            {
                r.enabled = true;
            }
            else if (r is SpriteRenderer)
            {
                r.enabled = true;
            }
            else
            {
                r.enabled = m_Visible;
            }
        }
    }
コード例 #8
0
    public override void UpdateEntity(bool for_editor)
    {
        if (for_editor)
        {
            VCEComponentTool tool = m_Entity.GetComponent <VCEComponentTool>();
            tool.m_Data = this;
        }
        //m_Rotation = VCEMath.NormalizeEulerAngle(m_Rotation);
        m_Rotation = Vector3.zero;
        m_Entity.transform.localPosition    = m_Position;
        m_Entity.transform.localEulerAngles = m_Rotation;
        m_Entity.transform.localScale       = m_Scale;

        VCPPivot func = m_Entity.gameObject.GetComponent <VCPPivot>();

        func.Angle = m_PivotAng;

        Renderer[] rs = m_Entity.GetComponentsInChildren <Renderer>(true);
        foreach (Renderer r in rs)
        {
            if (r is TrailRenderer)
            {
                r.enabled = true;
            }
            else if (r is ParticleRenderer)
            {
                r.enabled = true;
            }
            else if (r is ParticleSystemRenderer)
            {
                r.enabled = true;
            }
            else if (r is LineRenderer)
            {
                r.enabled = true;
            }
            else if (r is SpriteRenderer)
            {
                r.enabled = true;
            }
            else
            {
                r.enabled = m_Visible;
            }
        }
    }
コード例 #9
0
 public override GameObject CreateEntity(bool for_editor, Transform parent)
 {
     if (m_Entity != null)
     {
         DestroyEntity();
     }
     m_Entity      = GameObject.Instantiate(Resources.Load(s_DecalPrefabPath) as GameObject) as GameObject;
     m_Entity.name = "Decal Image";
     if (for_editor)
     {
         m_Entity.transform.parent = VCEditor.Instance.m_DecalGroup.transform;
         VCEComponentTool tool = m_Entity.GetComponent <VCEComponentTool>();
         tool.m_IsBrush  = false;
         tool.m_InEditor = true;
         tool.m_ToolGroup.SetActive(true);
         tool.m_SelBound.enabled = false;
         tool.m_SelBound.GetComponent <Collider>().enabled = false;
         tool.m_SelBound.m_BoundColor = GLComponentBound.s_Blue;
         tool.m_Data = this;
         Collider[] cs = m_Entity.GetComponentsInChildren <Collider>(true);
         foreach (Collider c in cs)
         {
             if (c.gameObject != tool.m_SelBound.gameObject)
             {
                 c.enabled = false;
             }
         }
     }
     else
     {
         m_Entity.transform.parent = parent;
         Transform[] trs = m_Entity.GetComponentsInChildren <Transform>(true);
         foreach (Transform t in trs)
         {
             t.gameObject.layer = VCConfig.s_ProductLayer;
         }
     }
     UpdateEntity(for_editor);
     if (!for_editor)
     {
         UpdateComponent();
     }
     return(m_Entity);
 }
コード例 #10
0
    void NormalizeSelection()
    {
        SelectInfo del_si  = null;
        bool       changed = false;

        do
        {
            foreach (SelectInfo si in m_Selection)
            {
                VCEComponentTool        ct     = si.m_Component;
                List <VCEComponentTool> images = MirrorImage(ct);
                foreach (VCEComponentTool image in images)
                {
                    del_si = m_Selection.Find(iter => iter.m_Component == image);
                    if (del_si != null)
                    {
                        changed = true;
                        goto DEL;
                    }
                }
            }
DEL:
            m_Selection.Remove(del_si);
        }while (del_si != null);

        List <SelectInfo> del_list = new List <SelectInfo> ();

        foreach (SelectInfo si in m_Selection)
        {
            if (si.m_Component == null)
            {
                del_list.Add(si);
                changed = true;
            }
        }
        foreach (SelectInfo si in del_list)
        {
            m_Selection.Remove(si);
        }
        if (changed)
        {
            OnSelectionChange();
        }
    }
コード例 #11
0
    // Delete Selected Components
    public void DeleteSelection()
    {
        if (UsingGizmo)
        {
            return;
        }
        VCEditor.s_Mirror.CalcPrepare(VCEditor.s_Scene.m_Setting.m_VoxelSize);

        m_Action = new VCEAction();
        int del_cnt = 0;

        foreach (SelectInfo si in m_Selection)
        {
            VCEComponentTool        ct     = si.m_Component;
            List <VCEComponentTool> images = MirrorImage(ct);
            images.Add(ct);

            foreach (VCEComponentTool image in images)
            {
                int index = VCEditor.s_Scene.m_IsoData.GetComponentIndex(image.m_Data);
                if (index < 0)
                {
                    continue;
                }
                VCEDelComponent modify = new VCEDelComponent(index, image.m_Data);
                modify.Redo();
                m_Action.Modifies.Add(modify);
                del_cnt++;
            }
        }
        if (m_Action.Modifies.Count > 0)
        {
            m_Action.Register();
            ClearSelection();
        }
        if (del_cnt > 0)
        {
            VCEStatusBar.ShowText(del_cnt.ToString() + " " + "component(s) have been removed".ToLocalizationString(), 4);
        }
        m_MouseOnGizmo = false;
    }
コード例 #12
0
 void OnSelectionChange()
 {
     s_LastCreate = null;
     if (m_Selection.Count == 1)
     {
         VCComponentData sel_data       = m_Selection[0].m_Component.m_Data;
         VCPartData      sel_part_data  = sel_data as VCPartData;
         VCDecalData     sel_decal_data = sel_data as VCDecalData;
         if (sel_part_data != null)
         {
             ShowDataInspector(VCConfig.s_PartTypes[sel_part_data.m_Type].m_InspectorRes, sel_data);
         }
         else if (sel_decal_data != null)
         {
             ShowDataInspector("GUI/Prefabs/Inspectors/Components Inspectors/inspector decal image", sel_data);
         }
     }
     if (m_Selection.Count > 0)
     {
         VCEStatusBar.ShowText(m_Selection.Count.ToString() + " " + "component(s)".ToLocalizationString() + " " + "selected".ToLocalizationString(), 4);
     }
 }
コード例 #13
0
    void OnEnable()
    {
        float voxel_size = VCEditor.s_Scene.m_Setting.m_VoxelSize;

        if (m_DecalInst != null)
        {
            GameObject.Destroy(m_DecalInst.gameObject);
            m_DecalInst = null;
        }
        m_DecalInst = (GameObject.Instantiate(m_DecalPrefab) as GameObject).GetComponent <VCDecalHandler>();
        m_DecalInst.gameObject.SetActive(false);
        m_DecalInst.transform.parent        = this.transform;
        m_DecalInst.transform.localPosition = Vector3.zero;
        m_DecalInst.transform.localScale    = Vector3.one;
        m_DecalInst.m_Guid        = VCEditor.SelectedDecalGUID;
        m_DecalInst.m_Depth       = voxel_size;
        m_DecalInst.m_Size        = voxel_size * 10;
        m_DecalInst.m_Mirrored    = false;
        m_DecalInst.m_ShaderIndex = 0;
        m_Tool            = m_DecalInst.GetComponent <VCEComponentTool>();
        m_Tool.m_IsBrush  = true;
        m_Tool.m_InEditor = true;
        m_Tool.m_ToolGroup.SetActive(true);
    }
コード例 #14
0
    void Update()
    {
        if (VCEditor.SelectedPart == null)
        {
            return;
        }
        if (VCEInput.s_Cancel)
        {
            Cancel();
            return;
        }

        if (VCEditor.SelectedPart != m_LastSelectedPart)
        {
            if (m_PartInst != null)
            {
                GameObject.Destroy(m_PartInst);
            }
            if (VCEditor.SelectedPart.m_ResObj == null)
            {
                Debug.LogError("This part has no prefab resource: " + VCEditor.SelectedPart.m_Name);
                Cancel();
                return;
            }
            m_PartInst = GameObject.Instantiate(VCEditor.SelectedPart.m_ResObj) as GameObject;
            m_PartInst.SetActive(false);
            m_PartInst.transform.parent        = this.transform;
            m_PartInst.transform.localPosition = Vector3.zero;
            m_Tool            = m_PartInst.GetComponent <VCEComponentTool>();
            m_Tool.m_IsBrush  = true;
            m_Tool.m_InEditor = true;
            m_Tool.m_ToolGroup.SetActive(true);

            Collider[] cs = m_PartInst.GetComponentsInChildren <Collider>(true);
            foreach (Collider c in cs)
            {
                if (c.gameObject != m_Tool.m_ToolGroup.gameObject)
                {
                    Collider.Destroy(c);
                }
                else
                {
                    c.enabled = false;
                }
            }

            m_LastSelectedPart = VCEditor.SelectedPart;
        }

        float voxel_size = VCEditor.s_Scene.m_Setting.m_VoxelSize;

        if (!VCEInput.s_MouseOnUI && VCEMath.RayCastDrawTarget(VCEInput.s_PickRay, out m_Target, VCEMath.MC_ISO_VALUE) && VCEditor.s_Scene.m_IsoData.IsPointIn(m_Target.cursor))
        {
            m_PartInst.SetActive(true);
            Vector3    point  = m_Target.rch.point * 2;
            IntVector3 ipoint = new IntVector3(point);
            m_Tool.SetPivotPos(ipoint.ToVector3() * 0.5f * voxel_size);

            bool canput = true;
            if (VCEditor.s_Scene.m_IsoData.FindComponentsAtPos(m_PartInst.transform.localPosition).Count > 0)
            {
                canput = false;
            }
            // Mirror
            if (VCEditor.s_Mirror.Enabled_Masked)
            {
                VCEditor.s_Mirror.CalcPrepare(VCEditor.s_Scene.m_Setting.m_VoxelSize);
                if (m_PartInst.transform.localPosition.x == VCEditor.s_Mirror.WorldPos.x && VCEditor.s_Mirror.XPlane_Masked)
                {
                    canput = false;
                }
                if (m_PartInst.transform.localPosition.y == VCEditor.s_Mirror.WorldPos.y && VCEditor.s_Mirror.YPlane_Masked)
                {
                    canput = false;
                }
                if (m_PartInst.transform.localPosition.z == VCEditor.s_Mirror.WorldPos.z && VCEditor.s_Mirror.ZPlane_Masked)
                {
                    canput = false;
                }
            }
            if (canput)
            {
                m_Tool.m_SelBound.m_BoundColor = GLComponentBound.s_Green;
                m_Tool.m_SelBound.m_Highlight  = false;
            }
            else
            {
                m_Tool.m_SelBound.m_BoundColor = GLComponentBound.s_Red;
                m_Tool.m_SelBound.m_Highlight  = true;
            }

            if (Input.GetMouseButtonDown(0) && canput)
            {
                Do();
            }
        }
        else
        {
            m_PartInst.SetActive(false);
        }
    }
コード例 #15
0
    void Update()
    {
        if (!VCEditor.DocumentOpen())
        {
            return;
        }

        // Check 's_LastCreate'
        if (s_LastCreate != null)
        {
            ClearSelection();
            SelectInfo si = new SelectInfo();
            si.m_Component = s_LastCreate;
            m_Selection.Add(si);
            OnSelectionChange();
        }

        VCEditor.s_ProtectLock0 = UsingGizmo;
        NormalizeSelection();

        // Update Pick Order
        Vector3 mousePos = Input.mousePosition;

        if ((mousePos - lastMousePos).magnitude > 3.1f)
        {
            pick_order   = 0;
            lastMousePos = mousePos;
        }

        #region PART_DESC
        // Part Description Board
        if (m_DescBoard != null)
        {
            m_DescBoard.m_Position = Vector3.Lerp(m_DescBoard.m_Position, VCEInput.s_PickRay.GetPoint(1.5f), 0.5f);
            List <VCEComponentTool> pickall = new List <VCEComponentTool> ();
            if (!UsingGizmo && !VCEInput.s_MouseOnUI)
            {
                pickall = VCEMath.RayPickComponents(VCEInput.s_PickRay);
            }
            List <VCPart> pps = new List <VCPart> ();
            Vector3       v   = Vector3.zero;
            if (pickall.Count > 0)
            {
                v = pickall[0].transform.localPosition;
            }
            foreach (VCEComponentTool ct in pickall)
            {
                if (Vector3.Distance(ct.transform.localPosition, v) > VCEditor.s_Scene.m_Setting.m_VoxelSize * 2)
                {
                    continue;
                }
                VCPart pp = ct.GetComponent <VCPart>();
                if (pp != null)
                {
                    pps.Add(pp);
                }
            }
            if (pickall.Count > 0)
            {
                m_DescBoard.FadeIn();
                VCEditor.Instance.m_UI.m_HoloBoardCamera.enabled = true;
            }
            else
            {
                VCEditor.Instance.m_UI.m_HoloBoardCamera.enabled = false;
                m_DescBoard.FadeOut();
            }
            pickall.Clear();
            VCEditor.Instance.m_UI.m_PartDescList.SyncList(pps);
            pps.Clear();
            pickall = null;
            pps     = null;
        }
        #endregion

        // Pick Component
        VCEComponentTool picked = null;
        if (!VCEInput.s_MouseOnUI && !m_MouseOnGizmo)
        {
            picked = VCEMath.RayPickComponent(VCEInput.s_PickRay, pick_order);
        }
        if (Input.GetMouseButtonDown(0) && !VCEInput.s_MouseOnUI && !m_MouseOnGizmo)
        {
            if (!VCEInput.s_Shift && !VCEInput.s_Control && !VCEInput.s_Alt)
            {
                m_Selection.Clear();
            }
            if (picked != null)
            {
                SelectInfo si = FindSelected(picked);
                if (si != null)
                {
                    m_Selection.Remove(si);
                }
                else
                {
                    si             = new SelectInfo();
                    si.m_Component = picked;
                    List <SelectInfo> del_list = new List <SelectInfo> ();
                    foreach (SelectInfo sel in m_Selection)
                    {
                        VCEComponentTool        ct     = sel.m_Component;
                        List <VCEComponentTool> images = MirrorImage(ct);
                        if (images.Contains(si.m_Component))
                        {
                            del_list.Add(sel);
                        }
                    }
                    m_Selection.Add(si);
                    foreach (SelectInfo del in del_list)
                    {
                        m_Selection.Remove(del);
                    }
                }
                pick_order++;
            }
            OnSelectionChange();
        }

        // Update bound color & highlight
        foreach (VCComponentData cd in VCEditor.s_Scene.m_IsoData.m_Components)
        {
            VCEComponentTool c = cd.m_Entity.GetComponent <VCEComponentTool>();
            c.m_SelBound.enabled = true;
            c.m_SelBound.GetComponent <Collider>().enabled = true;
            c.m_SelBound.m_Highlight  = (c == picked);
            c.m_SelBound.m_BoundColor = GLComponentBound.s_Blue;
        }

        // Update selection and mirror's bound color
        if (m_Selection.Count > 0)
        {
            VCEditor.s_Mirror.CalcPrepare(VCEditor.s_Scene.m_Setting.m_VoxelSize);
            foreach (SelectInfo si in m_Selection)
            {
                VCEComponentTool        c       = si.m_Component;
                List <VCEComponentTool> mirrors = MirrorImage(c);
                foreach (VCEComponentTool m in mirrors)
                {
                    m.m_SelBound.m_BoundColor = GLComponentBound.s_Orange;
                }
            }
            foreach (SelectInfo si in m_Selection)
            {
                VCEComponentTool c = si.m_Component;
                c.m_SelBound.m_BoundColor = GLComponentBound.s_Yellow;
            }
        }

        // Update Inspectors
        if (m_Selection.Count < 1)
        {
            HideInspectors();
        }
        else if (m_Selection.Count == 1)
        {
            ShowMainInspector();

            VCEUISelectComponentInspector sci = m_MainInspector.GetComponent <VCEUISelectComponentInspector>();
            if (m_Selection[0].m_Component != null)
            {
                sci.m_SelectInfo.text = m_Selection[0].m_Component.gameObject.name;
            }
            else
            {
                sci.m_SelectInfo.text = "< Deleted >";
            }
        }
        else
        {
            ShowMainInspector();
            HideDataInspector();
            VCEUISelectComponentInspector sci = m_MainInspector.GetComponent <VCEUISelectComponentInspector>();
            sci.m_SelectInfo.text = m_Selection.Count.ToString() + " " + "objects".ToLocalizationString() + " " + "selected".ToLocalizationString();
        }

        // Transform Gizmos
        if (m_Selection.Count > 0)
        {
            Vector3 avePos  = Vector3.zero;
            int     rotmask = 7;
            foreach (SelectInfo si in m_Selection)
            {
                avePos += si.m_Component.transform.position;
                VCPartData part_data = si.m_Component.m_Data as VCPartData;
                if (part_data != null)
                {
                    rotmask &= VCConfig.s_PartTypes[si.m_Component.m_Data.m_Type].m_RotateMask;
                }
            }
            avePos /= ((float)m_Selection.Count);
            m_MovingGizmo.transform.position   = avePos;
            m_RotatingGizmo.transform.position = avePos;
            m_MovingGizmo.gameObject.SetActive(VCEditor.TransformType == EVCETransformType.Move);
            m_RotatingGizmo.gameObject.SetActive(VCEditor.TransformType == EVCETransformType.Rotate);
            m_RotatingGizmo.m_AxisMask = rotmask;
        }
        else
        {
            m_MovingGizmo.gameObject.SetActive(false);
            m_RotatingGizmo.gameObject.SetActive(false);
        }
    }