Example #1
0
    // Automatically add FastDecalsAtlas but do not require it so atlas can be shared between renderers
    // By using [RequireComponent (typeof (FastDecalsAtlas))] would always require it on same gameobject
    public void OnEnable()
    {
        FastDecalsAtlasRenderer atlasRenderer = (FastDecalsAtlasRenderer)target;

        if (atlasRenderer != null)
        {
            if (atlasRenderer.atlas == null)
            {
                atlasRenderer.atlas = atlasRenderer.GetComponent <FastDecalsAtlas>();

                if (atlasRenderer.atlas == null)
                {
                    atlasRenderer.atlas = atlasRenderer.gameObject.AddComponent <FastDecalsAtlas>();
                }
            }
        }
    }
Example #2
0
    public void SpawnDecal(Vector2 screenPosition)
    {
        Ray        ray = Camera.main.ScreenPointToRay(screenPosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 64.0f))
        {
            Transform target = hit.transform;

            FastDecalsAtlasRenderer atlasRenderer = target.GetComponentInChildren <FastDecalsAtlasRenderer>();

            if (atlasRenderer != null && atlasRenderer.atlas != null)
            {
                Vector3 worldPos      = hit.point + hit.normal * 0.05f;
                Vector3 localPosition = atlasRenderer.transform.InverseTransformPoint(worldPos);
                Vector3 localNormal   = atlasRenderer.transform.InverseTransformDirection(hit.normal);

                atlasRenderer.DrawDecal(localPosition, Random.Range(0.1f, 0.5f), Random.Range(0, atlasRenderer.atlas.atlasItems.Length), target.name.Contains("1") ? Color.red : Color.blue, localNormal);
            }
        }
    }
Example #3
0
 void Awake()
 {
     mAtlasRenderer = GetComponent <FastDecalsAtlasRenderer>();
     mDecalCount    = mAtlasRenderer.atlas.atlasItems.Length;
 }