public GameObject CreateFacility(CFacilityInterface.EType _eType, uint _uiFacilityId = uint.MaxValue, uint _uiExpansionPortId = uint.MaxValue, uint _uiAttachToId = uint.MaxValue) { CExpansionPortInterface cExpansionPort = null; if (_uiExpansionPortId != uint.MaxValue && _uiAttachToId != uint.MaxValue) { cExpansionPort = m_mFacilities[_uiFacilityId].GetComponent <CFacilityExpansion>().GetExpansionPort(_uiExpansionPortId).GetComponent <CExpansionPortInterface>(); if (cExpansionPort.HasAttachedFacility == true) { Debug.LogWarning("Failed to create new room. Port is already in use."); return(null); } } // Generate facility identifier uint uiFacilityId = m_uiFacilityIdCount; // Retrieve the facility prefab CGameRegistrator.ENetworkPrefab eRegisteredPrefab = CFacilityInterface.GetPrefabType(_eType); // Create facility GameObject cNewFacilityObject = CNetwork.Factory.CreateObject(eRegisteredPrefab); // Set facility properties CFacilityInterface cFacilityInterface = cNewFacilityObject.GetComponent <CFacilityInterface>(); cFacilityInterface.FacilityId = uiFacilityId; cFacilityInterface.FacilityType = _eType; m_uiFacilityIdCount++; // Set facility parent cNewFacilityObject.GetComponent <CNetworkView>().SetParent(GetComponent <CNetworkView>().ViewId); // Attach facility expansion port to parent expansion port if (cExpansionPort != null) { cExpansionPort.Attach(_uiAttachToId, cNewFacilityObject); } // Initialise the facility expansion ports cNewFacilityObject.GetComponent <CFacilityExpansion>().InitialiseExpansionPorts(); // Sync position & rotation cNewFacilityObject.GetComponent <CNetworkView>().SyncTransformPosition(); cNewFacilityObject.GetComponent <CNetworkView>().SyncTransformRotation(); // Server adds the facility instantaniously AddNewlyCreatedFacility(cNewFacilityObject, uiFacilityId, _eType); // Notify facility creation observers if (EventOnFaciltiyCreate != null) { EventOnFaciltiyCreate(cNewFacilityObject); } return(cNewFacilityObject); }
public SGubbinMeta(CGameRegistrator.ENetworkPrefab prefabID, SCellPos parentAbsoluteCell, Vector3 position, Quaternion rotation, Vector3 linearVelocity, Vector3 angularVelocity, bool hasNetworkedEntityScript, bool hasRigidBody) { mPrefabID = prefabID; mParentAbsoluteCell = parentAbsoluteCell; mPosition = position; mRotation = rotation; mLinearVelocity = linearVelocity; mAngularVelocity = angularVelocity; mHasNetworkedEntityScript = hasNetworkedEntityScript; mHasRigidBody = hasRigidBody; }
public static void RegisterPrefab(EType _eComponentType, CGameRegistrator.ENetworkPrefab _ePrefab) { s_mRegisteredPrefabs.Add(_eComponentType, _ePrefab); }
public static void RegisterPrefab(EType _DUIType, CGameRegistrator.ENetworkPrefab _NetworkPrefab) { s_RegisteredPrefabs.Add(_DUIType, _NetworkPrefab); }
public static void RegistMiniaturePrefab(EType _eFacilityType, CGameRegistrator.ENetworkPrefab _ePrefab) { s_mRegisteredMiniaturePrefabs.Add(_eFacilityType, _ePrefab); }
// Member Methods public static void RegisterPrefab(EType _eAccessoryType, CGameRegistrator.ENetworkPrefab _ePrefab) { s_mRegisteredPrefabs.Add(_eAccessoryType, _ePrefab); }