Skip to content

Commit 64df4e6

Browse files
Merge pull request #314 from Unity-Technologies/staging
0.0.8 staging -> master
2 parents 7254d60 + 03475c5 commit 64df4e6

658 files changed

Lines changed: 31562 additions & 7274 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Actions/Clone.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#if UNITY_EDITOR
2-
using System;
32
using UnityEditor.Experimental.EditorVR.Utilities;
43
using UnityEngine;
54

@@ -10,23 +9,20 @@ sealed class Clone : BaseAction, IUsesSpatialHash, IUsesViewerScale
109
{
1110
public override void ExecuteAction()
1211
{
12+
Unsupported.DuplicateGameObjectsUsingPasteboard();
1313
var selection = Selection.transforms;
14-
var clones = new GameObject[selection.Length];
15-
var index = 0;
1614
var bounds = ObjectUtils.GetBounds(selection);
1715
foreach (var s in selection)
1816
{
19-
var clone = ObjectUtils.Instantiate(s.gameObject);
17+
var clone = s.gameObject;
2018
clone.hideFlags = HideFlags.None;
2119
var cloneTransform = clone.transform;
2220
var cameraTransform = CameraUtils.GetMainCamera().transform;
2321
var viewDirection = cloneTransform.position - cameraTransform.position;
2422
cloneTransform.position = cameraTransform.TransformPoint(Vector3.forward * viewDirection.magnitude / this.GetViewerScale())
2523
+ cloneTransform.position - bounds.center;
2624
this.AddToSpatialHash(clone);
27-
clones[index++] = clone;
2825
}
29-
Selection.objects = clones;
3026
}
3127
}
3228
}

Actions/Copy.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ sealed class Copy : BaseAction
66
{
77
public override void ExecuteAction()
88
{
9-
Paste.buffer = Selection.transforms;
9+
Unsupported.CopyGameObjectsToPasteboard();
10+
Paste.SetBufferDistance(Selection.transforms);
1011
}
1112
}
1213
}

Actions/Cut.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,16 @@ public override void ExecuteAction()
1111
var selection = Selection.transforms;
1212
if (selection != null)
1313
{
14+
Unsupported.CopyGameObjectsToPasteboard();
15+
Paste.SetBufferDistance(Selection.transforms);
16+
1417
foreach (var transform in selection)
1518
{
1619
var go = transform.gameObject;
1720
go.hideFlags = HideFlags.HideAndDontSave;
1821
go.SetActive(false);
1922
}
2023

21-
Paste.buffer = selection;
2224
Selection.activeGameObject = null;
2325
}
2426
}

Actions/Paste.cs

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#if UNITY_EDITOR
2-
using System;
32
using UnityEditor.Experimental.EditorVR.Utilities;
43
using UnityEngine;
54

@@ -8,51 +7,34 @@ namespace UnityEditor.Experimental.EditorVR.Actions
87
[ActionMenuItem("Paste", ActionMenuItemAttribute.DefaultActionSectionName, 6)]
98
sealed class Paste : BaseAction, IUsesSpatialHash, IUsesViewerScale
109
{
11-
public static Transform[] buffer
10+
static float s_BufferDistance;
11+
12+
public static void SetBufferDistance(Transform[] transforms)
1213
{
13-
get
14-
{
15-
return s_Buffer;
16-
}
17-
set
14+
if (transforms != null)
1815
{
19-
s_Buffer = value;
16+
var bounds = ObjectUtils.GetBounds(transforms);
2017

21-
if (value != null)
22-
{
23-
var bounds = ObjectUtils.GetBounds(value);
24-
25-
s_BufferDistance = bounds.size != Vector3.zero ? (bounds.center - CameraUtils.GetMainCamera().transform.position).magnitude : 0f;
26-
s_BufferDistance /= IUsesViewerScaleMethods.getViewerScale(); // Normalize this value, so if viewer scale changes when pasted
27-
}
18+
s_BufferDistance = bounds.size != Vector3.zero ? (bounds.center - CameraUtils.GetMainCamera().transform.position).magnitude : 1f;
19+
s_BufferDistance /= IUsesViewerScaleMethods.getViewerScale(); // Normalize this value in case viewer scale changes before paste happens
2820
}
2921
}
30-
static Transform[] s_Buffer;
31-
32-
static float s_BufferDistance;
3322

3423
public override void ExecuteAction()
3524
{
36-
if (buffer != null)
25+
Unsupported.PasteGameObjectsFromPasteboard();
26+
var transforms = Selection.transforms;
27+
var bounds = ObjectUtils.GetBounds(transforms);
28+
foreach (var transform in transforms)
3729
{
38-
var pastedGameObjects = new GameObject[buffer.Length];
39-
var index = 0;
40-
var bounds = ObjectUtils.GetBounds(buffer);
41-
foreach (var transform in buffer)
42-
{
43-
var pasted = Instantiate(transform.gameObject);
44-
var pastedTransform = pasted.transform;
45-
pasted.hideFlags = HideFlags.None;
46-
var cameraTransform = CameraUtils.GetMainCamera().transform;
47-
pastedTransform.position = cameraTransform.TransformPoint(Vector3.forward * s_BufferDistance)
48-
+ pastedTransform.position - bounds.center;
49-
pasted.SetActive(true);
50-
this.AddToSpatialHash(pasted);
51-
pastedGameObjects[index++] = pasted;
52-
}
53-
54-
if (pastedGameObjects.Length > 0)
55-
Selection.objects = pastedGameObjects;
30+
var pasted = transform.gameObject;
31+
var pastedTransform = pasted.transform;
32+
pasted.hideFlags = HideFlags.None;
33+
var cameraTransform = CameraUtils.GetMainCamera().transform;
34+
pastedTransform.position = cameraTransform.TransformPoint(Vector3.forward * s_BufferDistance)
35+
+ pastedTransform.position - bounds.center;
36+
pasted.SetActive(true);
37+
this.AddToSpatialHash(pasted);
5638
}
5739
}
5840
}

Editor/HapticPulsesEditor.cs

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
using System.Collections.Generic;
2+
using UnityEditor.Experimental.EditorVR.Core;
3+
using UnityEditor.Experimental.EditorVR.Modules;
4+
using UnityEngine;
5+
6+
namespace UnityEditor.Experimental.EditorVR.UI
7+
{
8+
sealed class HapticPulseEditor : EditorWindow
9+
{
10+
class Pulse
11+
{
12+
public HapticPulse pulse;
13+
public SerializedObject serializedObject;
14+
public SerializedProperty duration;
15+
public SerializedProperty intensity;
16+
}
17+
18+
readonly List<Pulse> m_HapticPulses = new List<Pulse>();
19+
20+
Vector2 m_Scroll;
21+
float m_Multiplier = 1;
22+
23+
[MenuItem("Edit/Project Settings/EditorVR/Haptic Pulses")]
24+
static void Init()
25+
{
26+
GetWindow<HapticPulseEditor>("Haptic Pulse Editor").Show();
27+
}
28+
29+
void OnEnable()
30+
{
31+
Reset();
32+
33+
Undo.undoRedoPerformed += OnUndoRedo;
34+
}
35+
36+
void Reset()
37+
{
38+
m_HapticPulses.Clear();
39+
var pulses = AssetDatabase.FindAssets("t:HapticPulse");
40+
foreach (var guid in pulses)
41+
{
42+
var pulse = AssetDatabase.LoadAssetAtPath<HapticPulse>(AssetDatabase.GUIDToAssetPath(guid));
43+
if (pulse)
44+
{
45+
var serializedObject = new SerializedObject(pulse);
46+
m_HapticPulses.Add(new Pulse
47+
{
48+
pulse = pulse,
49+
serializedObject = serializedObject,
50+
duration = serializedObject.FindProperty("m_Duration"),
51+
intensity = serializedObject.FindProperty("m_Intensity")
52+
});
53+
}
54+
}
55+
}
56+
57+
void OnDisable()
58+
{
59+
Undo.undoRedoPerformed -= OnUndoRedo;
60+
}
61+
62+
void OnGUI()
63+
{
64+
if (Event.current.Equals(Event.KeyboardEvent("^w")))
65+
{
66+
Close();
67+
GUIUtility.ExitGUI();
68+
}
69+
70+
const float nameColumnWidth = 250f;
71+
const float floatFieldColumnWidth = 60f;
72+
73+
m_Scroll = GUILayout.BeginScrollView(m_Scroll);
74+
75+
GUILayout.BeginHorizontal();
76+
m_Multiplier = EditorGUILayout.FloatField("Multiplier", m_Multiplier);
77+
if (GUILayout.Button("Multiply Intensity"))
78+
{
79+
foreach (var pulse in m_HapticPulses)
80+
{
81+
pulse.intensity.floatValue *= m_Multiplier;
82+
pulse.serializedObject.ApplyModifiedProperties();
83+
}
84+
}
85+
86+
if (GUILayout.Button("Multiply Duration"))
87+
{
88+
foreach (var pulse in m_HapticPulses)
89+
{
90+
pulse.duration.floatValue *= m_Multiplier;
91+
pulse.serializedObject.ApplyModifiedProperties();
92+
}
93+
}
94+
GUILayout.EndHorizontal();
95+
96+
GUILayout.BeginHorizontal();
97+
GUILayout.Label("Haptic Pulses", EditorStyles.boldLabel, GUILayout.Width(nameColumnWidth));
98+
GUILayout.Label("Duration");
99+
GUILayout.Label("Intensity");
100+
GUILayout.EndHorizontal();
101+
102+
foreach (var pulse in m_HapticPulses)
103+
{
104+
GUILayout.BeginHorizontal();
105+
EditorGUILayout.ObjectField(pulse.pulse, typeof(HapticPulse), false, GUILayout.Width(nameColumnWidth));
106+
EditorGUI.BeginChangeCheck();
107+
var durationProperty = pulse.duration;
108+
durationProperty.floatValue = GUILayout.HorizontalSlider(durationProperty.floatValue, 0, HapticsModule.MaxDuration);
109+
durationProperty.floatValue = EditorGUILayout.FloatField(durationProperty.floatValue, GUILayout.Width(floatFieldColumnWidth));
110+
durationProperty.floatValue = Mathf.Clamp(durationProperty.floatValue, 0, HapticsModule.MaxDuration);
111+
var intensityProperty = pulse.intensity;
112+
intensityProperty.floatValue = GUILayout.HorizontalSlider(intensityProperty.floatValue, 0, 1);
113+
intensityProperty.floatValue = EditorGUILayout.FloatField(intensityProperty.floatValue, GUILayout.Width(floatFieldColumnWidth));
114+
intensityProperty.floatValue = Mathf.Clamp01(intensityProperty.floatValue);
115+
if (EditorGUI.EndChangeCheck())
116+
pulse.serializedObject.ApplyModifiedProperties();
117+
118+
GUILayout.EndHorizontal();
119+
}
120+
121+
GUILayout.EndScrollView();
122+
}
123+
124+
void OnUndoRedo()
125+
{
126+
Reset();
127+
Repaint();
128+
}
129+
130+
void OnProjectChange()
131+
{
132+
Reset();
133+
Repaint();
134+
}
135+
}
136+
}

Scripts/Interfaces/IUsesRayLocking.cs.meta renamed to Editor/HapticPulsesEditor.cs.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/TooltipsEditor.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ void CollectTooltipAttributes(Type type)
6767

6868
void OnGUI()
6969
{
70+
if (Event.current.Equals(Event.KeyboardEvent("^w")))
71+
{
72+
Close();
73+
GUIUtility.ExitGUI();
74+
}
75+
7076
const float columnWidth = 250f;
7177
EditorGUIUtility.labelWidth = columnWidth;
7278

0 commit comments

Comments
 (0)