void UpdateMaterials(SceneData scene) { int numMaterials = scene.numMaterials; bool needsUpdate = false; if (m_materialList.Count != numMaterials) { needsUpdate = true; } else { for (int i = 0; i < numMaterials; ++i) { var src = scene.GetMaterial(i); var dst = m_materialList[i]; if (src.id != dst.id || src.name != dst.name || src.color != dst.color) { needsUpdate = true; break; } } } if (!needsUpdate) { return; } var newlist = new List <MaterialHolder>(); for (int i = 0; i < numMaterials; ++i) { var src = scene.GetMaterial(i); var id = src.id; var dst = m_materialList.Find(a => a.id == id); if (dst == null) { dst = new MaterialHolder(); dst.id = id; #if UNITY_EDITOR var tmp = Instantiate(GetDefaultMaterial()); tmp.name = src.name; tmp.color = src.color; dst.material = tmp; #endif } dst.name = src.name; dst.color = src.color; if (dst.material.name == src.name) { dst.material.color = dst.color; } newlist.Add(dst); } m_materialList = newlist; ReassignMaterials(); }
internal MaterialTableEventArgs(int docId, int eventType, int index, IntPtr pOldSettings) { m_document_id = docId; m_event_type = (MaterialTableEventType)eventType; m_material_index = index; if (pOldSettings != IntPtr.Zero) { m_holder = new MaterialHolder(pOldSettings, true); } }
void SortEffects() { List <Material> SortedList = new List <Material>(); MaterialHolder myTarget = (MaterialHolder)target; for (int i = 0; i < myTarget.EffectsTrail.Count; ++i) { SortedList.Add(myTarget.EffectsTrail.Find(x => x.name == ((MaterialHolder.Effects)i).ToString())); } myTarget.EffectsTrail.Clear(); myTarget.EffectsTrail.AddRange(SortedList); }
void AutoChangeMaterial(int index) { Renderer[] rs = gameObject.GetComponentsInChildren <Renderer>(); for (int i = 0; i < rs.Length; i++) { Renderer r = rs[i]; MaterialHolder mh = r.gameObject.GetComponent <MaterialHolder>(); if (mh != null) { r.material = mh.m_materials[index % mh.m_materials.Count]; } } }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // * New Method: Receive All Materials //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ protected void ReceiveAllMaterials(Transform CurrentChild) { foreach (Transform Child in CurrentChild) { ReceiveAllMaterials(Child); } if (CurrentChild.GetComponent <Renderer>() != null) { MaterialHolder MH = new MaterialHolder(); MH.MaterialRenderer = CurrentChild.GetComponent <Renderer>(); MH.MaterialOriginalColour = CurrentChild.GetComponent <Renderer>().sharedMaterial.color; m_FlashEffectStruct.lMaterialsList.Add(MH); } }
/** * Switchs over available materials at runtime and in editor depending on the type of the bridge * **/ void Update() { Bridge.BridgeType newBridgeType = this.gameObject.GetComponent <Bridge>().m_type; if (m_previousType != newBridgeType) { m_previousType = newBridgeType; MaterialHolder materialHolder = GetComponent <MaterialHolder>(); MeshRenderer meshRenderer = GetComponent <MeshRenderer>(); if (newBridgeType == Bridge.BridgeType.Completed || newBridgeType == Bridge.BridgeType.Spreading) { meshRenderer.sharedMaterial = materialHolder.GetMaterialAtIndex(0); //white texture } else if (newBridgeType == Bridge.BridgeType.Faded) { meshRenderer.sharedMaterial = materialHolder.GetMaterialAtIndex(1); //white texture with 0.12f opacity } else if (newBridgeType == Bridge.BridgeType.TargetIndicator) { meshRenderer.sharedMaterial = materialHolder.GetMaterialAtIndex(2); //red texture } } }
void Init(Fractal parent, int index) { this.meshes = parent.meshes; this.mats = parent.mats; this.maxDepth = parent.maxDepth; this.perfectRate = parent.perfectRate; this.maxRotateSpeed = parent.maxRotateSpeed; this.maxTwistAngle = parent.maxTwistAngle; this.useRotation = parent.useRotation; this.depth = parent.depth + 1; this.generationType = parent.generationType; this.transform.SetParent(parent.transform); this.childScaler = parent.childScaler; this.transform.localScale = Vector3.one * childScaler; this.transform.localPosition = childGroups[index].direction * (0.5f + childScaler / 2f); //note the 0.5f this.transform.localRotation = childGroups[index].orientation; this.rotateSpeed = Random.Range(0f, maxRotateSpeed); this.transform.Rotate(Random.Range(-maxTwistAngle, maxTwistAngle), 0f, 0f); }
void Update () { if (Util.hit != null) { if ((tempScheme = Util.hit.GetComponent<WorkbenchScheme>()) != null) { if (hoverScheme == null || (hoverScheme != tempScheme)) { hoverScheme = tempScheme; itemDescriptor.showDescription(hoverScheme.getItem()); hoverScheme.setHover(true); } } else if ((tempHolder = Util.hit.GetComponent<MaterialHolder>()) != null) { if (hoverHolder == null || (hoverHolder != tempHolder)) { hoverHolder = tempHolder; itemDescriptor.showDescription(hoverHolder.getItem()); } } else { if (hoverScheme != null) { if (!hoverScheme.isChosed()) { hoverScheme.setNormal(); } hoverScheme = null; } if (tempScheme != null && !tempScheme.isChosed()) { tempScheme.setNormal(); } if (hoverHolder != null) { hoverHolder = null; } if (itemDescriptor.isOnScreen()) { itemDescriptor.hideDescription(); } } } else { if (hoverScheme != null) { if (!hoverScheme.isChosed()) { hoverScheme.setNormal(); } hoverScheme = null; } if (hoverHolder != null) { hoverHolder = null; } if (tempScheme != null && !tempScheme.isChosed()) { tempScheme.setNormal(); } if (itemDescriptor.isOnScreen()) { itemDescriptor.hideDescription(); } } if (Input.GetMouseButtonDown(0) && hoverScheme != null && !hoverScheme.isChosed()) { chooseScheme(hoverScheme); } }
int GetMaterialIndex(Material mat) { if (mat == null) { return(-1); } for (int i = 0; i < m_materialList.Count; ++i) { if (m_materialList[i].material == mat) { return(i); } } int ret = m_materialList.Count; var tmp = new MaterialHolder(); tmp.name = mat.name; tmp.material = mat; tmp.id = ret + 1; m_materialList.Add(tmp); return(ret); }
private void Start() { MH = this; }
MaterialHolder FindOrCreateMaterial(Texture2D texture, bool resolution) { foreach (MaterialHolder holder in materials) { if (holder.Material.Texture2D == texture && holder.Material.resolution == resolution) return holder; } MaterialHolder result = new MaterialHolder(); result.Material.Texture2D = texture; result.Material.resolution = resolution; materials.Add(result); return result; }
void BuildMaterial(MaterialHolder holder, GraphicsDevice graphicsDevice) { Material m = holder.Material; m.GraphicsDevice = graphicsDevice; m.VertexDeclaration = new VertexDeclaration(graphicsDevice, VertexPositionNormalTexture.VertexElements); m.Effect = new BasicEffect(graphicsDevice, null); if(m.resolution) m.Effect.DiffuseColor = new Vector3(255, 255, 0); else m.Effect.DiffuseColor = new Vector3(255, 255, 255); m.Effect.AmbientLightColor = new Vector3(0, 0, 0); m.PrimitiveType = PrimitiveType.TriangleList; m.VertexStride = m.VertexDeclaration.GetVertexStrideSize(0); m.VertexCount = holder.Vertices.Count; m.IndexCount = holder.Indices.Count; m.PrimitiveCount = m.IndexCount / 3; m.VertexBuffer = new VertexBuffer(graphicsDevice, typeof(VertexPositionNormalTexture), m.VertexCount, BufferUsage.None); m.VertexBuffer.SetData(holder.Vertices.ToArray()); m.IndexBuffer = new IndexBuffer(graphicsDevice, typeof(int), m.IndexCount, BufferUsage.None); m.IndexBuffer.SetData(holder.Indices.ToArray()); }
private void Start() { ServiceProvider.Instance.DevConsole.RegisterCommand("AdamsModActivate", ActivateAdamsMod); materialHolder = gameObject.GetComponent <MaterialHolder>(); }