public void EditorTest() { var gameObject = new GameObject(); icoSphere = gameObject.AddComponent <IcoSphere>(); icoSphere.recursionLevel = 1; icoSphere.Create(); }
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 }
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); }
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); }
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; } }
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)); } }
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 (); }
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); } } } }