summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DefCore.txt4
-rw-r--r--Graphics.pngbin0 -> 167 bytes
-rw-r--r--Script.c35
3 files changed, 39 insertions, 0 deletions
diff --git a/DefCore.txt b/DefCore.txt
new file mode 100644
index 0000000..22fbfd6
--- /dev/null
+++ b/DefCore.txt
@@ -0,0 +1,4 @@
+[DefCore]
+id=CM7I
+Name=ContextmenuEntryHelper
+Category=C4D_StaticBack
diff --git a/Graphics.png b/Graphics.png
new file mode 100644
index 0000000..94ed211
--- /dev/null
+++ b/Graphics.png
Binary files differ
diff --git a/Script.c b/Script.c
new file mode 100644
index 0000000..3d4acf7
--- /dev/null
+++ b/Script.c
@@ -0,0 +1,35 @@
+#strict 2
+
+static ContextMenuEntry_Helper;
+static const DT_EffectContext_Helper = CM7I;
+
+global func AddContextMenuEntry(callback, condition, object target)
+{
+ ContextMenuEntry_Helper = ContextMenuEntry_Helper || CreateObject(CM7I);
+ return AddEffect("IntCtxMenuEntry" , target || this, 1, 0, ContextMenuEntry_Helper, 0, callback, condition);
+}
+
+global func RemoveContextMenuEntry(int id, object target)
+{
+ return RemoveEffect(0, target || this, id);
+}
+
+func FxIntCtxMenuEntryStart(object target, int effectNumber, int temp, callback, condition)
+{
+ if(!temp)
+ {
+ EffectVar(0, target, effectNumber) = callback;
+ EffectVar(1, target, effectNumber) = condition;
+ }
+}
+
+func FxIntCtxMenuEntryConditionContext(object target, int effectNumber, object menuObject, id image)
+{
+ return !EffectVar(1, target, effectNumber) || Call(EffectVar(1, target, effectNumber), [target, effectNumber, menuObject, image]);
+}
+
+func FxIntCtxMenuEntryContext(object target, int effectNumber, object menuObject, id image)
+{
+ [Dynamischer Eintrag|Condition=FxIntCtxMenuEntryConditionContext|Image=FLNT]
+ return EffectVar(0, target, effectNumber) && target->Call(EffectVar(0, target, effectNumber), [target, effectNumber, menuObject, image]);
+}