summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DTCallback.c4
-rw-r--r--DTCallbackCompatibility.c27
2 files changed, 29 insertions, 2 deletions
diff --git a/DTCallback.c b/DTCallback.c
index 5e6fb3f..820dfb7 100644
--- a/DTCallback.c
+++ b/DTCallback.c
@@ -9,8 +9,8 @@ static const CallbackTarget_Scenario = -3;
global func GlobalCallback(string name) { return [CallbackTarget_Global, name]; }
global func ScenarioCallback(string name) { return [CallbackTarget_Scenario, name]; }
-global func ObjectCallback(string name, object target, bool fast) { return [target || this || FatalError("ObjectCallback without target object"), name, fast]; }
-global func DefinitionCallback(string name, id target, bool fast) { return [target || GetID() || FatalError("DefinitionCallback without target definition"), name, fast]; }
+global func ObjectCallback(string name, bool fast, object target) { return [target || this || FatalError("ObjectCallback without target object"), name, fast]; }
+global func DefinitionCallback(string name, bool fast, id target) { return [target || GetID() || FatalError("DefinitionCallback without target definition"), name, fast]; }
global func Callback(string name, target) { return [target || this || GetID() || CallbackTarget_Global, name]; }
global func BindCallback(callback, array binding) { return [CallbackTarget_Bind, callback, binding]; }
diff --git a/DTCallbackCompatibility.c b/DTCallbackCompatibility.c
new file mode 100644
index 0000000..d408954
--- /dev/null
+++ b/DTCallbackCompatibility.c
@@ -0,0 +1,27 @@
+#strict 2
+
+// NOTE: Make sure this is loaded after DTCallback.c and overloads the original functions
+
+global func ObjectCallback(string name, targetOrFast, bool fast)
+{
+ if(GetType(targetOrFast) == C4V_C4Object)
+ {
+ return _inherited(name, fast, targetOrFast);
+ }
+ else
+ {
+ return _inherited(name, targetOrFast, fast);
+ }
+}
+
+global func DefinitionCallback(string name, targetOrFast, bool fast)
+{
+ if(GetType(targetOrFast) == C4V_C4ID)
+ {
+ return _inherited(name, fast, targetOrFast);
+ }
+ else
+ {
+ return _inherited(name, targetOrFast, fast);
+ }
+}