Give MoveCommand to selected units only

This commit is contained in:
Stedd 2023-09-03 20:39:15 +02:00
parent ec10c43228
commit 77db237e9e
8 changed files with 211 additions and 33 deletions

View File

@ -144,6 +144,7 @@ MonoBehaviour:
syncDirection: 0 syncDirection: 0
syncMode: 0 syncMode: 0
syncInterval: 0 syncInterval: 0
_unitMovement: {fileID: 8681090027785358193}
_onSelect: _onSelect:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:

View File

@ -803,8 +803,9 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 1784456514} - component: {fileID: 1784456514}
- component: {fileID: 1784456513} - component: {fileID: 1784456513}
- component: {fileID: 1784456515}
m_Layer: 0 m_Layer: 0
m_Name: UnitSelectionHandler m_Name: UnitHandlers
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
@ -824,7 +825,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_layerMask: _layerMask:
serializedVersion: 2 serializedVersion: 2
m_Bits: 4294967295 m_Bits: 1
--- !u!4 &1784456514 --- !u!4 &1784456514
Transform: Transform:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -840,6 +841,22 @@ Transform:
m_Children: [] m_Children: []
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1784456515
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1784456512}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 74e28a0cf1a767d498b804650f3b1ea1, type: 3}
m_Name:
m_EditorClassIdentifier:
_unitSelectionHandler: {fileID: 1784456513}
_layerMask:
serializedVersion: 2
m_Bits: 1
--- !u!1 &1896718083 --- !u!1 &1896718083
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1152,6 +1169,6 @@ SceneRoots:
- {fileID: 1954283568} - {fileID: 1954283568}
- {fileID: 9051835} - {fileID: 9051835}
- {fileID: 1904145807} - {fileID: 1904145807}
- {fileID: 1784456514}
- {fileID: 168675456} - {fileID: 168675456}
- {fileID: 578241694} - {fileID: 578241694}
- {fileID: 1784456514}

View File

@ -7,9 +7,12 @@ using UnityEngine.Serialization;
public class Unit : NetworkBehaviour public class Unit : NetworkBehaviour
{ {
[SerializeField] private UnitMovement _unitMovement;
[SerializeField] private UnityEvent _onSelect; [SerializeField] private UnityEvent _onSelect;
[SerializeField] private UnityEvent _onDeSelect; [SerializeField] private UnityEvent _onDeSelect;
public UnitMovement UnitMovement => _unitMovement;
#region Client #region Client
[Client] [Client]

View File

@ -0,0 +1,35 @@
using System;
using UnityEngine;
using UnityEngine.InputSystem;
public class UnitCommandGiver : MonoBehaviour
{
[SerializeField] private UnitSelectionHandler _unitSelectionHandler;
[SerializeField] private LayerMask _layerMask;
private Camera _camera;
private void Start()
{
_camera = Camera.main;
}
private void Update()
{
if (!Mouse.current.rightButton.wasPressedThisFrame) return;
Ray ray = _camera.ScreenPointToRay(Mouse.current.position.ReadValue());
if (!Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, _layerMask)) return;
TryMove(hit.point);
}
private void TryMove(Vector3 destination)
{
foreach (var selectedUnit in _unitSelectionHandler.SelectedUnits)
{
selectedUnit.UnitMovement.CmdMove(destination);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 74e28a0cf1a767d498b804650f3b1ea1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -12,7 +12,7 @@ public class UnitMovement : NetworkBehaviour
#region Server #region Server
[Command] private void CmdMove(Vector3 destination) [Command] public void CmdMove(Vector3 destination)
{ {
if (NavMesh.SamplePosition(destination, out NavMeshHit hit, 1f, NavMesh.AllAreas)) if (NavMesh.SamplePosition(destination, out NavMeshHit hit, 1f, NavMesh.AllAreas))
{ {
@ -21,28 +21,4 @@ public class UnitMovement : NetworkBehaviour
} }
#endregion #endregion
#region Client
public override void OnStartAuthority()
{
base.OnStartAuthority();
_camera = Camera.main;
_mouse = Mouse.current;
}
[ClientCallback]
private void Update()
{
if (!isOwned) return;
if (!_mouse.rightButton.wasPressedThisFrame) return;
Ray ray = _camera.ScreenPointToRay(_mouse.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity))
{
CmdMove(hit.point);
}
}
#endregion
} }

View File

@ -10,7 +10,7 @@ public class UnitSelectionHandler : MonoBehaviour
[SerializeField] private LayerMask _layerMask; [SerializeField] private LayerMask _layerMask;
private Camera _mainCamera; private Camera _mainCamera;
private readonly List<Unit> _selectedUnits = new(); public List<Unit> SelectedUnits { get; } = new();
private void Start() private void Start()
{ {
@ -32,12 +32,12 @@ public class UnitSelectionHandler : MonoBehaviour
private void ClearSelectedUnits() private void ClearSelectedUnits()
{ {
foreach (Unit selectedUnit in _selectedUnits) foreach (Unit selectedUnit in SelectedUnits)
{ {
selectedUnit.DeSelect(); selectedUnit.DeSelect();
} }
_selectedUnits.Clear(); SelectedUnits.Clear();
} }
private void ClearSelectionArea() private void ClearSelectionArea()
@ -50,9 +50,9 @@ public class UnitSelectionHandler : MonoBehaviour
if (!unit.isOwned) return; if (!unit.isOwned) return;
_selectedUnits.Add(unit); SelectedUnits.Add(unit);
foreach (Unit selectedUnit in _selectedUnits) foreach (Unit selectedUnit in SelectedUnits)
{ {
selectedUnit.Select(); selectedUnit.Select();
} }

View File

@ -6,6 +6,61 @@
"key": "lightmapping.autoUnwrapLightmapUV", "key": "lightmapping.autoUnwrapLightmapUV",
"value": "{\"m_Value\":true}" "value": "{\"m_Value\":true}"
}, },
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "mesh.newShapesSnapToGrid",
"value": "{\"m_Value\":true}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "mesh.meshColliderIsConvex",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "editor.autoRecalculateCollisions",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "experimental.enabled",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "UnityEngine.ProBuilder.ProBuilderEditor-isUtilityWindow",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "editor.toolbarIconGUI",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "editor.backFaceSelectEnabled",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "editor.showSceneInfo",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeComponent.ResetSettings",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "editor.showEditorNotifications",
"value": "{\"m_Value\":false}"
},
{
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeComponent.SettingsEnabled",
"value": "{\"m_Value\":false}"
},
{ {
"type": "UnityEngine.ProBuilder.LogLevel, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "type": "UnityEngine.ProBuilder.LogLevel, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "log.level", "key": "log.level",
@ -30,6 +85,86 @@
"type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", "type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "preferences.version", "key": "preferences.version",
"value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":1,\"m_Patch\":1,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" "value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":1,\"m_Patch\":1,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}"
},
{
"type": "UnityEngine.ProBuilder.PivotLocation, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "mesh.newShapePivotLocation",
"value": "{\"m_Value\":1}"
},
{
"type": "UnityEngine.Rendering.ShadowCastingMode, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "mesh.shadowCastingMode",
"value": "{\"m_Value\":1}"
},
{
"type": "UnityEngine.Material, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "mesh.userMaterial",
"value": "{\"m_Value\":{\"instanceID\":0}}"
},
{
"type": "UnityEditor.StaticEditorFlags, UnityEditor.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "mesh.defaultStaticEditorFlags",
"value": "{\"m_Value\":0}"
},
{
"type": "UnityEngine.ProBuilder.ColliderType, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "mesh.newShapeColliderType",
"value": "{\"m_Value\":2}"
},
{
"type": "UnityEngine.ProBuilder.UnwrapParameters, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "lightmapping.defaultLightmapUnwrapParameters",
"value": "{\"m_Value\":{\"m_HardAngle\":88.0,\"m_PackMargin\":20.0,\"m_AngleError\":8.0,\"m_AreaError\":15.0}}"
},
{
"type": "UnityEngine.ProBuilder.RectSelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "editor.dragSelectRectMode",
"value": "{\"m_Value\":0}"
},
{
"type": "UnityEngine.ProBuilder.SelectionModifierBehavior, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "editor.rectSelectModifier",
"value": "{\"m_Value\":2}"
},
{
"type": "UnityEngine.ProBuilder.SelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "editor.selectMode",
"value": "{\"m_Value\":1}"
},
{
"type": "UnityEngine.ProBuilder.SelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "editor.lastMeshSelectMode",
"value": "{\"m_Value\":2}"
},
{
"type": "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeBuilder.ActiveShapeIndex",
"value": "{\"m_Value\":0}"
},
{
"type": "System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
"key": "ShapeBuilder.LastPivotLocation",
"value": "{\"m_Value\":1}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.LastPivotPosition",
"value": "{\"m_Value\":{\"x\":0.0,\"y\":0.0,\"z\":0.0}}"
},
{
"type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.LastSize",
"value": "{\"m_Value\":{\"x\":1.2949085235595704,\"y\":0.0,\"z\":1.3470239639282227}}"
},
{
"type": "UnityEngine.Quaternion, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.LastRotation",
"value": "{\"m_Value\":{\"x\":0.0,\"y\":0.0,\"z\":0.0,\"w\":1.0}}"
},
{
"type": "UnityEngine.ProBuilder.Shapes.Shape, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
"key": "ShapeBuilder.Sprite",
"value": "{}"
} }
] ]
} }