Actual project things
This commit is contained in:
Executable
+51
@@ -0,0 +1,51 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
[ExecuteInEditMode]
|
||||
public class TextureTilingController : MonoBehaviour
|
||||
{
|
||||
|
||||
// Give us the texture so that we can scale proportianally the width according to the height variable below
|
||||
// We will grab it from the meshRenderer
|
||||
public Texture texture;
|
||||
public float textureToMeshZ = 2f; // Use this to contrain texture to a certain size
|
||||
|
||||
Vector3 prevScale = Vector3.one;
|
||||
float prevTextureToMeshZ = -1f;
|
||||
|
||||
// Use this for initialization
|
||||
void Start()
|
||||
{
|
||||
this.prevScale = gameObject.transform.lossyScale;
|
||||
this.prevTextureToMeshZ = this.textureToMeshZ;
|
||||
|
||||
this.UpdateTiling();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
// If something has changed
|
||||
if (gameObject.transform.lossyScale != prevScale || !Mathf.Approximately(this.textureToMeshZ, prevTextureToMeshZ))
|
||||
this.UpdateTiling();
|
||||
|
||||
// Maintain previous state variables
|
||||
this.prevScale = gameObject.transform.lossyScale;
|
||||
this.prevTextureToMeshZ = this.textureToMeshZ;
|
||||
}
|
||||
|
||||
[ContextMenu("UpdateTiling")]
|
||||
void UpdateTiling()
|
||||
{
|
||||
// A Unity plane is 10 units x 10 units
|
||||
float planeSizeX = 1f;
|
||||
float planeSizeZ = 1f;
|
||||
|
||||
// Figure out texture-to-mesh width based on user set texture-to-mesh height
|
||||
float textureToMeshX = ((float)this.texture.width / this.texture.height) * this.textureToMeshZ;
|
||||
|
||||
var textureScale = new Vector2(planeSizeX * gameObject.transform.lossyScale.x / textureToMeshX, planeSizeZ * gameObject.transform.lossyScale.z / textureToMeshZ);
|
||||
gameObject.GetComponent<Renderer>().material.SetTextureScale("_MainTex", textureScale);
|
||||
gameObject.GetComponent<Renderer>().material.SetTextureScale("_BumpMap", textureScale);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user