using HTC.UnityPlugin.Utility; using System.Collections.Generic; using UnityEngine; public class PlayGroundManager : MonoBehaviour { private static List draggablesCache = new List(); private Dictionary poseTable = new Dictionary(); private void Awake() { draggablesCache.Clear(); GetComponentsInChildren(draggablesCache); for (int i = 0, imax = draggablesCache.Count; i < imax; ++i) { var dt = draggablesCache[i].transform; poseTable[dt.GetInstanceID()] = new RigidPose(dt); } draggablesCache.Clear(); } public void ResetPositions() { draggablesCache.Clear(); GetComponentsInChildren(draggablesCache); for (int i = 0, imax = draggablesCache.Count; i < imax; ++i) { var dt = draggablesCache[i].transform; RigidPose pose; if (poseTable.TryGetValue(dt.GetInstanceID(), out pose)) { dt.position = pose.pos; dt.rotation = pose.rot; var rb = dt.GetComponent(); if (rb != null) { rb.velocity = Vector3.zero; rb.angularVelocity = Vector3.zero; } } } draggablesCache.Clear(); } }