Merge branch 'leveldesign' into programming
							
								
								
									
										8
									
								
								Viagg-io/Assets/EzySlice.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 1d5340f9296942549a73ba8ba55b300e
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										8
									
								
								Viagg-io/Assets/EzySlice/Framework.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 2e74f6db7f705ba4ca4c6bf191c66fd9
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										150
									
								
								Viagg-io/Assets/EzySlice/Framework/IntersectionResult.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,150 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * A Basic Structure which contains intersection information
 | 
			
		||||
     * for Plane->Triangle Intersection Tests
 | 
			
		||||
     * TO-DO -> This structure can be optimized to hold less data
 | 
			
		||||
     * via an optional indices array. Could lead for a faster
 | 
			
		||||
     * intersection test aswell.
 | 
			
		||||
     */
 | 
			
		||||
    public sealed class IntersectionResult {
 | 
			
		||||
 | 
			
		||||
        // general tag to check if this structure is valid
 | 
			
		||||
        private bool is_success;
 | 
			
		||||
 | 
			
		||||
        // our intersection points/triangles
 | 
			
		||||
        private readonly Triangle[] upper_hull;
 | 
			
		||||
        private readonly Triangle[] lower_hull;
 | 
			
		||||
        private readonly Vector3[] intersection_pt;
 | 
			
		||||
 | 
			
		||||
        // our counters. We use raw arrays for performance reasons
 | 
			
		||||
        private int upper_hull_count;
 | 
			
		||||
        private int lower_hull_count;
 | 
			
		||||
        private int intersection_pt_count;
 | 
			
		||||
 | 
			
		||||
        public IntersectionResult() {
 | 
			
		||||
            this.is_success = false;
 | 
			
		||||
 | 
			
		||||
            this.upper_hull = new Triangle[2];
 | 
			
		||||
            this.lower_hull = new Triangle[2];
 | 
			
		||||
            this.intersection_pt = new Vector3[2];
 | 
			
		||||
 | 
			
		||||
            this.upper_hull_count = 0;
 | 
			
		||||
            this.lower_hull_count = 0;
 | 
			
		||||
            this.intersection_pt_count = 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Triangle[] upperHull {
 | 
			
		||||
            get { return upper_hull; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Triangle[] lowerHull {
 | 
			
		||||
            get { return lower_hull; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3[] intersectionPoints {
 | 
			
		||||
            get { return intersection_pt; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int upperHullCount {
 | 
			
		||||
            get { return upper_hull_count; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int lowerHullCount {
 | 
			
		||||
            get { return lower_hull_count; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int intersectionPointCount {
 | 
			
		||||
            get { return intersection_pt_count; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool isValid {
 | 
			
		||||
            get { return is_success; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Used by the intersector, adds a new triangle to the
 | 
			
		||||
         * upper hull section
 | 
			
		||||
         */
 | 
			
		||||
        public IntersectionResult AddUpperHull(Triangle tri) {
 | 
			
		||||
            upper_hull[upper_hull_count++] = tri;
 | 
			
		||||
 | 
			
		||||
            is_success = true;
 | 
			
		||||
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Used by the intersector, adds a new triangle to the
 | 
			
		||||
         * lower gull section
 | 
			
		||||
         */
 | 
			
		||||
        public IntersectionResult AddLowerHull(Triangle tri) {
 | 
			
		||||
            lower_hull[lower_hull_count++] = tri;
 | 
			
		||||
 | 
			
		||||
            is_success = true;
 | 
			
		||||
 | 
			
		||||
            return this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Used by the intersector, adds a new intersection point
 | 
			
		||||
         * which is shared by both upper->lower hulls
 | 
			
		||||
         */
 | 
			
		||||
        public void AddIntersectionPoint(Vector3 pt) {
 | 
			
		||||
            intersection_pt[intersection_pt_count++] = pt;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Clear the current state of this object 
 | 
			
		||||
         */
 | 
			
		||||
        public void Clear() {
 | 
			
		||||
            is_success = false;
 | 
			
		||||
            upper_hull_count = 0;
 | 
			
		||||
            lower_hull_count = 0;
 | 
			
		||||
            intersection_pt_count = 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Editor only DEBUG functionality. This should not be compiled in the final
 | 
			
		||||
         * Version.
 | 
			
		||||
         */
 | 
			
		||||
        public void OnDebugDraw() {
 | 
			
		||||
            OnDebugDraw(Color.white);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnDebugDraw(Color drawColor) {
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
            if (!isValid) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Color prevColor = Gizmos.color;
 | 
			
		||||
 | 
			
		||||
            Gizmos.color = drawColor;
 | 
			
		||||
 | 
			
		||||
            // draw the intersection points
 | 
			
		||||
            for (int i = 0; i < intersectionPointCount; i++) {
 | 
			
		||||
                Gizmos.DrawSphere(intersectionPoints[i], 0.1f);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // draw the upper hull in RED
 | 
			
		||||
            for (int i = 0; i < upperHullCount; i++) {
 | 
			
		||||
                upperHull[i].OnDebugDraw(Color.red);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // draw the lower hull in BLUE
 | 
			
		||||
            for (int i = 0; i < lowerHullCount; i++) {
 | 
			
		||||
                lowerHull[i].OnDebugDraw(Color.blue);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Gizmos.color = prevColor;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 5efa1a1afdfb25242a95d994371519bb
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										491
									
								
								Viagg-io/Assets/EzySlice/Framework/Intersector.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,491 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains static functionality to perform geometric intersection tests.
 | 
			
		||||
     */
 | 
			
		||||
    public sealed class Intersector {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Perform an intersection between Plane and Line, storing intersection point
 | 
			
		||||
         * in reference q. Function returns true if intersection has been found or
 | 
			
		||||
         * false otherwise.
 | 
			
		||||
         */
 | 
			
		||||
        public static bool Intersect(Plane pl, Line ln, out Vector3 q) {
 | 
			
		||||
            return Intersector.Intersect(pl, ln.positionA, ln.positionB, out q);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        public const float Epsilon = 0.0001f;
 | 
			
		||||
        /**
 | 
			
		||||
         * Perform an intersection between Plane and Line made up of points a and b. Intersection
 | 
			
		||||
         * point will be stored in reference q. Function returns true if intersection has been
 | 
			
		||||
         * found or false otherwise.
 | 
			
		||||
         */
 | 
			
		||||
        public static bool Intersect(Plane pl, Vector3 a, Vector3 b, out Vector3 q) {
 | 
			
		||||
            Vector3 normal = pl.normal;
 | 
			
		||||
            Vector3 ab = b - a;
 | 
			
		||||
 | 
			
		||||
            float t = (pl.dist - Vector3.Dot(normal, a)) / Vector3.Dot(normal, ab);
 | 
			
		||||
 | 
			
		||||
            // need to be careful and compensate for floating errors
 | 
			
		||||
            if (t >= -Epsilon && t <= (1 + Epsilon)) {
 | 
			
		||||
                q = a + t * ab;
 | 
			
		||||
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            q = Vector3.zero;
 | 
			
		||||
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Support functionality 
 | 
			
		||||
         */
 | 
			
		||||
        public static float TriArea2D(float x1, float y1, float x2, float y2, float x3, float y3) {
 | 
			
		||||
            return (x1 - x2) * (y2 - y3) - (x2 - x3) * (y1 - y2);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Perform an intersection between Plane and Triangle. This is a comprehensive function
 | 
			
		||||
         * which alwo builds a HULL Hirearchy useful for decimation projects. This obviously
 | 
			
		||||
         * comes at the cost of more complex code and runtime checks, but the returned results
 | 
			
		||||
         * are much more flexible.
 | 
			
		||||
         * Results will be filled into the IntersectionResult reference. Check result.isValid()
 | 
			
		||||
         * for the final results.
 | 
			
		||||
         */
 | 
			
		||||
        public static void Intersect(Plane pl, Triangle tri, IntersectionResult result) {
 | 
			
		||||
            // clear the previous results from the IntersectionResult
 | 
			
		||||
            result.Clear();
 | 
			
		||||
 | 
			
		||||
            // grab local variables for easier access
 | 
			
		||||
            Vector3 a = tri.positionA;
 | 
			
		||||
            Vector3 b = tri.positionB;
 | 
			
		||||
            Vector3 c = tri.positionC;
 | 
			
		||||
 | 
			
		||||
            // check to see which side of the plane the points all
 | 
			
		||||
            // lay in. SideOf operation is a simple dot product and some comparison
 | 
			
		||||
            // operations, so these are a very quick checks
 | 
			
		||||
            SideOfPlane sa = pl.SideOf(a);
 | 
			
		||||
            SideOfPlane sb = pl.SideOf(b);
 | 
			
		||||
            SideOfPlane sc = pl.SideOf(c);
 | 
			
		||||
 | 
			
		||||
            // we cannot intersect if the triangle points all fall on the same side
 | 
			
		||||
            // of the plane. This is an easy early out test as no intersections are possible.
 | 
			
		||||
            if (sa == sb && sb == sc) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // detect cases where two points lay straight on the plane, meaning
 | 
			
		||||
            // that the plane is actually parralel with one of the edges of the triangle
 | 
			
		||||
            else if ((sa == SideOfPlane.ON && sa == sb) ||
 | 
			
		||||
                (sa == SideOfPlane.ON && sa == sc) ||
 | 
			
		||||
                (sb == SideOfPlane.ON && sb == sc)) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            // detect cases where one point is on the plane and the other two are on the same side
 | 
			
		||||
            else if ((sa == SideOfPlane.ON && sb != SideOfPlane.ON && sb == sc) ||
 | 
			
		||||
                     (sb == SideOfPlane.ON && sa != SideOfPlane.ON && sa == sc) ||
 | 
			
		||||
                     (sc == SideOfPlane.ON && sa != SideOfPlane.ON && sa == sb)) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // keep in mind that intersection points are shared by both
 | 
			
		||||
            // the upper HULL and lower HULL hence they lie perfectly
 | 
			
		||||
            // on the plane that cut them
 | 
			
		||||
            Vector3 qa;
 | 
			
		||||
            Vector3 qb;
 | 
			
		||||
 | 
			
		||||
            // check the cases where the points of the triangle actually lie on the plane itself
 | 
			
		||||
            // in these cases, there is only going to be 2 triangles, one for the upper HULL and
 | 
			
		||||
            // the other on the lower HULL
 | 
			
		||||
            // we just need to figure out which points to accept into the upper or lower hulls.
 | 
			
		||||
            if (sa == SideOfPlane.ON) {
 | 
			
		||||
                // if the point a is on the plane, test line b-c
 | 
			
		||||
                if (Intersector.Intersect(pl, b, c, out qa)) {
 | 
			
		||||
                    // line b-c intersected, construct out triangles and return approprietly
 | 
			
		||||
                    result.AddIntersectionPoint(qa);
 | 
			
		||||
                    result.AddIntersectionPoint(a);
 | 
			
		||||
 | 
			
		||||
                    // our two generated triangles, we need to figure out which
 | 
			
		||||
                    // triangle goes into the UPPER hull and which goes into the LOWER hull
 | 
			
		||||
                    Triangle ta = new Triangle(a, b, qa);
 | 
			
		||||
                    Triangle tb = new Triangle(a, qa, c);
 | 
			
		||||
 | 
			
		||||
                    // generate UV coordinates if there is any
 | 
			
		||||
                    if (tri.hasUV) {
 | 
			
		||||
                        // the computed UV coordinate if the intersection point
 | 
			
		||||
                        Vector2 pq = tri.GenerateUV(qa);
 | 
			
		||||
                        Vector2 pa = tri.uvA;
 | 
			
		||||
                        Vector2 pb = tri.uvB;
 | 
			
		||||
                        Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetUV(pa, pb, pq);
 | 
			
		||||
                        tb.SetUV(pa, pq, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Normal coordinates if there is any
 | 
			
		||||
                    if (tri.hasNormal) {
 | 
			
		||||
                        // the computed Normal coordinate if the intersection point
 | 
			
		||||
                        Vector3 pq = tri.GenerateNormal(qa);
 | 
			
		||||
                        Vector3 pa = tri.normalA;
 | 
			
		||||
                        Vector3 pb = tri.normalB;
 | 
			
		||||
                        Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetNormal(pa, pb, pq);
 | 
			
		||||
                        tb.SetNormal(pa, pq, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Tangent coordinates if there is any
 | 
			
		||||
                    if (tri.hasTangent) {
 | 
			
		||||
                        // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                        Vector4 pq = tri.GenerateTangent(qa);
 | 
			
		||||
                        Vector4 pa = tri.tangentA;
 | 
			
		||||
                        Vector4 pb = tri.tangentB;
 | 
			
		||||
                        Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetTangent(pa, pb, pq);
 | 
			
		||||
                        tb.SetTangent(pa, pq, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // b point lies on the upside of the plane
 | 
			
		||||
                    if (sb == SideOfPlane.UP) {
 | 
			
		||||
                        result.AddUpperHull(ta).AddLowerHull(tb);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // b point lies on the downside of the plane
 | 
			
		||||
                    else if (sb == SideOfPlane.DOWN) {
 | 
			
		||||
                        result.AddUpperHull(tb).AddLowerHull(ta);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // test the case where the b point lies on the plane itself
 | 
			
		||||
            else if (sb == SideOfPlane.ON) {
 | 
			
		||||
                // if the point b is on the plane, test line a-c
 | 
			
		||||
                if (Intersector.Intersect(pl, a, c, out qa)) {
 | 
			
		||||
                    // line a-c intersected, construct out triangles and return approprietly
 | 
			
		||||
                    result.AddIntersectionPoint(qa);
 | 
			
		||||
                    result.AddIntersectionPoint(b);
 | 
			
		||||
 | 
			
		||||
                    // our two generated triangles, we need to figure out which
 | 
			
		||||
                    // triangle goes into the UPPER hull and which goes into the LOWER hull
 | 
			
		||||
                    Triangle ta = new Triangle(a, b, qa);
 | 
			
		||||
                    Triangle tb = new Triangle(qa, b, c);
 | 
			
		||||
 | 
			
		||||
                    // generate UV coordinates if there is any
 | 
			
		||||
                    if (tri.hasUV) {
 | 
			
		||||
                        // the computed UV coordinate if the intersection point
 | 
			
		||||
                        Vector2 pq = tri.GenerateUV(qa);
 | 
			
		||||
                        Vector2 pa = tri.uvA;
 | 
			
		||||
                        Vector2 pb = tri.uvB;
 | 
			
		||||
                        Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetUV(pa, pb, pq);
 | 
			
		||||
                        tb.SetUV(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Normal coordinates if there is any
 | 
			
		||||
                    if (tri.hasNormal) {
 | 
			
		||||
                        // the computed Normal coordinate if the intersection point
 | 
			
		||||
                        Vector3 pq = tri.GenerateNormal(qa);
 | 
			
		||||
                        Vector3 pa = tri.normalA;
 | 
			
		||||
                        Vector3 pb = tri.normalB;
 | 
			
		||||
                        Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetNormal(pa, pb, pq);
 | 
			
		||||
                        tb.SetNormal(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Tangent coordinates if there is any
 | 
			
		||||
                    if (tri.hasTangent) {
 | 
			
		||||
                        // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                        Vector4 pq = tri.GenerateTangent(qa);
 | 
			
		||||
                        Vector4 pa = tri.tangentA;
 | 
			
		||||
                        Vector4 pb = tri.tangentB;
 | 
			
		||||
                        Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetTangent(pa, pb, pq);
 | 
			
		||||
                        tb.SetTangent(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // a point lies on the upside of the plane
 | 
			
		||||
                    if (sa == SideOfPlane.UP) {
 | 
			
		||||
                        result.AddUpperHull(ta).AddLowerHull(tb);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // a point lies on the downside of the plane
 | 
			
		||||
                    else if (sa == SideOfPlane.DOWN) {
 | 
			
		||||
                        result.AddUpperHull(tb).AddLowerHull(ta);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // test the case where the c point lies on the plane itself
 | 
			
		||||
            else if (sc == SideOfPlane.ON) {
 | 
			
		||||
                // if the point c is on the plane, test line a-b
 | 
			
		||||
                if (Intersector.Intersect(pl, a, b, out qa)) {
 | 
			
		||||
                    // line a-c intersected, construct out triangles and return approprietly
 | 
			
		||||
                    result.AddIntersectionPoint(qa);
 | 
			
		||||
                    result.AddIntersectionPoint(c);
 | 
			
		||||
 | 
			
		||||
                    // our two generated triangles, we need to figure out which
 | 
			
		||||
                    // triangle goes into the UPPER hull and which goes into the LOWER hull
 | 
			
		||||
                    Triangle ta = new Triangle(a, qa, c);
 | 
			
		||||
                    Triangle tb = new Triangle(qa, b, c);
 | 
			
		||||
 | 
			
		||||
                    // generate UV coordinates if there is any
 | 
			
		||||
                    if (tri.hasUV) {
 | 
			
		||||
                        // the computed UV coordinate if the intersection point
 | 
			
		||||
                        Vector2 pq = tri.GenerateUV(qa);
 | 
			
		||||
                        Vector2 pa = tri.uvA;
 | 
			
		||||
                        Vector2 pb = tri.uvB;
 | 
			
		||||
                        Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetUV(pa, pq, pc);
 | 
			
		||||
                        tb.SetUV(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Normal coordinates if there is any
 | 
			
		||||
                    if (tri.hasNormal) {
 | 
			
		||||
                        // the computed Normal coordinate if the intersection point
 | 
			
		||||
                        Vector3 pq = tri.GenerateNormal(qa);
 | 
			
		||||
                        Vector3 pa = tri.normalA;
 | 
			
		||||
                        Vector3 pb = tri.normalB;
 | 
			
		||||
                        Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetNormal(pa, pq, pc);
 | 
			
		||||
                        tb.SetNormal(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate Tangent coordinates if there is any
 | 
			
		||||
                    if (tri.hasTangent) {
 | 
			
		||||
                        // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                        Vector4 pq = tri.GenerateTangent(qa);
 | 
			
		||||
                        Vector4 pa = tri.tangentA;
 | 
			
		||||
                        Vector4 pb = tri.tangentB;
 | 
			
		||||
                        Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                        ta.SetTangent(pa, pq, pc);
 | 
			
		||||
                        tb.SetTangent(pq, pb, pc);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // a point lies on the upside of the plane
 | 
			
		||||
                    if (sa == SideOfPlane.UP) {
 | 
			
		||||
                        result.AddUpperHull(ta).AddLowerHull(tb);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // a point lies on the downside of the plane
 | 
			
		||||
                    else if (sa == SideOfPlane.DOWN) {
 | 
			
		||||
                        result.AddUpperHull(tb).AddLowerHull(ta);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // at this point, all edge cases have been tested and failed, we need to perform
 | 
			
		||||
            // full intersection tests against the lines. From this point onwards we will generate
 | 
			
		||||
            // 3 triangles
 | 
			
		||||
            else if (sa != sb && Intersector.Intersect(pl, a, b, out qa)) {
 | 
			
		||||
                // intersection found against a - b
 | 
			
		||||
                result.AddIntersectionPoint(qa);
 | 
			
		||||
 | 
			
		||||
                // since intersection was found against a - b, we need to check which other
 | 
			
		||||
                // lines to check (we only need to check one more line) for intersection.
 | 
			
		||||
                // the line we check against will be the line against the point which lies on
 | 
			
		||||
                // the other side of the plane.
 | 
			
		||||
                if (sa == sc) {
 | 
			
		||||
                    // we likely have an intersection against line b-c which will complete this loop
 | 
			
		||||
                    if (Intersector.Intersect(pl, b, c, out qb)) {
 | 
			
		||||
                        result.AddIntersectionPoint(qb);
 | 
			
		||||
 | 
			
		||||
                        // our three generated triangles. Two of these triangles will end
 | 
			
		||||
                        // up on either the UPPER or LOWER hulls.
 | 
			
		||||
                        Triangle ta = new Triangle(qa, b, qb);
 | 
			
		||||
                        Triangle tb = new Triangle(a, qa, qb);
 | 
			
		||||
                        Triangle tc = new Triangle(a, qb, c);
 | 
			
		||||
 | 
			
		||||
                        // generate UV coordinates if there is any
 | 
			
		||||
                        if (tri.hasUV) {
 | 
			
		||||
                            // the computed UV coordinate if the intersection point
 | 
			
		||||
                            Vector2 pqa = tri.GenerateUV(qa);
 | 
			
		||||
                            Vector2 pqb = tri.GenerateUV(qb);
 | 
			
		||||
                            Vector2 pa = tri.uvA;
 | 
			
		||||
                            Vector2 pb = tri.uvB;
 | 
			
		||||
                            Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetUV(pqa, pb, pqb);
 | 
			
		||||
                            tb.SetUV(pa, pqa, pqb);
 | 
			
		||||
                            tc.SetUV(pa, pqb, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        // generate Normal coordinates if there is any
 | 
			
		||||
                        if (tri.hasNormal) {
 | 
			
		||||
                            // the computed Normal coordinate if the intersection point
 | 
			
		||||
                            Vector3 pqa = tri.GenerateNormal(qa);
 | 
			
		||||
                            Vector3 pqb = tri.GenerateNormal(qb);
 | 
			
		||||
                            Vector3 pa = tri.normalA;
 | 
			
		||||
                            Vector3 pb = tri.normalB;
 | 
			
		||||
                            Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetNormal(pqa, pb, pqb);
 | 
			
		||||
                            tb.SetNormal(pa, pqa, pqb);
 | 
			
		||||
                            tc.SetNormal(pa, pqb, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        // generate Tangent coordinates if there is any
 | 
			
		||||
                        if (tri.hasTangent) {
 | 
			
		||||
                            // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                            Vector4 pqa = tri.GenerateTangent(qa);
 | 
			
		||||
                            Vector4 pqb = tri.GenerateTangent(qb);
 | 
			
		||||
                            Vector4 pa = tri.tangentA;
 | 
			
		||||
                            Vector4 pb = tri.tangentB;
 | 
			
		||||
                            Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetTangent(pqa, pb, pqb);
 | 
			
		||||
                            tb.SetTangent(pa, pqa, pqb);
 | 
			
		||||
                            tc.SetTangent(pa, pqb, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (sa == SideOfPlane.UP) {
 | 
			
		||||
                            result.AddUpperHull(tb).AddUpperHull(tc).AddLowerHull(ta);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            result.AddLowerHull(tb).AddLowerHull(tc).AddUpperHull(ta);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    // in this scenario, the point a is a "lone" point which lies in either upper
 | 
			
		||||
                    // or lower HULL. We need to perform another intersection to find the last point
 | 
			
		||||
                    if (Intersector.Intersect(pl, a, c, out qb)) {
 | 
			
		||||
                        result.AddIntersectionPoint(qb);
 | 
			
		||||
 | 
			
		||||
                        // our three generated triangles. Two of these triangles will end
 | 
			
		||||
                        // up on either the UPPER or LOWER hulls.
 | 
			
		||||
                        Triangle ta = new Triangle(a, qa, qb);
 | 
			
		||||
                        Triangle tb = new Triangle(qa, b, c);
 | 
			
		||||
                        Triangle tc = new Triangle(qb, qa, c);
 | 
			
		||||
 | 
			
		||||
                        // generate UV coordinates if there is any
 | 
			
		||||
                        if (tri.hasUV) {
 | 
			
		||||
                            // the computed UV coordinate if the intersection point
 | 
			
		||||
                            Vector2 pqa = tri.GenerateUV(qa);
 | 
			
		||||
                            Vector2 pqb = tri.GenerateUV(qb);
 | 
			
		||||
                            Vector2 pa = tri.uvA;
 | 
			
		||||
                            Vector2 pb = tri.uvB;
 | 
			
		||||
                            Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetUV(pa, pqa, pqb);
 | 
			
		||||
                            tb.SetUV(pqa, pb, pc);
 | 
			
		||||
                            tc.SetUV(pqb, pqa, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        // generate Normal coordinates if there is any
 | 
			
		||||
                        if (tri.hasNormal) {
 | 
			
		||||
                            // the computed Normal coordinate if the intersection point
 | 
			
		||||
                            Vector3 pqa = tri.GenerateNormal(qa);
 | 
			
		||||
                            Vector3 pqb = tri.GenerateNormal(qb);
 | 
			
		||||
                            Vector3 pa = tri.normalA;
 | 
			
		||||
                            Vector3 pb = tri.normalB;
 | 
			
		||||
                            Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetNormal(pa, pqa, pqb);
 | 
			
		||||
                            tb.SetNormal(pqa, pb, pc);
 | 
			
		||||
                            tc.SetNormal(pqb, pqa, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        // generate Tangent coordinates if there is any
 | 
			
		||||
                        if (tri.hasTangent) {
 | 
			
		||||
                            // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                            Vector4 pqa = tri.GenerateTangent(qa);
 | 
			
		||||
                            Vector4 pqb = tri.GenerateTangent(qb);
 | 
			
		||||
                            Vector4 pa = tri.tangentA;
 | 
			
		||||
                            Vector4 pb = tri.tangentB;
 | 
			
		||||
                            Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                            ta.SetTangent(pa, pqa, pqb);
 | 
			
		||||
                            tb.SetTangent(pqa, pb, pc);
 | 
			
		||||
                            tc.SetTangent(pqb, pqa, pc);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (sa == SideOfPlane.UP) {
 | 
			
		||||
                            result.AddUpperHull(ta).AddLowerHull(tb).AddLowerHull(tc);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            result.AddLowerHull(ta).AddUpperHull(tb).AddUpperHull(tc);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // if line a-b did not intersect (or the lie on the same side of the plane)
 | 
			
		||||
            // this simplifies the problem a fair bit. This means we have an intersection 
 | 
			
		||||
            // in line a-c and b-c, which we can use to build a new UPPER and LOWER hulls
 | 
			
		||||
            // we are expecting both of these intersection tests to pass, otherwise something
 | 
			
		||||
            // went wrong (float errors? missed a checked case?)
 | 
			
		||||
            else if (Intersector.Intersect(pl, c, a, out qa) && Intersector.Intersect(pl, c, b, out qb)) {
 | 
			
		||||
                // in here we know that line a-b actually lie on the same side of the plane, this will
 | 
			
		||||
                // simplify the rest of the logic. We also have our intersection points
 | 
			
		||||
                // the computed UV coordinate of the intersection point
 | 
			
		||||
 | 
			
		||||
                result.AddIntersectionPoint(qa);
 | 
			
		||||
                result.AddIntersectionPoint(qb);
 | 
			
		||||
 | 
			
		||||
                // our three generated triangles. Two of these triangles will end
 | 
			
		||||
                // up on either the UPPER or LOWER hulls.
 | 
			
		||||
                Triangle ta = new Triangle(qa, qb, c);
 | 
			
		||||
                Triangle tb = new Triangle(a, qb, qa);
 | 
			
		||||
                Triangle tc = new Triangle(a, b, qb);
 | 
			
		||||
 | 
			
		||||
                // generate UV coordinates if there is any
 | 
			
		||||
                if (tri.hasUV) {
 | 
			
		||||
                    // the computed UV coordinate if the intersection point
 | 
			
		||||
                    Vector2 pqa = tri.GenerateUV(qa);
 | 
			
		||||
                    Vector2 pqb = tri.GenerateUV(qb);
 | 
			
		||||
                    Vector2 pa = tri.uvA;
 | 
			
		||||
                    Vector2 pb = tri.uvB;
 | 
			
		||||
                    Vector2 pc = tri.uvC;
 | 
			
		||||
 | 
			
		||||
                    ta.SetUV(pqa, pqb, pc);
 | 
			
		||||
                    tb.SetUV(pa, pqb, pqa);
 | 
			
		||||
                    tc.SetUV(pa, pb, pqb);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // generate Normal coordinates if there is any
 | 
			
		||||
                if (tri.hasNormal) {
 | 
			
		||||
                    // the computed Normal coordinate if the intersection point
 | 
			
		||||
                    Vector3 pqa = tri.GenerateNormal(qa);
 | 
			
		||||
                    Vector3 pqb = tri.GenerateNormal(qb);
 | 
			
		||||
                    Vector3 pa = tri.normalA;
 | 
			
		||||
                    Vector3 pb = tri.normalB;
 | 
			
		||||
                    Vector3 pc = tri.normalC;
 | 
			
		||||
 | 
			
		||||
                    ta.SetNormal(pqa, pqb, pc);
 | 
			
		||||
                    tb.SetNormal(pa, pqb, pqa);
 | 
			
		||||
                    tc.SetNormal(pa, pb, pqb);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // generate Tangent coordinates if there is any
 | 
			
		||||
                if (tri.hasTangent) {
 | 
			
		||||
                    // the computed Tangent coordinate if the intersection point
 | 
			
		||||
                    Vector4 pqa = tri.GenerateTangent(qa);
 | 
			
		||||
                    Vector4 pqb = tri.GenerateTangent(qb);
 | 
			
		||||
                    Vector4 pa = tri.tangentA;
 | 
			
		||||
                    Vector4 pb = tri.tangentB;
 | 
			
		||||
                    Vector4 pc = tri.tangentC;
 | 
			
		||||
 | 
			
		||||
                    ta.SetTangent(pqa, pqb, pc);
 | 
			
		||||
                    tb.SetTangent(pa, pqb, pqa);
 | 
			
		||||
                    tc.SetTangent(pa, pb, pqb);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (sa == SideOfPlane.UP) {
 | 
			
		||||
                    result.AddUpperHull(tb).AddUpperHull(tc).AddLowerHull(ta);
 | 
			
		||||
                } else {
 | 
			
		||||
                    result.AddLowerHull(tb).AddLowerHull(tc).AddUpperHull(ta);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/Intersector.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 966c18ce8e503ed47a80ec55f6a1928e
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										31
									
								
								Viagg-io/Assets/EzySlice/Framework/Line.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,31 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
    public struct Line {
 | 
			
		||||
        private readonly Vector3 m_pos_a;
 | 
			
		||||
        private readonly Vector3 m_pos_b;
 | 
			
		||||
 | 
			
		||||
        public Line(Vector3 pta, Vector3 ptb) {
 | 
			
		||||
            this.m_pos_a = pta;
 | 
			
		||||
            this.m_pos_b = ptb;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public float dist {
 | 
			
		||||
            get { return Vector3.Distance(this.m_pos_a, this.m_pos_b); }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public float distSq {
 | 
			
		||||
            get { return (this.m_pos_a - this.m_pos_b).sqrMagnitude; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 positionA {
 | 
			
		||||
            get { return this.m_pos_a; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 positionB {
 | 
			
		||||
            get { return this.m_pos_b; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/Line.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 8c53f19a109c6ef4aa92ee2d52fffd2d
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										141
									
								
								Viagg-io/Assets/EzySlice/Framework/Plane.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,141 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Quick Internal structure which checks where the point lays on the
 | 
			
		||||
     * Plane. UP = Upwards from the Normal, DOWN = Downwards from the Normal
 | 
			
		||||
     * ON = Point lays straight on the plane
 | 
			
		||||
     */
 | 
			
		||||
    public enum SideOfPlane {
 | 
			
		||||
        UP,
 | 
			
		||||
        DOWN,
 | 
			
		||||
        ON
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Represents a simple 3D Plane structure with a position
 | 
			
		||||
     * and direction which extends infinitely in its axis. This provides
 | 
			
		||||
     * an optimal structure for collision tests for the slicing framework.
 | 
			
		||||
     */
 | 
			
		||||
    public struct Plane {
 | 
			
		||||
        private Vector3 m_normal;
 | 
			
		||||
        private float m_dist;
 | 
			
		||||
 | 
			
		||||
        // this is for editor debugging only! do NOT try to access this
 | 
			
		||||
        // variable at runtime, we will be stripping it out for final
 | 
			
		||||
        // builds
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
        private Transform trans_ref;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        public Plane(Vector3 pos, Vector3 norm) {
 | 
			
		||||
            this.m_normal = norm;
 | 
			
		||||
            this.m_dist = Vector3.Dot(norm, pos);
 | 
			
		||||
 | 
			
		||||
            // this is for editor debugging only!
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
            trans_ref = null;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Plane(Vector3 norm, float dot) {
 | 
			
		||||
            this.m_normal = norm;
 | 
			
		||||
            this.m_dist = dot;
 | 
			
		||||
 | 
			
		||||
            // this is for editor debugging only!
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
            trans_ref = null;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public Plane(Vector3 a, Vector3 b, Vector3 c) {
 | 
			
		||||
            m_normal = Vector3.Normalize(Vector3.Cross(b - a, c - a));
 | 
			
		||||
            m_dist = -Vector3.Dot(m_normal, a);
 | 
			
		||||
            
 | 
			
		||||
            // this is for editor debugging only!
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
            trans_ref = null;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Compute(Vector3 pos, Vector3 norm) {
 | 
			
		||||
            this.m_normal = norm;
 | 
			
		||||
            this.m_dist = Vector3.Dot(norm, pos);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Compute(Transform trans) {
 | 
			
		||||
            Compute(trans.position, trans.up);
 | 
			
		||||
 | 
			
		||||
            // this is for editor debugging only!
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
            trans_ref = trans;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Compute(GameObject obj) {
 | 
			
		||||
            Compute(obj.transform);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 normal {
 | 
			
		||||
            get { return this.m_normal; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public float dist {
 | 
			
		||||
            get { return this.m_dist; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Checks which side of the plane the point lays on.
 | 
			
		||||
         */
 | 
			
		||||
        public SideOfPlane SideOf(Vector3 pt) {
 | 
			
		||||
            float result = Vector3.Dot(m_normal, pt) - m_dist;
 | 
			
		||||
 | 
			
		||||
            if (result > Intersector.Epsilon) {
 | 
			
		||||
                return SideOfPlane.UP;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (result < -Intersector.Epsilon) {
 | 
			
		||||
                return SideOfPlane.DOWN;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return SideOfPlane.ON;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Editor only DEBUG functionality. This should not be compiled in the final
 | 
			
		||||
         * Version.
 | 
			
		||||
         */
 | 
			
		||||
        public void OnDebugDraw() {
 | 
			
		||||
            OnDebugDraw(Color.white);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnDebugDraw(Color drawColor) {
 | 
			
		||||
            // NOTE -> Gizmos are only supported in the editor. We will keep these function
 | 
			
		||||
            // signatures for consistancy however at final build, these will do nothing
 | 
			
		||||
            // TO/DO -> Should we throw a runtime exception if this function tried to get executed
 | 
			
		||||
            // at runtime?
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
            if (trans_ref == null) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Color prevColor = Gizmos.color;
 | 
			
		||||
            Matrix4x4 prevMatrix = Gizmos.matrix;
 | 
			
		||||
 | 
			
		||||
            // TO-DO
 | 
			
		||||
            Gizmos.matrix = Matrix4x4.TRS(trans_ref.position, trans_ref.rotation, trans_ref.localScale);
 | 
			
		||||
            Gizmos.color = drawColor;
 | 
			
		||||
 | 
			
		||||
            Gizmos.DrawWireCube(Vector3.zero, new Vector3(1.0f, 0.0f, 1.0f));
 | 
			
		||||
 | 
			
		||||
            Gizmos.color = prevColor;
 | 
			
		||||
            Gizmos.matrix = prevMatrix;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/Plane.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 0838665d3fc17c645a1d7d45613d4f30
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										115
									
								
								Viagg-io/Assets/EzySlice/Framework/TextureRegion.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,115 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
    /**
 | 
			
		||||
     * TextureRegion defines a region of a specific texture which can be used
 | 
			
		||||
     * for custom UV Mapping Routines.
 | 
			
		||||
     * 
 | 
			
		||||
     * TextureRegions are always stored in normalized UV Coordinate space between
 | 
			
		||||
     * 0.0f and 1.0f
 | 
			
		||||
     */
 | 
			
		||||
    public struct TextureRegion {
 | 
			
		||||
        private readonly float pos_start_x;
 | 
			
		||||
        private readonly float pos_start_y;
 | 
			
		||||
        private readonly float pos_end_x;
 | 
			
		||||
        private readonly float pos_end_y;
 | 
			
		||||
 | 
			
		||||
        public TextureRegion(float startX, float startY, float endX, float endY) {
 | 
			
		||||
            this.pos_start_x = startX;
 | 
			
		||||
            this.pos_start_y = startY;
 | 
			
		||||
            this.pos_end_x = endX;
 | 
			
		||||
            this.pos_end_y = endY;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public float startX { get { return this.pos_start_x; } }
 | 
			
		||||
        public float startY { get { return this.pos_start_y; } }
 | 
			
		||||
        public float endX { get { return this.pos_end_x; } }
 | 
			
		||||
        public float endY { get { return this.pos_end_y; } }
 | 
			
		||||
 | 
			
		||||
        public Vector2 start { get { return new Vector2(startX, startY); } }
 | 
			
		||||
        public Vector2 end { get { return new Vector2(endX, endY); } }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Perform a mapping of a UV coordinate (computed in 0,1 space)
 | 
			
		||||
         * into the new coordinates defined by the provided TextureRegion
 | 
			
		||||
         */
 | 
			
		||||
        public Vector2 Map(Vector2 uv) {
 | 
			
		||||
            return Map(uv.x, uv.y);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Perform a mapping of a UV coordinate (computed in 0,1 space)
 | 
			
		||||
         * into the new coordinates defined by the provided TextureRegion
 | 
			
		||||
         */
 | 
			
		||||
        public Vector2 Map(float x, float y) {
 | 
			
		||||
            float mappedX = MAP(x, 0.0f, 1.0f, pos_start_x, pos_end_x);
 | 
			
		||||
            float mappedY = MAP(y, 0.0f, 1.0f, pos_start_y, pos_end_y);
 | 
			
		||||
 | 
			
		||||
            return new Vector2(mappedX, mappedY);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Our mapping function to map arbitrary values into our required texture region
 | 
			
		||||
         */
 | 
			
		||||
        private static float MAP(float x, float in_min, float in_max, float out_min, float out_max) {
 | 
			
		||||
            return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Define our TextureRegion extension to easily calculate
 | 
			
		||||
     * from a Texture2D Object.
 | 
			
		||||
     */
 | 
			
		||||
    public static class TextureRegionExtension {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Helper function to quickly calculate the Texture Region from a material.
 | 
			
		||||
         * This extension function will use the mainTexture component to perform the
 | 
			
		||||
         * calculation. 
 | 
			
		||||
         * 
 | 
			
		||||
         * Will throw a null exception if the texture does not exist. See
 | 
			
		||||
         * Texture.getTextureRegion() for function details.
 | 
			
		||||
         */
 | 
			
		||||
        public static TextureRegion GetTextureRegion(this Material mat,
 | 
			
		||||
            int pixX,
 | 
			
		||||
            int pixY,
 | 
			
		||||
            int pixWidth,
 | 
			
		||||
            int pixHeight) {
 | 
			
		||||
            return mat.mainTexture.GetTextureRegion(pixX, pixY, pixWidth, pixHeight);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Using a Texture2D, calculate and return a specific TextureRegion
 | 
			
		||||
         * Coordinates are provided in pixel coordinates where 0,0 is the
 | 
			
		||||
         * bottom left corner of the texture.
 | 
			
		||||
         * 
 | 
			
		||||
         * The texture region will automatically be calculated to ensure that it
 | 
			
		||||
         * will fit inside the provided texture. 
 | 
			
		||||
         */
 | 
			
		||||
        public static TextureRegion GetTextureRegion(this Texture tex,
 | 
			
		||||
            int pixX,
 | 
			
		||||
            int pixY,
 | 
			
		||||
            int pixWidth,
 | 
			
		||||
            int pixHeight) {
 | 
			
		||||
            int textureWidth = tex.width;
 | 
			
		||||
            int textureHeight = tex.height;
 | 
			
		||||
 | 
			
		||||
            // ensure we are not referencing out of bounds coordinates
 | 
			
		||||
            // relative to our texture
 | 
			
		||||
            int calcWidth = Mathf.Min(textureWidth, pixWidth);
 | 
			
		||||
            int calcHeight = Mathf.Min(textureHeight, pixHeight);
 | 
			
		||||
            int calcX = Mathf.Min(Mathf.Abs(pixX), textureWidth);
 | 
			
		||||
            int calcY = Mathf.Min(Mathf.Abs(pixY), textureHeight);
 | 
			
		||||
 | 
			
		||||
            float startX = calcX / (float) textureWidth;
 | 
			
		||||
            float startY = calcY / (float) textureHeight;
 | 
			
		||||
            float endX = (calcX + calcWidth) / (float) textureWidth;
 | 
			
		||||
            float endY = (calcY + calcHeight) / (float) textureHeight;
 | 
			
		||||
 | 
			
		||||
            // texture region is a struct which is allocated on the stack
 | 
			
		||||
            return new TextureRegion(startX, startY, endX, endY);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/TextureRegion.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 18937420d6e20bf43aa3ff0774c73407
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										349
									
								
								Viagg-io/Assets/EzySlice/Framework/Triangle.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,349 @@
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
    /**
 | 
			
		||||
     * Represents a simple 3D Triangle structure with position
 | 
			
		||||
     * and UV map. The UV is required if the slicer needs
 | 
			
		||||
     * to recalculate the new UV position for texture mapping.
 | 
			
		||||
     */
 | 
			
		||||
    public struct Triangle {
 | 
			
		||||
        // the points which represent this triangle
 | 
			
		||||
        // these have to be set and are immutable. Cannot be
 | 
			
		||||
        // changed once set
 | 
			
		||||
        private readonly Vector3 m_pos_a;
 | 
			
		||||
        private readonly Vector3 m_pos_b;
 | 
			
		||||
        private readonly Vector3 m_pos_c;
 | 
			
		||||
 | 
			
		||||
        // the UV coordinates of this triangle
 | 
			
		||||
        // these are optional and may not be set
 | 
			
		||||
        private bool m_uv_set;
 | 
			
		||||
        private Vector2 m_uv_a;
 | 
			
		||||
        private Vector2 m_uv_b;
 | 
			
		||||
        private Vector2 m_uv_c;
 | 
			
		||||
 | 
			
		||||
        // the Normals of the Vertices
 | 
			
		||||
        // these are optional and may not be set
 | 
			
		||||
        private bool m_nor_set;
 | 
			
		||||
        private Vector3 m_nor_a;
 | 
			
		||||
        private Vector3 m_nor_b;
 | 
			
		||||
        private Vector3 m_nor_c;
 | 
			
		||||
 | 
			
		||||
        // the Tangents of the Vertices
 | 
			
		||||
        // these are optional and may not be set
 | 
			
		||||
        private bool m_tan_set;
 | 
			
		||||
        private Vector4 m_tan_a;
 | 
			
		||||
        private Vector4 m_tan_b;
 | 
			
		||||
        private Vector4 m_tan_c;
 | 
			
		||||
 | 
			
		||||
        public Triangle(Vector3 posa,
 | 
			
		||||
            Vector3 posb,
 | 
			
		||||
            Vector3 posc) {
 | 
			
		||||
            this.m_pos_a = posa;
 | 
			
		||||
            this.m_pos_b = posb;
 | 
			
		||||
            this.m_pos_c = posc;
 | 
			
		||||
 | 
			
		||||
            this.m_uv_set = false;
 | 
			
		||||
            this.m_uv_a = Vector2.zero;
 | 
			
		||||
            this.m_uv_b = Vector2.zero;
 | 
			
		||||
            this.m_uv_c = Vector2.zero;
 | 
			
		||||
 | 
			
		||||
            this.m_nor_set = false;
 | 
			
		||||
            this.m_nor_a = Vector3.zero;
 | 
			
		||||
            this.m_nor_b = Vector3.zero;
 | 
			
		||||
            this.m_nor_c = Vector3.zero;
 | 
			
		||||
 | 
			
		||||
            this.m_tan_set = false;
 | 
			
		||||
            this.m_tan_a = Vector4.zero;
 | 
			
		||||
            this.m_tan_b = Vector4.zero;
 | 
			
		||||
            this.m_tan_c = Vector4.zero;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 positionA {
 | 
			
		||||
            get { return this.m_pos_a; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 positionB {
 | 
			
		||||
            get { return this.m_pos_b; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 positionC {
 | 
			
		||||
            get { return this.m_pos_c; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool hasUV {
 | 
			
		||||
            get { return this.m_uv_set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetUV(Vector2 uvA, Vector2 uvB, Vector2 uvC) {
 | 
			
		||||
            this.m_uv_a = uvA;
 | 
			
		||||
            this.m_uv_b = uvB;
 | 
			
		||||
            this.m_uv_c = uvC;
 | 
			
		||||
 | 
			
		||||
            this.m_uv_set = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector2 uvA {
 | 
			
		||||
            get { return this.m_uv_a; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector2 uvB {
 | 
			
		||||
            get { return this.m_uv_b; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector2 uvC {
 | 
			
		||||
            get { return this.m_uv_c; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool hasNormal {
 | 
			
		||||
            get { return this.m_nor_set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetNormal(Vector3 norA, Vector3 norB, Vector3 norC) {
 | 
			
		||||
            this.m_nor_a = norA;
 | 
			
		||||
            this.m_nor_b = norB;
 | 
			
		||||
            this.m_nor_c = norC;
 | 
			
		||||
 | 
			
		||||
            this.m_nor_set = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 normalA {
 | 
			
		||||
            get { return this.m_nor_a; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 normalB {
 | 
			
		||||
            get { return this.m_nor_b; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector3 normalC {
 | 
			
		||||
            get { return this.m_nor_c; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool hasTangent {
 | 
			
		||||
            get { return this.m_tan_set; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void SetTangent(Vector4 tanA, Vector4 tanB, Vector4 tanC) {
 | 
			
		||||
            this.m_tan_a = tanA;
 | 
			
		||||
            this.m_tan_b = tanB;
 | 
			
		||||
            this.m_tan_c = tanC;
 | 
			
		||||
 | 
			
		||||
            this.m_tan_set = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector4 tangentA {
 | 
			
		||||
            get { return this.m_tan_a; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector4 tangentB {
 | 
			
		||||
            get { return this.m_tan_b; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Vector4 tangentC {
 | 
			
		||||
            get { return this.m_tan_c; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Compute and set the tangents of this triangle
 | 
			
		||||
         * Derived From https://answers.unity.com/questions/7789/calculating-tangents-vector4.html
 | 
			
		||||
         */
 | 
			
		||||
        public void ComputeTangents() {
 | 
			
		||||
            // computing tangents requires both UV and normals set
 | 
			
		||||
            if (!m_nor_set || !m_uv_set) {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Vector3 v1 = m_pos_a;
 | 
			
		||||
            Vector3 v2 = m_pos_b;
 | 
			
		||||
            Vector3 v3 = m_pos_c;
 | 
			
		||||
 | 
			
		||||
            Vector2 w1 = m_uv_a;
 | 
			
		||||
            Vector2 w2 = m_uv_b;
 | 
			
		||||
            Vector2 w3 = m_uv_c;
 | 
			
		||||
 | 
			
		||||
            float x1 = v2.x - v1.x;
 | 
			
		||||
            float x2 = v3.x - v1.x;
 | 
			
		||||
            float y1 = v2.y - v1.y;
 | 
			
		||||
            float y2 = v3.y - v1.y;
 | 
			
		||||
            float z1 = v2.z - v1.z;
 | 
			
		||||
            float z2 = v3.z - v1.z;
 | 
			
		||||
 | 
			
		||||
            float s1 = w2.x - w1.x;
 | 
			
		||||
            float s2 = w3.x - w1.x;
 | 
			
		||||
            float t1 = w2.y - w1.y;
 | 
			
		||||
            float t2 = w3.y - w1.y;
 | 
			
		||||
 | 
			
		||||
            float r = 1.0f / (s1 * t2 - s2 * t1);
 | 
			
		||||
 | 
			
		||||
            Vector3 sdir = new Vector3((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r);
 | 
			
		||||
            Vector3 tdir = new Vector3((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);
 | 
			
		||||
 | 
			
		||||
            Vector3 n1 = m_nor_a;
 | 
			
		||||
            Vector3 nt1 = sdir;
 | 
			
		||||
 | 
			
		||||
            Vector3.OrthoNormalize(ref n1, ref nt1);
 | 
			
		||||
            Vector4 tanA = new Vector4(nt1.x, nt1.y, nt1.z, (Vector3.Dot(Vector3.Cross(n1, nt1), tdir) < 0.0f) ? -1.0f : 1.0f);
 | 
			
		||||
 | 
			
		||||
            Vector3 n2 = m_nor_b;
 | 
			
		||||
            Vector3 nt2 = sdir;
 | 
			
		||||
 | 
			
		||||
            Vector3.OrthoNormalize(ref n2, ref nt2);
 | 
			
		||||
            Vector4 tanB = new Vector4(nt2.x, nt2.y, nt2.z, (Vector3.Dot(Vector3.Cross(n2, nt2), tdir) < 0.0f) ? -1.0f : 1.0f);
 | 
			
		||||
 | 
			
		||||
            Vector3 n3 = m_nor_c;
 | 
			
		||||
            Vector3 nt3 = sdir;
 | 
			
		||||
 | 
			
		||||
            Vector3.OrthoNormalize(ref n3, ref nt3);
 | 
			
		||||
            Vector4 tanC = new Vector4(nt3.x, nt3.y, nt3.z, (Vector3.Dot(Vector3.Cross(n3, nt3), tdir) < 0.0f) ? -1.0f : 1.0f);
 | 
			
		||||
 | 
			
		||||
            // finally set the tangents of this object
 | 
			
		||||
            SetTangent(tanA, tanB, tanC);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Calculate the Barycentric coordinate weight values u-v-w for Point p in respect to the provided
 | 
			
		||||
         * triangle. This is useful for computing new UV coordinates for arbitrary points.
 | 
			
		||||
         */
 | 
			
		||||
        public Vector3 Barycentric(Vector3 p) {
 | 
			
		||||
            Vector3 a = m_pos_a;
 | 
			
		||||
            Vector3 b = m_pos_b;
 | 
			
		||||
            Vector3 c = m_pos_c;
 | 
			
		||||
 | 
			
		||||
            Vector3 m = Vector3.Cross(b - a, c - a);
 | 
			
		||||
 | 
			
		||||
            float nu;
 | 
			
		||||
            float nv;
 | 
			
		||||
            float ood;
 | 
			
		||||
 | 
			
		||||
            float x = Mathf.Abs(m.x);
 | 
			
		||||
            float y = Mathf.Abs(m.y);
 | 
			
		||||
            float z = Mathf.Abs(m.z);
 | 
			
		||||
 | 
			
		||||
            // compute areas of plane with largest projections
 | 
			
		||||
            if (x >= y && x >= z) {
 | 
			
		||||
                // area of PBC in yz plane
 | 
			
		||||
                nu = Intersector.TriArea2D(p.y, p.z, b.y, b.z, c.y, c.z);
 | 
			
		||||
                // area of PCA in yz plane
 | 
			
		||||
                nv = Intersector.TriArea2D(p.y, p.z, c.y, c.z, a.y, a.z);
 | 
			
		||||
                // 1/2*area of ABC in yz plane
 | 
			
		||||
                ood = 1.0f / m.x;
 | 
			
		||||
            } else if (y >= x && y >= z) {
 | 
			
		||||
                // project in xz plane
 | 
			
		||||
                nu = Intersector.TriArea2D(p.x, p.z, b.x, b.z, c.x, c.z);
 | 
			
		||||
                nv = Intersector.TriArea2D(p.x, p.z, c.x, c.z, a.x, a.z);
 | 
			
		||||
                ood = 1.0f / -m.y;
 | 
			
		||||
            } else {
 | 
			
		||||
                // project in xy plane
 | 
			
		||||
                nu = Intersector.TriArea2D(p.x, p.y, b.x, b.y, c.x, c.y);
 | 
			
		||||
                nv = Intersector.TriArea2D(p.x, p.y, c.x, c.y, a.x, a.y);
 | 
			
		||||
                ood = 1.0f / m.z;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            float u = nu * ood;
 | 
			
		||||
            float v = nv * ood;
 | 
			
		||||
            float w = 1.0f - u - v;
 | 
			
		||||
 | 
			
		||||
            return new Vector3(u, v, w);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generate a set of new UV coordinates for the provided point pt in respect to Triangle.
 | 
			
		||||
         * 
 | 
			
		||||
         * Uses weight values for the computation, so this triangle must have UV's set to return
 | 
			
		||||
         * the correct results. Otherwise Vector2.zero will be returned. check via hasUV().
 | 
			
		||||
         */
 | 
			
		||||
        public Vector2 GenerateUV(Vector3 pt) {
 | 
			
		||||
            // if not set, result will be zero, quick exit
 | 
			
		||||
            if (!m_uv_set) {
 | 
			
		||||
                return Vector2.zero;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Vector3 weights = Barycentric(pt);
 | 
			
		||||
 | 
			
		||||
            return (weights.x * m_uv_a) + (weights.y * m_uv_b) + (weights.z * m_uv_c);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generates a set of new Normal coordinates for the provided point pt in respect to Triangle.
 | 
			
		||||
         * 
 | 
			
		||||
         * Uses weight values for the computation, so this triangle must have Normal's set to return
 | 
			
		||||
         * the correct results. Otherwise Vector3.zero will be returned. check via hasNormal().
 | 
			
		||||
         */
 | 
			
		||||
        public Vector3 GenerateNormal(Vector3 pt) {
 | 
			
		||||
            // if not set, result will be zero, quick exit
 | 
			
		||||
            if (!m_nor_set) {
 | 
			
		||||
                return Vector3.zero;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Vector3 weights = Barycentric(pt);
 | 
			
		||||
 | 
			
		||||
            return (weights.x * m_nor_a) + (weights.y * m_nor_b) + (weights.z * m_nor_c);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generates a set of new Tangent coordinates for the provided point pt in respect to Triangle.
 | 
			
		||||
         * 
 | 
			
		||||
         * Uses weight values for the computation, so this triangle must have Tangent's set to return
 | 
			
		||||
         * the correct results. Otherwise Vector4.zero will be returned. check via hasTangent().
 | 
			
		||||
         */
 | 
			
		||||
        public Vector4 GenerateTangent(Vector3 pt) {
 | 
			
		||||
            // if not set, result will be zero, quick exit
 | 
			
		||||
            if (!m_nor_set) {
 | 
			
		||||
                return Vector4.zero;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Vector3 weights = Barycentric(pt);
 | 
			
		||||
 | 
			
		||||
            return (weights.x * m_tan_a) + (weights.y * m_tan_b) + (weights.z * m_tan_c);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Helper function to split this triangle by the provided plane and store
 | 
			
		||||
         * the results inside the IntersectionResult structure.
 | 
			
		||||
         * Returns true on success or false otherwise
 | 
			
		||||
         */
 | 
			
		||||
        public bool Split(Plane pl, IntersectionResult result) {
 | 
			
		||||
            Intersector.Intersect(pl, this, result);
 | 
			
		||||
 | 
			
		||||
            return result.isValid;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Check the triangle winding order, if it's Clock Wise or Counter Clock Wise 
 | 
			
		||||
         */
 | 
			
		||||
        public bool IsCW() {
 | 
			
		||||
            return SignedSquare(m_pos_a, m_pos_b, m_pos_c) >= float.Epsilon;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Returns the Signed square of a given triangle, useful for checking the
 | 
			
		||||
         * winding order
 | 
			
		||||
         */
 | 
			
		||||
        public static float SignedSquare(Vector3 a, Vector3 b, Vector3 c) {
 | 
			
		||||
            return (a.x * (b.y * c.z - b.z * c.y) -
 | 
			
		||||
                a.y * (b.x * c.z - b.z * c.x) +
 | 
			
		||||
                a.z * (b.x * c.y - b.y * c.x));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Editor only DEBUG functionality. This should not be compiled in the final
 | 
			
		||||
         * Version.
 | 
			
		||||
         */
 | 
			
		||||
        public void OnDebugDraw() {
 | 
			
		||||
            OnDebugDraw(Color.white);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnDebugDraw(Color drawColor) {
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
            Color prevColor = Gizmos.color;
 | 
			
		||||
 | 
			
		||||
            Gizmos.color = drawColor;
 | 
			
		||||
 | 
			
		||||
            Gizmos.DrawLine(positionA, positionB);
 | 
			
		||||
            Gizmos.DrawLine(positionB, positionC);
 | 
			
		||||
            Gizmos.DrawLine(positionC, positionA);
 | 
			
		||||
 | 
			
		||||
            Gizmos.color = prevColor;
 | 
			
		||||
#endif
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/Triangle.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 96f717fa4e78b3a488db75d4d84a7a3c
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										199
									
								
								Viagg-io/Assets/EzySlice/Framework/Triangulator.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,199 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains static functionality for performing Triangulation on arbitrary vertices.
 | 
			
		||||
     * Read the individual function descriptions for specific details.
 | 
			
		||||
     */
 | 
			
		||||
    public sealed class Triangulator {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Represents a 3D Vertex which has been mapped onto a 2D surface
 | 
			
		||||
         * and is mainly used in MonotoneChain to triangulate a set of vertices
 | 
			
		||||
         * against a flat plane.
 | 
			
		||||
         */
 | 
			
		||||
        internal struct Mapped2D {
 | 
			
		||||
            private readonly Vector3 original;
 | 
			
		||||
            private readonly Vector2 mapped;
 | 
			
		||||
 | 
			
		||||
            public Mapped2D(Vector3 newOriginal, Vector3 u, Vector3 v) {
 | 
			
		||||
                this.original = newOriginal;
 | 
			
		||||
                this.mapped = new Vector2(Vector3.Dot(newOriginal, u), Vector3.Dot(newOriginal, v));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public Vector2 mappedValue {
 | 
			
		||||
                get { return this.mapped; }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public Vector3 originalValue {
 | 
			
		||||
                get { return this.original; }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Overloaded variant of MonotoneChain which will calculate UV coordinates of the Triangles
 | 
			
		||||
         * between 0.0 and 1.0 (default).
 | 
			
		||||
         * 
 | 
			
		||||
         * See MonotoneChain(vertices, normal, tri, TextureRegion) for full explanation
 | 
			
		||||
         */
 | 
			
		||||
        public static bool MonotoneChain(List<Vector3> vertices, Vector3 normal, out List<Triangle> tri) {
 | 
			
		||||
            // default texture region is in coordinates 0,0 to 1,1
 | 
			
		||||
            return MonotoneChain(vertices, normal, out tri, new TextureRegion(0.0f, 0.0f, 1.0f, 1.0f));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * O(n log n) Convex Hull Algorithm. 
 | 
			
		||||
         * Accepts a list of vertices as Vector3 and triangulates them according to a projection
 | 
			
		||||
         * plane defined as planeNormal. Algorithm will output vertices, indices and UV coordinates
 | 
			
		||||
         * as arrays
 | 
			
		||||
         */
 | 
			
		||||
        public static bool MonotoneChain(List<Vector3> vertices, Vector3 normal, out List<Triangle> tri, TextureRegion texRegion) {
 | 
			
		||||
            int count = vertices.Count;
 | 
			
		||||
 | 
			
		||||
            // we cannot triangulate less than 3 points. Use minimum of 3 points
 | 
			
		||||
            if (count < 3) {
 | 
			
		||||
                tri = null;
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // first, we map from 3D points into a 2D plane represented by the provided normal
 | 
			
		||||
            Vector3 u = Vector3.Normalize(Vector3.Cross(normal, Vector3.up));
 | 
			
		||||
            if (Vector3.zero == u) {
 | 
			
		||||
                u = Vector3.Normalize(Vector3.Cross(normal, Vector3.forward));
 | 
			
		||||
            }
 | 
			
		||||
            Vector3 v = Vector3.Cross(u, normal);
 | 
			
		||||
 | 
			
		||||
            // generate an array of mapped values
 | 
			
		||||
            Mapped2D[] mapped = new Mapped2D[count];
 | 
			
		||||
 | 
			
		||||
            // these values will be used to generate new UV coordinates later on
 | 
			
		||||
            float maxDivX = float.MinValue;
 | 
			
		||||
            float maxDivY = float.MinValue;
 | 
			
		||||
            float minDivX = float.MaxValue;
 | 
			
		||||
            float minDivY = float.MaxValue;
 | 
			
		||||
 | 
			
		||||
            // map the 3D vertices into the 2D mapped values
 | 
			
		||||
            for (int i = 0; i < count; i++) {
 | 
			
		||||
                Vector3 vertToAdd = vertices[i];
 | 
			
		||||
 | 
			
		||||
                Mapped2D newMappedValue = new Mapped2D(vertToAdd, u, v);
 | 
			
		||||
                Vector2 mapVal = newMappedValue.mappedValue;
 | 
			
		||||
 | 
			
		||||
                // grab our maximal values so we can map UV's in a proper range
 | 
			
		||||
                maxDivX = Mathf.Max(maxDivX, mapVal.x);
 | 
			
		||||
                maxDivY = Mathf.Max(maxDivY, mapVal.y);
 | 
			
		||||
                minDivX = Mathf.Min(minDivX, mapVal.x);
 | 
			
		||||
                minDivY = Mathf.Min(minDivY, mapVal.y);
 | 
			
		||||
 | 
			
		||||
                mapped[i] = newMappedValue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // sort our newly generated array values
 | 
			
		||||
            Array.Sort<Mapped2D>(mapped, (a, b) => {
 | 
			
		||||
                Vector2 x = a.mappedValue;
 | 
			
		||||
                Vector2 p = b.mappedValue;
 | 
			
		||||
 | 
			
		||||
                return (x.x < p.x || (x.x == p.x && x.y < p.y)) ? -1 : 1;
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            // our final hull mappings will end up in here
 | 
			
		||||
            Mapped2D[] hulls = new Mapped2D[count + 1];
 | 
			
		||||
 | 
			
		||||
            int k = 0;
 | 
			
		||||
 | 
			
		||||
            // build the lower hull of the chain
 | 
			
		||||
            for (int i = 0; i < count; i++) {
 | 
			
		||||
                while (k >= 2) {
 | 
			
		||||
                    Vector2 mA = hulls[k - 2].mappedValue;
 | 
			
		||||
                    Vector2 mB = hulls[k - 1].mappedValue;
 | 
			
		||||
                    Vector2 mC = mapped[i].mappedValue;
 | 
			
		||||
 | 
			
		||||
                    if (Intersector.TriArea2D(mA.x, mA.y, mB.x, mB.y, mC.x, mC.y) > 0.0f) {
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    k--;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                hulls[k++] = mapped[i];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // build the upper hull of the chain
 | 
			
		||||
            for (int i = count - 2, t = k + 1; i >= 0; i--) {
 | 
			
		||||
                while (k >= t) {
 | 
			
		||||
                    Vector2 mA = hulls[k - 2].mappedValue;
 | 
			
		||||
                    Vector2 mB = hulls[k - 1].mappedValue;
 | 
			
		||||
                    Vector2 mC = mapped[i].mappedValue;
 | 
			
		||||
 | 
			
		||||
                    if (Intersector.TriArea2D(mA.x, mA.y, mB.x, mB.y, mC.x, mC.y) > 0.0f) {
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    k--;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                hulls[k++] = mapped[i];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // finally we can build our mesh, generate all the variables
 | 
			
		||||
            // and fill them up
 | 
			
		||||
            int vertCount = k - 1;
 | 
			
		||||
            int triCount = (vertCount - 2) * 3;
 | 
			
		||||
 | 
			
		||||
            // this should not happen, but here just in case
 | 
			
		||||
            if (vertCount < 3) {
 | 
			
		||||
                tri = null;
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // ensure List does not dynamically grow, performing copy ops each time!
 | 
			
		||||
            tri = new List<Triangle>(triCount / 3);
 | 
			
		||||
 | 
			
		||||
            float width = maxDivX - minDivX;
 | 
			
		||||
            float height = maxDivY - minDivY;
 | 
			
		||||
 | 
			
		||||
            int indexCount = 1;
 | 
			
		||||
 | 
			
		||||
            // generate both the vertices and uv's in this loop
 | 
			
		||||
            for (int i = 0; i < triCount; i += 3) {
 | 
			
		||||
                // the Vertices in our triangle
 | 
			
		||||
                Mapped2D posA = hulls[0];
 | 
			
		||||
                Mapped2D posB = hulls[indexCount];
 | 
			
		||||
                Mapped2D posC = hulls[indexCount + 1];
 | 
			
		||||
 | 
			
		||||
                // generate UV Maps
 | 
			
		||||
                Vector2 uvA = posA.mappedValue;
 | 
			
		||||
                Vector2 uvB = posB.mappedValue;
 | 
			
		||||
                Vector2 uvC = posC.mappedValue;
 | 
			
		||||
 | 
			
		||||
                uvA.x = (uvA.x - minDivX) / width;
 | 
			
		||||
                uvA.y = (uvA.y - minDivY) / height;
 | 
			
		||||
 | 
			
		||||
                uvB.x = (uvB.x - minDivX) / width;
 | 
			
		||||
                uvB.y = (uvB.y - minDivY) / height;
 | 
			
		||||
 | 
			
		||||
                uvC.x = (uvC.x - minDivX) / width;
 | 
			
		||||
                uvC.y = (uvC.y - minDivY) / height;
 | 
			
		||||
 | 
			
		||||
                Triangle newTriangle = new Triangle(posA.originalValue, posB.originalValue, posC.originalValue);
 | 
			
		||||
 | 
			
		||||
                // ensure our UV coordinates are mapped into the requested TextureRegion
 | 
			
		||||
                newTriangle.SetUV(texRegion.Map(uvA), texRegion.Map(uvB), texRegion.Map(uvC));
 | 
			
		||||
 | 
			
		||||
                // the normals is the same for all vertices since the final mesh is completly flat
 | 
			
		||||
                newTriangle.SetNormal(normal, normal, normal);
 | 
			
		||||
                newTriangle.ComputeTangents();
 | 
			
		||||
 | 
			
		||||
                tri.Add(newTriangle);
 | 
			
		||||
 | 
			
		||||
                indexCount++;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Framework/Triangulator.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: df75fed5929ce23479250922ef5b2b7c
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										141
									
								
								Viagg-io/Assets/EzySlice/SlicedHull.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,141 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The final generated data structure from a slice operation. This provides easy access
 | 
			
		||||
     * to utility functions and the final Mesh data for each section of the HULL.
 | 
			
		||||
     */
 | 
			
		||||
    public sealed class SlicedHull {
 | 
			
		||||
        private Mesh upper_hull;
 | 
			
		||||
        private Mesh lower_hull;
 | 
			
		||||
 | 
			
		||||
        public SlicedHull(Mesh upperHull, Mesh lowerHull) {
 | 
			
		||||
            this.upper_hull = upperHull;
 | 
			
		||||
            this.lower_hull = lowerHull;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public GameObject CreateUpperHull(GameObject original) {
 | 
			
		||||
            return CreateUpperHull(original, null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public GameObject CreateUpperHull(GameObject original, Material crossSectionMat) {
 | 
			
		||||
            GameObject newObject = CreateUpperHull();
 | 
			
		||||
 | 
			
		||||
            if (newObject != null) {
 | 
			
		||||
                newObject.transform.localPosition = original.transform.localPosition;
 | 
			
		||||
                newObject.transform.localRotation = original.transform.localRotation;
 | 
			
		||||
                newObject.transform.localScale = original.transform.localScale;
 | 
			
		||||
 | 
			
		||||
                Material[] shared = original.GetComponent<MeshRenderer>().sharedMaterials;
 | 
			
		||||
                Mesh mesh = original.GetComponent<MeshFilter>().sharedMesh;
 | 
			
		||||
 | 
			
		||||
                // nothing changed in the hierarchy, the cross section must have been batched
 | 
			
		||||
                // with the submeshes, return as is, no need for any changes
 | 
			
		||||
                if (mesh.subMeshCount == upper_hull.subMeshCount) {
 | 
			
		||||
                    // the the material information
 | 
			
		||||
                    newObject.GetComponent<Renderer>().sharedMaterials = shared;
 | 
			
		||||
 | 
			
		||||
                    return newObject;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // otherwise the cross section was added to the back of the submesh array because
 | 
			
		||||
                // it uses a different material. We need to take this into account
 | 
			
		||||
                Material[] newShared = new Material[shared.Length + 1];
 | 
			
		||||
 | 
			
		||||
                // copy our material arrays across using native copy (should be faster than loop)
 | 
			
		||||
                System.Array.Copy(shared, newShared, shared.Length);
 | 
			
		||||
                newShared[shared.Length] = crossSectionMat;
 | 
			
		||||
 | 
			
		||||
                // the the material information
 | 
			
		||||
                newObject.GetComponent<Renderer>().sharedMaterials = newShared;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return newObject;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public GameObject CreateLowerHull(GameObject original) {
 | 
			
		||||
            return CreateLowerHull(original, null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public GameObject CreateLowerHull(GameObject original, Material crossSectionMat) {
 | 
			
		||||
            GameObject newObject = CreateLowerHull();
 | 
			
		||||
 | 
			
		||||
            if (newObject != null) {
 | 
			
		||||
                newObject.transform.localPosition = original.transform.localPosition;
 | 
			
		||||
                newObject.transform.localRotation = original.transform.localRotation;
 | 
			
		||||
                newObject.transform.localScale = original.transform.localScale;
 | 
			
		||||
 | 
			
		||||
                Material[] shared = original.GetComponent<MeshRenderer>().sharedMaterials;
 | 
			
		||||
                Mesh mesh = original.GetComponent<MeshFilter>().sharedMesh;
 | 
			
		||||
 | 
			
		||||
                // nothing changed in the hierarchy, the cross section must have been batched
 | 
			
		||||
                // with the submeshes, return as is, no need for any changes
 | 
			
		||||
                if (mesh.subMeshCount == lower_hull.subMeshCount) {
 | 
			
		||||
                    // the the material information
 | 
			
		||||
                    newObject.GetComponent<Renderer>().sharedMaterials = shared;
 | 
			
		||||
 | 
			
		||||
                    return newObject;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // otherwise the cross section was added to the back of the submesh array because
 | 
			
		||||
                // it uses a different material. We need to take this into account
 | 
			
		||||
                Material[] newShared = new Material[shared.Length + 1];
 | 
			
		||||
 | 
			
		||||
                // copy our material arrays across using native copy (should be faster than loop)
 | 
			
		||||
                System.Array.Copy(shared, newShared, shared.Length);
 | 
			
		||||
                newShared[shared.Length] = crossSectionMat;
 | 
			
		||||
 | 
			
		||||
                // the the material information
 | 
			
		||||
                newObject.GetComponent<Renderer>().sharedMaterials = newShared;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return newObject;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generate a new GameObject from the upper hull of the mesh
 | 
			
		||||
         * This function will return null if upper hull does not exist
 | 
			
		||||
         */
 | 
			
		||||
        public GameObject CreateUpperHull() {
 | 
			
		||||
            return CreateEmptyObject("Upper_Hull", upper_hull);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generate a new GameObject from the Lower hull of the mesh
 | 
			
		||||
         * This function will return null if lower hull does not exist
 | 
			
		||||
         */
 | 
			
		||||
        public GameObject CreateLowerHull() {
 | 
			
		||||
            return CreateEmptyObject("Lower_Hull", lower_hull);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Mesh upperHull {
 | 
			
		||||
            get { return this.upper_hull; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public Mesh lowerHull {
 | 
			
		||||
            get { return this.lower_hull; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Helper function which will create a new GameObject to be able to add
 | 
			
		||||
         * a new mesh for rendering and return.
 | 
			
		||||
         */
 | 
			
		||||
        private static GameObject CreateEmptyObject(string name, Mesh hull) {
 | 
			
		||||
            if (hull == null) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            GameObject newObject = new GameObject(name);
 | 
			
		||||
 | 
			
		||||
            newObject.AddComponent<MeshRenderer>();
 | 
			
		||||
            MeshFilter filter = newObject.AddComponent<MeshFilter>();
 | 
			
		||||
 | 
			
		||||
            filter.mesh = hull;
 | 
			
		||||
 | 
			
		||||
            return newObject;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/SlicedHull.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 3038362ea1df3e0448b1b60ebe0a0034
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										481
									
								
								Viagg-io/Assets/EzySlice/Slicer.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,481 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Contains methods for slicing GameObjects
 | 
			
		||||
     */
 | 
			
		||||
    public sealed class Slicer {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * An internal class for storing internal submesh values
 | 
			
		||||
         */
 | 
			
		||||
        internal class SlicedSubmesh {
 | 
			
		||||
            public readonly List<Triangle> upperHull = new List<Triangle>();
 | 
			
		||||
            public readonly List<Triangle> lowerHull = new List<Triangle>();
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Check if the submesh has had any UV's added.
 | 
			
		||||
             * NOTE -> This should be supported properly
 | 
			
		||||
             */
 | 
			
		||||
            public bool hasUV {
 | 
			
		||||
                get {
 | 
			
		||||
                    // what is this abomination??
 | 
			
		||||
                    return upperHull.Count > 0 ? upperHull[0].hasUV : lowerHull.Count > 0 && lowerHull[0].hasUV;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Check if the submesh has had any Normals added.
 | 
			
		||||
             * NOTE -> This should be supported properly
 | 
			
		||||
             */
 | 
			
		||||
            public bool hasNormal {
 | 
			
		||||
                get {
 | 
			
		||||
                    // what is this abomination??
 | 
			
		||||
                    return upperHull.Count > 0 ? upperHull[0].hasNormal : lowerHull.Count > 0 && lowerHull[0].hasNormal;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Check if the submesh has had any Tangents added.
 | 
			
		||||
             * NOTE -> This should be supported properly
 | 
			
		||||
             */
 | 
			
		||||
            public bool hasTangent {
 | 
			
		||||
                get {
 | 
			
		||||
                    // what is this abomination??
 | 
			
		||||
                    return upperHull.Count > 0 ? upperHull[0].hasTangent : lowerHull.Count > 0 && lowerHull[0].hasTangent;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Check if proper slicing has occured for this submesh. Slice occured if there
 | 
			
		||||
             * are triangles in both the upper and lower hulls
 | 
			
		||||
             */
 | 
			
		||||
            public bool isValid {
 | 
			
		||||
                get {
 | 
			
		||||
                    return upperHull.Count > 0 && lowerHull.Count > 0;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Helper function to accept a gameobject which will transform the plane
 | 
			
		||||
         * approprietly before the slice occurs
 | 
			
		||||
         * See -> Slice(Mesh, Plane) for more info
 | 
			
		||||
         */
 | 
			
		||||
        public static SlicedHull Slice(GameObject obj, Plane pl, TextureRegion crossRegion, Material crossMaterial) {
 | 
			
		||||
            
 | 
			
		||||
            // cannot continue without a proper filter
 | 
			
		||||
            if (!obj.TryGetComponent<MeshFilter>(out var filter)) {
 | 
			
		||||
                Debug.LogWarning("EzySlice::Slice -> Provided GameObject must have a MeshFilter Component.");
 | 
			
		||||
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
            // cannot continue without a proper renderer
 | 
			
		||||
            if (!obj.TryGetComponent<MeshRenderer>(out var renderer)) {
 | 
			
		||||
                Debug.LogWarning("EzySlice::Slice -> Provided GameObject must have a MeshRenderer Component.");
 | 
			
		||||
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Material[] materials = renderer.sharedMaterials;
 | 
			
		||||
 | 
			
		||||
            Mesh mesh = filter.sharedMesh;
 | 
			
		||||
 | 
			
		||||
            // cannot slice a mesh that doesn't exist
 | 
			
		||||
            if (mesh == null) {
 | 
			
		||||
                Debug.LogWarning("EzySlice::Slice -> Provided GameObject must have a Mesh that is not NULL.");
 | 
			
		||||
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            int submeshCount = mesh.subMeshCount;
 | 
			
		||||
 | 
			
		||||
            // to make things straightforward, exit without slicing if the materials and mesh
 | 
			
		||||
            // array don't match. This shouldn't happen anyway
 | 
			
		||||
            if (materials.Length != submeshCount) {
 | 
			
		||||
                Debug.LogWarning("EzySlice::Slice -> Provided Material array must match the length of submeshes.");
 | 
			
		||||
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // we need to find the index of the material for the cross section.
 | 
			
		||||
            // default to the end of the array
 | 
			
		||||
            int crossIndex = materials.Length;
 | 
			
		||||
 | 
			
		||||
            // for cases where the sliced material is null, we will append the cross section to the end
 | 
			
		||||
            // of the submesh array, this is because the application may want to set/change the material
 | 
			
		||||
            // after slicing has occured, so we don't assume anything
 | 
			
		||||
            if (crossMaterial != null) {
 | 
			
		||||
                for (int i = 0; i < crossIndex; i++) {
 | 
			
		||||
                    if (materials[i] == crossMaterial) {
 | 
			
		||||
                        crossIndex = i;
 | 
			
		||||
                        break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return Slice(mesh, pl, crossRegion, crossIndex);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Slice the gameobject mesh (if any) using the Plane, which will generate
 | 
			
		||||
         * a maximum of 2 other Meshes.
 | 
			
		||||
         * This function will recalculate new UV coordinates to ensure textures are applied
 | 
			
		||||
         * properly.
 | 
			
		||||
         * Returns null if no intersection has been found or the GameObject does not contain
 | 
			
		||||
         * a valid mesh to cut.
 | 
			
		||||
         */
 | 
			
		||||
        public static SlicedHull Slice(Mesh sharedMesh, Plane pl, TextureRegion region, int crossIndex) {
 | 
			
		||||
            if (sharedMesh == null) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Vector3[] verts = sharedMesh.vertices;
 | 
			
		||||
            Vector2[] uv = sharedMesh.uv;
 | 
			
		||||
            Vector3[] norm = sharedMesh.normals;
 | 
			
		||||
            Vector4[] tan = sharedMesh.tangents;
 | 
			
		||||
 | 
			
		||||
            int submeshCount = sharedMesh.subMeshCount;
 | 
			
		||||
 | 
			
		||||
            // each submesh will be sliced and placed in its own array structure
 | 
			
		||||
            SlicedSubmesh[] slices = new SlicedSubmesh[submeshCount];
 | 
			
		||||
            // the cross section hull is common across all submeshes
 | 
			
		||||
            List<Vector3> crossHull = new List<Vector3>();
 | 
			
		||||
 | 
			
		||||
            // we reuse this object for all intersection tests
 | 
			
		||||
            IntersectionResult result = new IntersectionResult();
 | 
			
		||||
 | 
			
		||||
            // see if we would like to split the mesh using uv, normals and tangents
 | 
			
		||||
            bool genUV = verts.Length == uv.Length;
 | 
			
		||||
            bool genNorm = verts.Length == norm.Length;
 | 
			
		||||
            bool genTan = verts.Length == tan.Length;
 | 
			
		||||
 | 
			
		||||
            // iterate over all the submeshes individually. vertices and indices
 | 
			
		||||
            // are all shared within the submesh
 | 
			
		||||
            for (int submesh = 0; submesh < submeshCount; submesh++) {
 | 
			
		||||
                int[] indices = sharedMesh.GetTriangles(submesh);
 | 
			
		||||
                int indicesCount = indices.Length;
 | 
			
		||||
 | 
			
		||||
                SlicedSubmesh mesh = new SlicedSubmesh();
 | 
			
		||||
 | 
			
		||||
                // loop through all the mesh vertices, generating upper and lower hulls
 | 
			
		||||
                // and all intersection points
 | 
			
		||||
                for (int index = 0; index < indicesCount; index += 3) {
 | 
			
		||||
                    int i0 = indices[index + 0];
 | 
			
		||||
                    int i1 = indices[index + 1];
 | 
			
		||||
                    int i2 = indices[index + 2];
 | 
			
		||||
 | 
			
		||||
                    Triangle newTri = new Triangle(verts[i0], verts[i1], verts[i2]);
 | 
			
		||||
 | 
			
		||||
                    // generate UV if available
 | 
			
		||||
                    if (genUV) {
 | 
			
		||||
                        newTri.SetUV(uv[i0], uv[i1], uv[i2]);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate normals if available
 | 
			
		||||
                    if (genNorm) {
 | 
			
		||||
                        newTri.SetNormal(norm[i0], norm[i1], norm[i2]);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // generate tangents if available
 | 
			
		||||
                    if (genTan) {
 | 
			
		||||
                        newTri.SetTangent(tan[i0], tan[i1], tan[i2]);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // slice this particular triangle with the provided
 | 
			
		||||
                    // plane
 | 
			
		||||
                    if (newTri.Split(pl, result)) {
 | 
			
		||||
                        int upperHullCount = result.upperHullCount;
 | 
			
		||||
                        int lowerHullCount = result.lowerHullCount;
 | 
			
		||||
                        int interHullCount = result.intersectionPointCount;
 | 
			
		||||
 | 
			
		||||
                        for (int i = 0; i < upperHullCount; i++) {
 | 
			
		||||
                            mesh.upperHull.Add(result.upperHull[i]);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        for (int i = 0; i < lowerHullCount; i++) {
 | 
			
		||||
                            mesh.lowerHull.Add(result.lowerHull[i]);
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        for (int i = 0; i < interHullCount; i++) {
 | 
			
		||||
                            crossHull.Add(result.intersectionPoints[i]);
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        SideOfPlane sa = pl.SideOf(verts[i0]);
 | 
			
		||||
                        SideOfPlane sb = pl.SideOf(verts[i1]);
 | 
			
		||||
                        SideOfPlane sc = pl.SideOf(verts[i2]);
 | 
			
		||||
 | 
			
		||||
                        SideOfPlane side = SideOfPlane.ON;
 | 
			
		||||
                        if (sa != SideOfPlane.ON)
 | 
			
		||||
                        {
 | 
			
		||||
                            side = sa;
 | 
			
		||||
                        }
 | 
			
		||||
                        
 | 
			
		||||
                        if (sb != SideOfPlane.ON)
 | 
			
		||||
                        {
 | 
			
		||||
                            Debug.Assert(side == SideOfPlane.ON || side == sb);
 | 
			
		||||
                            side = sb;
 | 
			
		||||
                        }
 | 
			
		||||
                        
 | 
			
		||||
                        if (sc != SideOfPlane.ON)
 | 
			
		||||
                        {
 | 
			
		||||
                            Debug.Assert(side == SideOfPlane.ON || side == sc);
 | 
			
		||||
                            side = sc;
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                        if (side == SideOfPlane.UP || side == SideOfPlane.ON) {
 | 
			
		||||
                            mesh.upperHull.Add(newTri);
 | 
			
		||||
                        } else {
 | 
			
		||||
                            mesh.lowerHull.Add(newTri);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // register into the index
 | 
			
		||||
                slices[submesh] = mesh;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // check if slicing actually occured
 | 
			
		||||
            for (int i = 0; i < slices.Length; i++) {
 | 
			
		||||
                // check if at least one of the submeshes was sliced. If so, stop checking
 | 
			
		||||
                // because we need to go through the generation step
 | 
			
		||||
                if (slices[i] != null && slices[i].isValid) {
 | 
			
		||||
                    return CreateFrom(slices, CreateFrom(crossHull, pl.normal, region), crossIndex);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // no slicing occured, just return null to signify
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generates a single SlicedHull from a set of cut submeshes 
 | 
			
		||||
         */
 | 
			
		||||
        private static SlicedHull CreateFrom(SlicedSubmesh[] meshes, List<Triangle> cross, int crossSectionIndex) {
 | 
			
		||||
            int submeshCount = meshes.Length;
 | 
			
		||||
 | 
			
		||||
            int upperHullCount = 0;
 | 
			
		||||
            int lowerHullCount = 0;
 | 
			
		||||
 | 
			
		||||
            // get the total amount of upper, lower and intersection counts
 | 
			
		||||
            for (int submesh = 0; submesh < submeshCount; submesh++) {
 | 
			
		||||
                upperHullCount += meshes[submesh].upperHull.Count;
 | 
			
		||||
                lowerHullCount += meshes[submesh].lowerHull.Count;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Mesh upperHull = CreateUpperHull(meshes, upperHullCount, cross, crossSectionIndex);
 | 
			
		||||
            Mesh lowerHull = CreateLowerHull(meshes, lowerHullCount, cross, crossSectionIndex);
 | 
			
		||||
 | 
			
		||||
            return new SlicedHull(upperHull, lowerHull);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static Mesh CreateUpperHull(SlicedSubmesh[] mesh, int total, List<Triangle> crossSection, int crossSectionIndex) {
 | 
			
		||||
            return CreateHull(mesh, total, crossSection, crossSectionIndex, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private static Mesh CreateLowerHull(SlicedSubmesh[] mesh, int total, List<Triangle> crossSection, int crossSectionIndex) {
 | 
			
		||||
            return CreateHull(mesh, total, crossSection, crossSectionIndex, false);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generate a single Mesh HULL of either the UPPER or LOWER hulls. 
 | 
			
		||||
         */
 | 
			
		||||
        private static Mesh CreateHull(SlicedSubmesh[] meshes, int total, List<Triangle> crossSection, int crossIndex, bool isUpper) {
 | 
			
		||||
            if (total <= 0) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            int submeshCount = meshes.Length;
 | 
			
		||||
            int crossCount = crossSection != null ? crossSection.Count : 0;
 | 
			
		||||
 | 
			
		||||
            Mesh newMesh = new Mesh();
 | 
			
		||||
            newMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
 | 
			
		||||
            
 | 
			
		||||
            int arrayLen = (total + crossCount) * 3;
 | 
			
		||||
 | 
			
		||||
            bool hasUV = meshes[0].hasUV;
 | 
			
		||||
            bool hasNormal = meshes[0].hasNormal;
 | 
			
		||||
            bool hasTangent = meshes[0].hasTangent;
 | 
			
		||||
 | 
			
		||||
            // vertices and uv's are common for all submeshes
 | 
			
		||||
            Vector3[] newVertices = new Vector3[arrayLen];
 | 
			
		||||
            Vector2[] newUvs = hasUV ? new Vector2[arrayLen] : null;
 | 
			
		||||
            Vector3[] newNormals = hasNormal ? new Vector3[arrayLen] : null;
 | 
			
		||||
            Vector4[] newTangents = hasTangent ? new Vector4[arrayLen] : null;
 | 
			
		||||
 | 
			
		||||
            // each index refers to our submesh triangles
 | 
			
		||||
            List<int[]> triangles = new List<int[]>(submeshCount);
 | 
			
		||||
 | 
			
		||||
            int vIndex = 0;
 | 
			
		||||
 | 
			
		||||
            // first we generate all our vertices, uv's and triangles
 | 
			
		||||
            for (int submesh = 0; submesh < submeshCount; submesh++) {
 | 
			
		||||
                // pick the hull we will be playing around with
 | 
			
		||||
                List<Triangle> hull = isUpper ? meshes[submesh].upperHull : meshes[submesh].lowerHull;
 | 
			
		||||
                int hullCount = hull.Count;
 | 
			
		||||
 | 
			
		||||
                int[] indices = new int[hullCount * 3];
 | 
			
		||||
 | 
			
		||||
                // fill our mesh arrays
 | 
			
		||||
                for (int i = 0, triIndex = 0; i < hullCount; i++, triIndex += 3) {
 | 
			
		||||
                    Triangle newTri = hull[i];
 | 
			
		||||
 | 
			
		||||
                    int i0 = vIndex + 0;
 | 
			
		||||
                    int i1 = vIndex + 1;
 | 
			
		||||
                    int i2 = vIndex + 2;
 | 
			
		||||
 | 
			
		||||
                    // add the vertices
 | 
			
		||||
                    newVertices[i0] = newTri.positionA;
 | 
			
		||||
                    newVertices[i1] = newTri.positionB;
 | 
			
		||||
                    newVertices[i2] = newTri.positionC;
 | 
			
		||||
 | 
			
		||||
                    // add the UV coordinates if any
 | 
			
		||||
                    if (hasUV) {
 | 
			
		||||
                        newUvs[i0] = newTri.uvA;
 | 
			
		||||
                        newUvs[i1] = newTri.uvB;
 | 
			
		||||
                        newUvs[i2] = newTri.uvC;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // add the Normals if any
 | 
			
		||||
                    if (hasNormal) {
 | 
			
		||||
                        newNormals[i0] = newTri.normalA;
 | 
			
		||||
                        newNormals[i1] = newTri.normalB;
 | 
			
		||||
                        newNormals[i2] = newTri.normalC;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // add the Tangents if any
 | 
			
		||||
                    if (hasTangent) {
 | 
			
		||||
                        newTangents[i0] = newTri.tangentA;
 | 
			
		||||
                        newTangents[i1] = newTri.tangentB;
 | 
			
		||||
                        newTangents[i2] = newTri.tangentC;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // triangles are returned in clocwise order from the
 | 
			
		||||
                    // intersector, no need to sort these
 | 
			
		||||
                    indices[triIndex] = i0;
 | 
			
		||||
                    indices[triIndex + 1] = i1;
 | 
			
		||||
                    indices[triIndex + 2] = i2;
 | 
			
		||||
 | 
			
		||||
                    vIndex += 3;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // add triangles to the index for later generation
 | 
			
		||||
                triangles.Add(indices);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // generate the cross section required for this particular hull
 | 
			
		||||
            if (crossSection != null && crossCount > 0) {
 | 
			
		||||
                int[] crossIndices = new int[crossCount * 3];
 | 
			
		||||
 | 
			
		||||
                for (int i = 0, triIndex = 0; i < crossCount; i++, triIndex += 3) {
 | 
			
		||||
                    Triangle newTri = crossSection[i];
 | 
			
		||||
 | 
			
		||||
                    int i0 = vIndex + 0;
 | 
			
		||||
                    int i1 = vIndex + 1;
 | 
			
		||||
                    int i2 = vIndex + 2;
 | 
			
		||||
 | 
			
		||||
                    // add the vertices
 | 
			
		||||
                    newVertices[i0] = newTri.positionA;
 | 
			
		||||
                    newVertices[i1] = newTri.positionB;
 | 
			
		||||
                    newVertices[i2] = newTri.positionC;
 | 
			
		||||
 | 
			
		||||
                    // add the UV coordinates if any
 | 
			
		||||
                    if (hasUV) {
 | 
			
		||||
                        newUvs[i0] = newTri.uvA;
 | 
			
		||||
                        newUvs[i1] = newTri.uvB;
 | 
			
		||||
                        newUvs[i2] = newTri.uvC;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // add the Normals if any
 | 
			
		||||
                    if (hasNormal) {
 | 
			
		||||
                        // invert the normals dependiong on upper or lower hull
 | 
			
		||||
                        if (isUpper) {
 | 
			
		||||
                            newNormals[i0] = -newTri.normalA;
 | 
			
		||||
                            newNormals[i1] = -newTri.normalB;
 | 
			
		||||
                            newNormals[i2] = -newTri.normalC;
 | 
			
		||||
                        } else {
 | 
			
		||||
                            newNormals[i0] = newTri.normalA;
 | 
			
		||||
                            newNormals[i1] = newTri.normalB;
 | 
			
		||||
                            newNormals[i2] = newTri.normalC;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // add the Tangents if any
 | 
			
		||||
                    if (hasTangent) {
 | 
			
		||||
                        newTangents[i0] = newTri.tangentA;
 | 
			
		||||
                        newTangents[i1] = newTri.tangentB;
 | 
			
		||||
                        newTangents[i2] = newTri.tangentC;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // add triangles in clockwise for upper
 | 
			
		||||
                    // and reversed for lower hulls, to ensure the mesh
 | 
			
		||||
                    // is facing the right direction
 | 
			
		||||
                    if (isUpper) {
 | 
			
		||||
                        crossIndices[triIndex] = i0;
 | 
			
		||||
                        crossIndices[triIndex + 1] = i1;
 | 
			
		||||
                        crossIndices[triIndex + 2] = i2;
 | 
			
		||||
                    } else {
 | 
			
		||||
                        crossIndices[triIndex] = i0;
 | 
			
		||||
                        crossIndices[triIndex + 1] = i2;
 | 
			
		||||
                        crossIndices[triIndex + 2] = i1;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    vIndex += 3;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                // add triangles to the index for later generation
 | 
			
		||||
                if (triangles.Count <= crossIndex) {
 | 
			
		||||
                    triangles.Add(crossIndices);
 | 
			
		||||
                } else {
 | 
			
		||||
                    // otherwise, we need to merge the triangles for the provided subsection
 | 
			
		||||
                    int[] prevTriangles = triangles[crossIndex];
 | 
			
		||||
                    int[] merged = new int[prevTriangles.Length + crossIndices.Length];
 | 
			
		||||
 | 
			
		||||
                    System.Array.Copy(prevTriangles, merged, prevTriangles.Length);
 | 
			
		||||
                    System.Array.Copy(crossIndices, 0, merged, prevTriangles.Length, crossIndices.Length);
 | 
			
		||||
 | 
			
		||||
                    // replace the previous array with the new merged array
 | 
			
		||||
                    triangles[crossIndex] = merged;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            int totalTriangles = triangles.Count;
 | 
			
		||||
 | 
			
		||||
            newMesh.subMeshCount = totalTriangles;
 | 
			
		||||
            // fill the mesh structure
 | 
			
		||||
            newMesh.vertices = newVertices;
 | 
			
		||||
 | 
			
		||||
            if (hasUV) {
 | 
			
		||||
                newMesh.uv = newUvs;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (hasNormal) {
 | 
			
		||||
                newMesh.normals = newNormals;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (hasTangent) {
 | 
			
		||||
                newMesh.tangents = newTangents;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // add the submeshes
 | 
			
		||||
            for (int i = 0; i < totalTriangles; i++) {
 | 
			
		||||
                newMesh.SetTriangles(triangles[i], i, false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return newMesh;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Generate Two Meshes (an upper and lower) cross section from a set of intersection
 | 
			
		||||
         * points and a plane normal. Intersection Points do not have to be in order.
 | 
			
		||||
         */
 | 
			
		||||
        private static List<Triangle> CreateFrom(List<Vector3> intPoints, Vector3 planeNormal, TextureRegion region) {
 | 
			
		||||
            return Triangulator.MonotoneChain(intPoints, planeNormal, out List<Triangle> tris, region) ? tris : null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/Slicer.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 13ba410a4bbab5f40ae5b40d911f65e9
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										98
									
								
								Viagg-io/Assets/EzySlice/SlicerExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,98 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
namespace EzySlice {
 | 
			
		||||
    /**
 | 
			
		||||
     * Define Extension methods for easy access to slicer functionality
 | 
			
		||||
     */
 | 
			
		||||
    public static class SlicerExtensions {
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * SlicedHull Return functions and appropriate overrides!
 | 
			
		||||
         */
 | 
			
		||||
        public static SlicedHull Slice(this GameObject obj, Plane pl, Material crossSectionMaterial = null) {
 | 
			
		||||
            return Slice(obj, pl, new TextureRegion(0.0f, 0.0f, 1.0f, 1.0f), crossSectionMaterial);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static SlicedHull Slice(this GameObject obj, Vector3 position, Vector3 direction, Material crossSectionMaterial = null) {
 | 
			
		||||
            return Slice(obj, position, direction, new TextureRegion(0.0f, 0.0f, 1.0f, 1.0f), crossSectionMaterial);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static SlicedHull Slice(this GameObject obj, Vector3 position, Vector3 direction, TextureRegion textureRegion, Material crossSectionMaterial = null) {
 | 
			
		||||
            Plane cuttingPlane = new Plane();
 | 
			
		||||
 | 
			
		||||
            Matrix4x4 mat = obj.transform.worldToLocalMatrix;
 | 
			
		||||
            Matrix4x4 transpose = mat.transpose;
 | 
			
		||||
            Matrix4x4 inv = transpose.inverse;
 | 
			
		||||
 | 
			
		||||
            Vector3 refUp = inv.MultiplyVector(direction).normalized;
 | 
			
		||||
            Vector3 refPt = obj.transform.InverseTransformPoint(position);
 | 
			
		||||
 | 
			
		||||
            cuttingPlane.Compute(refPt, refUp);
 | 
			
		||||
 | 
			
		||||
            return Slice(obj, cuttingPlane, textureRegion, crossSectionMaterial);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static SlicedHull Slice(this GameObject obj, Plane pl, TextureRegion textureRegion, Material crossSectionMaterial = null) {
 | 
			
		||||
            return Slicer.Slice(obj, pl, textureRegion, crossSectionMaterial);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * These functions (and overrides) will return the final indtaniated GameObjects types
 | 
			
		||||
         */
 | 
			
		||||
        public static GameObject[] SliceInstantiate(this GameObject obj, Plane pl) {
 | 
			
		||||
            return SliceInstantiate(obj, pl, new TextureRegion(0.0f, 0.0f, 1.0f, 1.0f));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static GameObject[] SliceInstantiate(this GameObject obj, Vector3 position, Vector3 direction) {
 | 
			
		||||
            return SliceInstantiate(obj, position, direction, null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static GameObject[] SliceInstantiate(this GameObject obj, Vector3 position, Vector3 direction, Material crossSectionMat) {
 | 
			
		||||
            return SliceInstantiate(obj, position, direction, new TextureRegion(0.0f, 0.0f, 1.0f, 1.0f), crossSectionMat);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static GameObject[] SliceInstantiate(this GameObject obj, Vector3 position, Vector3 direction, TextureRegion cuttingRegion, Material crossSectionMaterial = null) {
 | 
			
		||||
            EzySlice.Plane cuttingPlane = new EzySlice.Plane();
 | 
			
		||||
 | 
			
		||||
            Matrix4x4 mat = obj.transform.worldToLocalMatrix;
 | 
			
		||||
            Matrix4x4 transpose = mat.transpose;
 | 
			
		||||
            Matrix4x4 inv = transpose.inverse;
 | 
			
		||||
 | 
			
		||||
            Vector3 refUp = inv.MultiplyVector(direction).normalized;
 | 
			
		||||
            Vector3 refPt = obj.transform.InverseTransformPoint(position);
 | 
			
		||||
 | 
			
		||||
            cuttingPlane.Compute(refPt, refUp);
 | 
			
		||||
 | 
			
		||||
            return SliceInstantiate(obj, cuttingPlane, cuttingRegion, crossSectionMaterial);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public static GameObject[] SliceInstantiate(this GameObject obj, Plane pl, TextureRegion cuttingRegion, Material crossSectionMaterial = null) {
 | 
			
		||||
            SlicedHull slice = Slicer.Slice(obj, pl, cuttingRegion, crossSectionMaterial);
 | 
			
		||||
 | 
			
		||||
            if (slice == null) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            GameObject upperHull = slice.CreateUpperHull(obj, crossSectionMaterial);
 | 
			
		||||
            GameObject lowerHull = slice.CreateLowerHull(obj, crossSectionMaterial);
 | 
			
		||||
 | 
			
		||||
            if (upperHull != null && lowerHull != null) {
 | 
			
		||||
                return new GameObject[] { upperHull, lowerHull };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // otherwise return only the upper hull
 | 
			
		||||
            if (upperHull != null) {
 | 
			
		||||
                return new GameObject[] { upperHull };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // otherwise return only the lower hull
 | 
			
		||||
            if (lowerHull != null) {
 | 
			
		||||
                return new GameObject[] { lowerHull };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // nothing to return, so return nothing!
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Viagg-io/Assets/EzySlice/SlicerExtensions.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 2aa5e11ceb30cee49873e7144bfe9f3e
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										8
									
								
								Viagg-io/Assets/Fonts.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d3e53476c333c51468575c13c38a4d7c
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										2786
									
								
								Viagg-io/Assets/Fonts/lat-bold SDF.asset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										8
									
								
								Viagg-io/Assets/Fonts/lat-bold SDF.asset.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 5093d90a3e0d2df428f263801e7e0004
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 11400000
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Fonts/lat-bold.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										21
									
								
								Viagg-io/Assets/Fonts/lat-bold.ttf.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: b2a925a0e261ffb41a4cb4206e87d42d
 | 
			
		||||
TrueTypeFontImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 4
 | 
			
		||||
  fontSize: 16
 | 
			
		||||
  forceTextureCase: -2
 | 
			
		||||
  characterSpacing: 0
 | 
			
		||||
  characterPadding: 1
 | 
			
		||||
  includeFontData: 1
 | 
			
		||||
  fontNames:
 | 
			
		||||
  - Lato
 | 
			
		||||
  fallbackFontReferences: []
 | 
			
		||||
  customCharacters: 
 | 
			
		||||
  fontRenderingMode: 0
 | 
			
		||||
  ascentCalculationMode: 1
 | 
			
		||||
  useLegacyBoundsCalculation: 0
 | 
			
		||||
  shouldRoundAdvanceValue: 1
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										2722
									
								
								Viagg-io/Assets/Fonts/lato-light SDF.asset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										8
									
								
								Viagg-io/Assets/Fonts/lato-light SDF.asset.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: b5ca3adb5dc61a449bd6720dee95fec8
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 11400000
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Fonts/lato-light.otf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										21
									
								
								Viagg-io/Assets/Fonts/lato-light.otf.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: cf488b7b0b6cbab46a48f0f7fba06c63
 | 
			
		||||
TrueTypeFontImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 4
 | 
			
		||||
  fontSize: 16
 | 
			
		||||
  forceTextureCase: -2
 | 
			
		||||
  characterSpacing: 0
 | 
			
		||||
  characterPadding: 1
 | 
			
		||||
  includeFontData: 1
 | 
			
		||||
  fontNames:
 | 
			
		||||
  - Lato
 | 
			
		||||
  fallbackFontReferences: []
 | 
			
		||||
  customCharacters: 
 | 
			
		||||
  fontRenderingMode: 0
 | 
			
		||||
  ascentCalculationMode: 1
 | 
			
		||||
  useLegacyBoundsCalculation: 0
 | 
			
		||||
  shouldRoundAdvanceValue: 1
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										2699
									
								
								Viagg-io/Assets/Fonts/quotes-script SDF.asset
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										8
									
								
								Viagg-io/Assets/Fonts/quotes-script SDF.asset.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 85d42502c969a06479c2d24d6ef4c852
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 11400000
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Fonts/quotes-script.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										21
									
								
								Viagg-io/Assets/Fonts/quotes-script.ttf.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,21 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: a51b270ee91d73c4db90f7c10b276100
 | 
			
		||||
TrueTypeFontImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 4
 | 
			
		||||
  fontSize: 16
 | 
			
		||||
  forceTextureCase: -2
 | 
			
		||||
  characterSpacing: 0
 | 
			
		||||
  characterPadding: 1
 | 
			
		||||
  includeFontData: 1
 | 
			
		||||
  fontNames:
 | 
			
		||||
  - Quotes Script
 | 
			
		||||
  fallbackFontReferences: []
 | 
			
		||||
  customCharacters: 
 | 
			
		||||
  fontRenderingMode: 0
 | 
			
		||||
  ascentCalculationMode: 1
 | 
			
		||||
  useLegacyBoundsCalculation: 0
 | 
			
		||||
  shouldRoundAdvanceValue: 1
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										139
									
								
								Viagg-io/Assets/Materials/viaggio-sticker.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,139 @@
 | 
			
		||||
%YAML 1.1
 | 
			
		||||
%TAG !u! tag:unity3d.com,2011:
 | 
			
		||||
--- !u!114 &-4701370686308000713
 | 
			
		||||
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: 7
 | 
			
		||||
--- !u!21 &2100000
 | 
			
		||||
Material:
 | 
			
		||||
  serializedVersion: 8
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_Name: viaggio-sticker
 | 
			
		||||
  m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
 | 
			
		||||
  m_Parent: {fileID: 0}
 | 
			
		||||
  m_ModifiedSerializedProperties: 0
 | 
			
		||||
  m_ValidKeywords:
 | 
			
		||||
  - _ALPHAPREMULTIPLY_ON
 | 
			
		||||
  - _ALPHATEST_ON
 | 
			
		||||
  - _NORMALMAP
 | 
			
		||||
  - _SURFACE_TYPE_TRANSPARENT
 | 
			
		||||
  m_InvalidKeywords: []
 | 
			
		||||
  m_LightmapFlags: 4
 | 
			
		||||
  m_EnableInstancingVariants: 0
 | 
			
		||||
  m_DoubleSidedGI: 0
 | 
			
		||||
  m_CustomRenderQueue: 3000
 | 
			
		||||
  stringTagMap:
 | 
			
		||||
    RenderType: Transparent
 | 
			
		||||
  disabledShaderPasses:
 | 
			
		||||
  - DepthOnly
 | 
			
		||||
  - SHADOWCASTER
 | 
			
		||||
  m_LockedProperties: 
 | 
			
		||||
  m_SavedProperties:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TexEnvs:
 | 
			
		||||
    - _BaseMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: bb45a59dd40d83c488e1c76f7b594af1, type: 3}
 | 
			
		||||
        m_Scale: {x: 1, y: 1}
 | 
			
		||||
        m_Offset: {x: 0, y: 0}
 | 
			
		||||
    - _BumpMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: 31de098158d58c24db28c2bfe17be3af, type: 3}
 | 
			
		||||
        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: 2800000, guid: bb45a59dd40d83c488e1c76f7b594af1, type: 3}
 | 
			
		||||
        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:
 | 
			
		||||
    - _AlphaClip: 1
 | 
			
		||||
    - _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.387
 | 
			
		||||
    - _SmoothnessTextureChannel: 0
 | 
			
		||||
    - _SpecularHighlights: 1
 | 
			
		||||
    - _SrcBlend: 1
 | 
			
		||||
    - _SrcBlendAlpha: 1
 | 
			
		||||
    - _Surface: 1
 | 
			
		||||
    - _WorkflowMode: 1
 | 
			
		||||
    - _ZWrite: 0
 | 
			
		||||
    m_Colors:
 | 
			
		||||
    - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
    - _Color: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
 | 
			
		||||
    - _SpecColor: {r: 0.6037736, g: 0.6037736, b: 0.6037736, a: 1}
 | 
			
		||||
  m_BuildTextureStacks: []
 | 
			
		||||
							
								
								
									
										8
									
								
								Viagg-io/Assets/Materials/viaggio-sticker.mat.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: f68434afc7cf3654d9213612b095cd0a
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 2100000
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										136
									
								
								Viagg-io/Assets/Materials/zwiebel-schnitt.mat
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,136 @@
 | 
			
		||||
%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: zwiebel-schnitt
 | 
			
		||||
  m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
 | 
			
		||||
  m_Parent: {fileID: 0}
 | 
			
		||||
  m_ModifiedSerializedProperties: 0
 | 
			
		||||
  m_ValidKeywords:
 | 
			
		||||
  - _METALLICSPECGLOSSMAP
 | 
			
		||||
  - _NORMALMAP
 | 
			
		||||
  - _OCCLUSIONMAP
 | 
			
		||||
  m_InvalidKeywords: []
 | 
			
		||||
  m_LightmapFlags: 4
 | 
			
		||||
  m_EnableInstancingVariants: 0
 | 
			
		||||
  m_DoubleSidedGI: 0
 | 
			
		||||
  m_CustomRenderQueue: -1
 | 
			
		||||
  stringTagMap:
 | 
			
		||||
    RenderType: Opaque
 | 
			
		||||
  disabledShaderPasses: []
 | 
			
		||||
  m_LockedProperties: 
 | 
			
		||||
  m_SavedProperties:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TexEnvs:
 | 
			
		||||
    - _BaseMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: 0141417cc0f438f4aa81e55237061c24, type: 3}
 | 
			
		||||
        m_Scale: {x: 1, y: 1}
 | 
			
		||||
        m_Offset: {x: 0, y: 0}
 | 
			
		||||
    - _BumpMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: e3d2439187ac5414d9376865da854cbd, type: 3}
 | 
			
		||||
        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: 2800000, guid: 0141417cc0f438f4aa81e55237061c24, type: 3}
 | 
			
		||||
        m_Scale: {x: 1, y: 1}
 | 
			
		||||
        m_Offset: {x: 0, y: 0}
 | 
			
		||||
    - _MetallicGlossMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: 62ce778d655532b45876660f0ed892aa, type: 3}
 | 
			
		||||
        m_Scale: {x: 1, y: 1}
 | 
			
		||||
        m_Offset: {x: 0, y: 0}
 | 
			
		||||
    - _OcclusionMap:
 | 
			
		||||
        m_Texture: {fileID: 2800000, guid: 588367c3b2c68e140ba00cf67664efb9, type: 3}
 | 
			
		||||
        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:
 | 
			
		||||
    - _AlphaClip: 0
 | 
			
		||||
    - _AlphaToMask: 0
 | 
			
		||||
    - _Blend: 0
 | 
			
		||||
    - _BlendModePreserveSpecular: 1
 | 
			
		||||
    - _BumpScale: 1
 | 
			
		||||
    - _ClearCoatMask: 0
 | 
			
		||||
    - _ClearCoatSmoothness: 0
 | 
			
		||||
    - _Cull: 2
 | 
			
		||||
    - _Cutoff: 0.5
 | 
			
		||||
    - _DetailAlbedoMapScale: 1
 | 
			
		||||
    - _DetailNormalMapScale: 1
 | 
			
		||||
    - _DstBlend: 0
 | 
			
		||||
    - _DstBlendAlpha: 0
 | 
			
		||||
    - _EnvironmentReflections: 1
 | 
			
		||||
    - _GlossMapScale: 0
 | 
			
		||||
    - _Glossiness: 0
 | 
			
		||||
    - _GlossyReflections: 0
 | 
			
		||||
    - _Metallic: 0
 | 
			
		||||
    - _OcclusionStrength: 0.099
 | 
			
		||||
    - _Parallax: 0.005
 | 
			
		||||
    - _QueueOffset: 0
 | 
			
		||||
    - _ReceiveShadows: 1
 | 
			
		||||
    - _Smoothness: 0.5
 | 
			
		||||
    - _SmoothnessTextureChannel: 0
 | 
			
		||||
    - _SpecularHighlights: 1
 | 
			
		||||
    - _SrcBlend: 1
 | 
			
		||||
    - _SrcBlendAlpha: 1
 | 
			
		||||
    - _Surface: 0
 | 
			
		||||
    - _WorkflowMode: 1
 | 
			
		||||
    - _ZWrite: 1
 | 
			
		||||
    m_Colors:
 | 
			
		||||
    - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
    - _Color: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
 | 
			
		||||
    - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
 | 
			
		||||
  m_BuildTextureStacks: []
 | 
			
		||||
--- !u!114 &4099119872254075129
 | 
			
		||||
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: 7
 | 
			
		||||
							
								
								
									
										8
									
								
								Viagg-io/Assets/Materials/zwiebel-schnitt.mat.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,8 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: d836bc61ec5c2a84da0f49adf376387b
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 2100000
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/button-gradient-diisabled.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 24 KiB  | 
@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 72672db06d2e2704ebb08a5d63202da6
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 512
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 37 KiB  | 
@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: e642e0e946e3e1d43acae6eb3c9f523d
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 512
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 36 KiB  | 
@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 72816999e66a60840806eb4fa4ae9a0c
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 512
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 27 KiB  | 
@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 4742f5d329fff23438112ffebd2f01ed
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 512
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
		 After Width: | Height: | Size: 27 KiB  | 
@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 71872469c29f34b4b8162acbd50711f5
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 512
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/capture-button-active.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 17 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/capture-button-active.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 98a32c78db42a9d40ad103f879ce29f4
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/capture-button.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/capture-button.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 016aa68f8e4a097459eb2b5cda7f750a
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/record-button.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 20 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/record-button.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: a7c52af9f9839f948821c4653fcf8389
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/speech-button-active.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 19 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/speech-button-active.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: a3c69f1ad8ab68b419bf8cf5f1b77156
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/speech-button.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 12 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/speech-button.png.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 5af5f15b2d36bf2488b3c0bbdcb7fcab
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 0
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 1
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 1
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 8
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 5e97eb03825dee720800000000000000
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/viaggio-aufkleber-NRM.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 71 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 9fd7c847e140f3549a30e2be937d9834
 | 
			
		||||
guid: 31de098158d58c24db28c2bfe17be3af
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -54,7 +54,7 @@ TextureImporter:
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 12
 | 
			
		||||
  textureType: 1
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/viaggio-aufkleber.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 47 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: e7aad61cd1077ad4b9d820ef79d2c46d
 | 
			
		||||
guid: bb45a59dd40d83c488e1c76f7b594af1
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -51,10 +51,10 @@ TextureImporter:
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 6
 | 
			
		||||
  textureType: 0
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-AO.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 100 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 3f8880173266f1447b36bda50a6b6cf6
 | 
			
		||||
guid: e0e07c613800a994f884cc039cb32efb
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -51,10 +51,10 @@ TextureImporter:
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 6
 | 
			
		||||
  textureType: 0
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-COL.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 107 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 12ff726807026bd4c9e569cd7010f049
 | 
			
		||||
guid: 0141417cc0f438f4aa81e55237061c24
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -51,10 +51,10 @@ TextureImporter:
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 0
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 6
 | 
			
		||||
  textureType: 0
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-DISP.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 46 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 288286dd82d63e34fb65ca58ac9c9e69
 | 
			
		||||
guid: 62ce778d655532b45876660f0ed892aa
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -7,7 +7,7 @@ TextureImporter:
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 1
 | 
			
		||||
    sRGBTexture: 0
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -54,7 +54,7 @@ TextureImporter:
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 12
 | 
			
		||||
  textureType: 0
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-NRM.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 272 KiB  | 
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 579c3b1d2256fe348b015d4f3a269eb4
 | 
			
		||||
guid: e3d2439187ac5414d9376865da854cbd
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
@ -22,7 +22,7 @@ TextureImporter:
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
@ -35,11 +35,11 @@ TextureImporter:
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 3
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 1
 | 
			
		||||
    wrapV: 1
 | 
			
		||||
    wrapW: 1
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
@ -54,7 +54,7 @@ TextureImporter:
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 12
 | 
			
		||||
  textureType: 1
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
@ -72,7 +72,7 @@ TextureImporter:
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 2
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-SPEC.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 90 KiB  | 
							
								
								
									
										140
									
								
								Viagg-io/Assets/Models/textures/zwiebel-scheibe-SPEC.jpg.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,140 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 588367c3b2c68e140ba00cf67664efb9
 | 
			
		||||
TextureImporter:
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 12
 | 
			
		||||
  mipmaps:
 | 
			
		||||
    mipMapMode: 0
 | 
			
		||||
    enableMipMap: 1
 | 
			
		||||
    sRGBTexture: 1
 | 
			
		||||
    linearTexture: 0
 | 
			
		||||
    fadeOut: 0
 | 
			
		||||
    borderMipMap: 0
 | 
			
		||||
    mipMapsPreserveCoverage: 0
 | 
			
		||||
    alphaTestReferenceValue: 0.5
 | 
			
		||||
    mipMapFadeDistanceStart: 1
 | 
			
		||||
    mipMapFadeDistanceEnd: 3
 | 
			
		||||
  bumpmap:
 | 
			
		||||
    convertToNormalMap: 0
 | 
			
		||||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
    flipGreenChannel: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  vTOnly: 0
 | 
			
		||||
  ignoreMipmapLimit: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
  generateCubemap: 6
 | 
			
		||||
  cubemapConvolution: 0
 | 
			
		||||
  seamlessCubemap: 0
 | 
			
		||||
  textureFormat: 1
 | 
			
		||||
  maxTextureSize: 2048
 | 
			
		||||
  textureSettings:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    filterMode: 1
 | 
			
		||||
    aniso: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    wrapU: 0
 | 
			
		||||
    wrapV: 0
 | 
			
		||||
    wrapW: 0
 | 
			
		||||
  nPOTScale: 1
 | 
			
		||||
  lightmap: 0
 | 
			
		||||
  compressionQuality: 50
 | 
			
		||||
  spriteMode: 0
 | 
			
		||||
  spriteExtrude: 1
 | 
			
		||||
  spriteMeshType: 1
 | 
			
		||||
  alignment: 0
 | 
			
		||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
			
		||||
  spritePixelsToUnits: 100
 | 
			
		||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
			
		||||
  alphaUsage: 1
 | 
			
		||||
  alphaIsTransparency: 0
 | 
			
		||||
  spriteTessellationDetail: -1
 | 
			
		||||
  textureType: 0
 | 
			
		||||
  textureShape: 1
 | 
			
		||||
  singleChannelComponent: 0
 | 
			
		||||
  flipbookRows: 1
 | 
			
		||||
  flipbookColumns: 1
 | 
			
		||||
  maxTextureSizeSet: 0
 | 
			
		||||
  compressionQualitySet: 0
 | 
			
		||||
  textureFormatSet: 0
 | 
			
		||||
  ignorePngGamma: 0
 | 
			
		||||
  applyGammaDecoding: 0
 | 
			
		||||
  swizzle: 50462976
 | 
			
		||||
  cookieLightType: 0
 | 
			
		||||
  platformSettings:
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: DefaultTexturePlatform
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Android
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Server
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    ignorePlatformSupport: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
    outline: []
 | 
			
		||||
    physicsShape: []
 | 
			
		||||
    bones: []
 | 
			
		||||
    spriteID: 
 | 
			
		||||
    internalID: 0
 | 
			
		||||
    vertices: []
 | 
			
		||||
    indices: 
 | 
			
		||||
    edges: []
 | 
			
		||||
    weights: []
 | 
			
		||||
    secondaryTextures: []
 | 
			
		||||
    nameFileIdTable: {}
 | 
			
		||||
  mipmapLimitGroupName: 
 | 
			
		||||
  pSDRemoveMatte: 0
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Viagg-io/Assets/Models/zwiebel.fbx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										109
									
								
								Viagg-io/Assets/Models/zwiebel.fbx.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,109 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 322de01edb9291b40a11a1f107e103f3
 | 
			
		||||
ModelImporter:
 | 
			
		||||
  serializedVersion: 22200
 | 
			
		||||
  internalIDToNameTable: []
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  materials:
 | 
			
		||||
    materialImportMode: 0
 | 
			
		||||
    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: 1
 | 
			
		||||
  meshes:
 | 
			
		||||
    lODScreenPercentages: []
 | 
			
		||||
    globalScale: 1
 | 
			
		||||
    meshCompression: 0
 | 
			
		||||
    addColliders: 0
 | 
			
		||||
    useSRGBMaterialColor: 1
 | 
			
		||||
    sortHierarchyByName: 1
 | 
			
		||||
    importPhysicalCameras: 1
 | 
			
		||||
    importVisibility: 1
 | 
			
		||||
    importBlendShapes: 1
 | 
			
		||||
    importCameras: 0
 | 
			
		||||
    importLights: 0
 | 
			
		||||
    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: 0
 | 
			
		||||
    strictVertexDataChecks: 0
 | 
			
		||||
  tangentSpace:
 | 
			
		||||
    normalSmoothAngle: 60
 | 
			
		||||
    normalImportMode: 1
 | 
			
		||||
    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: 
 | 
			
		||||
@ -712,7 +712,7 @@ MonoBehaviour:
 | 
			
		||||
  LiveUpdatePort: 9264
 | 
			
		||||
  EnableMemoryTracking: 0
 | 
			
		||||
  AndroidUseOBB: 0
 | 
			
		||||
  AndroidPatchBuild: 0
 | 
			
		||||
  AndroidPatchBuild: 1
 | 
			
		||||
  MeterChannelOrdering: 0
 | 
			
		||||
  StopEventsOutsideMaxDistance: 0
 | 
			
		||||
  BoltUnitOptionsBuildPending: 0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										187
									
								
								Viagg-io/Assets/Prefabs/SLICER.prefab
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,187 @@
 | 
			
		||||
%YAML 1.1
 | 
			
		||||
%TAG !u! tag:unity3d.com,2011:
 | 
			
		||||
--- !u!1 &1653137244195470799
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 4797053843176458419}
 | 
			
		||||
  - component: {fileID: 7847246246979866612}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: EndSlicePoint
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!4 &4797053843176458419
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 1653137244195470799}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: 0, y: 0.986, z: 0}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 6595717377508706284}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
--- !u!114 &7847246246979866612
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 1653137244195470799}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 673f498ebe78c194bb2839733c76162d, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  velocityAverageFrames: 5
 | 
			
		||||
  angularVelocityAverageFrames: 11
 | 
			
		||||
  estimateOnAwake: 1
 | 
			
		||||
--- !u!1 &8707846834899939724
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 6595717377508706284}
 | 
			
		||||
  - component: {fileID: 7367947057494957466}
 | 
			
		||||
  - component: {fileID: 6006041040245795681}
 | 
			
		||||
  - component: {fileID: 5892123566144746309}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: SLICER
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!4 &6595717377508706284
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 8707846834899939724}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: -0.4300735, y: -0.67607594, z: 0.5766167, w: -0.15959759}
 | 
			
		||||
  m_LocalPosition: {x: 0.4287, y: 1.455, z: -0.1371}
 | 
			
		||||
  m_LocalScale: {x: 0.0038861688, y: 0.6478304, z: 0.05000001}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children:
 | 
			
		||||
  - {fileID: 1187245186378064293}
 | 
			
		||||
  - {fileID: 4797053843176458419}
 | 
			
		||||
  m_Father: {fileID: 0}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 66.484, y: 224.603, z: -264.982}
 | 
			
		||||
--- !u!33 &7367947057494957466
 | 
			
		||||
MeshFilter:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 8707846834899939724}
 | 
			
		||||
  m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
 | 
			
		||||
--- !u!23 &6006041040245795681
 | 
			
		||||
MeshRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 8707846834899939724}
 | 
			
		||||
  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: 31321ba15b8f8eb4c954353edc038b1d, 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!114 &5892123566144746309
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 8707846834899939724}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: e1a9ccd4390731943a96583ba3f9c2ae, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  startSlicePoint: {fileID: 1187245186378064293}
 | 
			
		||||
  endSlicePoint: {fileID: 4797053843176458419}
 | 
			
		||||
  velocityEstimator: {fileID: 7847246246979866612}
 | 
			
		||||
  sliceableLayer:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    m_Bits: 0
 | 
			
		||||
  crossSectionMaterial: {fileID: 2100000, guid: d836bc61ec5c2a84da0f49adf376387b, type: 2}
 | 
			
		||||
  cutForce: 0.1
 | 
			
		||||
  explosionRadius: 0.1
 | 
			
		||||
--- !u!1 &8858832164636870518
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 1187245186378064293}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: StartSlicePoint
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!4 &1187245186378064293
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 8858832164636870518}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: -0, y: -0.61, z: 0}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 6595717377508706284}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
							
								
								
									
										7
									
								
								Viagg-io/Assets/Prefabs/SLICER.prefab.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,7 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 0543f302c06d484409214869cfff2926
 | 
			
		||||
PrefabImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
@ -305,7 +305,7 @@ MonoBehaviour:
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  handlers:
 | 
			
		||||
  - {fileID: 2946996761546732454}
 | 
			
		||||
  roomId: INTERACTABLES
 | 
			
		||||
  roomId: 
 | 
			
		||||
  uniqueId: 
 | 
			
		||||
--- !u!114 &2946996761546732454
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
@ -356,7 +356,7 @@ GameObject:
 | 
			
		||||
  - component: {fileID: 5639322406150571411}
 | 
			
		||||
  - component: {fileID: 3327915248895267331}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: StudioEventEmitter.INTERACTABLES.ZwiebelSchneiden
 | 
			
		||||
  m_Name: StudioEventEmitter.GO.FMODAudio
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
@ -422,7 +422,7 @@ MonoBehaviour:
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  handlers:
 | 
			
		||||
  - {fileID: 3327915248895267331}
 | 
			
		||||
  roomId: INTERACTABLES
 | 
			
		||||
  roomId: GO
 | 
			
		||||
  uniqueId: 
 | 
			
		||||
--- !u!114 &3327915248895267331
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
@ -439,7 +439,7 @@ MonoBehaviour:
 | 
			
		||||
  showHelpText: 0
 | 
			
		||||
  fadeInTime: 1.5
 | 
			
		||||
  fadeOutTime: 1.5
 | 
			
		||||
  studioEventEmitter: {fileID: 0}
 | 
			
		||||
  studioEventEmitter: {fileID: 1055821320529178695}
 | 
			
		||||
  objName: FMODAudio
 | 
			
		||||
--- !u!1 &7488236864262452632
 | 
			
		||||
GameObject:
 | 
			
		||||
@ -454,7 +454,7 @@ GameObject:
 | 
			
		||||
  - component: {fileID: 2302638293541951205}
 | 
			
		||||
  - component: {fileID: 6062656772719201672}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: Collider.INTERACTABLES.ZwiebelTrigger
 | 
			
		||||
  m_Name: Collider.GO.ZwiebelTrigger
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
@ -510,7 +510,7 @@ MonoBehaviour:
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  handlers:
 | 
			
		||||
  - {fileID: 6062656772719201672}
 | 
			
		||||
  roomId: INTERACTABLES
 | 
			
		||||
  roomId: GO
 | 
			
		||||
  uniqueId: 
 | 
			
		||||
--- !u!114 &6062656772719201672
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
 | 
			
		||||
@ -16,6 +16,7 @@ GameObject:
 | 
			
		||||
  - component: {fileID: 1374902286040942640}
 | 
			
		||||
  - component: {fileID: 5737243587521899355}
 | 
			
		||||
  - component: {fileID: 9120077753276778447}
 | 
			
		||||
  - component: {fileID: 8999830825315463649}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: kuechen-messer-interactable
 | 
			
		||||
  m_TagString: Messer
 | 
			
		||||
@ -35,7 +36,8 @@ Transform:
 | 
			
		||||
  m_LocalPosition: {x: -7.1685014, y: 0.9762856, z: -15.908104}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Children:
 | 
			
		||||
  - {fileID: 7855412107151690486}
 | 
			
		||||
  m_Father: {fileID: 0}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 90, y: 8.92, z: 0}
 | 
			
		||||
--- !u!33 &6049220393283913801
 | 
			
		||||
@ -96,7 +98,7 @@ Rigidbody:
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 6551068394713259692}
 | 
			
		||||
  serializedVersion: 4
 | 
			
		||||
  m_Mass: 0.2
 | 
			
		||||
  m_Mass: 0.1
 | 
			
		||||
  m_Drag: 0
 | 
			
		||||
  m_AngularDrag: 0.05
 | 
			
		||||
  m_CenterOfMass: {x: 0, y: 0, z: 0}
 | 
			
		||||
@ -329,3 +331,142 @@ MonoBehaviour:
 | 
			
		||||
      Data3: 1297989280
 | 
			
		||||
      Data4: 1516590243
 | 
			
		||||
    Path: "event:/Grotto.K\xFCche/Grotto.K\xFCche.Messer_greifen"
 | 
			
		||||
--- !u!65 &8999830825315463649
 | 
			
		||||
BoxCollider:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 6551068394713259692}
 | 
			
		||||
  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.23141281, y: 0.028339146, z: 0.008675949}
 | 
			
		||||
  m_Center: {x: 0.07521524, y: 0.0000009626407, z: 0.00000012930768}
 | 
			
		||||
--- !u!1001 &3930716356505455898
 | 
			
		||||
PrefabInstance:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Modification:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TransformParent: {fileID: 3790325749217278681}
 | 
			
		||||
    m_Modifications:
 | 
			
		||||
    - target: {fileID: 1187245186378064293, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: -0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1187245186378064293, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: 0.213
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5892123566144746309, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: velocityEstimator
 | 
			
		||||
      value: 
 | 
			
		||||
      objectReference: {fileID: 8250021927708824052}
 | 
			
		||||
    - target: {fileID: 5892123566144746309, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: sliceableLayer.m_Bits
 | 
			
		||||
      value: 64
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6006041040245795681, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_Enabled
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.x
 | 
			
		||||
      value: 0.0038861684
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.y
 | 
			
		||||
      value: 0.18765052
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.z
 | 
			
		||||
      value: 0.05
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.w
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.x
 | 
			
		||||
      value: 0.7071068
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.y
 | 
			
		||||
      value: 0.7071068
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.z
 | 
			
		||||
      value: -0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.x
 | 
			
		||||
      value: 180
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.z
 | 
			
		||||
      value: -90
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 8707846834899939724, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      propertyPath: m_Name
 | 
			
		||||
      value: SLICER
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    m_RemovedComponents:
 | 
			
		||||
    - {fileID: 7847246246979866612, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
    m_RemovedGameObjects: []
 | 
			
		||||
    m_AddedGameObjects: []
 | 
			
		||||
    m_AddedComponents:
 | 
			
		||||
    - targetCorrespondingSourceObject: {fileID: 8707846834899939724, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
      insertIndex: -1
 | 
			
		||||
      addedObject: {fileID: 8250021927708824052}
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
--- !u!1 &5644357493190245526 stripped
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 8707846834899939724, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
  m_PrefabInstance: {fileID: 3930716356505455898}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
--- !u!114 &8250021927708824052
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 5644357493190245526}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 673f498ebe78c194bb2839733c76162d, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  velocityAverageFrames: 5
 | 
			
		||||
  angularVelocityAverageFrames: 11
 | 
			
		||||
  estimateOnAwake: 1
 | 
			
		||||
--- !u!4 &7855412107151690486 stripped
 | 
			
		||||
Transform:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 6595717377508706284, guid: 0543f302c06d484409214869cfff2926, type: 3}
 | 
			
		||||
  m_PrefabInstance: {fileID: 3930716356505455898}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										185
									
								
								Viagg-io/Assets/Prefabs/smartphone.prefab
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,185 @@
 | 
			
		||||
%YAML 1.1
 | 
			
		||||
%TAG !u! tag:unity3d.com,2011:
 | 
			
		||||
--- !u!1 &5522565988125846446
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 4156389369862117096}
 | 
			
		||||
  - component: {fileID: 3340314277111715869}
 | 
			
		||||
  - component: {fileID: 8051402842304692019}
 | 
			
		||||
  - component: {fileID: 6951624616992486880}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: viaggio-sticker
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!4 &4156389369862117096
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 5522565988125846446}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: -0.69525796, y: 0.1289046, z: 0.1289046, w: -0.69525796}
 | 
			
		||||
  m_LocalPosition: {x: -0.0001, y: -0.0258, z: 0.0064}
 | 
			
		||||
  m_LocalScale: {x: 0.006328974, y: 0.0063289753, z: 0.0063289753}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 7244504408015846954}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: -248.993, y: 90, z: 90}
 | 
			
		||||
--- !u!33 &3340314277111715869
 | 
			
		||||
MeshFilter:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 5522565988125846446}
 | 
			
		||||
  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
 | 
			
		||||
--- !u!23 &8051402842304692019
 | 
			
		||||
MeshRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 5522565988125846446}
 | 
			
		||||
  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: f68434afc7cf3654d9213612b095cd0a, 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!64 &6951624616992486880
 | 
			
		||||
MeshCollider:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 5522565988125846446}
 | 
			
		||||
  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: 5
 | 
			
		||||
  m_Convex: 0
 | 
			
		||||
  m_CookingOptions: 30
 | 
			
		||||
  m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
 | 
			
		||||
--- !u!1001 &7134580445092796865
 | 
			
		||||
PrefabInstance:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Modification:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TransformParent: {fileID: 0}
 | 
			
		||||
    m_Modifications:
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.x
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.y
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalScale.z
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: -0.017000198
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: -0.0242
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.z
 | 
			
		||||
      value: 0.0082
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.w
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.x
 | 
			
		||||
      value: -0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.y
 | 
			
		||||
      value: -0.7071068
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.z
 | 
			
		||||
      value: -0.7071068
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.x
 | 
			
		||||
      value: -90
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.z
 | 
			
		||||
      value: -180
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 919132149155446097, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      propertyPath: m_Name
 | 
			
		||||
      value: smartphone
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    m_RemovedComponents: []
 | 
			
		||||
    m_RemovedGameObjects: []
 | 
			
		||||
    m_AddedGameObjects:
 | 
			
		||||
    - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
      insertIndex: -1
 | 
			
		||||
      addedObject: {fileID: 4156389369862117096}
 | 
			
		||||
    m_AddedComponents: []
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
--- !u!4 &7244504408015846954 stripped
 | 
			
		||||
Transform:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: b77a804e6b0ef0547b1a7033768d0e09, type: 3}
 | 
			
		||||
  m_PrefabInstance: {fileID: 7134580445092796865}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
							
								
								
									
										7
									
								
								Viagg-io/Assets/Prefabs/smartphone.prefab.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,7 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: fd16c97ca719775409e646d3ee101b19
 | 
			
		||||
PrefabImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
@ -1 +1 @@
 | 
			
		||||
2025-02-04T10:12:59.8899959Z
 | 
			
		||||
2025-02-06T13:16:11.9857731Z
 | 
			
		||||
@ -6,11 +6,11 @@ LightingSettings:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_Name: Nick Test Lighting Settings 2
 | 
			
		||||
  m_Name: Grotto-Lighting-Settings-alt
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_GIWorkflowMode: 1
 | 
			
		||||
  m_EnableBakedLightmaps: 1
 | 
			
		||||
  m_EnableRealtimeLightmaps: 1
 | 
			
		||||
  m_EnableRealtimeLightmaps: 0
 | 
			
		||||
  m_RealtimeEnvironmentLighting: 1
 | 
			
		||||
  m_BounceScale: 1
 | 
			
		||||
  m_AlbedoBoost: 1
 | 
			
		||||
@ -22,8 +22,8 @@ LightingSettings:
 | 
			
		||||
  m_Padding: 2
 | 
			
		||||
  m_LightmapCompression: 3
 | 
			
		||||
  m_AO: 1
 | 
			
		||||
  m_AOMaxDistance: 0.2
 | 
			
		||||
  m_CompAOExponent: 3.57
 | 
			
		||||
  m_AOMaxDistance: 1
 | 
			
		||||
  m_CompAOExponent: 5
 | 
			
		||||
  m_CompAOExponentDirect: 0
 | 
			
		||||
  m_ExtractAO: 0
 | 
			
		||||
  m_MixedBakeMode: 0
 | 
			
		||||
@ -46,7 +46,7 @@ LightingSettings:
 | 
			
		||||
  m_PVREnvironmentReferencePointCount: 2048
 | 
			
		||||
  m_LightProbeSampleCountMultiplier: 4
 | 
			
		||||
  m_PVRBounces: 2
 | 
			
		||||
  m_PVRMinBounces: 1
 | 
			
		||||
  m_PVRMinBounces: 2
 | 
			
		||||
  m_PVREnvironmentImportanceSampling: 1
 | 
			
		||||
  m_PVRFilteringMode: 1
 | 
			
		||||
  m_PVRDenoiserTypeDirect: 1
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: f548dfff2276cb74c80891fa9673888e
 | 
			
		||||
guid: 25f9f7c45d6aa4897b0106f91b971072
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 4890085278179872738
 | 
			
		||||
@ -8,9 +8,9 @@ LightingSettings:
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_Name: Grotto-Lighting-Settings
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_GIWorkflowMode: 1
 | 
			
		||||
  m_GIWorkflowMode: 0
 | 
			
		||||
  m_EnableBakedLightmaps: 1
 | 
			
		||||
  m_EnableRealtimeLightmaps: 0
 | 
			
		||||
  m_EnableRealtimeLightmaps: 1
 | 
			
		||||
  m_RealtimeEnvironmentLighting: 1
 | 
			
		||||
  m_BounceScale: 1
 | 
			
		||||
  m_AlbedoBoost: 1
 | 
			
		||||
@ -22,8 +22,8 @@ LightingSettings:
 | 
			
		||||
  m_Padding: 2
 | 
			
		||||
  m_LightmapCompression: 3
 | 
			
		||||
  m_AO: 1
 | 
			
		||||
  m_AOMaxDistance: 1
 | 
			
		||||
  m_CompAOExponent: 5
 | 
			
		||||
  m_AOMaxDistance: 0.2
 | 
			
		||||
  m_CompAOExponent: 3.57
 | 
			
		||||
  m_CompAOExponentDirect: 0
 | 
			
		||||
  m_ExtractAO: 0
 | 
			
		||||
  m_MixedBakeMode: 0
 | 
			
		||||
@ -46,7 +46,7 @@ LightingSettings:
 | 
			
		||||
  m_PVREnvironmentReferencePointCount: 2048
 | 
			
		||||
  m_LightProbeSampleCountMultiplier: 4
 | 
			
		||||
  m_PVRBounces: 2
 | 
			
		||||
  m_PVRMinBounces: 2
 | 
			
		||||
  m_PVRMinBounces: 1
 | 
			
		||||
  m_PVREnvironmentImportanceSampling: 1
 | 
			
		||||
  m_PVRFilteringMode: 1
 | 
			
		||||
  m_PVRDenoiserTypeDirect: 1
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,9 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: 25f9f7c45d6aa4897b0106f91b971072
 | 
			
		||||
<<<<<<< Updated upstream
 | 
			
		||||
guid: f548dfff2276cb74c80891fa9673888e
 | 
			
		||||
=======
 | 
			
		||||
guid: 02fa99cdf0ebb894fa33bac6c32340e1
 | 
			
		||||
>>>>>>> Stashed changes
 | 
			
		||||
NativeFormatImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  mainObjectFileID: 4890085278179872738
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@ RenderSettings:
 | 
			
		||||
  m_AmbientIntensity: 1
 | 
			
		||||
  m_AmbientMode: 0
 | 
			
		||||
  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
 | 
			
		||||
  m_SkyboxMaterial: {fileID: 0}
 | 
			
		||||
  m_SkyboxMaterial: {fileID: 2100000, guid: 73780993eddf4a44bbaf576485bacb2c, type: 2}
 | 
			
		||||
  m_HaloStrength: 0.5
 | 
			
		||||
  m_FlareStrength: 1
 | 
			
		||||
  m_FlareFadeSpeed: 3
 | 
			
		||||
@ -38,7 +38,7 @@ RenderSettings:
 | 
			
		||||
  m_ReflectionIntensity: 1
 | 
			
		||||
  m_CustomReflection: {fileID: 0}
 | 
			
		||||
  m_Sun: {fileID: 0}
 | 
			
		||||
  m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
 | 
			
		||||
  m_IndirectSpecularColor: {r: 0.23192799, g: 0.25871885, b: 0.31261495, a: 1}
 | 
			
		||||
  m_UseRadianceAmbientProbe: 0
 | 
			
		||||
--- !u!157 &3
 | 
			
		||||
LightmapSettings:
 | 
			
		||||
@ -123,114 +123,7 @@ NavMeshSettings:
 | 
			
		||||
    debug:
 | 
			
		||||
      m_Flags: 0
 | 
			
		||||
  m_NavMeshData: {fileID: 0}
 | 
			
		||||
--- !u!1 &374602718
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 374602719}
 | 
			
		||||
  - component: {fileID: 374602722}
 | 
			
		||||
  - component: {fileID: 374602721}
 | 
			
		||||
  - component: {fileID: 374602720}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: saber
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!4 &374602719
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 374602718}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0.7152223, y: 0.022357738, z: -0.113761984, w: 0.68921363}
 | 
			
		||||
  m_LocalPosition: {x: 0.005, y: -0.0126, z: 0.0749}
 | 
			
		||||
  m_LocalScale: {x: 0.00151074, y: 0.06326073, z: 0.00151074}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 441087507}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 82.294, y: -100.348, z: -111.419}
 | 
			
		||||
--- !u!136 &374602720
 | 
			
		||||
CapsuleCollider:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 374602718}
 | 
			
		||||
  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: 2
 | 
			
		||||
  m_Radius: 0.5000001
 | 
			
		||||
  m_Height: 2
 | 
			
		||||
  m_Direction: 1
 | 
			
		||||
  m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
 | 
			
		||||
--- !u!23 &374602721
 | 
			
		||||
MeshRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 374602718}
 | 
			
		||||
  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: 82d82615edb730b479b3dac680466e80, 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!33 &374602722
 | 
			
		||||
MeshFilter:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 374602718}
 | 
			
		||||
  m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
 | 
			
		||||
--- !u!1001 &441087506
 | 
			
		||||
--- !u!1001 &546878212
 | 
			
		||||
PrefabInstance:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
@ -238,169 +131,56 @@ PrefabInstance:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TransformParent: {fileID: 0}
 | 
			
		||||
    m_Modifications:
 | 
			
		||||
    - target: {fileID: 1767192433, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_Layer
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_Enabled
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: field of view
 | 
			
		||||
      value: 60.000004
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_FocalLength
 | 
			
		||||
      value: 20.78461
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_OcclusionCulling
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1767192439, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_projectionMatrixMode
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503725, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_Name
 | 
			
		||||
      value: XR Origin (XR Rig)
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_RootOrder
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.w
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 1717954561962503726, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
    - target: {fileID: 2636888980393329576, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5478857520347255596, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_CameraType
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5478857520347255596, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_Antialiasing
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5478857520347255596, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_RenderShadows
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5478857520347255596, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_RendererIndex
 | 
			
		||||
      value: -1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5478857520347255596, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      propertyPath: m_RenderPostProcessing
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    m_RemovedComponents: []
 | 
			
		||||
    m_RemovedGameObjects: []
 | 
			
		||||
    m_AddedGameObjects:
 | 
			
		||||
    - targetCorrespondingSourceObject: {fileID: 1666320186578454293, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
      insertIndex: -1
 | 
			
		||||
      addedObject: {fileID: 374602719}
 | 
			
		||||
    m_AddedComponents: []
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
--- !u!4 &441087507 stripped
 | 
			
		||||
Transform:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 1666320186578454293, guid: f6336ac4ac8b4d34bc5072418cdc62a0, type: 3}
 | 
			
		||||
  m_PrefabInstance: {fileID: 441087506}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
--- !u!1001 &537719706
 | 
			
		||||
PrefabInstance:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Modification:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TransformParent: {fileID: 0}
 | 
			
		||||
    m_Modifications:
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.w
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: -8679921383154817045, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 919132149155446097, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
    - target: {fileID: 8460820077378228755, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
      propertyPath: m_Name
 | 
			
		||||
      value: Castello
 | 
			
		||||
      value: _HANDMENU
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    m_RemovedComponents: []
 | 
			
		||||
    m_RemovedGameObjects: []
 | 
			
		||||
    m_AddedGameObjects: []
 | 
			
		||||
    m_AddedComponents: []
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: 0a69e9b97c683435ab87c4a483478236, type: 3}
 | 
			
		||||
--- !u!1 &756192406
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: 90dfe96f41d164a3081b56f73f4214e4, type: 3}
 | 
			
		||||
--- !u!1 &1604346685
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
@ -408,255 +188,206 @@ GameObject:
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 756192408}
 | 
			
		||||
  - component: {fileID: 756192407}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: XR Interaction Manager
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  - component: {fileID: 1604346688}
 | 
			
		||||
  - component: {fileID: 1604346686}
 | 
			
		||||
  - component: {fileID: 1604346687}
 | 
			
		||||
  m_Layer: 10
 | 
			
		||||
  m_Name: Main Camera no-post-processing
 | 
			
		||||
  m_TagString: MainCamera
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!114 &756192407
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
--- !u!20 &1604346686
 | 
			
		||||
Camera:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 756192406}
 | 
			
		||||
  m_GameObject: {fileID: 1604346685}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_StartingHoverFilters: []
 | 
			
		||||
  m_StartingSelectFilters: []
 | 
			
		||||
--- !u!4 &756192408
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 756192406}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: -1.6751227, y: -2.2229433, z: -23.114769}
 | 
			
		||||
  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!1 &820300307
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 820300310}
 | 
			
		||||
  - component: {fileID: 820300309}
 | 
			
		||||
  - component: {fileID: 820300308}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: Directional Light
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!114 &820300308
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 820300307}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_Version: 3
 | 
			
		||||
  m_UsePipelineSettings: 1
 | 
			
		||||
  m_AdditionalLightsShadowResolutionTier: 2
 | 
			
		||||
  m_LightLayerMask: 1
 | 
			
		||||
  m_RenderingLayers: 1
 | 
			
		||||
  m_CustomShadowLayers: 0
 | 
			
		||||
  m_ShadowLayerMask: 1
 | 
			
		||||
  m_ShadowRenderingLayers: 1
 | 
			
		||||
  m_LightCookieSize: {x: 1, y: 1}
 | 
			
		||||
  m_LightCookieOffset: {x: 0, y: 0}
 | 
			
		||||
  m_SoftShadowQuality: 0
 | 
			
		||||
--- !u!108 &820300309
 | 
			
		||||
Light:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 820300307}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  serializedVersion: 10
 | 
			
		||||
  m_Type: 1
 | 
			
		||||
  m_Shape: 0
 | 
			
		||||
  m_Color: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
  m_Intensity: 1
 | 
			
		||||
  m_Range: 10
 | 
			
		||||
  m_SpotAngle: 30
 | 
			
		||||
  m_InnerSpotAngle: 21.80208
 | 
			
		||||
  m_CookieSize: 10
 | 
			
		||||
  m_Shadows:
 | 
			
		||||
    m_Type: 0
 | 
			
		||||
    m_Resolution: -1
 | 
			
		||||
    m_CustomResolution: -1
 | 
			
		||||
    m_Strength: 1
 | 
			
		||||
    m_Bias: 0.05
 | 
			
		||||
    m_NormalBias: 0.4
 | 
			
		||||
    m_NearPlane: 0.2
 | 
			
		||||
    m_CullingMatrixOverride:
 | 
			
		||||
      e00: 1
 | 
			
		||||
      e01: 0
 | 
			
		||||
      e02: 0
 | 
			
		||||
      e03: 0
 | 
			
		||||
      e10: 0
 | 
			
		||||
      e11: 1
 | 
			
		||||
      e12: 0
 | 
			
		||||
      e13: 0
 | 
			
		||||
      e20: 0
 | 
			
		||||
      e21: 0
 | 
			
		||||
      e22: 1
 | 
			
		||||
      e23: 0
 | 
			
		||||
      e30: 0
 | 
			
		||||
      e31: 0
 | 
			
		||||
      e32: 0
 | 
			
		||||
      e33: 1
 | 
			
		||||
    m_UseCullingMatrixOverride: 0
 | 
			
		||||
  m_Cookie: {fileID: 0}
 | 
			
		||||
  m_DrawHalo: 0
 | 
			
		||||
  m_Flare: {fileID: 0}
 | 
			
		||||
  m_RenderMode: 0
 | 
			
		||||
  m_ClearFlags: 1
 | 
			
		||||
  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
 | 
			
		||||
  m_projectionMatrixMode: 1
 | 
			
		||||
  m_GateFitMode: 2
 | 
			
		||||
  m_FOVAxisMode: 0
 | 
			
		||||
  m_Iso: 200
 | 
			
		||||
  m_ShutterSpeed: 0.005
 | 
			
		||||
  m_Aperture: 16
 | 
			
		||||
  m_FocusDistance: 10
 | 
			
		||||
  m_FocalLength: 50
 | 
			
		||||
  m_BladeCount: 5
 | 
			
		||||
  m_Curvature: {x: 2, y: 11}
 | 
			
		||||
  m_BarrelClipping: 0.25
 | 
			
		||||
  m_Anamorphism: 0
 | 
			
		||||
  m_SensorSize: {x: 36, y: 24}
 | 
			
		||||
  m_LensShift: {x: 0, y: 0}
 | 
			
		||||
  m_NormalizedViewPortRect:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    x: 0
 | 
			
		||||
    y: 0
 | 
			
		||||
    width: 1
 | 
			
		||||
    height: 1
 | 
			
		||||
  near clip plane: 0.01
 | 
			
		||||
  far clip plane: 1000
 | 
			
		||||
  field of view: 60
 | 
			
		||||
  orthographic: 0
 | 
			
		||||
  orthographic size: 5
 | 
			
		||||
  m_Depth: -1
 | 
			
		||||
  m_CullingMask:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    m_Bits: 4294967295
 | 
			
		||||
  m_RenderingLayerMask: 1
 | 
			
		||||
  m_Lightmapping: 4
 | 
			
		||||
  m_LightShadowCasterMode: 0
 | 
			
		||||
  m_AreaSize: {x: 1, y: 1}
 | 
			
		||||
  m_BounceIntensity: 1
 | 
			
		||||
  m_ColorTemperature: 6570
 | 
			
		||||
  m_UseColorTemperature: 0
 | 
			
		||||
  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  m_UseBoundingSphereOverride: 0
 | 
			
		||||
  m_UseViewFrustumForShadowCasterCull: 1
 | 
			
		||||
  m_ShadowRadius: 0
 | 
			
		||||
  m_ShadowAngle: 0
 | 
			
		||||
--- !u!4 &820300310
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 820300307}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
 | 
			
		||||
  m_LocalPosition: {x: -1.29841, y: 2.5167868, z: 0.20967096}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_ConstrainProportionsScale: 0
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 0}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
 | 
			
		||||
--- !u!1 &2092139007
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 2092139010}
 | 
			
		||||
  - component: {fileID: 2092139009}
 | 
			
		||||
  - component: {fileID: 2092139008}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: EventSystem
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!114 &2092139008
 | 
			
		||||
    m_Bits: 1024
 | 
			
		||||
  m_RenderingPath: -1
 | 
			
		||||
  m_TargetTexture: {fileID: 0}
 | 
			
		||||
  m_TargetDisplay: 0
 | 
			
		||||
  m_TargetEye: 3
 | 
			
		||||
  m_HDR: 1
 | 
			
		||||
  m_AllowMSAA: 1
 | 
			
		||||
  m_AllowDynamicResolution: 0
 | 
			
		||||
  m_ForceIntoRT: 0
 | 
			
		||||
  m_OcclusionCulling: 1
 | 
			
		||||
  m_StereoConvergence: 10
 | 
			
		||||
  m_StereoSeparation: 0.022
 | 
			
		||||
--- !u!114 &1604346687
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 2092139007}
 | 
			
		||||
  m_GameObject: {fileID: 1604346685}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3}
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_SendPointerHoverToParent: 1
 | 
			
		||||
  m_ClickSpeed: 0.3
 | 
			
		||||
  m_MoveDeadzone: 0.6
 | 
			
		||||
  m_RepeatDelay: 0.5
 | 
			
		||||
  m_RepeatRate: 0.1
 | 
			
		||||
  m_TrackedDeviceDragThresholdMultiplier: 2
 | 
			
		||||
  m_TrackedScrollDeltaMultiplier: 5
 | 
			
		||||
  m_ActiveInputMode: 1
 | 
			
		||||
  m_MaxTrackedDeviceRaycastDistance: 1000
 | 
			
		||||
  m_EnableXRInput: 1
 | 
			
		||||
  m_EnableMouseInput: 1
 | 
			
		||||
  m_EnableTouchInput: 1
 | 
			
		||||
  m_PointAction: {fileID: 2869410428622933342, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_LeftClickAction: {fileID: 1855836014308820768, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_MiddleClickAction: {fileID: -6289560987278519447, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_RightClickAction: {fileID: -2562941478296515153, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_ScrollWheelAction: {fileID: 5825226938762934180, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_NavigateAction: {fileID: -7967456002180160679, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_SubmitAction: {fileID: 3994978066732806534, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_CancelAction: {fileID: 2387711382375263438, guid: c348712bda248c246b8c49b3db54643f, type: 3}
 | 
			
		||||
  m_EnableBuiltinActionsAsFallback: 1
 | 
			
		||||
  m_EnableGamepadInput: 1
 | 
			
		||||
  m_EnableJoystickInput: 1
 | 
			
		||||
  m_HorizontalAxis: Horizontal
 | 
			
		||||
  m_VerticalAxis: Vertical
 | 
			
		||||
  m_SubmitButton: Submit
 | 
			
		||||
  m_CancelButton: Cancel
 | 
			
		||||
--- !u!114 &2092139009
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 2092139007}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_FirstSelected: {fileID: 0}
 | 
			
		||||
  m_sendNavigationEvents: 1
 | 
			
		||||
  m_DragThreshold: 10
 | 
			
		||||
--- !u!4 &2092139010
 | 
			
		||||
  m_RenderShadows: 1
 | 
			
		||||
  m_RequiresDepthTextureOption: 2
 | 
			
		||||
  m_RequiresOpaqueTextureOption: 2
 | 
			
		||||
  m_CameraType: 1
 | 
			
		||||
  m_Cameras: []
 | 
			
		||||
  m_RendererIndex: -1
 | 
			
		||||
  m_VolumeLayerMask:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    m_Bits: 1
 | 
			
		||||
  m_VolumeTrigger: {fileID: 0}
 | 
			
		||||
  m_VolumeFrameworkUpdateModeOption: 2
 | 
			
		||||
  m_RenderPostProcessing: 0
 | 
			
		||||
  m_Antialiasing: 0
 | 
			
		||||
  m_AntialiasingQuality: 2
 | 
			
		||||
  m_StopNaN: 0
 | 
			
		||||
  m_Dithering: 0
 | 
			
		||||
  m_ClearDepth: 1
 | 
			
		||||
  m_AllowXRRendering: 1
 | 
			
		||||
  m_AllowHDROutput: 1
 | 
			
		||||
  m_UseScreenCoordOverride: 0
 | 
			
		||||
  m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
  m_RequiresDepthTexture: 0
 | 
			
		||||
  m_RequiresColorTexture: 0
 | 
			
		||||
  m_Version: 2
 | 
			
		||||
  m_TaaSettings:
 | 
			
		||||
    quality: 3
 | 
			
		||||
    frameInfluence: 0.1
 | 
			
		||||
    jitterScale: 1
 | 
			
		||||
    mipBias: 0
 | 
			
		||||
    varianceClampScale: 0.9
 | 
			
		||||
    contrastAdaptiveSharpening: 0
 | 
			
		||||
--- !u!4 &1604346688
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 2092139007}
 | 
			
		||||
  m_GameObject: {fileID: 1604346685}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: -1.6751227, y: -2.2229433, z: -23.114769}
 | 
			
		||||
  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_Father: {fileID: 1629611588}
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
--- !u!1001 &1629611587
 | 
			
		||||
PrefabInstance:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Modification:
 | 
			
		||||
    serializedVersion: 3
 | 
			
		||||
    m_TransformParent: {fileID: 0}
 | 
			
		||||
    m_Modifications:
 | 
			
		||||
    - target: {fileID: 865075385244835223, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_Name
 | 
			
		||||
      value: XR Interaction Hands Setup
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 4115462782746444515, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_Cameras.Array.size
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 4115462782746444515, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_RenderPostProcessing
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 4115462782746444515, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_Cameras.Array.data[0]
 | 
			
		||||
      value: 
 | 
			
		||||
      objectReference: {fileID: 1604346686}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalPosition.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.w
 | 
			
		||||
      value: 1
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalRotation.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.x
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.y
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    - target: {fileID: 5773256366622995465, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      propertyPath: m_LocalEulerAnglesHint.z
 | 
			
		||||
      value: 0
 | 
			
		||||
      objectReference: {fileID: 0}
 | 
			
		||||
    m_RemovedComponents: []
 | 
			
		||||
    m_RemovedGameObjects: []
 | 
			
		||||
    m_AddedGameObjects:
 | 
			
		||||
    - targetCorrespondingSourceObject: {fileID: 7990873191231833676, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
      insertIndex: -1
 | 
			
		||||
      addedObject: {fileID: 1604346688}
 | 
			
		||||
    m_AddedComponents: []
 | 
			
		||||
  m_SourcePrefab: {fileID: 100100000, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
--- !u!4 &1629611588 stripped
 | 
			
		||||
Transform:
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 7990873191231833676, guid: 5eccbf4be2c00e94689ee8062e4e7276, type: 3}
 | 
			
		||||
  m_PrefabInstance: {fileID: 1629611587}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
--- !u!1660057539 &9223372036854775807
 | 
			
		||||
SceneRoots:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_Roots:
 | 
			
		||||
  - {fileID: 441087506}
 | 
			
		||||
  - {fileID: 756192408}
 | 
			
		||||
  - {fileID: 2092139010}
 | 
			
		||||
  - {fileID: 537719706}
 | 
			
		||||
  - {fileID: 820300310}
 | 
			
		||||
  - {fileID: 546878212}
 | 
			
		||||
  - {fileID: 1629611587}
 | 
			
		||||
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 663 KiB After Width: | Height: | Size: 178 KiB  | 
| 
		 Before Width: | Height: | Size: 564 KiB After Width: | Height: | Size: 330 KiB  | 
| 
		 Before Width: | Height: | Size: 733 KiB After Width: | Height: | Size: 239 KiB  | 
| 
		 Before Width: | Height: | Size: 272 KiB After Width: | Height: | Size: 47 KiB  |