protected override void SetModel() { GameObject model; Quaternion prevRot = Quaternion.identity; if (transform.childCount != 0) { var p = transform.GetChild(0); prevRot = p.localRotation; Destroy(p.gameObject); } else { prevRot = Quaternion.Euler(0f, 45f * modelRotation, 0f); } if (level < 2) { model = Instantiate(Resources.Load <GameObject>("Structures/ZeppelinBasement")); } else { model = Instantiate(Resources.Load <GameObject>("Structures/Buildings/HQ_level_" + level.ToString())); } model.transform.parent = transform; model.transform.localRotation = prevRot; model.transform.localPosition = Vector3.zero; if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(model); } }
void Start() { float x = Random.value * 360; float cs = Chunk.chunkSize / 2; Vector3 rpos = Quaternion.AngleAxis(x, Vector3.up) * Vector3.forward * cs * 1.5f * Block.QUAD_SIZE; rpos.y = cs; rpos.x += cs; rpos.z += cs; transform.position = rpos; Vector3 v = GameMaster.sceneCenter - transform.position; v.y = 0; transform.forward = Quaternion.AngleAxis(-90, Vector3.up) * v; leftScrew.Rotate(0, Random.value * 360, 0); rightScrew.Rotate(0, Random.value * 360, 0); landingMarkObject = Instantiate(Resources.Load <GameObject>("Prefs/LandingX")) as GameObject; landingMarkObject.SetActive(false); lineDrawer = GetComponent <LineRenderer>(); if (current != null) { Destroy(current); } current = this; if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(gameObject, true); } UIController.current.BindLandButton(this); }
override protected void SetModel() { if (type == Settlement.SettlementStructureType.Empty) { return; } GameObject model; Quaternion prevRot = Quaternion.identity; if (transform.childCount != 0) { var p = transform.GetChild(0); prevRot = p.localRotation; Destroy(p.gameObject); } switch (type) { case Settlement.SettlementStructureType.House: switch (level) { case 8: case 7: case 6: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl6")); break; case 5: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl5")); break; case 4: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl4")); break; case 3: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl3")); break; case 2: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl2")); break; default: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/housePart_lvl1")); break; } break; case Settlement.SettlementStructureType.Shop: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/shopPart")); break; case Settlement.SettlementStructureType.Garden: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/parkPart")); // also using by Gardens.cs break; default: model = GameObject.CreatePrimitive(PrimitiveType.Cube); break; } model.transform.parent = transform; model.transform.localRotation = prevRot; model.transform.localPosition = Vector3.zero; if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(model, true); } }
static GameObject LoadModel(byte stage) { GameObject g = Instantiate(Resources.Load <GameObject>("Lifeforms/oak-" + stage.ToString())); if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(g, true); } return(g); }
public static GameObject LoadModel(byte stage) { GameObject g = Instantiate(Resources.Load <GameObject>("Lifeforms/oak-" + stage.ToString())); if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(g); } return(g); }
override public void SetBasement(Plane p, PixelPosByte pos) { if (p == null) { return; } // basement = p; if (transform.childCount == 0) { var fi = basement.faceIndex; if (fi == Block.SURFACE_FACE_INDEX || fi == Block.UP_FACE_INDEX || fi == Block.CEILING_FACE_INDEX || fi == Block.DOWN_FACE_INDEX) { model = Instantiate(Resources.Load <GameObject>("Structures/Column")); surfaceRect = new SurfaceRect(0, 0, 4); surfaceRect = new SurfaceRect((byte)(PlaneExtension.INNER_RESOLUTION / 2 - surfaceRect.size / 2), (byte)(PlaneExtension.INNER_RESOLUTION / 2 - surfaceRect.size / 2), surfaceRect.size); } else { model = Instantiate(Resources.Load <GameObject>("Structures/ColumnEdge")); switch (fi) { case Block.FWD_FACE_INDEX: model.transform.rotation = Quaternion.Euler(0f, 180f, 0f); break; case Block.RIGHT_FACE_INDEX: model.transform.rotation = Quaternion.Euler(0f, -90f, 0f); break; case Block.LEFT_FACE_INDEX: model.transform.rotation = Quaternion.Euler(0f, 90f, 0f); break; case Block.BACK_FACE_INDEX: model.transform.rotation = Quaternion.Euler(Vector3.zero); break; } surfaceRect = SurfaceRect.full; } model.transform.parent = transform; model.transform.localPosition = Vector3.zero; if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(model); } } placeInCenter = true; basement.AddStructure(this); // if (!GameMaster.loading) { IPlanableSupportClass.AddBlockRepresentation(this, basement, ref myBlock, true); } }
override protected void SetModel() { if (type == Settlement.SettlementStructureType.Empty) { return; } GameObject model; Quaternion prevRot = Quaternion.identity; if (transform.childCount != 0) { var p = transform.GetChild(0); prevRot = p.localRotation; Destroy(p.gameObject); } bool replacementCheck = true; switch (type) { case Settlement.SettlementStructureType.House: model = GetHouseModel(level); replacementCheck = false; break; case Settlement.SettlementStructureType.Shop: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/shopPart")); break; case Settlement.SettlementStructureType.Garden: model = Instantiate(Resources.Load <GameObject>("Structures/Settlement/parkPart")); // also using by Gardens.cs break; default: model = GameObject.CreatePrimitive(PrimitiveType.Cube); break; } model.transform.parent = transform; model.transform.localRotation = prevRot; model.transform.localPosition = Vector3.zero; if (!PoolMaster.useDefaultMaterials & replacementCheck) { PoolMaster.ReplaceMaterials(model); } }
void Start() { float x = Random.value * 360; float cs = Chunk.chunkSize / 2; Vector3 rpos = Quaternion.AngleAxis(x, Vector3.up) * Vector3.forward * cs * 1.5f * Block.QUAD_SIZE; rpos.y = cs; rpos.x += cs; rpos.z += cs; transform.position = rpos; Vector3 v = GameMaster.sceneCenter - transform.position; v.y = 0; transform.forward = Quaternion.AngleAxis(-90, Vector3.up) * v; leftScrew.Rotate(0, Random.value * 360, 0); rightScrew.Rotate(0, Random.value * 360, 0); landingMarkObject = Instantiate(Resources.Load <GameObject>("Prefs/LandingX")) as GameObject; landingMarkObject.SetActive(false); lineDrawer = GetComponent <LineRenderer>(); if (current != null) { Destroy(current); } current = this; if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(gameObject); } landingCanvas = Instantiate(Resources.Load <GameObject>("UIPrefs/landingCanvas")).transform; landingCanvas.GetComponentInChildren <UnityEngine.UI.Text>().text = Localization.GetWord(LocalizedWord.Land_verb); UIController.GetCurrent().AddSpecialCanvasToHolder(landingCanvas); landingCanvas.GetChild(0).GetComponent <UnityEngine.UI.Button>().onClick.AddListener(this.Raycasting); landButton = landingCanvas.GetChild(1).gameObject; landButton.SetActive(false); landButton.GetComponent <UnityEngine.UI.Button>().onClick.AddListener(this.LandActionAccepted); }
protected override void SetModel() { Transform model = Instantiate(Resources.Load <GameObject>("Prefs/defaultContainer")).transform; Transform meshTransform = model.transform.GetChild(0); var mf = meshTransform.GetComponent <MeshFilter>(); var mr = meshTransform.GetComponent <MeshRenderer>(); PoolMaster.SetMaterialByID( ref mf, ref mr, mainResource.ID, 255 ); model_id = ContainerModelType.Default; model.parent = transform; model.localPosition = Vector3.zero; model.localRotation = Quaternion.Euler(Vector3.zero); if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(model.gameObject, true); } }
protected override void SetModel() { GameObject model; if (transform.childCount != 0) { Destroy(transform.GetChild(0).gameObject); } if (level < 2) { model = Instantiate(Resources.Load <GameObject>("Structures/ZeppelinBasement")); } else { model = Instantiate(Resources.Load <GameObject>("Structures/Buildings/HQ_level_" + level.ToString())); } model.transform.parent = transform; model.transform.localRotation = Quaternion.Euler(0, 0, 0); model.transform.localPosition = Vector3.zero; if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(model, true); } }
/// <summary> /// Make checks before invoking /// </summary> public int CreateLODPack(LODPackType i_lpackType, GameObject model, RenderPoint[] renderPoints, int resolution, float shotSize, Color backgroundColor, LODRegisterInfo regInfo) { backgroundColor.a = 0; LODController lcontroller = LODController.GetCurrent(); backgroundColor.a = 0; int savedLayer = model.layer; var layerNumber = 8; Renderer[] allObjects = model.transform.GetComponentsInChildren <Renderer>(); foreach (Renderer r in allObjects) { r.gameObject.layer = layerNumber; } if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(allObjects); } cam.orthographicSize = shotSize; cam.backgroundColor = backgroundColor; RenderTexture m_RenderTexture = new RenderTexture(resolution, resolution, 8, RenderTextureFormat.ARGB32); cam.transform.parent = model.transform; cam.transform.localRotation = Quaternion.Euler(Vector3.up * 180); cam.enabled = true; Texture2D atlas; switch (i_lpackType) { case LODPackType.Point: { cam.transform.localPosition = renderPoints[0].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[0].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; atlas = new Texture2D(resolution, resolution); atlas.ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); atlas.Apply(); break; } case LODPackType.OneSide: { Texture2D[] spriteRenders = new Texture2D[4]; // 0 degrees cam.transform.localPosition = renderPoints[0].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[0].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[0] = new Texture2D(resolution, resolution); spriteRenders[0].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[0].Apply(); // 22.5 degrees cam.transform.localPosition = renderPoints[1].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[1].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[1] = new Texture2D(resolution, resolution); spriteRenders[1].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[1].Apply(); // 45 degrees cam.transform.localPosition = renderPoints[2].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[2].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[2] = new Texture2D(resolution, resolution); spriteRenders[2].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[2].Apply(); // 85 degrees cam.transform.localPosition = renderPoints[3].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[3].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[3] = new Texture2D(resolution, resolution); spriteRenders[3].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[3].Apply(); atlas = new Texture2D(2 * resolution, 2 * resolution); atlas.PackTextures(spriteRenders, 0, 2 * resolution, false); break; } case LODPackType.Full: { Texture2D[] spriteRenders = new Texture2D[32]; int index = 0; for (int i = 0; i < 8; i++) { // 0 degrees cam.transform.localPosition = renderPoints[index].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[index].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[index] = new Texture2D(resolution, resolution); spriteRenders[index].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[index].Apply(); index++; // 22.5 degrees cam.transform.localPosition = renderPoints[index].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[index].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[index] = new Texture2D(resolution, resolution); spriteRenders[index].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[index].Apply(); index++; // 45 degrees cam.transform.localPosition = renderPoints[index].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[index].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[index] = new Texture2D(resolution, resolution); spriteRenders[index].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[index].Apply(); index++; // 85 degrees cam.transform.localPosition = renderPoints[index].position; cam.transform.localRotation = Quaternion.Euler(renderPoints[index].rotation); m_RenderTexture.Create(); cam.targetTexture = m_RenderTexture; cam.Render(); RenderTexture.active = m_RenderTexture; spriteRenders[index] = new Texture2D(resolution, resolution); spriteRenders[index].ReadPixels(new Rect(0, 0, resolution, resolution), 0, 0); spriteRenders[index].Apply(); index++; } atlas = new Texture2D(4 * resolution, 8 * resolution); atlas.PackTextures(spriteRenders, 0, 8 * resolution, false); break; } default: return(-1); } cam.enabled = false; cam.transform.parent = null; RenderTexture.active = null; foreach (Renderer r in allObjects) { r.gameObject.layer = savedLayer; } if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(allObjects); } return(lcontroller.RegisterLOD(new LODRegistrationTicket(regInfo, atlas, i_lpackType))); }
override protected void SetModel() { //switch skin index GameObject model; Quaternion prevRot = Quaternion.identity; if (transform.childCount != 0) { return; } model = new GameObject("gardenModel"); model.transform.parent = transform; model.transform.localRotation = prevRot; model.transform.localPosition = Vector3.zero; //generating model info if (modelsInfo == null) { var milist = new List <byte>(); float f = Random.value; byte modelCode = 0, posCodeX = 0, posCodeZ = 0; // 0-8, 0-8 if (f > 0.5f) { f *= 2f; if (f <= 0.4f) // small { f /= 0.4f; if (f > 0.6f) { if (f > 0.9f) { modelCode = SMALL_TOWER_ID; } else { modelCode = SMALL_TANK_ID; } } else { if (f < 0.4f) { modelCode = SMALL_HIGHTREE_ID; } else { modelCode = SMALL_PARK_ID; } } f = Random.value; if (f > 0.5f) { if (f > 0.75f) { posCodeX = 0; posCodeZ = 4; } else { posCodeX = 0; posCodeZ = 0; } } else { if (f > 0.25f) { posCodeX = 4; posCodeZ = 0; } else { posCodeX = 4; posCodeZ = 4; } } } else { if (f >= 0.8f) // big { f = (f - 0.8f) / 0.2f; if (f > 0.65f) { modelCode = BIG_HIGHPARK_ID; } else { modelCode = BIG_MIDPARK_ID; } posCodeX = 0; posCodeZ = 0; } else // double { f = (f - 0.4f) / 0.4f; if (f > 0.65f) { modelCode = DOUBLE_HIGHPARK_ID; } else { modelCode = DOUBLE_MIDPARK_ID; } posCodeX = 0; posCodeZ = 0; } } milist.Add(posCodeX); milist.Add(posCodeZ); milist.Add(modelCode); } // 8-16, 0-8 f = Random.value; if (f > 0.5f) { f *= 2f; if (f <= 0.4f) // small { f /= 0.4f; if (f > 0.6f) { if (f > 0.9f) { modelCode = SMALL_TOWER_ID; } else { modelCode = SMALL_TANK_ID; } } else { if (f < 0.4f) { modelCode = SMALL_HIGHTREE_ID; } else { modelCode = SMALL_PARK_ID; } } f = Random.value; if (f > 0.5f) { if (f > 0.75f) { posCodeX = 8; posCodeZ = 4; } else { posCodeX = 8; posCodeZ = 0; } } else { if (f > 0.25f) { posCodeX = 12; posCodeZ = 0; } else { posCodeX = 12; posCodeZ = 4; } } } else { if (f >= 0.8f) // big { f = (f - 0.8f) / 0.2f; if (f > 0.65f) { modelCode = BIG_HIGHPARK_ID; } else { modelCode = BIG_MIDPARK_ID; } posCodeX = 8; posCodeZ = 0; } else // double { f = (f - 0.4f) / 0.4f; if (f > 0.65f) { modelCode = DOUBLE_HIGHPARK_ID; } else { modelCode = DOUBLE_MIDPARK_ID; } posCodeX = 8; posCodeZ = 0; } } milist.Add(posCodeX); milist.Add(posCodeZ); milist.Add(modelCode); } // 0-8, 8-16 f = Random.value; if (f > 0.5f) { f *= 2f; if (f <= 0.4f) // small { f /= 0.4f; if (f > 0.6f) { if (f > 0.9f) { modelCode = SMALL_TOWER_ID; } else { modelCode = SMALL_TANK_ID; } } else { if (f < 0.4f) { modelCode = SMALL_HIGHTREE_ID; } else { modelCode = SMALL_PARK_ID; } } f = Random.value; if (f > 0.5f) { if (f > 0.75f) { posCodeX = 0; posCodeZ = 12; } else { posCodeX = 0; posCodeZ = 8; } } else { if (f > 0.25f) { posCodeX = 4; posCodeZ = 8; } else { posCodeX = 4; posCodeZ = 12; } } } else { if (f >= 0.8f) // big { f = (f - 0.8f) / 0.2f; if (f > 0.65f) { modelCode = BIG_HIGHPARK_ID; } else { modelCode = BIG_MIDPARK_ID; } posCodeX = 0; posCodeZ = 8; } else // double { f = (f - 0.4f) / 0.4f; if (f > 0.65f) { modelCode = DOUBLE_HIGHPARK_ID; } else { modelCode = DOUBLE_MIDPARK_ID; } posCodeX = 0; posCodeZ = 8; } } milist.Add(posCodeX); milist.Add(posCodeZ); milist.Add(modelCode); } // 8- 16, 8 - 16 f = Random.value; if (f <= 0.4f) // small { f /= 0.4f; if (f > 0.6f) { if (f > 0.9f) { modelCode = SMALL_TOWER_ID; } else { modelCode = SMALL_TANK_ID; } } else { if (f < 0.4f) { modelCode = SMALL_HIGHTREE_ID; } else { modelCode = SMALL_PARK_ID; } } f = Random.value; if (f > 0.5f) { if (f > 0.75f) { posCodeX = 8; posCodeZ = 12; } else { posCodeX = 8; posCodeZ = 8; } } else { if (f > 0.25f) { posCodeX = 12; posCodeZ = 8; } else { posCodeX = 12; posCodeZ = 12; } } } else { if (f >= 0.8f) // big { f = (f - 0.8f) / 0.2f; if (f > 0.65f) { modelCode = BIG_HIGHPARK_ID; } else { modelCode = BIG_MIDPARK_ID; } posCodeX = 8; posCodeZ = 8; } else // double { f = (f - 0.4f) / 0.4f; if (f > 0.65f) { modelCode = DOUBLE_HIGHPARK_ID; } else { modelCode = DOUBLE_MIDPARK_ID; } posCodeX = 8; posCodeZ = 8; } } milist.Add(posCodeX); milist.Add(posCodeZ); milist.Add(modelCode); // modelsInfo = milist.ToArray(); } //constructing model int i = 0; byte size = 0; var mlist = new List <GameObject>(); GameObject g = null; Transform parent = model.transform; float ir = (float)PlaneExtension.INNER_RESOLUTION; while (i < modelsInfo.Length) { switch (modelsInfo[i]) { case SMALL_PARK_ID: g = Instantiate(Resources.Load <GameObject>("Structures/Settlement/parkPart")); break; case SMALL_TOWER_ID: g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/small_mast")); break; case SMALL_TANK_ID: g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/small_tank")); break; case SMALL_HIGHTREE_ID: g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/small_hightree")); break; case DOUBLE_HIGHPARK_ID: size = 2; g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/double_highpark")); break; case DOUBLE_MIDPARK_ID: size = 2; g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/double_midhpark")); break; case BIG_HIGHPARK_ID: size = 1; g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/big_highpark")); break; case BIG_MIDPARK_ID: size = 1; g = Instantiate(Resources.Load <GameObject>("Prefs/Gardenparts/big_midpark")); break; } if (g != null) { g.transform.parent = parent; g.transform.localPosition = (Vector3.right * (modelsInfo[i + 1] / ir - 0.5f)) * Block.QUAD_SIZE + (Vector3.forward * (modelsInfo[i + 2] / ir - 0.5f)) * Block.QUAD_SIZE; } i += 3; } // if (PoolMaster.useAdvancedMaterials) { PoolMaster.ReplaceMaterials(model, true); } }
public static GameObject GetHouseModel(byte lvl) { GameObject m; switch (lvl) { case 8: case 7: case 6: if (housesPrefs[5] == null) { housesPrefs[5] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl6"); } m = Instantiate(housesPrefs[5]); break; case 5: if (housesPrefs[4] == null) { housesPrefs[4] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl5"); } m = Instantiate(housesPrefs[4]); break; case 4: if (housesPrefs[3] == null) { housesPrefs[3] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl4"); } m = Instantiate(housesPrefs[3]); break; case 3: if (housesPrefs[2] == null) { housesPrefs[2] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl3"); } m = Instantiate(housesPrefs[2]); break; case 2: if (housesPrefs[1] == null) { housesPrefs[1] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl2"); } m = Instantiate(housesPrefs[1]); break; default: if (housesPrefs[0] == null) { housesPrefs[0] = Resources.Load <GameObject>("Structures/Settlement/housePart_lvl1"); } m = Instantiate(housesPrefs[0]); break; } if (!PoolMaster.useDefaultMaterials) { PoolMaster.ReplaceMaterials(m); } return(m); }