Exemplo n.º 1
0
    public void EditorTest()
    {
        var gameObject = new GameObject();

        icoSphere = gameObject.AddComponent <IcoSphere>();
        icoSphere.recursionLevel = 1;
        icoSphere.Create();
    }
Exemplo n.º 2
0
    public void Initialise(SceneManager aSceneManager, float aFillAlpha)
    {
        if (isInitialised)
        {
            // Initialization multiple call guard
            return;
        }

        if (aSceneManager == null)
        {
            return;
        }

        m_sceneManager = aSceneManager;
        fillAlpha      = aFillAlpha;
        m_manualObject = null;
        linesIndex     = 0;
        trianglesIndex = 0;

        m_manualObject             = m_sceneManager.CreateManualObject("debugDrawer_object");
        m_manualObject.CastShadows = false;

        m_sceneManager.RootSceneNode.CreateChildSceneNode("debugDrawer_object").AttachObject(m_manualObject);
        m_manualObject.Dynamic = (true);

        icoSphere.Create(this.DEFAULT_ICOSPHERE_RECURSION_LEVEL);

        m_manualObject.Begin("debug_draw", RenderOperation.OperationTypes.OT_LINE_LIST);
        m_manualObject.Position(Vector3.ZERO);
        m_manualObject.Colour(ColourValue.ZERO);
        m_manualObject.Index(0);
        m_manualObject.End();
        m_manualObject.Begin("debug_draw", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);
        m_manualObject.Position(Vector3.ZERO);
        m_manualObject.Colour(ColourValue.ZERO);
        m_manualObject.Index(0);
        m_manualObject.End();

        trianglesIndex = 0;
        linesIndex     = trianglesIndex;

        isInitialised = true;
        // Initialization multiple call guard
    }
Exemplo n.º 3
0
 void CreatePlanetGameObject()
 {
     planet             = new GameObject();
     planetMeshFilter   = planet.AddComponent <MeshFilter>();
     planetMesh         = planetMeshFilter.mesh;
     planetMeshRenderer = planet.AddComponent <MeshRenderer>();
     //need to set the material up top
     planetMeshRenderer.material = planetMaterial;
     planet.transform.localScale = new Vector3(planetSize, planetSize, planetSize);
     IcoSphere.Create(planet);
 }
Exemplo n.º 4
0
        ColliderSliceResult[] SliceColliders(Plane plane)
        {
            var colliders = GetComponentsInChildren <Collider>();

            ColliderSliceResult[] results = new ColliderSliceResult[colliders.Length];
            bool ColliderExistsNeg        = false;
            bool ColliderExistsPos        = false;

            for (int i = 0; i < colliders.Length; i++)
            {
                var collider = colliders[i];

                var colliderB = collider as BoxCollider;
                var colliderS = collider as SphereCollider;
                var colliderC = collider as CapsuleCollider;
                var colliderM = collider as MeshCollider;

                ColliderSliceResult result;
                if (colliderB != null)
                {
                    var mesh = Cube.Create(colliderB.size, colliderB.center);
                    result = TrySliceCollider(colliderB.center, colliderB, mesh, plane);
                }
                else if (colliderS != null)
                {
                    var mesh = IcoSphere.Create(colliderS.radius, colliderS.center);
                    result = TrySliceCollider(colliderS.center, colliderS, mesh, plane);
                }
                else if (colliderC != null)
                {
                    var mesh = Capsule.Create(colliderC.radius, colliderC.height, colliderC.direction, colliderC.center);
                    result = TrySliceCollider(colliderC.center, colliderC, mesh, plane);
                }
                else if (colliderM != null)
                {
                    Mesh mesh = Instantiate(colliderM.sharedMesh);
                    result = TrySliceCollider(Vector3.zero, colliderM, mesh, plane);
                }
                else
                {
                    throw new NotSupportedException("Not supported collider type '" + collider.GetType().Name + "'");
                }

                ColliderExistsNeg |= result.SliceResult == SliceResult.Sliced | result.SliceResult == SliceResult.Neg;
                ColliderExistsPos |= result.SliceResult == SliceResult.Sliced | result.SliceResult == SliceResult.Pos;
                results[i]         = result;
            }

            bool sliced = ColliderExistsNeg & ColliderExistsPos;

            return(sliced ? results : null);
        }
Exemplo n.º 5
0
        private static ColliderSliceResult[] SliceColliders(Plane plane, Collider[] colliders)
        {
            ColliderSliceResult[] results = new ColliderSliceResult[colliders.Length];
            bool ColliderExistsNeg        = false;
            bool ColliderExistsPos        = false;

            for (int i = 0; i < colliders.Length; i++)
            {
                var collider = colliders[i];

                var colliderB = collider as BoxCollider;
                var colliderS = collider as SphereCollider;
                var colliderC = collider as CapsuleCollider;
                var colliderM = collider as MeshCollider;

                ColliderSliceResult result;
                if (colliderB != null)
                {
                    var mesh = Cube.Create(colliderB.size, colliderB.center);
                    result = PrepareSliceCollider(collider, mesh, plane);
                }
                else if (colliderS != null)
                {
                    var mesh = IcoSphere.Create(colliderS.radius, colliderS.center);
                    result = PrepareSliceCollider(collider, mesh, plane);
                }
                else if (colliderC != null)
                {
                    var mesh = Capsule.Create(colliderC.radius, colliderC.height, colliderC.direction, colliderC.center);
                    result = PrepareSliceCollider(collider, mesh, plane);
                }
                else if (colliderM != null)
                {
                    Mesh mesh = UnityEngine.Object.Instantiate(colliderM.sharedMesh);
                    result = PrepareSliceCollider(collider, mesh, plane);
                }
                else
                {
                    throw new NotSupportedException("Not supported collider type '" + collider.GetType().Name + "'");
                }

                ColliderExistsNeg |= result.SliceResult == SliceResult.Sliced | result.SliceResult == SliceResult.Neg;
                ColliderExistsPos |= result.SliceResult == SliceResult.Sliced | result.SliceResult == SliceResult.Pos;
                results[i]         = result;
            }

            bool sliced = ColliderExistsNeg & ColliderExistsPos;

            return(sliced ? results : null);
        }
    public IEnumerator RedoSphere()
    {
        for (; ;)
        {
            GameObject tmp = Sphere;
            Sphere                         = IcoSphere.Create("HitSphere", SphereOptions.SpherePrediction ? 15.5f : SphereOptions.SphereRadius, SphereOptions.RecursionLevel);
            Sphere.layer                   = LayerMasks.AGENT;
            Sphere.transform.parent        = base.transform;
            Sphere.transform.localPosition = Vector3.zero;
            UnityEngine.Object.Destroy(tmp);
            yield return(new WaitForSeconds(1f));

            tmp = null;
        }
    }
Exemplo n.º 7
0
        IEnumerator RedoSphere()
        {
            while (true)
            {
                GameObject tmp = Sphere;

                Sphere                         = IcoSphere.Create("HitSphere", SphereOptions.SpherePrediction ? 15.5f : SphereOptions.SphereRadius, SphereOptions.RecursionLevel);
                Sphere.layer                   = LayerMasks.AGENT;
                Sphere.transform.parent        = transform;
                Sphere.transform.localPosition = Vector3.zero;

                Destroy(tmp);

                yield return(new WaitForSeconds(1f));
            }
        }
Exemplo n.º 8
0
	public override void OnInspectorGUI () {
		if(EditorPrefs.HasKey(POLYGONS_VISIBLE)) {isPolygonsVisible = EditorPrefs.GetBool(POLYGONS_VISIBLE);}
		if(EditorPrefs.HasKey(POLYGONS_VISIBLE)) {isTrianglesVisible = EditorPrefs.GetBool(TRIANGLES_VISIBLE);}
		icoSphere = target as IcoSphere;
		DrawDefaultInspector();
		isPolygonsVisible = GUILayout.Toggle(isPolygonsVisible, "Show Polygons");
		if (GUI.changed) EditorPrefs.SetBool(POLYGONS_VISIBLE, isPolygonsVisible);

		isTrianglesVisible = GUILayout.Toggle(isTrianglesVisible, "Show Triangles");
		if (GUI.changed) EditorPrefs.SetBool(TRIANGLES_VISIBLE, isTrianglesVisible);

		if(GUILayout.Button("Create")) {
			icoSphere.Create();
		}
		OnSceneGUI ();
	}
Exemplo n.º 9
0
    private void CreateMeshes()
    {
        meshes        = new Mesh[points.Length];
        meshPositions = new Vector3[points.Length];

        for (int x = 0; x < size.x; x++)
        {
            for (int y = 0; y < size.y; y++)
            {
                for (int z = 0; z < size.z; z++)
                {
                    //creating the icospheres and setting their positions
                    meshes[x + (y * size.x) + (z * size.x * size.y)]        = IcoSphere.Create(dotSize);
                    meshPositions[x + (y * size.x) + (z * size.x * size.y)] = Utility.CalculatePointPosition(new Vector3Int(x, y, z), center, gridSize, size);
                }
            }
        }
    }