private void ParseObjectJSON(WebJSON.Object msg) { if (msg == null || msg.Index < -1) { return; } var objects = Controller.obj.levelController.Objects; if (msg.Index > objects.Count) { return; } Unity_ObjBehaviour o = msg.Index == -1 ? Controller.obj.levelController.RaymanObject : objects[msg.Index]; if (o == null) { return; } bool refreshObjectLists = false; // Now we have the object, parse it if (msg.X.HasValue) { o.ObjData.XPosition = (short)msg.X.Value; } if (msg.Y.HasValue) { o.ObjData.YPosition = (short)msg.Y.Value; } if (msg.IsEnabled.HasValue) { o.IsEnabled = msg.IsEnabled.Value; } if (msg.StateIndex.HasValue) { o.ObjData.CurrentUIState = msg.StateIndex.Value; } switch (o.ObjData) { case Unity_Object_R1 r1o: if (msg.R1_ETAIndex.HasValue && r1o.ETAIndex != msg.R1_ETAIndex.Value) { r1o.ETAIndex = msg.R1_ETAIndex.Value; refreshObjectLists = true; } if (msg.R1_DESIndex.HasValue && r1o.DESIndex != msg.R1_DESIndex.Value) { r1o.DESIndex = msg.R1_DESIndex.Value; refreshObjectLists = true; } break; case Unity_Object_R2 r2o: if (msg.R2_AnimGroupIndex.HasValue && r2o.AnimGroupIndex != msg.R2_AnimGroupIndex.Value) { r2o.AnimGroupIndex = msg.R2_AnimGroupIndex.Value; refreshObjectLists = true; } break; case Unity_Object_R1Jaguar r1jo: if (msg.R1Jaguar_EventDefinitionIndex.HasValue && r1jo.EventDefinitionIndex != msg.R1Jaguar_EventDefinitionIndex.Value) { r1jo.EventDefinitionIndex = msg.R1Jaguar_EventDefinitionIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBA go: if (msg.GBA_GraphicsDataIndex.HasValue && go.GraphicsDataIndex != msg.GBA_GraphicsDataIndex.Value) { go.GraphicsDataIndex = msg.GBA_GraphicsDataIndex.Value; refreshObjectLists = true; } break; } // TODO: More object settings? if (refreshObjectLists) { Send(GetSelectionMessageJSON(includeLists: true, includeDetails: true)); } }
private void ParseObjectJSON(WebJSON.Object msg) { if (msg == null || msg.Index < -1) { return; } var objects = Controller.obj.levelController.Objects; if (msg.Index > objects.Count) { return; } Unity_ObjBehaviour o = msg.Index == -1 ? Controller.obj.levelController.RaymanObject : objects[msg.Index]; if (o == null) { return; } bool refreshObjectLists = false; // Now we have the object, parse it if (msg.X.HasValue) { o.ObjData.XPosition = (short)msg.X.Value; } if (msg.Y.HasValue) { o.ObjData.YPosition = (short)msg.Y.Value; } if (msg.IsEnabled.HasValue) { o.IsEnabled = msg.IsEnabled.Value; } if (msg.StateIndex.HasValue) { o.ObjData.CurrentUIState = msg.StateIndex.Value; } if (msg.Position3D.HasValue && o.ObjData is Unity_Object_3D o3d && LevelEditorData.Level?.IsometricData != null) { o3d.Position = msg.Position3D.Value; } switch (o.ObjData) { case Unity_Object_R1 r1o: if (msg.R1_ETAIndex.HasValue && r1o.ETAIndex != msg.R1_ETAIndex.Value) { r1o.ETAIndex = msg.R1_ETAIndex.Value; refreshObjectLists = true; } if (msg.R1_DESIndex.HasValue && r1o.DESIndex != msg.R1_DESIndex.Value) { r1o.DESIndex = msg.R1_DESIndex.Value; refreshObjectLists = true; } break; case Unity_Object_R2 r2o: if (msg.R2_AnimGroupIndex.HasValue && r2o.AnimGroupIndex != msg.R2_AnimGroupIndex.Value) { r2o.AnimGroupIndex = msg.R2_AnimGroupIndex.Value; refreshObjectLists = true; } break; case Unity_Object_R1Jaguar r1jo: if (msg.R1Jaguar_EventDefinitionIndex.HasValue && r1jo.EventDefinitionIndex != msg.R1Jaguar_EventDefinitionIndex.Value) { r1jo.EventDefinitionIndex = msg.R1Jaguar_EventDefinitionIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBA gbao: if (msg.GBA_ActorModelIndex.HasValue && gbao.ActorModelIndex != msg.GBA_ActorModelIndex.Value) { gbao.ActorModelIndex = msg.GBA_ActorModelIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBC gbco: if (msg.GBC_ActorModelIndex.HasValue && gbco.ActorModelIndex != msg.GBC_ActorModelIndex.Value) { gbco.ActorModelIndex = msg.GBC_ActorModelIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBARRR rrro: if (msg.GBARRR_AnimationGroupIndex.HasValue && rrro.AnimationGroupIndex != msg.GBARRR_AnimationGroupIndex.Value) { rrro.AnimationGroupIndex = msg.GBARRR_AnimationGroupIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBARRRMode7Unused rrrMode7Unused_o: if (msg.GBARRR_AnimationGroupIndex.HasValue && rrrMode7Unused_o.AnimationGroupIndex != msg.GBARRR_AnimationGroupIndex.Value) { rrrMode7Unused_o.AnimationGroupIndex = msg.GBARRR_AnimationGroupIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBAIsometricRHR rhro: if (msg.GBAIsometric_AnimSetIndex.HasValue && rhro.AnimSetIndex != msg.GBAIsometric_AnimSetIndex.Value) { rhro.AnimSetIndex = msg.GBAIsometric_AnimSetIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBAIsometricSpyro spyro_o: if (msg.GBAIsometric_AnimSetIndex.HasValue && spyro_o.AnimSetIndex != msg.GBAIsometric_AnimSetIndex.Value) { spyro_o.AnimSetIndex = msg.GBAIsometric_AnimSetIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBAIsometricSpyro2_2D spyro2D_o: if (msg.GBAIsometric_AnimSetIndex.HasValue && spyro2D_o.AnimSetIndex != msg.GBAIsometric_AnimSetIndex.Value) { spyro2D_o.AnimSetIndex = msg.GBAIsometric_AnimSetIndex.Value; refreshObjectLists = true; } break; case Unity_Object_SNES snes_o: if (msg.SNES_GraphicsGroupIndex.HasValue && snes_o.GraphicsGroupIndex != msg.SNES_GraphicsGroupIndex.Value) { snes_o.GraphicsGroupIndex = msg.SNES_GraphicsGroupIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBAVV crashObj: if (msg.GBAVV_AnimSetIndex.HasValue && crashObj.AnimSetIndex != msg.GBAVV_AnimSetIndex.Value) { crashObj.AnimSetIndex = msg.GBAVV_AnimSetIndex.Value; refreshObjectLists = true; } break; case Unity_Object_GBAVVMode7 crashObj: if (msg.GBAVV_AnimSetIndex.HasValue && crashObj.AnimSetIndex != msg.GBAVV_AnimSetIndex.Value) { crashObj.AnimSetIndex = msg.GBAVV_AnimSetIndex.Value; refreshObjectLists = true; } break; } if (refreshObjectLists) { Send(GetSelectionMessageJSON(includeLists: true, includeDetails: true)); } }
private WebJSON.Object GetObjectJSON(Unity_ObjBehaviour obj, bool includeLists = false, bool includeDetails = false) { if (obj == null) { return(null); } var webObj = new WebJSON.Object() { Name = obj.ObjData.PrimaryName, SecondaryName = obj.ObjData.SecondaryName, Index = obj.Index, IsAlways = obj.ObjData.IsAlways, IsEnabled = obj.IsEnabled, IsEditor = obj.ObjData.IsEditor, // Updateable fields X = obj.ObjData.XPosition, Y = obj.ObjData.YPosition }; if (includeDetails) { // Common details webObj.AnimIndex = obj.ObjData.AnimationIndex; if (includeLists) { webObj.StateNames = obj.ObjData.UIStateNames; } webObj.StateIndex = obj.ObjData.CurrentUIState; // Specific properties for type switch (obj.ObjData) { case Unity_Object_R1 r1obj: webObj.R1_Type = (ushort)r1obj.EventData.Type; webObj.R1_DESIndex = r1obj.DESIndex; webObj.R1_ETAIndex = r1obj.ETAIndex; webObj.R1_Etat = r1obj.EventData.Etat; webObj.R1_SubEtat = r1obj.EventData.SubEtat; webObj.R1_OffsetBX = r1obj.EventData.OffsetBX; webObj.R1_OffsetBY = r1obj.EventData.OffsetBY; webObj.R1_OffsetHY = r1obj.EventData.OffsetHY; webObj.R1_FollowSprite = r1obj.EventData.FollowSprite; webObj.R1_HitPoints = r1obj.EventData.ActualHitPoints; webObj.R1_HitSprite = r1obj.EventData.HitSprite; webObj.R1_FollowEnabled = r1obj.EventData.GetFollowEnabled(LevelEditorData.CurrentSettings); webObj.R1_DisplayPrio = r1obj.EventData.DisplayPrio; if (includeLists) { webObj.R1_Commands = r1obj.EventData.Commands?.ToTranslatedStrings(r1obj.EventData.LabelOffsets); webObj.R1_DESNames = r1obj.ObjManager.DES.Select(x => x.DisplayName).ToArray(); webObj.R1_ETANames = r1obj.ObjManager.ETA.Select(x => x.DisplayName).ToArray(); } break; case Unity_Object_R2 r2obj: webObj.R1_Type = (ushort)r2obj.EventData.EventType; webObj.R2_AnimGroupIndex = r2obj.AnimGroupIndex; webObj.R2_MapLayer = r2obj.EventData.MapLayer.ToString(); webObj.R1_Etat = r2obj.EventData.Etat; webObj.R1_SubEtat = r2obj.EventData.SubEtat; webObj.R1_OffsetBX = r2obj.EventData.CollisionData?.OffsetBX; webObj.R1_OffsetBY = r2obj.EventData.CollisionData?.OffsetBY; webObj.R1_OffsetHY = r2obj.EventData.CollisionData?.OffsetHY; webObj.R1_DisplayPrio = r2obj.EventData.DisplayPrio; if (includeLists) { webObj.R2_AnimGroupNames = r2obj.ObjManager.AnimGroups.Select(x => x.Pointer?.ToString() ?? "N/A").ToArray(); } break; case Unity_Object_R1Jaguar r1jaguarObj: webObj.R1Jaguar_EventDefinitionIndex = r1jaguarObj.EventDefinitionIndex; webObj.R1Jaguar_ComplexState = r1jaguarObj.ComplexStateIndex; webObj.R1Jaguar_State = r1jaguarObj.StateIndex; if (includeLists) { webObj.R1Jaguar_EventDefinitionNames = r1jaguarObj.ObjManager.EventDefinitions.Select(x => x.DisplayName).ToArray(); } break; case Unity_Object_GBA gbaObj: webObj.GBA_ActorID = gbaObj.Actor.ActorID; webObj.GBA_GraphicsDataIndex = gbaObj.GraphicsDataIndex; webObj.GBA_State = gbaObj.Actor.StateIndex; if (includeLists) { webObj.GBA_GraphicsDataNames = gbaObj.ObjManager.GraphicsDatas.Select(x => x.Index.ToString()).ToArray(); } break; } } return(webObj); }
private WebJSON.Object GetObjectJSON(Unity_ObjBehaviour obj, bool includeLists = false, bool includeDetails = false) { if (obj == null) { return(null); } var webObj = new WebJSON.Object() { Name = obj.ObjData.PrimaryName, SecondaryName = obj.ObjData.SecondaryName, Index = obj.Index, IsAlways = obj.ObjData.IsAlways, IsEnabled = obj.IsEnabled, IsEditor = obj.ObjData.IsEditor, // Updateable fields X = obj.ObjData.XPosition, Y = obj.ObjData.YPosition }; if (obj.ObjData is Unity_Object_3D o3d && LevelEditorData.Level?.IsometricData != null) { webObj.Position3D = o3d.Position; } if (includeDetails) { // Common details webObj.AnimIndex = obj.ObjData.AnimationIndex; if (includeLists) { webObj.StateNames = obj.ObjData.UIStateNames; } webObj.StateIndex = obj.ObjData.CurrentUIState; // Specific properties for type switch (obj.ObjData) { case Unity_Object_R1 r1obj: webObj.R1_Type = (ushort)r1obj.EventData.Type; webObj.R1_DESIndex = r1obj.DESIndex; webObj.R1_ETAIndex = r1obj.ETAIndex; webObj.R1_Etat = r1obj.EventData.Etat; webObj.R1_SubEtat = r1obj.EventData.SubEtat; webObj.R1_OffsetBX = r1obj.EventData.OffsetBX; webObj.R1_OffsetBY = r1obj.EventData.OffsetBY; webObj.R1_OffsetHY = r1obj.EventData.OffsetHY; webObj.R1_FollowSprite = r1obj.EventData.FollowSprite; webObj.R1_HitPoints = r1obj.EventData.ActualHitPoints; webObj.R1_HitSprite = r1obj.EventData.HitSprite; webObj.R1_FollowEnabled = r1obj.EventData.GetFollowEnabled(LevelEditorData.CurrentSettings); webObj.R1_DisplayPrio = r1obj.EventData.DisplayPrio; if (includeLists) { webObj.R1_Commands = r1obj.EventData.Commands?.ToTranslatedStrings(r1obj.EventData.LabelOffsets); webObj.R1_DESNames = r1obj.ObjManager.DES.Select(x => x.DisplayName).ToArray(); webObj.R1_ETANames = r1obj.ObjManager.ETA.Select(x => x.DisplayName).ToArray(); } break; case Unity_Object_R2 r2obj: webObj.R1_Type = (ushort)r2obj.EventData.EventType; webObj.R2_MapLayer = r2obj.EventData.MapLayer.ToString(); webObj.R1_Etat = r2obj.EventData.Etat; webObj.R1_SubEtat = r2obj.EventData.SubEtat; webObj.R1_OffsetBX = r2obj.EventData.CollisionData?.OffsetBX; webObj.R1_OffsetBY = r2obj.EventData.CollisionData?.OffsetBY; webObj.R1_OffsetHY = r2obj.EventData.CollisionData?.OffsetHY; webObj.R1_HitPoints = r2obj.EventData.HitPoints; webObj.R1_DisplayPrio = r2obj.EventData.DisplayPrio; if (r2obj.AnimGroupIndex != -1) { webObj.R2_AnimGroupIndex = r2obj.AnimGroupIndex; if (includeLists) { webObj.R2_AnimGroupNames = r2obj.ObjManager.AnimGroups.Select(x => x.Pointer?.ToString() ?? "N/A").ToArray(); } } break; case Unity_Object_R1Jaguar r1jaguarObj: webObj.R1Jaguar_EventDefinitionIndex = r1jaguarObj.EventDefinitionIndex; webObj.R1Jaguar_ComplexState = r1jaguarObj.ComplexStateIndex; webObj.R1Jaguar_State = r1jaguarObj.StateIndex; if (includeLists) { webObj.R1Jaguar_EventDefinitionNames = r1jaguarObj.ObjManager.EventDefinitions.Select(x => x.DisplayName).ToArray(); } break; case Unity_Object_GBA gbaObj: webObj.GBA_ActorID = gbaObj.Actor.ActorID; webObj.GBA_Action = gbaObj.Actor.ActionIndex; if (gbaObj.ActorModelIndex != -1) { webObj.GBA_ActorModelIndex = gbaObj.ActorModelIndex; if (includeLists) { webObj.GBA_ActorModelNames = gbaObj.ObjManager.ActorModels.Select(x => x.DisplayName).ToArray(); } } break; case Unity_Object_GBAIsometricRHR rhrObj: webObj.GBAIsometric_AnimSetIndex = rhrObj.AnimSetIndex; if (includeLists) { webObj.GBAIsometric_AnimSetNames = rhrObj.ObjManager.AnimSets.Select(x => x.Name).ToArray(); } break; case Unity_Object_GBAIsometricSpyro spyroObj: if (spyroObj.AnimSetIndex != -1) { webObj.GBAIsometric_AnimSetIndex = spyroObj.AnimSetIndex; if (includeLists) { webObj.GBAIsometric_AnimSetNames = spyroObj.ObjManager.AnimSets.Select((x, i) => i.ToString()).ToArray(); } } break; case Unity_Object_GBAIsometricSpyro2_2D spyro2DObj: if (spyro2DObj.AnimSetIndex != -1) { webObj.GBAIsometric_AnimSetIndex = spyro2DObj.AnimSetIndex; if (includeLists) { webObj.GBAIsometric_AnimSetNames = spyro2DObj.ObjManager.AnimSets.Select((x, i) => i.ToString()).ToArray(); } } break; case Unity_Object_GBC gbcObj: webObj.GBC_XlateID = gbcObj.Actor.XlateID; if (gbcObj.ActorModelIndex != -1) { webObj.GBC_ActorModelIndex = gbcObj.ActorModelIndex; if (includeLists) { webObj.GBC_ActorModelNames = gbcObj.ObjManager.ActorModels.Select(x => x.Index.ToString()).ToArray(); } } break; case Unity_Object_GBARRR rrrObj: webObj.GBARRR_GraphicsIndex = (int)rrrObj.Object.P_GraphicsIndex; webObj.GBARRR_GraphicsKey = rrrObj.Object.Ushort_0C; if (rrrObj.AnimationGroupIndex != -1) { webObj.GBARRR_AnimationGroupIndex = rrrObj.AnimationGroupIndex; if (includeLists) { webObj.GBARRR_AnimationGroupNames = rrrObj.ObjManager.GraphicsDatas.Select((g, i) => i.ToString()).ToArray(); } } break; case Unity_Object_GBARRRMode7Unused rrrMode7UnusedObj: webObj.GBARRR_AnimationGroupIndex = rrrMode7UnusedObj.AnimationGroupIndex; if (includeLists) { webObj.GBARRR_AnimationGroupNames = rrrMode7UnusedObj.ObjManager.GraphicsDatas.Select((g, i) => g.BlockIndex.ToString()).ToArray(); } break; case Unity_Object_SNES snesObj: webObj.SNES_GraphicsGroupIndex = snesObj.GraphicsGroupIndex; if (includeLists) { webObj.SNES_GraphicsGroupNames = snesObj.ObjManager.GraphicsGroups.Select((g, i) => g.Name).ToArray(); } break; case Unity_Object_GBAVV crashObj: if (crashObj.ObjParams?.Any() == true) { webObj.GBAVV_ObjParams = Util.ByteArrayToHexString(crashObj.ObjParams); } if (crashObj.AnimSetIndex != -1) { webObj.GBAVV_AnimSetIndex = crashObj.AnimSetIndex; if (includeLists) { webObj.GBAVV_AnimSetNames = crashObj.ObjManager.AnimSets.Select((x, i) => i.ToString()).ToArray(); } } break; case Unity_Object_GBAVVMode7 crashObj: if (crashObj.AnimSetIndex != -1) { webObj.GBAVV_AnimSetIndex = crashObj.AnimSetIndex; if (includeLists) { webObj.GBAVV_AnimSetNames = crashObj.ObjManager.AnimSets.Select((x, i) => i.ToString()).ToArray(); } } break; } } return(webObj); }