오브젝트 선택창
This commit is contained in:
8
Assets/Materials.meta
Normal file
8
Assets/Materials.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 868e82b7165383741b3e7d01f5e3d5df
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
140
Assets/Materials/Selected.mat
Normal file
140
Assets/Materials/Selected.mat
Normal file
@@ -0,0 +1,140 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &-1815200313275628111
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 9
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Selected
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _ALPHAPREMULTIPLY_ON
|
||||
- _SURFACE_TYPE_TRANSPARENT
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 3000
|
||||
stringTagMap:
|
||||
RenderType: Transparent
|
||||
disabledShaderPasses:
|
||||
- MOTIONVECTORS
|
||||
- DepthOnly
|
||||
- SHADOWCASTER
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AddPrecomputedVelocity: 0
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Cull: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 10
|
||||
- _DstBlendAlpha: 10
|
||||
- _EnvironmentReflections: 1
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.005
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 1
|
||||
- _WorkflowMode: 1
|
||||
- _ZWrite: 0
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 1, g: 0.97088087, b: 0, a: 0.39215687}
|
||||
- _Color: {r: 1, g: 0.9708808, b: 0, a: 0.39215687}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
m_AllowLocking: 1
|
||||
8
Assets/Materials/Selected.mat.meta
Normal file
8
Assets/Materials/Selected.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7591d53ad5cbd6c46951d5be473a4771
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: AirConditioner
|
||||
modelType: Resource
|
||||
--- !u!1001 &356310399993745617
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: AssemblyLine
|
||||
modelType: Move
|
||||
--- !u!1001 &1510943800273267816
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: Container
|
||||
modelType: Sink
|
||||
--- !u!1001 &7399670728975469901
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: ForkLift
|
||||
modelType: Move
|
||||
--- !u!1001 &1036468470617570156
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: Machine
|
||||
modelType: Process
|
||||
--- !u!1001 &5436764548328971395
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: Pallet
|
||||
modelType: Source
|
||||
--- !u!1001 &2296878487467035130
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: RoboArm
|
||||
modelType: Resource
|
||||
--- !u!1001 &1391276699247169683
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -45,6 +45,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: c1d14145e7d8b3546a7232d42ee091dc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
modelName: StackBox
|
||||
modelType: Wait
|
||||
--- !u!1001 &4436474171055811137
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
61
Assets/Prefabs/ClickHandler.prefab
Normal file
61
Assets/Prefabs/ClickHandler.prefab
Normal file
@@ -0,0 +1,61 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1488549357035951910
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6645319519748063568}
|
||||
- component: {fileID: 5074526274364539790}
|
||||
- component: {fileID: 2996645230543678358}
|
||||
m_Layer: 0
|
||||
m_Name: ClickHandler
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &6645319519748063568
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1488549357035951910}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &5074526274364539790
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1488549357035951910}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 065cb44ed954caa4291b94d46f87785e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
highLight: {fileID: 2996645230543678358}
|
||||
--- !u!114 &2996645230543678358
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1488549357035951910}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1be79882f0b1f654e8361a2374b90194, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
highlightMaterial: {fileID: 2100000, guid: 7591d53ad5cbd6c46951d5be473a4771, type: 2}
|
||||
7
Assets/Prefabs/ClickHandler.prefab.meta
Normal file
7
Assets/Prefabs/ClickHandler.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a9d8c08cbd13f3419d22b5bafd16c28
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
1747
Assets/Prefabs/ObjectStatus.prefab
Normal file
1747
Assets/Prefabs/ObjectStatus.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Prefabs/ObjectStatus.prefab.meta
Normal file
7
Assets/Prefabs/ObjectStatus.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a947fac65858b5246ac0544ea7bcdad0
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
42
Assets/Scripts/ClickHandler.cs
Normal file
42
Assets/Scripts/ClickHandler.cs
Normal file
@@ -0,0 +1,42 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
public class ClickHandler : MonoBehaviour
|
||||
{
|
||||
public ClickHighlight highLight;
|
||||
public ModelObjectStatus objStatus;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
if (UnityEngine.EventSystems.EventSystem.current?.IsPointerOverGameObject() == true)
|
||||
return; // UI Ŭ¸¯ÀÌ¸é ¹«½Ã
|
||||
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
if (Physics.Raycast(ray, out RaycastHit hit))
|
||||
{
|
||||
if (hit.collider.TryGetComponent<IClickable>(out var clickable))
|
||||
{
|
||||
highLight.ShowHighlight((BoxCollider)hit.collider);
|
||||
objStatus.gameObject.SetActive(true);
|
||||
objStatus.SetStatus(hit.transform.GetComponent<SimulationModel>());
|
||||
clickable.OnClick();
|
||||
}
|
||||
else
|
||||
{
|
||||
highLight.HideHighlight();
|
||||
objStatus.gameObject.SetActive(false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
highLight.HideHighlight();
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/ClickHandler.cs.meta
Normal file
2
Assets/Scripts/ClickHandler.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 065cb44ed954caa4291b94d46f87785e
|
||||
28
Assets/Scripts/ClickHighlight.cs
Normal file
28
Assets/Scripts/ClickHighlight.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class ClickHighlight : MonoBehaviour
|
||||
{
|
||||
public Material highlightMaterial; // 반투명한 머터리얼
|
||||
private GameObject highlightBox;
|
||||
|
||||
public void ShowHighlight(BoxCollider target)
|
||||
{
|
||||
if (highlightBox == null)
|
||||
{
|
||||
highlightBox = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||||
Destroy(highlightBox.GetComponent<Collider>()); // 충돌 제거
|
||||
highlightBox.GetComponent<MeshRenderer>().material = highlightMaterial;
|
||||
}
|
||||
|
||||
highlightBox.SetActive(true);
|
||||
highlightBox.transform.SetParent(target.transform);
|
||||
highlightBox.transform.position = target.transform.TransformPoint(target.center);
|
||||
highlightBox.transform.rotation = target.transform.rotation;
|
||||
highlightBox.transform.localScale = Vector3.Scale(target.transform.lossyScale, target.size);
|
||||
}
|
||||
|
||||
public void HideHighlight()
|
||||
{
|
||||
if (highlightBox) highlightBox.SetActive(false);
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/ClickHighlight.cs.meta
Normal file
2
Assets/Scripts/ClickHighlight.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1be79882f0b1f654e8361a2374b90194
|
||||
2
Assets/Scripts/Common/CommonInterface.cs
Normal file
2
Assets/Scripts/Common/CommonInterface.cs
Normal file
@@ -0,0 +1,2 @@
|
||||
using UnityEngine;
|
||||
public interface IClickable { void OnClick(); }
|
||||
2
Assets/Scripts/Common/CommonInterface.cs.meta
Normal file
2
Assets/Scripts/Common/CommonInterface.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: edd5e89e87312564f8842b5c54112ccd
|
||||
@@ -7,7 +7,9 @@ public class DataManager : UnitySingleton<DataManager>
|
||||
public void AddModel(SimulationModel model)
|
||||
{
|
||||
if (models.Any(x => x == model))
|
||||
return;
|
||||
return;
|
||||
int objCount = models.FindAll(x => x.modelName.Contains(model.modelName)).Count;
|
||||
model.modelName = model.modelName + "_" + objCount.ToString();
|
||||
models.Add(model);
|
||||
}
|
||||
public void RemoveModel(SimulationModel model)
|
||||
|
||||
15
Assets/Scripts/ModelObjectStatus.cs
Normal file
15
Assets/Scripts/ModelObjectStatus.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using UnityEngine;
|
||||
using TMPro;
|
||||
|
||||
public class ModelObjectStatus : MonoBehaviour
|
||||
{
|
||||
public TMP_Text textLogic;
|
||||
public TMP_Text textName;
|
||||
public TMP_Text textType;
|
||||
public TMP_Text textID;
|
||||
public void SetStatus(SimulationModel model)
|
||||
{
|
||||
textName.text = model.modelName;
|
||||
textType.text = model.modelType;
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/ModelObjectStatus.cs.meta
Normal file
2
Assets/Scripts/ModelObjectStatus.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 51caf4a2e97006b489af66aeaa813417
|
||||
119
Assets/Scripts/RTGController.cs
Normal file
119
Assets/Scripts/RTGController.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using RTG;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class RTGController : UnitySingleton<RTGController>
|
||||
{
|
||||
public enum GizmoId
|
||||
{
|
||||
None = 0,
|
||||
Move,
|
||||
Rotate,
|
||||
Scale,
|
||||
Universal,
|
||||
}
|
||||
private ObjectTransformGizmo objectMoveGizmo;
|
||||
private ObjectTransformGizmo objectRotationGizmo;
|
||||
private ObjectTransformGizmo objectScaleGizmo;
|
||||
private ObjectTransformGizmo objectUniversalGizmo;
|
||||
|
||||
private GizmoId workGizmoId;
|
||||
private ObjectTransformGizmo workGizmo;
|
||||
public List<GameObject> selectedObjects = new List<GameObject>();
|
||||
public System.Action onTransformBegin;
|
||||
public System.Action<List<GameObject>> onTransformChanged;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
public RTGController()
|
||||
{
|
||||
objectMoveGizmo = RTGizmosEngine.Get.CreateObjectMoveGizmo();
|
||||
objectRotationGizmo = RTGizmosEngine.Get.CreateObjectRotationGizmo();
|
||||
objectScaleGizmo = RTGizmosEngine.Get.CreateObjectScaleGizmo();
|
||||
objectUniversalGizmo = RTGizmosEngine.Get.CreateObjectUniversalGizmo();
|
||||
|
||||
objectMoveGizmo.Gizmo.SetEnabled(false);
|
||||
objectMoveGizmo.Gizmo.MoveGizmo.SetSnapEnabled(false);
|
||||
objectMoveGizmo.Gizmo.MoveGizmo.SetVertexSnapEnabled(false);
|
||||
objectRotationGizmo.Gizmo.SetEnabled(false);
|
||||
objectScaleGizmo.Gizmo.SetEnabled(false);
|
||||
objectUniversalGizmo.Gizmo.SetEnabled(false);
|
||||
|
||||
objectMoveGizmo.Gizmo.PreDragBegin += OnGizmoDragBegin;
|
||||
objectRotationGizmo.Gizmo.PreDragBegin += OnGizmoDragBegin;
|
||||
objectScaleGizmo.Gizmo.PreDragBegin += OnGizmoDragBegin;
|
||||
objectUniversalGizmo.Gizmo.PreDragBegin += OnGizmoDragBegin;
|
||||
|
||||
objectMoveGizmo.Gizmo.PostDragUpdate += OnGizmoDragUpdate;
|
||||
objectRotationGizmo.Gizmo.PostDragUpdate += OnGizmoDragUpdate;
|
||||
objectScaleGizmo.Gizmo.PostDragUpdate += OnGizmoDragUpdate;
|
||||
objectUniversalGizmo.Gizmo.PostDragUpdate += OnGizmoDragUpdate;
|
||||
|
||||
objectMoveGizmo.Gizmo.PostDragEnd += OnGizmoDragEnd;
|
||||
objectRotationGizmo.Gizmo.PostDragEnd += OnGizmoDragEnd;
|
||||
objectScaleGizmo.Gizmo.PostDragEnd += OnGizmoDragEnd;
|
||||
objectUniversalGizmo.Gizmo.PostDragEnd += OnGizmoDragEnd;
|
||||
|
||||
workGizmo = objectMoveGizmo;
|
||||
workGizmoId = GizmoId.None;
|
||||
}
|
||||
public void SetWorkGizmoId(GizmoId gizmoId)
|
||||
{
|
||||
objectMoveGizmo.Gizmo.SetEnabled(false);
|
||||
objectRotationGizmo.Gizmo.SetEnabled(false);
|
||||
objectScaleGizmo.Gizmo.SetEnabled(false);
|
||||
objectUniversalGizmo.Gizmo.SetEnabled(false);
|
||||
|
||||
workGizmoId = gizmoId;
|
||||
if (gizmoId == GizmoId.None)
|
||||
return;
|
||||
else if (gizmoId == GizmoId.Move)
|
||||
workGizmo = objectMoveGizmo;
|
||||
else if (gizmoId == GizmoId.Rotate)
|
||||
workGizmo = objectRotationGizmo;
|
||||
else if (gizmoId == GizmoId.Scale)
|
||||
workGizmo = objectScaleGizmo;
|
||||
else if (gizmoId == GizmoId.Universal)
|
||||
workGizmo = objectUniversalGizmo;
|
||||
|
||||
if (selectedObjects.Count != 0)
|
||||
{
|
||||
workGizmo.Gizmo.SetEnabled(true);
|
||||
workGizmo.RefreshPositionAndRotation();
|
||||
}
|
||||
}
|
||||
private void OnSelectionChanged()
|
||||
{
|
||||
if (selectedObjects.Count != 0)
|
||||
{
|
||||
workGizmo.Gizmo.SetEnabled(true);
|
||||
workGizmo.RefreshPositionAndRotation();
|
||||
}
|
||||
else
|
||||
{
|
||||
objectMoveGizmo.Gizmo.SetEnabled(false);
|
||||
objectRotationGizmo.Gizmo.SetEnabled(false);
|
||||
objectScaleGizmo.Gizmo.SetEnabled(false);
|
||||
objectUniversalGizmo.Gizmo.SetEnabled(false);
|
||||
}
|
||||
}
|
||||
public void SetGizmoTargetObjects(List<GameObject> objects)
|
||||
{
|
||||
selectedObjects.Clear();
|
||||
selectedObjects.AddRange(objects);
|
||||
objectMoveGizmo.SetTargetObjects(selectedObjects);
|
||||
objectRotationGizmo.SetTargetObjects(selectedObjects);
|
||||
objectScaleGizmo.SetTargetObjects(selectedObjects);
|
||||
objectUniversalGizmo.SetTargetObjects(selectedObjects);
|
||||
}
|
||||
private void OnGizmoDragBegin(Gizmo gizmo, int t)
|
||||
{
|
||||
onTransformBegin?.Invoke();
|
||||
}
|
||||
private void OnGizmoDragUpdate(Gizmo gizmo, int t)
|
||||
{
|
||||
onTransformChanged?.Invoke(selectedObjects);
|
||||
}
|
||||
private void OnGizmoDragEnd(Gizmo gizmo, int t)
|
||||
{
|
||||
onTransformChanged?.Invoke(selectedObjects);
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/RTGController.cs.meta
Normal file
2
Assets/Scripts/RTGController.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c3936486b7e8e640a3d3e0986940a53
|
||||
16
Assets/Scripts/ShowModelInfo.cs
Normal file
16
Assets/Scripts/ShowModelInfo.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class ShowModelInfo : MonoBehaviour
|
||||
{
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/ShowModelInfo.cs.meta
Normal file
2
Assets/Scripts/ShowModelInfo.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6816e63c00bfdd94eb00e7fab432c582
|
||||
@@ -1,8 +1,17 @@
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
public class SimulationModel : MonoBehaviour
|
||||
public class SimulationModel : MonoBehaviour, IClickable
|
||||
{
|
||||
public string modelName;
|
||||
public string modelType;
|
||||
public string modelID;
|
||||
private bool isQuitting = false;
|
||||
void Awake()
|
||||
{
|
||||
FitCollider();
|
||||
}
|
||||
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
@@ -27,5 +36,25 @@ public class SimulationModel : MonoBehaviour
|
||||
void OnApplicationQuit()
|
||||
{
|
||||
isQuitting = true;
|
||||
}
|
||||
}
|
||||
public void OnClick()
|
||||
{
|
||||
Debug.Log("Clicked : " + gameObject.name);
|
||||
}
|
||||
void FitCollider()
|
||||
{
|
||||
var renderers = GetComponentsInChildren<Renderer>();
|
||||
if (renderers.Length == 0) return;
|
||||
|
||||
Bounds bounds = renderers[0].bounds;
|
||||
foreach (var r in renderers)
|
||||
bounds.Encapsulate(r.bounds);
|
||||
|
||||
BoxCollider collider = GetComponent<BoxCollider>();
|
||||
if (!collider) collider = gameObject.AddComponent<BoxCollider>();
|
||||
|
||||
collider.center = transform.InverseTransformPoint(bounds.center);
|
||||
collider.size = transform.InverseTransformVector(bounds.size);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user