private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            if (_identifiers.Contains(obj.identifier)) // skipping duplicates
            {
                return;
            }

            var md = obj.GetComponent <Metadata>();

            if (md == null) // skipping objects with no Metadata
            {
                return;
            }

            if (md.GetParameter(_key) == _value)
            {
                if (_minHeight > 0 && md.parameters.dictionary.ContainsKey("Height"))
                {
                    var height = float.Parse(md.GetParameter("Height")) * 0.001f;
                    if (height < _minHeight)
                    {
                        return;
                    }
                }

                _identifiers.Add(obj.identifier);
                _addedObjects[obj] = Instantiate(prefab, obj.transform.position, obj.transform.rotation * Quaternion.Euler(0, Random.Range(-_rotationY_randomness, _rotationY_randomness), 0), transform);

                if (_matchHeight && md.parameters.dictionary.ContainsKey("Height"))
                {
                    var height = float.Parse(md.GetParameter("Height")) * 0.001f;
                    _addedObjects[obj].transform.localScale = Vector3.one * (height / prefabBounds.size.y);
                }
            }
        }
Beispiel #2
0
        private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            if (_identifiers.Contains(obj.identifier)) // skipping duplicates
            {
                return;
            }

            var md = obj.GetComponent <Metadata>();

            if (md == null) // skipping objects with no Metadata
            {
                return;
            }

            if (matchType == MATCH_TYPE.All && md.MatchAllCriterias(criterias) ||
                matchType == MATCH_TYPE.Any && md.MatchAnyCriterias(criterias))
            {
                _identifiers.Add(obj.identifier);
                _addedObjects[obj] = Instantiate(prefab, obj.transform.position, obj.transform.rotation, transform);
                if (_matchHeight && md.parameters.dictionary.ContainsKey("Height"))
                {
                    var height = float.Parse(md.GetParameter("Height")) * 0.001f;
                    _addedObjects[obj].transform.localScale = Vector3.one * (height / prefabBounds.size.y);
                }
            }
        }
        private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            if (_modifiedObjects.ContainsKey(obj.identifier)) // skipping duplicates
            {
                return;
            }

            var md = obj.GetComponent <Metadata>();

            if (md == null) // skipping objects with no Metadata
            {
                return;
            }

            for (int set = 0; set < objectReplacementSets.Length; set++)
            {
                // bypass if no replacement set
                if (objectReplacementSets[set].replacements.Length == 0)
                {
                    continue;
                }

                // for all replacements in set
                for (int r = 0; r < objectReplacementSets[set].replacements.Length; r++)
                {
                    // bypass if no gameobject assigned
                    if (!objectReplacementSets[set].replacements[r].gameObject)
                    {
                        continue;
                    }

                    if (md.MatchAllCriterias(objectReplacementSets[set].replacements[r].criterias))
                    {
                        _modifiedObjects.Add(obj.identifier, obj);

                        _prefabReferences.Add(obj.gameObject, objectReplacementSets[set].replacements[r].gameObject);

                        if (!_disabledRenderersTable.ContainsKey(obj.gameObject))
                        {
                            _disabledRenderersTable.Add(obj.gameObject, objectReplacementSets[set].replacements[r].disableOriginal);
                        }
                        else
                        {
                            _disabledRenderersTable[obj.gameObject] &= objectReplacementSets[set].replacements[r].disableOriginal;
                        }

                        float scaleFactor = (objectReplacementSets[set].replacements[r].matchHeight && md.parameters.dictionary.ContainsKey("Height")) ?
                                            float.Parse(md.GetParameter("Height")) * 0.001f / _bounds[objectReplacementSets[set].replacements[r].gameObject].size.y :
                                            1.0f;

                        _scaleFactors[obj.gameObject] = scaleFactor;

                        SpawnChild(obj.transform, _prefabReferences[obj.gameObject], _disabledRenderersTable[obj.gameObject], scaleFactor);
                    }
                }
            }
        }
        void OnObjectSelectionInfoChanged(SelectObjectAction.IObjectSelectionInfo newData)
        {
            if (newData == null)
            {
                return;
            }

            var objectSelectionInfo = (ObjectSelectionInfo)newData;

            if (m_SelectedDatas.Any(s => s.userId == objectSelectionInfo.userId))
            {
                var selectedData = m_SelectedDatas.First(s => s.userId == objectSelectionInfo.userId);
                m_SelectedDatas.Remove(selectedData);
            }

            var selectedObject = objectSelectionInfo.CurrentSelectedObject();

            if (selectedObject != null)
            {
                var metadata = selectedObject.GetComponentInParent <Metadata>();
                if (metadata != null)
                {
                    selectedObject = metadata.gameObject;
                }
                else
                {
                    selectedObject = null;
                }
            }

            if (objectSelectionInfo.userId == m_CurrentUserId)
            {
                m_CurrentSelectedGameObject = selectedObject;
                SyncObjectBinding sync = null;
                if (selectedObject != null)
                {
                    sync = selectedObject.GetComponent <SyncObjectBinding>();
                }
                m_PreviousSelectedId = m_CurrentSelectedId;
                m_CurrentSelectedId  = sync != null ? sync.stableId : default;
            }

            if (objectSelectionInfo.CurrentSelectedObject() != null)
            {
                m_SelectedDatas.Add(new SelectionData
                {
                    userId         = objectSelectionInfo.userId,
                    selectedObject = selectedObject,
                    colorId        = objectSelectionInfo.colorId
                });
            }

            UpdateMultiSelection();
        }
 private void Instance_ObjectDestroyed(SyncObjectBinding obj)
 {
     if (_modifiedObjects.ContainsKey(obj.identifier))
     {
         if (_addedObjects.ContainsKey(obj.gameObject))
         {
             DestroyImmediate(_addedObjects[obj.gameObject]); // destroying added object before Reflect collects children renderers
             _addedObjects.Remove(obj.gameObject);
         }
         _modifiedObjects.Remove(obj.identifier);
     }
 }
Beispiel #6
0
 private void Instance_ObjectDestroyed(SyncObjectBinding obj)
 {
     if (_identifiers.Contains(obj.identifier))
     {
         if (_addedObjects.ContainsKey(obj))
         {
             Destroy(_addedObjects[obj]);
             _addedObjects.Remove(obj);
         }
         _identifiers.Remove(obj.identifier);
     }
 }
        private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            //Debug.LogFormat("<color=yellow>{0}</color>", obj.identifier);
            if (_identifiers.Contains(obj.identifier))
            {
                return;
            }

            _totalNumberOfInstantiatedObjects++;

            if (_totalNumberOfInstantiatedObjects == _totalNumberOfSyncObjects)
            {
                StartCoroutine(ForceDimAllLights());
            }
        }
Beispiel #8
0
        private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            var md = obj.gameObject.GetComponent <Metadata>();

            if (md != null)
            {
                if (md.GetParameter(_key) == _value)
                {
                    //Debug.LogFormat(obj.gameObject, "<color=green>Object {0} created.</color>", obj.name);
                    if (!_modifiedObjects.ContainsKey(obj.identifier)) //skipping duplicates
                    {
                        _modifiedObjects.Add(obj.identifier, obj);
                        SpawnChild(obj.transform);
                    }
                }
            }
        }
Beispiel #9
0
        private void Instance_ObjectCreated(SyncObjectBinding obj)
        {
            if (_identifiers.Contains(obj.identifier)) // skipping duplicates
            {
                return;
            }

            var md = obj.GetComponent <Metadata>();

            if (md == null) // skipping objects with no Metadata
            {
                return;
            }

            if (md.parameters.dictionary.ContainsKey(_assetBundleURL) && md.parameters.dictionary.ContainsKey(_assetBundleName))
            {
                var url  = md.GetParameter(_assetBundleURL);
                var name = md.GetParameter(_assetBundleName);
                if (url == string.Empty || name == string.Empty)
                {
                    return;
                }

                AssetBundleTarget target = new AssetBundleTarget(url, name);
                if (_prefabLibrary.ContainsKey(target))
                {
                    _identifiers.Add(obj.identifier);
                    _addedObjects[obj] = Instantiate(_prefabLibrary[target], obj.transform.position, obj.transform.rotation, transform);
                }
                else
                {
                    var assetBundle = AssetBundle.LoadFromFile(System.IO.Path.Combine(Application.streamingAssetsPath, url));
                    if (assetBundle == null)
                    {
                        Debug.LogWarning(string.Format("Failed to load AssetBundle from {0}!", url));
                        return;
                    }
                    var prefab = assetBundle.LoadAsset <GameObject>(name);
                    _prefabLibrary.Add(target, prefab);
                    _identifiers.Add(obj.identifier);
                    _addedObjects[obj] = Instantiate(prefab, obj.transform.position, obj.transform.rotation, transform);
                    assetBundle.Unload(false);
                }
            }
        }
 private void Instance_onObjectDestroyed(SyncObjectBinding obj)
 {
     DebugLine("OBJECT DESTROYED : {0}", "red", null, obj.gameObject.name);
 }
 private void Instance_onObjectCreated(SyncObjectBinding obj)
 {
     DebugLine("OBJECT CREATED : {0}", "green", null, obj.gameObject.name);
 }
Beispiel #12
0
 public bool TryGetInstance(StreamKey key, out SyncObjectBinding value) => m_Instances.TryGetValue(key, out value);
Beispiel #13
0
 public OriginalInstance(int nbActiveInstances, SyncObjectBinding objectBinding, ObjectDependencies dependencies)
 {
     NbActiveInstances = nbActiveInstances;
     ObjectBinding     = objectBinding;
     Dependencies      = dependencies;
 }