void Paint(Collision collision, PaintingCollision pCont) { if (brush.IsA3Dbrush(pCont.painter)) { StrokeVector v = pCont.vector; v.posTo = transform.position; if (v.mouseDwn) { v.posFrom = v.posTo; } brush.Paint(v, pCont.painter); } else { if (collision.contacts.Length > 0) { var cp = collision.contacts[0]; RaycastHit hit; Ray ray = new Ray(cp.point + cp.normal * 0.1f, -cp.normal); if (collision.collider.Raycast(ray, out hit, 2f)) { StrokeVector v = pCont.vector; v.uvTo = hit.textureCoord; if (v.mouseDwn) { v.uvFrom = v.uvTo; } brush.Paint(pCont.vector, pCont.painter.SetTexTarget(brush)); } } } }
private void Update() { brush.Brush3D_Radius = transform.lossyScale.x * 0.7f; foreach (PaintingCollision col in paintingOn) { PlaytimePainter p = col.painter; if (brush.IsA3Dbrush(p)) { StrokeVector v = col.vector; v.posTo = transform.position; brush.Paint(v, p); } } }
void Paint() { RaycastHit hit; if (Physics.Raycast(new Ray(transform.position, transform.forward), out hit)) { var painter = hit.transform.GetComponentInParent <PlaytimePainter>(); if (painter != null) { if ((painter.skinnedMeshRendy != null) && (brush.IsA3Dbrush(painter) == false)) { painter.UpdateColliderForSkinnedMesh(); bool colliderDIsabled = !painter.meshCollider.enabled; if (colliderDIsabled) { painter.meshCollider.enabled = true; } if (!painter.meshCollider.Raycast(new Ray(transform.position, transform.forward), out hit, 99999)) { Debug.Log("Missed the Mesh Collider"); if (colliderDIsabled) { painter.meshCollider.enabled = false; } return; } if (colliderDIsabled) { painter.meshCollider.enabled = false; } } StrokeVector v = new StrokeVector(hit, false); brush.Paint(v, painter.SetTexTarget(brush)); } } }
public PlaytimePainter Paint(PlaytimePainter painter, BrushConfig brush) { return(brush.Paint(this, painter)); }