< prev index next >
modules/graphics/src/main/java/javafx/scene/shape/Shape3D.java
Print this page
*** 29,38 ****
--- 29,39 ----
import com.sun.javafx.geom.BoxBounds;
import com.sun.javafx.geom.transform.BaseTransform;
import com.sun.javafx.jmx.MXNodeAlgorithm;
import com.sun.javafx.jmx.MXNodeAlgorithmContext;
import com.sun.javafx.scene.DirtyBits;
+ import com.sun.javafx.scene.paint.MaterialHelper;
import com.sun.javafx.sg.prism.NGShape3D;
import javafx.application.ConditionalFeature;
import javafx.application.Platform;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
*** 113,127 ****
private final WeakChangeListener<Boolean> weakMaterialChangeListener =
new WeakChangeListener(materialChangeListener);
@Override protected void invalidated() {
if (old != null) {
! old.impl_dirtyProperty().removeListener(weakMaterialChangeListener);
}
Material newMaterial = get();
if (newMaterial != null) {
! newMaterial.impl_dirtyProperty().addListener(weakMaterialChangeListener);
}
impl_markDirty(DirtyBits.MATERIAL);
impl_geomChanged();
old = newMaterial;
}
--- 114,128 ----
private final WeakChangeListener<Boolean> weakMaterialChangeListener =
new WeakChangeListener(materialChangeListener);
@Override protected void invalidated() {
if (old != null) {
! MaterialHelper.dirtyProperty(old).removeListener(weakMaterialChangeListener);
}
Material newMaterial = get();
if (newMaterial != null) {
! MaterialHelper.dirtyProperty(newMaterial).addListener(weakMaterialChangeListener);
}
impl_markDirty(DirtyBits.MATERIAL);
impl_geomChanged();
old = newMaterial;
}
*** 221,232 ****
public void impl_updatePeer() {
super.impl_updatePeer();
final NGShape3D peer = impl_getPeer();
if (impl_isDirty(DirtyBits.MATERIAL)) {
Material mat = getMaterial() == null ? DEFAULT_MATERIAL : getMaterial();
! mat.impl_updatePG(); // new material should be updated
! peer.setMaterial(mat.impl_getNGMaterial());
}
if (impl_isDirty(DirtyBits.NODE_DRAWMODE)) {
peer.setDrawMode(getDrawMode() == null ? DrawMode.FILL : getDrawMode());
}
if (impl_isDirty(DirtyBits.NODE_CULLFACE)) {
--- 222,233 ----
public void impl_updatePeer() {
super.impl_updatePeer();
final NGShape3D peer = impl_getPeer();
if (impl_isDirty(DirtyBits.MATERIAL)) {
Material mat = getMaterial() == null ? DEFAULT_MATERIAL : getMaterial();
! MaterialHelper.updatePG(mat); // new material should be updated
! peer.setMaterial(MaterialHelper.getNGMaterial(mat));
}
if (impl_isDirty(DirtyBits.NODE_DRAWMODE)) {
peer.setDrawMode(getDrawMode() == null ? DrawMode.FILL : getDrawMode());
}
if (impl_isDirty(DirtyBits.NODE_CULLFACE)) {
< prev index next >