public void Load(Decal.DecalSharedSettings DecalSettings)
        {
            if (Creating)
            {
                if (DecalSettings == null)
                {
                    return;
                }
                Loaded = DecalSettings;
                SwitchCreation();
                return;
            }

            UpdateSelection();

            Loaded = DecalSettings;

            if (Loaded == null)
            {
                ClearBtn.SetActive(true);
            }
            else
            {
                ClearBtn.SetActive(!string.IsNullOrEmpty(Loaded.Tex2Path));
            }

            CreateBtn.interactable    = Loaded != null;
            SelectAllBtn.interactable = Loaded != null;

            SetUI();
        }
Esempio n. 2
0
        public void DropAtGameplay()
        {
            if (ResourceBrowser.DragedObject == null || ResourceBrowser.DragedObject.ContentType != ResourceObject.ContentTypes.Decal)
            {
                return;
            }

            if (!ResourceBrowser.IsDecal())
            {
                return;
            }

            DropAtDecals();
            Decal.DecalSharedSettings Shared = DecalSettings.Loaded;
            if (Shared == null)
            {
                Debug.Log("No deca setting loaded");
                return;
            }

            Vector3 MouseWorldPos = CameraControler.BufforedGameplayCursorPos;

            PlacementManager.PlaceAtPosition(MouseWorldPos, DecalSettingsUi.CreationPrefab, Place);

            GoToSelection();
            DecalSettingsUi.Load(Shared);
        }
    public override void Register()
    {
        Shared = RegisterShared;        // DecalSettings.GetLoaded;

        Type     = Shared.Type;
        Tex1Path = Shared.Tex1Path;
        Tex2Path = Shared.Tex2Path;
    }
Esempio n. 4
0
        public override void Register(HistoryParameter Param)
        {
            parameter = (Param as DecalsSharedValuesHistoryParameter);
            Shared    = parameter.RegisterShared;

            Type     = Shared.Type;
            Tex1Path = Shared.Tex1Path;
            Tex2Path = Shared.Tex2Path;
        }
        public void PasteAction()
        {
            if (CopyData == null)
            {
                return;
            }

            int PasteCount = CopyData.Count;

            isPasteAction = true;
            if (PasteCount > 0)
            {
                Undo.RegisterUndo(new UndoHistory.HistoryDecalsChange());
            }

            PastedObjects.Clear();

            //GoToSelection();

            Vector3 PlaceOffset = new Vector3(0.5f, 0f, -0.5f);

            Decal.DecalSharedSettings storePrevousSettings = PlaceSharedSettings;

            PlacementManager.BeginPlacement(DecalSettingsUi.CreationPrefab, Place);
            for (int i = 0; i < PasteCount; i++)
            {
                if (CopyData[i].Shared == null)
                {
                    continue;
                }

                PlaceSharedSettings = CopyData[i].Shared;
                paste_CutOffLOD     = CopyData[i].CutOffLOD;
                paste_NearCutOffLOD = CopyData[i].NearCutOffLOD;
                paste_OwnerArmy     = CopyData[i].OwnerArmy;

                PlacementManager.PlaceAtPosition(CopyData[i].Position + PlaceOffset, CopyData[i].Rotation, CopyData[i].Scale);
            }
            PlacementManager.Clear();

            PlaceSharedSettings = storePrevousSettings;
            DecalsControler.Sort();
            GoToSelection();
            SelectionManager.Current.CleanSelection();
            for (int i = 0; i < PastedObjects.Count; i++)
            {
                SelectionManager.Current.SelectObjectAdd(PastedObjects[i]);
                DecalsControler.MoveTop(PastedObjects[i].GetComponent <OzoneDecal>().Dec);
            }

            Debug.Log("Pasted " + PastedObjects.Count + " decals");

            UpdateTotalCount();

            //DecalsControler.Sort();
            isPasteAction = false;
        }
Esempio n. 6
0
        public void DropAtDecals()
        {
            if (ResourceBrowser.DragedObject == null || ResourceBrowser.DragedObject.ContentType != ResourceObject.ContentTypes.Decal)
            {
                return;
            }

            if (!ResourceBrowser.IsDecal())
            {
                return;
            }

            string DropPath = ResourceBrowser.Current.LoadedPaths[ResourceBrowser.DragedObject.InstanceId];

            ResourceBrowser.ClearDrag();
            if (!DropPath.StartsWith("/"))
            {
                DropPath = DropPath.ToLower().Replace("env", "/env");
            }
            Debug.Log(DropPath);

            foreach (Decal.DecalSharedSettings Shared in Decal.AllDecalsShared)
            {
                if (Shared.Tex1Path == DropPath)
                {
                    SelectionManager.Current.CleanSelection();
                    DecalSettingsUi.Load(Shared);
                    Debug.Log("Exist");
                    return;
                }
            }

            // Decal does not exist. Create it
            SelectionManager.Current.CleanSelection();
            GoToSelection();

            Decal.DecalSharedSettings NewSharedDecal = new Decal.DecalSharedSettings();

            if (DropPath.ToLower().Contains("normal"))
            {
                NewSharedDecal.Type = TerrainDecalType.TYPE_NORMALS;
            }
            else
            {
                NewSharedDecal.Type = TerrainDecalType.TYPE_ALBEDO;
            }

            NewSharedDecal.Tex1Path = DropPath;

            NewSharedDecal.UpdateMaterial();
            Decal.AllDecalsShared.Add(NewSharedDecal);

            DecalSettingsUi.Load(NewSharedDecal);
            DecalsList.GenerateTypes();
        }
    public override void DoUndo()
    {
        RegisterShared = Shared;

        if (!RedoGenerated)
        {
            HistoryDecalsSharedValues.GenerateRedo(Undo.Current.Prefabs.DecalSharedValues).Register();
        }
        RedoGenerated = true;
        DoRedo();
    }
 public void ToggleHideOther(Decal.DecalSharedSettings Connected)
 {
     foreach (Decal.DecalSharedSettings Shared in Decal.AllDecalsShared)
     {
         if (Shared == Connected)
         {
             continue;
         }
         Shared.Hidden = !Shared.Hidden;
     }
     DecalsList.UpdateSelection();
 }
Esempio n. 9
0
        public void OnClickGroup(ListObject ob)
        {
            Decal.DecalSharedSettings dss = AllObjects[ob.InstanceId].GetComponent <ListObjectDecal>().Setting;

            SelectionManager.Current.CleanSelection();

            for (int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++)
            {
                if (SelectionManager.Current.AffectedGameObjects[i].GetComponent <OzoneDecal>().Dec.Shared == dss)
                {
                    SelectionManager.Current.SelectObjectAdd(SelectionManager.Current.AffectedGameObjects[i]);
                }
            }
        }
Esempio n. 10
0
        public void CreateNewDecalType()
        {
            //TODO Undo Create

            SelectionManager.Current.CleanSelection();

            Decal.DecalSharedSettings NewSharedDecal = new Decal.DecalSharedSettings();

            NewSharedDecal.UpdateMaterial();
            Decal.AllDecalsShared.Add(NewSharedDecal);

            DecalSettingsUi.Load(NewSharedDecal);
            DecalsList.GenerateTypes();
        }
Esempio n. 11
0
        public void OnClickType(ListObject ob)
        {
            Decal.DecalSharedSettings dss = AllObjects[ob.InstanceId].GetComponent <ListObjectDecal>().Setting;
            DecalsInfo.Current.DecalSettingsUi.Load(dss);
            UpdateSelection();

            /*
             * SelectionManager.Current.CleanSelection();
             *
             * for(int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++)
             * {
             *      if (SelectionManager.Current.AffectedGameObjects[i].GetComponent<OzoneDecal>().Component.Shared == dss)
             *              SelectionManager.Current.SelectObjectAdd(SelectionManager.Current.AffectedGameObjects[i]);
             * }
             */
        }
Esempio n. 12
0
        public void SelectAll()
        {
            if (Loaded == null)
            {
                return;
            }

            Decal.DecalSharedSettings Shared = Loaded;

            SelectionManager.Current.CleanSelection();

            for (int i = 0; i < SelectionManager.Current.AffectedGameObjects.Length; i++)
            {
                if (SelectionManager.Current.AffectedGameObjects[i].GetComponent <OzoneDecal>().Dec.Shared == Shared)
                {
                    SelectionManager.Current.SelectObjectAdd(SelectionManager.Current.AffectedGameObjects[i]);
                }
            }
        }
Esempio n. 13
0
        IEnumerator GeneratingList()
        {
            HashSet <Decal.DecalSharedSettings> .Enumerator ListEnum = Decal.AllDecalsShared.GetEnumerator();
            int indstanceId = 0;



            while (ListEnum.MoveNext())
            {
                Decal.DecalSharedSettings Current = ListEnum.Current;

                if (Current != null)
                {
                    GameObject      NewListObject = Instantiate(TypePrefab, ListPrefab) as GameObject;
                    ListObjectDecal lo            = NewListObject.GetComponent <ListObjectDecal>();
                    AllListObjects.Add(lo);

                    NewListObject.transform.SetSiblingIndex((int)Current.Type);

                    lo.InstanceId    = indstanceId;
                    lo.ListId        = 0;
                    lo.Setting       = Current;
                    lo.ClickActionId = OnClickType;
                    lo.DragAction    = OnDropObject;
                    lo.SetHidden(Current.Hidden);
                    lo.ObjectName.text = ((TerrainDecalTypeString)((int)Current.Type)).ToString().Replace("_", " ") + "\n" + Current.Tex1Path;
                    lo.Image.texture   = Current.Texture1;

                    AllObjects.Add(NewListObject);
                    indstanceId++;

                    UpdateSelection();
                }
            }
            Layout.enabled     = true;
            SizeFitter.enabled = true;
            yield return(null);

            Layout.enabled     = false;
            SizeFitter.enabled = false;
        }
Esempio n. 14
0
 public DecalsSharedValuesHistoryParameter(Decal.DecalSharedSettings RegisterShared)
 {
     this.RegisterShared = RegisterShared;
 }
 public CopyDecalData(Decal.DecalSharedSettings Shared, Vector3 Position, Quaternion Rotation, Vector3 Scale, float CutOffLOD, float NearCutOffLOD, int OwnerArmy)
 => (this.Shared, this.Position, this.Rotation, this.Scale, this.CutOffLOD, this.NearCutOffLOD, this.OwnerArmy) = (Shared, Position, Rotation, Scale, CutOffLOD, NearCutOffLOD, OwnerArmy);
        void DuplicateAction()
        {
            DuplicateData = new List <CopyDecalData>();

            int count = DecalsControler.AllDecals.Count;
            List <GameObject> Objs = SelectionManager.GetAllSelectedGameobjects(false);

            Debug.Log("Copied " + Objs.Count + " decal");

            int selectionCount = Objs.Count;

            for (int i = 0; i < count; i++)
            {
                for (int s = 0; s < selectionCount; s++)
                {
                    if (Objs[s] == DecalsControler.AllDecals[i].Obj.gameObject)
                    {
                        DuplicateData.Add(
                            new CopyDecalData(DecalsControler.AllDecals[i].Shared,
                                              DecalsControler.AllDecals[i].Obj.tr.localPosition,
                                              DecalsControler.AllDecals[i].Obj.tr.localRotation,
                                              DecalsControler.AllDecals[i].Obj.tr.localScale,
                                              DecalsControler.AllDecals[i].CutOffLOD,
                                              DecalsControler.AllDecals[i].NearCutOffLOD,
                                              DecalsControler.AllDecals[i].OwnerArmy)
                            );
                        DuplicateCenterPoint += DecalsControler.AllDecals[i].Obj.tr.localPosition;
                        break;
                    }
                }
            }

            if (DuplicateData.Count > 0)
            {
                DuplicateCenterPoint /= DuplicateData.Count;
            }

            DecalsControler.Sort();


            if (DuplicateData.Count > 0)
            {
                int PasteCount = DuplicateData.Count;
                isPasteAction = true;
                if (PasteCount > 0)
                {
                    Undo.RegisterUndo(new UndoHistory.HistoryDecalsChange());
                }

                PastedObjects.Clear();

                //GoToSelection();

                Vector3 PlaceOffset = new Vector3(0.5f, 0f, -0.5f);

                Decal.DecalSharedSettings storePrevousSettings = PlaceSharedSettings;

                PlacementManager.BeginPlacement(DecalSettingsUi.CreationPrefab, Place);
                for (int i = 0; i < PasteCount; i++)
                {
                    if (DuplicateData[i].Shared == null)
                    {
                        continue;
                    }

                    PlaceSharedSettings = DuplicateData[i].Shared;
                    paste_CutOffLOD     = DuplicateData[i].CutOffLOD;
                    paste_NearCutOffLOD = DuplicateData[i].NearCutOffLOD;
                    paste_OwnerArmy     = DuplicateData[i].OwnerArmy;

                    PlacementManager.PlaceAtPosition(DuplicateData[i].Position + PlaceOffset, DuplicateData[i].Rotation, DuplicateData[i].Scale);
                }
                PlacementManager.Clear();

                PlaceSharedSettings = storePrevousSettings;
                DecalsControler.Sort();
                GoToSelection();
                SelectionManager.Current.CleanSelection();
                for (int i = 0; i < PastedObjects.Count; i++)
                {
                    SelectionManager.Current.SelectObjectAdd(PastedObjects[i]);
                    DecalsControler.MoveTop(PastedObjects[i].GetComponent <OzoneDecal>().Dec);
                }

                Debug.Log("Pasted " + PastedObjects.Count + " decals");

                UpdateTotalCount();

                //DecalsControler.Sort();
                isPasteAction = false;
            }
        }
Esempio n. 17
0
        void CleanAssetsMemory()
        {
            if (LastLoadedType == 0)
            {
                //Textures
                UsedTerrainTexturesMemory.Clear();

                for (int i = 0; i < ScmapEditor.Current.Textures.Length; i++)
                {
                    if (ScmapEditor.Current.Textures[i].Albedo != null)
                    {
                        UsedTerrainTexturesMemory.Add(ScmapEditor.Current.Textures[i].Albedo);
                    }
                    if (ScmapEditor.Current.Textures[i].Normal != null)
                    {
                        UsedTerrainTexturesMemory.Add(ScmapEditor.Current.Textures[i].Normal);
                    }
                }


                int count = LoadedTextures.Count;
                for (int i = 0; i < count; i++)
                {
                    if (LoadedTextures[i] != null && !UsedTerrainTexturesMemory.Contains(LoadedTextures[i]))
                    {
                        Destroy(LoadedTextures[i]);
                    }
                }
                UsedTerrainTexturesMemory.Clear();
            }
            else if (LastLoadedType == 1 || LastLoadedType == 2)
            {
                // Decals
                UsedTerrainTexturesMemory.Clear();

                HashSet <Decal.DecalSharedSettings> .Enumerator ListEnum = Decal.AllDecalsShared.GetEnumerator();
                while (ListEnum.MoveNext())
                {
                    Decal.DecalSharedSettings Current = ListEnum.Current;
                    if (Current != null)
                    {
                        if (Current.Texture1)
                        {
                            UsedTerrainTexturesMemory.Add(Current.Texture1);
                        }
                        if (Current.Texture2)
                        {
                            UsedTerrainTexturesMemory.Add(Current.Texture2);
                        }
                    }
                }

                int count = LoadedTextures.Count;
                for (int i = 0; i < count; i++)
                {
                    if (LoadedTextures[i] != null && !UsedTerrainTexturesMemory.Contains(LoadedTextures[i]))
                    {
                        Destroy(LoadedTextures[i]);
                    }
                }
                UsedTerrainTexturesMemory.Clear();
            }
            else if (LastLoadedType == 3)
            {
                int count = LoadedProps.Count;
                for (int i = 0; i < count; i++)
                {
                    for (int l = 0; l < LoadedProps[i].BP.LODs.Length; l++)
                    {
                        if (!GetGamedataFile.IsStoredInMemory(LoadedProps[i].BP.LODs[l].Albedo) && LoadedProps[i].BP.LODs[l].Albedo != Texture2D.whiteTexture)
                        {
                            Destroy(LoadedProps[i].BP.LODs[l].Albedo);
                        }
                        if (!GetGamedataFile.IsStoredInMemory(LoadedProps[i].BP.LODs[l].Normal) && LoadedProps[i].BP.LODs[l].Normal != GetGamedataFile.emptyNormalTexture)
                        {
                            Destroy(LoadedProps[i].BP.LODs[l].Normal);
                        }
                    }
                }
            }

            LoadedTextures.Clear();
            LoadedPaths.Clear();
            LoadedProps.Clear();
        }
Esempio n. 18
0
 public CopyDecalData(Decal.DecalSharedSettings Shared, Vector3 Position, Quaternion Rotation, Vector3 Scale)
 => (this.Shared, this.Position, this.Rotation, this.Scale) = (Shared, Position, Rotation, Scale);