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(); }
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; }
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; }
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(); }
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]); } } }
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(); }
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]); * } */ }
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]); } } }
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; }
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; } }
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(); }
public CopyDecalData(Decal.DecalSharedSettings Shared, Vector3 Position, Quaternion Rotation, Vector3 Scale) => (this.Shared, this.Position, this.Rotation, this.Scale) = (Shared, Position, Rotation, Scale);