Compare commits

...

5 Commits

Author SHA1 Message Date
Marc Gauch cbc18c5f3b Merge pull request 'actually-breakable-wall' (#3) from actually-breakable-wall into main
Reviewed-on: #3
2024-01-05 13:46:55 +01:00
marcgauch a356edb271 working with wiondows 2024-01-05 13:46:21 +01:00
marcgauch 8d1c29cc6f Yes 2023-12-29 20:45:22 +01:00
marcgauch 84f6a7d690 Properly scale the placed element's material 2023-12-29 19:18:04 +01:00
marcgauch 16a9f846af Somewhat working 2023-12-29 19:00:20 +01:00
35 changed files with 1546 additions and 123 deletions

View File

@ -0,0 +1,113 @@
/*
* 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 SampleVirtualFrames : MonoBehaviour
{
public OVRSceneManager _sceneManager;
public SimpleResizable _doorPrefab;
public SimpleResizable _windowPrefab;
public SimpleResizable _wallPrefab;
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++)
{
OVRSceneAnchor instance = sceneAnchors[i];
OVRSemanticClassification classification = instance.GetComponent<OVRSemanticClassification>();
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 if (classification.Contains(OVRSceneManager.Classification.WindowFrame) ||
classification.Contains(OVRSceneManager.Classification.DoorFrame))
{
windows.Add(instance.transform);
SimpleResizer resizer = new SimpleResizer();
SimpleResizable prefab = classification.Contains(OVRSceneManager.Classification.DoorFrame) ? _doorPrefab : _windowPrefab;
Vector3 dimensions = instance.transform.GetChild(0).localScale;
// spawn an optional butterfly
if (classification.Contains(OVRSceneManager.Classification.DoorFrame) && _butterflyPrefab && !butterflyAdded)
{
GameObject butterfly = Instantiate(_butterflyPrefab, instance.transform);
butterfly.transform.localPosition = Vector3.zero;
butterfly.transform.rotation = Quaternion.LookRotation(instance.transform.forward, Vector3.up);
// this is to only spawn one, regardless of door count
butterflyAdded = true;
}
// the Resizer scales the mesh so that the bounds are flush with the window extents
// in this case, we want the mesh frame to extend "outside" of the extents, so we adjust it
// as well, the vines on the door also require special treatment
if (prefab.GetComponent<ResizablePadding>())
{
dimensions += prefab.GetComponent<ResizablePadding>().dimensionPadding;
}
resizer.CreateResizedObject(dimensions, sceneAnchors[i].gameObject, prefab);
}
*/
}
}
else
{
MarcsWebLogger.Log("NO ANCHORS FOUND. ");
}
}
}

View File

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

View File

@ -0,0 +1,144 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &814842801368627604
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6455794010493476198}
- component: {fileID: 4469256713305699264}
- component: {fileID: 6006842473380119943}
- component: {fileID: 8535292912872443155}
- component: {fileID: 1908277671756111771}
- component: {fileID: 8707393823814613456}
m_Layer: 0
m_Name: Breakable Wall (just a cube)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6455794010493476198
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0.01}
m_LocalScale: {x: 1, y: 1, z: 0.01}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &4469256713305699264
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6006842473380119943
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a384b583426023d4da68d3f25e868451, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &8535292912872443155
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &1908277671756111771
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39b243a9b1035c94e9f75c4e11283893, type: 3}
m_Name:
m_EditorClassIdentifier:
ScalingX: 0
PaddingX: 0
PaddingXMax: 0
ScalingY: 0
PaddingY: 0
PaddingYMax: 0
ScalingZ: 3
PaddingZ: 0
PaddingZMax: 0
_pivotTransform: {fileID: 6455794010493476198}
--- !u!114 &8707393823814613456
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 814842801368627604}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a4aa4c87388bd1250aef8d89d8f58ed7, type: 3}
m_Name:
m_EditorClassIdentifier:
dimensionPadding: {x: 0, y: 0, z: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d0dff8f7a3ef4c1d5b55c1e07e1ecb0b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,162 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &6402218498956519874
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -9003323146575883303, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 4ddb30289dc6d6a47a05448ca7275e5c, type: 2}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -7023974396876390944, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: a384b583426023d4da68d3f25e868451, type: 2}
- target: {fileID: -2268138116939433651, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: a384b583426023d4da68d3f25e868451, type: 2}
- target: {fileID: -241587437493983680, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 5e85b5e82c1a1a84186c3baf89e174c7, type: 2}
- target: {fileID: 882129737928793925, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 0141bc0de40b03c47a7d54dba3567d7e, type: 2}
- target: {fileID: 919132149155446097, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Name
value: Breakable Wall
objectReference: {fileID: 0}
- target: {fileID: 2786534777698132407, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: 0576b3490a5948442aace3fadba823bb, type: 2}
- target: {fileID: 7339356831882890532, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: a384b583426023d4da68d3f25e868451, type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
insertIndex: -1
addedObject: {fileID: 5026953953504289645}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
insertIndex: -1
addedObject: {fileID: 1133447161263397491}
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
insertIndex: -1
addedObject: {fileID: 527367603987909277}
m_SourcePrefab: {fileID: 100100000, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
--- !u!1 &6059687977031947411 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
m_PrefabInstance: {fileID: 6402218498956519874}
m_PrefabAsset: {fileID: 0}
--- !u!114 &5026953953504289645
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6059687977031947411}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39b243a9b1035c94e9f75c4e11283893, type: 3}
m_Name:
m_EditorClassIdentifier:
ScalingX: 0
PaddingX: 0
PaddingXMax: 0
ScalingY: 0
PaddingY: 0
PaddingYMax: 0
ScalingZ: 3
PaddingZ: 0
PaddingZMax: 0
_pivotTransform: {fileID: 6868981949592079913}
--- !u!114 &1133447161263397491
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6059687977031947411}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a4aa4c87388bd1250aef8d89d8f58ed7, type: 3}
m_Name:
m_EditorClassIdentifier:
dimensionPadding: {x: 0, y: 0, z: 0}
--- !u!65 &527367603987909277
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6059687977031947411}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 0.1, y: 2, z: 2}
m_Center: {x: 0.05, y: 0, z: 0}
--- !u!4 &6868981949592079913 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: b3bd50a8a2657294a93a3165603b6a56, type: 3}
m_PrefabInstance: {fileID: 6402218498956519874}
m_PrefabAsset: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 1c12386686cd2aaf09eda99c926dbb25
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -66,7 +66,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7364228411325162552, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalScale.z
value: 0.01
value: 0.02
objectReference: {fileID: 0}
- target: {fileID: 7364228411325162552, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalPosition.z

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5f8de10649cc7114186efa4fe62d54d5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
Shader "Custom/DepthReserve"
{
Properties
{
}
SubShader
{
Tags { "RenderType" = "Opaque" "Queue"="Geometry-1" }
LOD 100
Blend Zero One
Pass
{
}
}
}

View File

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: c8802f56ded4d78df84aa2ec0992fc6b
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,71 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &3261728088016311268
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 502283750161808342, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_Materials.Array.data[0]
value:
objectReference: {fileID: 2100000, guid: e4b262845911bcbde9e1332532b2fc12, type: 2}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1132682185376712905, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7364228411325162552, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalScale.z
value: 0.05
objectReference: {fileID: 0}
- target: {fileID: 7364228411325162552, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8999845180316542267, guid: 891349029806e4144812ff2d304d9cf9, type: 3}
propertyPath: m_Name
value: Window Variant
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 891349029806e4144812ff2d304d9cf9, type: 3}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3bfafa2f9779de6b0ac817be7114b04d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,89 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Window
m_Shader: {fileID: 4800000, guid: c8802f56ded4d78df84aa2ec0992fc6b, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _ALPHAPREMULTIPLY_ON
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _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}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 3
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 1, g: 0, b: 0.8072939, a: 0.3372549}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e4b262845911bcbde9e1332532b2fc12
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

8
Assets/Scripts.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5b20686972cc7b0618e409fe9e61daa5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,26 @@
/*
* 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 UnityEngine;
public class ResizablePadding : MonoBehaviour
{
public Vector3 dimensionPadding = Vector3.zero;
}

View File

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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3a4289cf3e9109226bbbd1f42a6f53d7
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,140 @@
using System;
using UnityEngine;
[ExecuteInEditMode]
public class SimpleResizable : MonoBehaviour
{
public Vector3 PivotPosition => _pivotTransform.position; //Vector3.zero;
[Space(15)] public Method ScalingX;
[Range(0, 0.5f)] public float PaddingX;
[Range(-0.5f, 0)] public float PaddingXMax;
[Space(15)] public Method ScalingY;
[Range(0, 0.5f)] public float PaddingY;
[Range(-0.5f, 0)] public float PaddingYMax;
[Space(15)] public Method ScalingZ;
[Range(0, 0.5f)] public float PaddingZ;
[Range(-0.5f, 0)] public float PaddingZMax;
public enum Method
{
Adapt,
AdaptWithAsymmetricalPadding,
Scale,
None
}
public Vector3 NewSize {get; set; }
public Vector3 DefaultSize {get; private set; }
public Mesh Mesh { get; private set; }
private Bounds _bounds;
[SerializeField] private Transform _pivotTransform;
private void Awake()
{
Mesh = GetComponent<MeshFilter>().sharedMesh;
DefaultSize = Mesh.bounds.size;
if(!_pivotTransform)
_pivotTransform = transform.Find("Pivot");
}
#if UNITY_EDITOR
private void OnEnable()
{
DefaultSize = Mesh.bounds.size;
NewSize = DefaultSize;
}
private void OnDrawGizmos()
{
if (!_pivotTransform) return;
Gizmos.color = Color.red;
float lineSize = 0.1f;
Vector3 startX = _pivotTransform.position + Vector3.left * lineSize * 0.5f;
Vector3 startY = _pivotTransform.position + Vector3.down * lineSize * 0.5f;
Vector3 startZ = _pivotTransform.position + Vector3.back * lineSize * 0.5f;
Gizmos.DrawRay(startX, Vector3.right * lineSize);
Gizmos.DrawRay(startY, Vector3.up * lineSize);
Gizmos.DrawRay(startZ, Vector3.forward * lineSize);
}
void OnDrawGizmosSelected()
{
DefaultSize = Mesh.bounds.size;
if (GetComponent<MeshFilter>().sharedMesh == null)
{
// The furniture piece was not customized yet, nothing to do here
return;
}
_bounds = GetComponent<MeshFilter>().sharedMesh.bounds;
Gizmos.matrix = transform.localToWorldMatrix;
Vector3 newCenter = _bounds.center;
Gizmos.color = new Color(1, 0, 0, 0.5f);
switch (ScalingX)
{
case Method.Adapt:
Gizmos.DrawWireCube(newCenter, new Vector3(NewSize.x * PaddingX * 2, NewSize.y, NewSize.z));
break;
case Method.AdaptWithAsymmetricalPadding:
Gizmos.DrawWireCube(newCenter + new Vector3(
NewSize.x * PaddingX, 0, 0), new Vector3(0, NewSize.y, NewSize.z));
Gizmos.DrawWireCube(newCenter + new Vector3(
NewSize.x * PaddingXMax, 0, 0), new Vector3(0, NewSize.y, NewSize.z));
break;
case Method.None:
Gizmos.DrawWireCube(newCenter, NewSize);
break;
}
Gizmos.color = new Color(0, 1, 0, 0.5f);
switch (ScalingY)
{
case Method.Adapt:
Gizmos.DrawWireCube(newCenter, new Vector3(NewSize.x, NewSize.y * PaddingY * 2, NewSize.z));
break;
case Method.AdaptWithAsymmetricalPadding:
Gizmos.DrawWireCube(newCenter + new Vector3(0, NewSize.y * PaddingY, 0),
new Vector3(NewSize.x, 0, NewSize.z));
Gizmos.DrawWireCube(newCenter + new Vector3(0, NewSize.y * PaddingYMax, 0),
new Vector3(NewSize.x, 0, NewSize.z));
break;
case Method.None:
Gizmos.DrawWireCube(newCenter, NewSize);
break;
}
Gizmos.color = new Color(0, 0, 1, 0.5f);
switch (ScalingZ)
{
case Method.Adapt:
Gizmos.DrawWireCube(newCenter, new Vector3(NewSize.x, NewSize.y, NewSize.z * PaddingZ * 2));
break;
case Method.AdaptWithAsymmetricalPadding:
Gizmos.DrawWireCube(newCenter + new Vector3(0, 0, NewSize.z * PaddingZ),
new Vector3(NewSize.x, NewSize.y, 0));
Gizmos.DrawWireCube(newCenter + new Vector3(0, 0, NewSize.z * PaddingZMax),
new Vector3(NewSize.x, NewSize.y, 0));
break;
case Method.None:
Gizmos.DrawWireCube(newCenter, NewSize);
break;
}
Gizmos.color = new Color(0, 1, 1, 1);
Gizmos.DrawWireCube(newCenter, NewSize);
}
#endif
}

View File

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

View File

@ -0,0 +1,144 @@
using UnityEngine;
public class SimpleResizer
{
public void CreateResizedObject(Vector3 newSize, GameObject parent, SimpleResizable sourcePrefab)
{
MarcsWebLogger.Log($"Resize {newSize}");
var prefab = MonoBehaviour.Instantiate(sourcePrefab.gameObject, Vector3.zero, Quaternion.identity);
prefab.name = sourcePrefab.name;
var resizable = prefab.GetComponent<SimpleResizable>();
resizable.NewSize = newSize;
if (resizable == null)
{
Debug.LogError("Resizable component missing.");
return;
}
var resizedMesh = ProcessVertices(resizable, newSize);
MeshFilter mf = prefab.GetComponent<MeshFilter>();
mf.sharedMesh = resizedMesh;
mf.sharedMesh.RecalculateBounds();
// child it after creation so the bounds math plays nicely
prefab.transform.parent = parent.transform;
prefab.transform.localPosition = Vector3.zero;
prefab.transform.localRotation = Quaternion.identity;
// Marc Scale fix
// Calculate the texture scale based on the ratio of new size to default size
Vector2 textureScale = new Vector2(newSize.x / resizable.DefaultSize.x, newSize.y / resizable.DefaultSize.y);
prefab.GetComponent<Renderer>().material.mainTextureScale = textureScale;
// cleanup
MonoBehaviour.Destroy(resizable);
}
#region PRIVATE METHODS
private Mesh ProcessVertices(SimpleResizable resizable, Vector3 newSize)
{
Mesh originalMesh = resizable.Mesh;
Vector3 originalBounds = originalMesh.bounds.size;
// Force scaling if newSize is smaller than the original mesh
SimpleResizable.Method methodX = (originalBounds.x < newSize.x)
? resizable.ScalingX
: SimpleResizable.Method.Scale;
SimpleResizable.Method methodY = (originalBounds.y < newSize.y)
? resizable.ScalingY
: SimpleResizable.Method.Scale;
SimpleResizable.Method methodZ = (originalBounds.z < newSize.z)
? resizable.ScalingZ
: SimpleResizable.Method.Scale;
Vector3[] resizedVertices = originalMesh.vertices;
float pivotX = (1 / resizable.DefaultSize.x) * resizable.PivotPosition.x;
float pivotY = (1 / resizable.DefaultSize.y) * resizable.PivotPosition.y;
float pivotZ = (1 / resizable.DefaultSize.z) * resizable.PivotPosition.z;
for (int i = 0; i < resizedVertices.Length; i++)
{
Vector3 vertexPosition = resizedVertices[i];
vertexPosition.x = CalculateNewVertexPosition(
methodX,
vertexPosition.x,
originalBounds.x,
newSize.x,
resizable.PaddingX,
resizable.PaddingXMax,
pivotX);
vertexPosition.y = CalculateNewVertexPosition(
methodY,
vertexPosition.y,
originalBounds.y,
newSize.y,
resizable.PaddingY,
resizable.PaddingYMax,
pivotY);
vertexPosition.z = CalculateNewVertexPosition(
methodZ,
vertexPosition.z,
originalBounds.z,
newSize.z,
resizable.PaddingZ,
resizable.PaddingZMax,
pivotZ);
resizedVertices[i] = vertexPosition;
}
Mesh clonedMesh = MonoBehaviour.Instantiate(originalMesh);
clonedMesh.vertices = resizedVertices;
return clonedMesh;
}
private float CalculateNewVertexPosition(
SimpleResizable.Method resizeMethod,
float currentPosition,
float currentSize,
float newSize,
float padding,
float paddingMax,
float pivot)
{
float resizedRatio = currentSize / 2
* (newSize / 2 * (1 / (currentSize / 2)))
- currentSize / 2;
switch (resizeMethod)
{
case SimpleResizable.Method.Adapt:
if (Mathf.Abs(currentPosition) >= padding)
currentPosition = resizedRatio * Mathf.Sign(currentPosition) + currentPosition;
break;
case SimpleResizable.Method.AdaptWithAsymmetricalPadding:
if (currentPosition >= padding)
currentPosition = resizedRatio * Mathf.Sign(currentPosition) + currentPosition;
if (currentPosition <= paddingMax)
currentPosition = resizedRatio * Mathf.Sign(currentPosition) + currentPosition;
break;
case SimpleResizable.Method.Scale:
currentPosition = newSize / (currentSize / currentPosition);
break;
case SimpleResizable.Method.None:
break;
}
float pivotPos = newSize * (-pivot);
currentPosition += pivotPos;
return currentPosition;
}
#endregion
}

View File

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

BIN
Assets/Wall.blend Normal file

Binary file not shown.

109
Assets/Wall.blend.meta Normal file
View File

@ -0,0 +1,109 @@
fileFormatVersion: 2
guid: b3bd50a8a2657294a93a3165603b6a56
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

BIN
Blender/Wall.blend Normal file

Binary file not shown.

BIN
Blender/Wall.blend1 Normal file

Binary file not shown.

View File

@ -139,6 +139,8 @@ PlayerSettings:
bundleVersion: 0.1
preloadedAssets:
- {fileID: 11400000, guid: 29d72bf9f28086693968cedbdc8f08cd, type: 2}
- {fileID: 11400000, guid: 541751c4fa90967d68ef779a22ee43f3, type: 2}
- {fileID: -3127938587913570544, guid: 8eb28e39ec717d0799039f01965f0533, type: 2}
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1