|
@@ -291,6 +291,54 @@
|
|
|
|
|
|
return properties[properties.length - 1];
|
|
return properties[properties.length - 1];
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public serialize(name: string): any {
|
|
|
|
+ var root = {
|
|
|
|
+ children: [],
|
|
|
|
+ name: name,
|
|
|
|
+ type: 3, // Root node
|
|
|
|
+ properties: [] // Empty for root but required
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ for (var i = 0; i < this.actions.length; i++) {
|
|
|
|
+ var triggerObject = {
|
|
|
|
+ type: 0, // Trigger
|
|
|
|
+ children: [],
|
|
|
|
+ name: ActionManager.GetTriggerName(this.actions[i].trigger),
|
|
|
|
+ properties: []
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ // Serialize child action, recursively
|
|
|
|
+ this.actions[i].serialize(triggerObject);
|
|
|
|
+
|
|
|
|
+ // Add serialized trigger
|
|
|
|
+ root.children.push(triggerObject);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return root;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static GetTriggerName(trigger: number): string {
|
|
|
|
+ switch (trigger) {
|
|
|
|
+ case 0: return "NothingTrigger";
|
|
|
|
+ case 1: return "OnPickTrigger";
|
|
|
|
+ case 2: return "OnLeftPickTrigger";
|
|
|
|
+ case 3: return "OnRightPickTrigger";
|
|
|
|
+ case 4: return "OnCenterPickTrigger";
|
|
|
|
+ case 5: return "OnPickDownTrigger";
|
|
|
|
+ case 6: return "OnPickUpTrigger";
|
|
|
|
+ case 7: return "OnLongPressTrigger";
|
|
|
|
+ case 8: return "OnPointerOverTrigger";
|
|
|
|
+ case 9: return "OnPointerOutTrigger";
|
|
|
|
+ case 10: return "OnEveryFrameTrigger";
|
|
|
|
+ case 11: return "OnIntersectionEnterTrigger";
|
|
|
|
+ case 12: return "OnIntersectionExitTrigger";
|
|
|
|
+ case 13: return "OnKeyDownTrigger";
|
|
|
|
+ case 14: return "OnKeyUpTrigger";
|
|
|
|
+ case 15: return "OnPickOutTrigger";
|
|
|
|
+ default: return "";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
public static Parse(parsedActions: any, object: AbstractMesh, scene: Scene) {
|
|
public static Parse(parsedActions: any, object: AbstractMesh, scene: Scene) {
|
|
var actionManager = new BABYLON.ActionManager(scene);
|
|
var actionManager = new BABYLON.ActionManager(scene);
|