public void UpdateObject(ObjectDto objectDto) { GameEntity entityObject = GameStateData.GetEntity(objectDto.InstanceId); entityObject.name.Value = objectDto.Name; OnUpdateObject?.Invoke(entityObject, objectDto); }
public static void SpawnObject(int objectId) { if (objectId == 0) { return; } ProjectData.ObjectsAreChanged = true; var transforms = new Dictionary <int, TransformDT>(); GameObject gameObject = GameStateData.GetPrefabGameObject(objectId); int id = gameObject.GetComponent <ObjectId>().Id; transforms.Add(id, _spawnView.transform.ToTransformDT()); SpawnInitParams param = new SpawnInitParams { IdObject = objectId, IdLocation = ProjectData.SceneId, Transforms = transforms }; if (ParentManager.Instance != null && ParentManager.Instance.ParentCommand == ParentCommand.SetNew) { param.ParentId = ParentManager.Instance.GetSelectedParent().Id; } ICommand command = new SpawnCommand(param); command.Execute(); }
public static void SpawnSceneObjects(int newSceneId, int oldSceneId) { if (newSceneId == oldSceneId) { _logger.Info($"Objects for scene {newSceneId} already loaded"); return; } _logger.Info($"Loading objects for scene {newSceneId}"); ParentManager.Instance.ParentCommand = ParentCommand.None; if (oldSceneId != 0 && LoaderAdapter.LoaderType == typeof(ApiLoader)) { AMQPClient.UnSubscribeLogicChange(oldSceneId); AMQPClient.UnSubscribeCompilationError(oldSceneId); AMQPClient.UnSubscribeObjectChange(oldSceneId); } GameStateData.ClearObjects(); ProjectData.ObjectsAreChanged = false; Data.ServerData.Scene location = ProjectData.ProjectStructure.Scenes.GetProjectScene(newSceneId); LogicInstance logicInstance = new LogicInstance(newSceneId); GameStateData.RefreshLogic(logicInstance, location.AssemblyBytes); CreateSpawnEntities(location.SceneObjects, newSceneId); if (LoaderAdapter.LoaderType == typeof(ApiLoader)) { AMQPClient.SubscribeLogicChange(newSceneId); AMQPClient.SubscribeCompilationError(newSceneId); AMQPClient.SubscribeObjectChange(ProjectData.ProjectId, newSceneId); } }
/// <summary> /// Spawn object with full defined transform /// </summary> /// <param name="objectId">Object Id</param> /// <param name="targetTransform">Transform which define object's position, rotation and scale</param> public void SpawnObject(int objectId, Transform targetTransform) { if (objectId == 0) { return; } ProjectData.ObjectsAreChanged = true; var transforms = new Dictionary <int, TransformDT>(); var prefabGo = GameStateData.GetPrefabGameObject(objectId); var rootId = prefabGo.GetComponent <ObjectId>().Id; var rootTransform = targetTransform.ToTransformDT(); transforms.Add(rootId, rootTransform); var spawnParams = new SpawnInitParams() { IdObject = objectId, IdLocation = ProjectData.SceneId, Transforms = transforms }; if (ParentManager.Instance != null && ParentManager.Instance.ParentCommand == ParentCommand.SetNew) { spawnParams.ParentId = ParentManager.Instance.GetSelectedParent().Id; } ICommand command = new SpawnCommand(spawnParams); command.Execute(); }
private IEnumerator RestoreJointsOnNextFrame(Dictionary <int, JointData> joints) { JointBehaviour.IsTempConnectionCreated = true; yield return(new WaitForEndOfFrame()); Debug.Log("<Color=Olive>Restore joints started!</Color>"); var jointsScene = FindObjectsOfType <JointBehaviour>(); foreach (JointBehaviour joint in jointsScene) { joint.UnLockAndDisconnectPoints(); } foreach (var joint in joints) { int instanseId = joint.Key; JointData jointData = joint.Value; ObjectController objectController = GameStateData.GetObjectInLocation(instanseId); if (objectController == null) { continue; } JointBehaviour jointBehaviour = objectController.RootGameObject.GetComponent <JointBehaviour>(); if (jointBehaviour == null) { continue; } var jointPoints = Helper.GetJointPoints(objectController.RootGameObject); foreach (var jointConnectionsData in jointData.JointConnetionsData) { int pointId = jointConnectionsData.Key; JointPoint myJointPoint = jointPoints[pointId]; JointConnetionsData connectionData = jointConnectionsData.Value; ObjectController otherObjectController = GameStateData.GetObjectInLocation(connectionData.ConnectedObjectInstanceId); var otherJointPoints = Helper.GetJointPoints(otherObjectController.RootGameObject); JointPoint otherJointPoint = otherJointPoints[connectionData.ConnectedObjectJointPointId]; jointBehaviour.ConnectToJointPoint(myJointPoint, otherJointPoint); myJointPoint.IsForceLocked = connectionData.ForceLocked; otherJointPoint.IsForceLocked = connectionData.ForceLocked; } } yield return(new WaitForEndOfFrame()); JointBehaviour.IsTempConnectionCreated = false; yield return(true); }
public static void ReloadSceneObjects() { _logger.Info($"Reloading objects on scene {ProjectData.SceneId}"); ParentManager.Instance.ParentCommand = ParentCommand.None; GameStateData.ClearObjects(); ProjectData.ObjectsAreChanged = false; Data.ServerData.Scene location = ProjectData.ProjectStructure.Scenes.GetProjectScene(ProjectData.SceneId); LogicInstance logicInstance = new LogicInstance(ProjectData.SceneId); GameStateData.RefreshLogic(logicInstance, location.AssemblyBytes); CreateSpawnEntities(location.SceneObjects, ProjectData.SceneId); }
public void SpawnAsset(SpawnInitParams paramObject, int idPhoton) { if (GameStateData.GetWrapperCollection().Exist(paramObject.IdInstance)) { Debug.Log($"Object with id {paramObject.IdInstance} already exist!"); return; } Contexts contexts = Contexts.sharedInstance; var entity = contexts.game.CreateEntity(); entity.AddSpawnAsset(paramObject, idPhoton); }
public static void SetSpawnedObject(int objectId) { ProjectData.SelectedObjectIdToSpawn = objectId; if (_spawnView != null) { Object.Destroy(_spawnView); } GameObject go = GameStateData.GetPrefabGameObject(objectId); _spawnView = Object.Instantiate(go, GameObjects.Instance.SpawnPoint); SetGameObjectToSpawn(_spawnView); }
/// <summary> /// Initialize object in platform /// </summary> /// <param name="idObject">Object type id. Used for save.</param> /// <param name="spawnInitParams">Parameters for spawn</param> /// <param name="spawnedGameObject">Game object for init</param> public static void InitObject(int idObject, SpawnInitParams spawnInitParams, GameObject spawnedGameObject, Config config) { //var photonView = AddPhoton(spawnedGameObject, spawnInitParams.spawnAsset.IdPhoton); PhotonView photonView = AddPhoton(spawnedGameObject, 0); GameObject gameObjectLink = spawnedGameObject; int idLocation = spawnInitParams.IdLocation; int idServer = spawnInitParams.IdServer; int idInstance = spawnInitParams.IdInstance; bool embedded = spawnInitParams.Embedded; string name = spawnInitParams.Name; var parentId = spawnInitParams.ParentId; ObjectController parent = null; if (parentId != null) { parent = GameStateData.GetObjectInLocation(parentId.Value); } WrappersCollection wrappersCollection = null; if (idLocation != 0) { wrappersCollection = GameStateData.GetWrapperCollection(); } InitObjectParams initObjectParams = new InitObjectParams { Id = idInstance, IdObject = idObject, IdLocation = idLocation, IdServer = idServer, Asset = gameObjectLink, Name = name, Photonview = photonView, RootGameObject = spawnedGameObject, WrappersCollection = wrappersCollection, Parent = parent, Embedded = embedded, Config = config }; var newController = new ObjectController(initObjectParams); ObjectControllerCreated?.Invoke(newController); }
public static void ReloadJointConnections(ObjectController objectController, JointData saveJointData) { JointBehaviour jointBehaviour = objectController.RootGameObject.GetComponent <JointBehaviour>(); var jointPoints = GetJointPoints(objectController.RootGameObject); foreach (var jointConnectionsData in saveJointData.JointConnetionsData) { int pointId = jointConnectionsData.Key; JointPoint myJointPoint = jointPoints[pointId]; JointConnetionsData connectionData = jointConnectionsData.Value; ObjectController otherObjectController = GameStateData.GetObjectInLocation(connectionData.ConnectedObjectInstanceId); var otherJointPoints = GetJointPoints(otherObjectController.RootGameObject); JointPoint otherJointPoint = otherJointPoints[connectionData.ConnectedObjectJointPointId]; jointBehaviour.ConnectToJointPoint(myJointPoint, otherJointPoint); myJointPoint.IsForceLocked = connectionData.ForceLocked; otherJointPoint.IsForceLocked = connectionData.ForceLocked; } }
private IEnumerator BeforeLoadSceneCoroutine(bool otherLocation) { yield return(StartCoroutine(FadeIn())); if (otherLocation) { GameStateData.ClearObjects(); GameStateData.ClearLogic(); yield return(StartCoroutine(LoadLoaderScene())); yield return(StartCoroutine(UnloadSceneAndResources())); } else { Helper.ReloadSceneObjects(); } ResetPlayerRigPosition(); ProjectData.OnSceneCleared(); yield return(StartCoroutine(FadeOut())); }
/// <summary> /// Spawn object in position /// </summary> /// <param name="objectId">Object Id</param> /// <param name="position">Object's spawn position</param> public void SpawnObject(int objectId, Vector3 position) { if (objectId == 0) { return; } ProjectData.ObjectsAreChanged = true; var transforms = new Dictionary <int, TransformDT>(); var prefabGo = GameStateData.GetPrefabGameObject(objectId); var rootId = prefabGo.GetComponent <ObjectId>().Id; var rootTransform = new TransformDT() { PositionDT = new Vector3DT(position), RotationDT = new QuaternionDT(Quaternion.identity), ScaleDT = new Vector3DT(Vector3.one) }; transforms.Add(rootId, rootTransform); var spawnParams = new SpawnInitParams() { IdObject = objectId, IdLocation = ProjectData.SceneId, Transforms = transforms }; if (ParentManager.Instance != null && ParentManager.Instance.ParentCommand == ParentCommand.SetNew) { spawnParams.ParentId = ParentManager.Instance.GetSelectedParent().Id; } ICommand command = new SpawnCommand(spawnParams); command.Execute(); }