protected override void OnDeativeObjectActive(int id, MapObjectEntity mapObject, GameObject gameObject)
 {
     MapObjectUtility.AddRawGameObject <FracturedObject>(mapObject, gameObject);
     MapObjectUtility.RecordMapObj(id, (int)ETriggerObjectType.Door, mapObject);
     MapObjectUtility.SendLastEvent(mapObject);
     InitRotation(mapObject, gameObject);
 }
Exemple #2
0
 public void Add(int id, MapObjectEntity obj)
 {
     if (_mapObjDict.ContainsKey(id))
     {
         return;
     }
     _mapObjDict.Add(id, obj);
 }
        private void SendDetachChunkEventToServer(MapObjectEntity destructibleObject, int chunkId)
        {
            var evt = ChunkSyncEvent.Allocate();

            evt.EType          = TriggerObjectSyncEventType.DetachChunk;
            evt.SourceObjectId = destructibleObject.entityKey.Value.EntityId;
            evt.ChunkId        = chunkId;

            MapObjectUtility.SendTriggerObjectEventToServer(destructibleObject, evt);
        }
        private void InitRotation(MapObjectEntity mapObject, GameObject gameObject)
        {
            var rot         = mapObject.doorData.Rotation;
            var eulerAngles = gameObject.transform.localEulerAngles;

            if (!rot.Equals(eulerAngles.y))
            {
                eulerAngles.y = rot;
                gameObject.transform.localEulerAngles = eulerAngles;
            }
        }
        private static void AddRawGameObject(IEntity obj, GameObject gameObject)
        {
            MapObjectEntity mapObject = obj as MapObjectEntity;

            mapObject.AddRawGameObject(gameObject);
            var entityReference = gameObject.GetComponent <EntityReference>();

            if (entityReference == null)
            {
                entityReference = gameObject.AddComponent <EntityReference>();
            }
            entityReference.Init(mapObject.entityAdapter);
        }
Exemple #6
0
        public void AddToCanvas(Canvas canvas)
        {
            canvas.Children.Add(Rectangle);
            Canvas.SetLeft(Rectangle, MapObjectMetrics.XOfCanvas);
            Canvas.SetTop(Rectangle, MapObjectMetrics.YOfCanvas);
            canvas.Children.Add(MapObjectDoor.GetDoor());
            canvas.Children.Add(MapObjectNameTextBlock);

            if (MapObjectEntity.GetType() == typeof(Building))
            {
                ((Building)MapObjectEntity).AddBuildinLayersButtonsToCanvas(canvas);
            }
        }
Exemple #7
0
        public static void AddRawGameObject <T>(IEntity obj, GameObject go) where T : FracturedBaseObject
        {
            MapObjectEntity mapObject = obj as MapObjectEntity;

            mapObject.AddRawGameObject(go);
            var entityReference = go.GetComponent <EntityReference>();

            if (entityReference == null)
            {
                entityReference = go.AddComponentUncheckRequireAndDisallowMulti <EntityReference>();
            }
            entityReference.Init(mapObject.entityAdapter);
        }
        private void ProcessDetachChunkEvent(MapObjectEntity sceneObject, ChunkSyncEvent evt)
        {
            var go = sceneObject.rawGameObject.Value;
            var fracturedObject = go.GetComponent <FracturedObject>();

            if (fracturedObject != null)
            {
                var data = sceneObject.destructibleData;
                if (!data.IsInDestructionState(evt.ChunkId))
                {
                    fracturedObject.CollapseChunk(evt.ChunkId);
                    sceneObject.flagImmutability.LastModifyServerTime = _currentTime.CurrentTime;
                }
            }
        }
Exemple #9
0
        public static void SendTriggerObjectEventToServer(MapObjectEntity o,
                                                          TriggerObjectSyncEvent evt)
        {
            var mapObject = (MapObjectEntity)o;

            if (!mapObject.hasTriggerObjectEvent)
            {
                mapObject.AddTriggerObjectEvent(new Queue <TriggerObjectSyncEvent>());
            }

            mapObject.triggerObjectEvent.SyncEvents.Enqueue(evt);
            if (!mapObject.isTriggerObjectEventFlag)
            {
                mapObject.isTriggerObjectEventFlag = true;
            }
        }
Exemple #10
0
        public static void SendLastEvent(MapObjectEntity entity)
        {
            var rawObj = entity.rawGameObject.Value;

            if (!_triggerEvent.ContainsKey(rawObj))
            {
                return;
            }
            foreach (var evt in _triggerEvent[rawObj])
            {
                evt.SourceObjectId = entity.entityKey.Value.EntityId;
                SendTriggerObjectEventToServer(entity, evt);
            }
            _triggerEvent[rawObj].Clear();
            _triggerEvent.Remove(rawObj);
        }
Exemple #11
0
        protected void LinkGameObjectToSceneObject(MapObjectEntity mapObject, GameObject gameObject)
        {
            MapObjectUtility.AddRawGameObject <FracturedGlassyObject>(mapObject, gameObject);

            var glassyData = mapObject.glassyData;
            var fo         = gameObject.GetComponent <FracturedGlassyObject>();

            if (fo != null && glassyData.HasAnyChunkBroken())
            {
                var chunkId = glassyData.GetNextBrokenChunkId();
                while (chunkId >= 0)
                {
                    fo.PutToBrokenState(chunkId);
                    chunkId = glassyData.GetNextBrokenChunkId(chunkId);
                }
            }
        }
        private void ProcessBreakChunkEvent(MapObjectEntity mapObject, ChunkSyncEvent evt)
        {
            var go = mapObject.rawGameObject.Value;
            var fracturedGlassyObject = go.GetComponent <FracturedGlassyObject>();

            if (fracturedGlassyObject != null)
            {
                var data    = mapObject.glassyData;
                var chunkId = evt.ChunkId;
                if (!data.IsBroken(chunkId))
                {
                    fracturedGlassyObject.PutToBrokenState(chunkId);
                    data.SetBroken(chunkId);
                    mapObject.flagImmutability.LastModifyServerTime = _currentTime.CurrentTime;
                }
            }
        }
Exemple #13
0
        public MapObject(MapObjectEntity mapObjectEntity, MapObjectMetrics mapObjectMetrics, MapObjectDoor mapObjectDoor)
        {
            MapObjectEntity = mapObjectEntity;

            if (MapObjectEntity.GetType() == typeof(Building))
            {
                ((Building)MapObjectEntity).BuildingLayersButtons.MapObjectMetrics = mapObjectMetrics;
            }

            MapObjectMetrics = mapObjectMetrics;

            MapObjectDoor = mapObjectDoor;
            MapObjectDoor.MapObjectMetrics = mapObjectMetrics;

            RectangleInitialization();
            if (mapObjectEntity.MapObjectType.TypeOfMapObject == TypeOfMapObject.ROAD)
            {
                LineInitialization();
            }
            PositionObjectNameTextBlock();
        }
Exemple #14
0
        public static MapObjectEntity GetMapObjectOfFracturedHittable(FracturedHittable fracturedHittable)
        {
            var             testChunkAdpater = fracturedHittable as FracturedObjectChunkAdapter;
            MapObjectEntity result           = null;

            if (testChunkAdpater != null && testChunkAdpater.FracturedObjectSource != null)
            {
                return(GetMapObjectByGameObject(testChunkAdpater.FracturedObjectSource.gameObject));
            }

            var testFracturedChunk = fracturedHittable as FracturedChunk;

            if (testFracturedChunk != null)
            {
                return(GetMapObjectOfFracturedChunk(testFracturedChunk));
            }

            var testFracturedGlassyChunk = fracturedHittable as FracturedGlassyChunk;

            if (testFracturedGlassyChunk != null)
            {
                return(GetMapObjectOfFracturedChunk(testFracturedGlassyChunk));
            }

            var testFracturedObject = fracturedHittable as FracturedObject;

            if (testFracturedObject != null)
            {
                return(GetMapObjectByGameObject(testFracturedObject.gameObject));
            }

            var testGlassyChunkAdapter = fracturedHittable as FracturedGlassyChunkAdapter;

            if (testGlassyChunkAdapter != null)
            {
                return(GetMapObjectByGameObject(testGlassyChunkAdapter.FracturedObjectSource.gameObject));
            }

            return(null);
        }
Exemple #15
0
 protected abstract void OnDeativeObjectActive(int id, MapObjectEntity mapObject, GameObject gameObject);
Exemple #16
0
 protected override void OnDeativeObjectActive(int id, MapObjectEntity mapObject, GameObject gameObject)
 {
     LinkGameObjectToSceneObject(mapObject, gameObject);
     MapObjectUtility.RecordMapObj(id, (int)ETriggerObjectType.GlassyObject, mapObject);
     MapObjectUtility.SendLastEvent(mapObject);
 }
 public void Add(int id, MapObjectEntity obj)
 {
     _mapObjDict.Put(id, obj);
 }
 public void Add(int gameObjId, int type, MapObjectEntity mapObj)
 {
     _recorders[type].Add(gameObjId, mapObj);
 }
Exemple #19
0
 public static void RecordMapObj(int id, int type, MapObjectEntity entity)
 {
     _mapObjectRecorder.Add(id, type, entity);
 }