VR/Assets/OVRSceneManagerScript.cs

114 lines
4.5 KiB
C#

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus SDK except in compliance with the License,
* which is provided at the time of installation or download, or which
* otherwise accompanies this software in either electronic or hard copy form.
*
* You may obtain a copy of the License at
*
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus SDK
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Collections.Generic;
using UnityEngine;
public class OVRSceneManagerScript : MonoBehaviour
{
public OVRSceneManager _sceneManager;
public SimpleResizable _tablePrefab;
public GameObject _cube;
void Awake()
{
MarcsWebLogger.Log("SampleVirtualFrames::Awake()");
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_ANDROID
OVRManager.eyeFovPremultipliedAlphaModeEnabled = false;
#endif
_sceneManager.SceneModelLoadedSuccessfully += InitializeRoom;
}
void InitializeRoom()
{
MarcsWebLogger.Log("SampleVirtualFrames::InitializeRoom()");
OVRSceneAnchor[] sceneAnchors = FindObjectsOfType<OVRSceneAnchor>();
if (sceneAnchors != null)
{
for (int i = 0; i < sceneAnchors.Length; i++)
{
var randomNumber = UnityEngine.Random.Range(10000, 99999);
OVRSceneAnchor instance = sceneAnchors[i];
OVRSemanticClassification classification = instance.GetComponent<OVRSemanticClassification>();
//MarcsWebLogger.Log($"{randomNumber} | is a {classification}");
if (classification.Contains(OVRSceneManager.Classification.Table))
{
MarcsWebLogger.Log($"{randomNumber} | FOUND A Table");
try
{
SimpleResizer resizer = new SimpleResizer();
SimpleResizable prefab = _tablePrefab;
Vector3 dimensions = instance.transform.GetChild(0).localScale;
if (prefab.GetComponent<ResizablePadding>())
{
dimensions += prefab.GetComponent<ResizablePadding>().dimensionPadding;
}
resizer.CreateResizedObject(dimensions, sceneAnchors[i].gameObject, prefab);
MarcsWebLogger.Log($"{randomNumber} | {dimensions}");
// now place the cubes
Instantiate(_cube, sceneAnchors[i].gameObject.transform.position + new Vector3(0, 0, 0.3f), Quaternion.Euler(0, 90, 0));
}
catch (Exception e)
{
MarcsWebLogger.Log($"{randomNumber} | Error: {e.Message}");
}
MarcsWebLogger.Log($"{randomNumber} | PLACED A Table");
}
/*
if (classification.Contains(OVRSceneManager.Classification.WallFace))
{
var randomNumber = UnityEngine.Random.Range(10000, 99999);
MarcsWebLogger.Log($"{randomNumber} | FOUND A WALL");
try
{
SimpleResizer resizer = new SimpleResizer();
SimpleResizable prefab = _wallPrefab;
Vector3 dimensions = instance.transform.GetChild(0).localScale;
if (prefab.GetComponent<ResizablePadding>())
{
dimensions += prefab.GetComponent<ResizablePadding>().dimensionPadding;
}
resizer.CreateResizedObject(dimensions, sceneAnchors[i].gameObject, prefab);
}
catch (Exception e)
{
MarcsWebLogger.Log($"{randomNumber} | Error: {e.Message}");
}
MarcsWebLogger.Log($"{randomNumber} | PLACED A WALL");
//i = 99999;
}
*/
}
}
else
{
MarcsWebLogger.Log("NO ANCHORS FOUND. ");
}
}
}