mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2025-01-09 22:55:09 +08:00
Fix up/down arrow select in project window, Fix selecting project audio placements
This commit is contained in:
parent
76d0ac224c
commit
3d22e9b2a4
@ -86,6 +86,22 @@ namespace CodeWalker.World
|
||||
|
||||
}
|
||||
|
||||
public AudioPlacement FindPlacement(RelFile relfile, Dat151RelData reldata)
|
||||
{
|
||||
if (relfile == null) return null;
|
||||
if (reldata == null) return null;
|
||||
if (PlacementsDict.TryGetValue(relfile, out var placements))
|
||||
{
|
||||
foreach (var placement in placements)
|
||||
{
|
||||
if (placement.AmbientZone == reldata) return placement;
|
||||
if (placement.AmbientRule == reldata) return placement;
|
||||
if (placement.StaticEmitter == reldata) return placement;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -114,6 +114,7 @@ namespace CodeWalker.Project
|
||||
private List<YmapEntityDef> interiorslist = new List<YmapEntityDef>(); //used for handling interiors ybns
|
||||
|
||||
private bool ShowProjectItemInProcess = false;
|
||||
private bool WorldSelectionChangeInProcess = false;
|
||||
|
||||
|
||||
public ProjectForm(WorldForm worldForm = null)
|
||||
@ -886,13 +887,13 @@ namespace CodeWalker.Project
|
||||
if (CurrentAudioAmbientRule?.AmbientRule == null) CurrentAudioAmbientRule = null;
|
||||
if (CurrentAudioStaticEmitter?.StaticEmitter == null) CurrentAudioStaticEmitter = null;
|
||||
|
||||
//need to create a temporary AudioPlacement wrapper for these, since AudioPlacements usually come from WorldForm
|
||||
var daz = item as Dat151AmbientZone;
|
||||
|
||||
var daz = item as Dat151AmbientZone;//need to get these from WorldForm, project tree only contains the Dat151Rel items
|
||||
var dae = item as Dat151AmbientRule;
|
||||
var dse = item as Dat151StaticEmitter;
|
||||
if (daz != null) CurrentAudioAmbientZone = new AudioPlacement(daz.Rel, daz);
|
||||
if (dae != null) CurrentAudioAmbientRule = new AudioPlacement(dae.Rel, dae);
|
||||
if (dse != null) CurrentAudioStaticEmitter = new AudioPlacement(dse.Rel, dse);
|
||||
if (daz != null) CurrentAudioAmbientZone = WorldForm?.GetAudioPlacement(daz.Rel, daz);
|
||||
if (dae != null) CurrentAudioAmbientRule = WorldForm?.GetAudioPlacement(dae.Rel, dae);
|
||||
if (dse != null) CurrentAudioStaticEmitter = WorldForm?.GetAudioPlacement(dse.Rel, dse);
|
||||
|
||||
|
||||
|
||||
@ -7610,13 +7611,15 @@ namespace CodeWalker.Project
|
||||
|
||||
public void OnWorldSelectionChanged(MapSelection sel)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (WorldSelectionChangeInProcess) return;
|
||||
if (InvokeRequired)
|
||||
{
|
||||
BeginInvoke(new Action(() => { OnWorldSelectionChanged(sel); }));
|
||||
return;
|
||||
}
|
||||
else
|
||||
WorldSelectionChangeInProcess = true;
|
||||
|
||||
try
|
||||
{
|
||||
var wasmult = (CurrentMulti != null);
|
||||
if ((sel.MultipleSelectionItems != null) && (sel.MultipleSelectionItems.Length > 0))
|
||||
@ -7627,6 +7630,7 @@ namespace CodeWalker.Project
|
||||
ShowProjectItemInProcess = true;
|
||||
ShowCurrentProjectItem(false);
|
||||
ShowProjectItemInProcess = false;
|
||||
WorldSelectionChangeInProcess = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
@ -7833,8 +7837,9 @@ namespace CodeWalker.Project
|
||||
ShowProjectItemInProcess = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
WorldSelectionChangeInProcess = false;
|
||||
}
|
||||
public void OnWorldSelectionModified(MapSelection sel)
|
||||
{
|
||||
|
@ -2038,6 +2038,17 @@ namespace CodeWalker
|
||||
{
|
||||
audiozones.PlacementsDict.Remove(rel); //should cause a rebuild to add/remove items
|
||||
}
|
||||
public AudioPlacement GetAudioPlacement(RelFile rel, Dat151RelData reldata)
|
||||
{
|
||||
var placement = audiozones.FindPlacement(rel, reldata);
|
||||
if (placement == null)
|
||||
{
|
||||
if (reldata is Dat151AmbientZone az) placement = new AudioPlacement(rel, az);
|
||||
if (reldata is Dat151AmbientRule ar) placement = new AudioPlacement(rel, ar);
|
||||
if (reldata is Dat151StaticEmitter se) placement = new AudioPlacement(rel, se);
|
||||
}
|
||||
return placement;
|
||||
}
|
||||
|
||||
|
||||
public void SetCameraTransform(Vector3 pos, Quaternion rot)
|
||||
@ -3619,7 +3630,7 @@ namespace CodeWalker
|
||||
if (change)
|
||||
{
|
||||
// If an item has been selected the user is likely to use a keybind. We need focus!
|
||||
Focus();
|
||||
//Focus();//DISABLED THIS due to causing problems with using arrows to select in project window!
|
||||
}
|
||||
}
|
||||
public void SelectMulti(MapSelection[] items, bool addSelection = false, bool notifyProject = true)
|
||||
|
Loading…
Reference in New Issue
Block a user