public static SetAttributeValueFunc GetAttributeSetValueFunction(HEU_AttributeData.AttributeType attrType, HEU_ToolsInfo.PaintMergeMode paintMergeMode) { SetAttributeValueFunc setAttrFunc = null; if (attrType == HEU_AttributeData.AttributeType.INT) { if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.REPLACE) { setAttrFunc = HEU_AttributesStore.ReplaceAttributeValueInt; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.ADD) { setAttrFunc = HEU_AttributesStore.AddAttributeValueInt; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.SUBTRACT) { setAttrFunc = HEU_AttributesStore.SubtractAttributeValueInt; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.MULTIPLY) { setAttrFunc = HEU_AttributesStore.MultiplyAttributeValueInt; } } else if (attrType == HEU_AttributeData.AttributeType.FLOAT) { if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.REPLACE) { setAttrFunc = HEU_AttributesStore.ReplaceAttributeValueFloat; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.ADD) { setAttrFunc = HEU_AttributesStore.AddAttributeValueFloat; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.SUBTRACT) { setAttrFunc = HEU_AttributesStore.SubtractAttributeValueFloat; } else if (paintMergeMode == HEU_ToolsInfo.PaintMergeMode.MULTIPLY) { setAttrFunc = HEU_AttributesStore.MultiplyAttributeValueFloat; } } else if (attrType == HEU_AttributeData.AttributeType.STRING) { setAttrFunc = HEU_AttributesStore.SetAttributeValueString; } return setAttrFunc; }
public void PaintAttribute(HEU_AttributeData attributeData, HEU_ToolsInfo sourceTools, int attributeIndex, float paintFactor, SetAttributeValueFunc setAttrFunc) { if(attributeData._attributeState == HEU_AttributeData.AttributeState.INVALID) { return; } int targetIndex = attributeIndex * attributeData._attributeInfo.tupleSize; setAttrFunc(attributeData, targetIndex, sourceTools, 0, paintFactor); SetAttributeDataDirty(attributeData); }