protected override Voxel mutate(Application app, Index pos, Action action, Voxel original) { BlurApp bApp = (BlurApp)app; BlurAction bAction = (BlurAction)action; float dis = Mathf.Sqrt(bAction.disSqr); float actualStrength = strength * (1 - (dis / bApp.radius)); if (actualStrength <= 0) { return(original); } byte newOpacity = calculateOpacity(bApp.original, pos.x - app.min.x, pos.y - app.min.y, pos.z - app.min.z, actualStrength); return(new Voxel(original.averageMaterialType(), newOpacity)); }
protected override Action checkMutation(Application app, Index pos) { BlurApp bApp = (BlurApp)app; BlurAction action = new BlurAction(); float voxelSize = LocalMutator.calculateVoxelSize(app, pos); Vector3 diff = LocalMutator.calculateDiff(bApp.position, pos, voxelSize); action.disSqr = diff.sqrMagnitude; float maxRadius = bApp.radius + voxelSize; float maxRadSqr = maxRadius * maxRadius; if (action.disSqr > maxRadSqr) return action; action.doTraverse = true; action.modify = true; return action; }
protected override Action checkMutation(Application app, Index pos) { BlurApp bApp = (BlurApp)app; BlurAction action = new BlurAction(); float voxelSize = LocalMutator.calculateVoxelSize(app, pos); Vector3 diff = LocalMutator.calculateDiff(bApp.position, pos, voxelSize); action.disSqr = diff.sqrMagnitude; float maxRadius = bApp.radius + voxelSize; float maxRadSqr = maxRadius * maxRadius; if (action.disSqr > maxRadSqr) { return(action); } action.doTraverse = true; action.modify = true; return(action); }