protected override void _Update(CUserSession UserSession) { _Gob.transform.position = mInfo.mPosition; _Gob.transform.localRotation = mInfo.mRotation; _Gob.transform.localScale = new Vector3(mInfo.mSize.x, mInfo.mSize.y, 1.0f); _mat.SetColor("_Color", mInfo.mColor); }
protected override void _Update(CUserSession UserSession) { // Interpolate to simulated position Vector3 targetPos = mPosition; // new Vector3(mPosition.x, 0.0f, mPosition.y); Vector3 dir = targetPos - _currentPos; float distance = dir.magnitude; // Teleport to position if we are too far away if (distance >= 3.0f) { _currentPos = targetPos; } else { _currentPos = Vector3.Lerp(_currentPos, targetPos, Mathf.Clamp(Time.deltaTime * 10.0f, 0.0f, 1.0f)); } float offset = (float)((mID * 10) % 100); _Gob.transform.position = _currentPos; // TODO: Make sure velocity doesn't = 0 _Gob.transform.localRotation = Quaternion.LookRotation(mVelocity); if (mDead != -1) { _Gob.transform.GetChild(0).gameObject.SetActive(false); } }
public void Destroy() { // SimThread // UserWorldView // UserSession // World // ModManager? // Replay if (_simThread != null) { _simThread.StopThread(); _simThread = null; } // Wait for thread to be destroyed? Would require update to pause. _started = false; if (_userWorldView != null) { _userWorldView.Destroy(); _userWorldView = null; } if (_userSession != null) { _userSession.Destroy(); _userSession = null; } if (mPrimaryScene != null) { GameObject.Destroy(mPrimaryScene); mPrimaryScene = null; } }
protected override void _Destroy(CUserSession UserSession) { if (_Gob != null) { GameObject.Destroy(_Gob); } }
protected override void _Destroy(CUserSession UserSession) { if (_Gob != null) { //_Gob.transform.GetChild(0).gameObject.SetActive(false); GameObject.Destroy(_Gob, 1.0f); _Gob = null; } }
protected override void _Destroy(CUserSession UserSession) { //Debug.Log("Destroy VC"); if (_Gob != null) { GameObject.Destroy(_Gob); } }
protected override void _Update(CUserSession UserSession) { if (mNewOwner != mOwner) { mOwner = mNewOwner; UserSession.OnContractChangedOwner(this); } if (mNotifyIcon != null) { float normalizedAvailableTime = (mAvailableUntil - _worldView.mGameTick) / (float)mAvailableFor; mNotifyIcon.mTimerBar.localScale = new Vector3(normalizedAvailableTime, 1.0f, 1.0f); } }
protected override void _New(CUserSession UserSession) { Material mat = null; if (mInfo.mVis == CDecal.EDecalVis.ALWAYS) { mat = CGame.WorldResources.DecalMat; } else if (mInfo.mVis == CDecal.EDecalVis.FOW) { mat = CGame.WorldResources.DecalFOWMat; } else if (mInfo.mVis == CDecal.EDecalVis.LOS) { mat = CGame.WorldResources.DecalLOSMat; } if (mInfo.mType == CDecal.EDecalType.TEXT) { _Gob = new GameObject("decal"); _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); _textMesh = _Gob.AddComponent <TextMesh>(); _Gob.GetComponent <MeshRenderer>().material = mat; _Gob.GetComponent <MeshRenderer>().material.SetTexture("_MainTex", CGame.WorldResources.DecalFontA.material.GetTexture("_MainTex")); _Gob.GetComponent <MeshRenderer>().material.SetFloat("_Add", 1.0f); _textMesh.font = CGame.WorldResources.DecalFontA; _textMesh.text = mInfo.mText; _textMesh.characterSize = 0.2f; _textMesh.fontSize = 54; _textMesh.color = new Color(1.0f, 1.0f, 1.0f, 1.0f); _textMesh.anchor = TextAnchor.MiddleCenter; } else if (mInfo.mType == CDecal.EDecalType.IMAGE) { _Gob = GameObject.CreatePrimitive(PrimitiveType.Quad); _Gob.name = "decal"; _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); _Gob.GetComponent <MeshRenderer>().material = mat; _Gob.GetComponent <MeshRenderer>().material.SetTexture("_MainTex", CGame.PrimaryResources.GetDecalImage(mInfo.mVisualId)); } _mat = _Gob.GetComponent <MeshRenderer>().material; }
/// <summary> /// Copy initial state. /// </summary> public void Init(CGameSession Session, CWorld World, CUserSession PlayMode, int ViewPlayerIndex) { _gameSession = Session; _world = World; _userSession = PlayMode; _viewPlayerIndex = ViewPlayerIndex; mStateViews = new List <CStateView>(); mPlayerViews = new CPlayerView[_world.mPlayers.Length]; for (int i = 0; i < mPlayerViews.Length; ++i) { mPlayerViews[i] = new CPlayerView(); } GenerateFlowTesters(); GenerateFlowField(new Rect(15, 21, 4, 4)); mNavMesh = new CNavMesh(World.mMap.mStaticVisSegments); }
protected override void _Destroy(CUserSession UserSession) { if (UserSession.mPlayerIndex == mOwner) { UserSession.OnEmployeeRemoved(this); } //Debug.Log("Destroy VC"); if (_Gob != null) { GameObject.Destroy(_Gob); } // TODO: Cleanup punchout mesh?? //if (_UIThought != null) //GameObject.Destroy(_UIThought); if (_carryGOB != null) { GameObject.Destroy(_carryGOB); } if (mSpeechBubble != null) { GameObject.Destroy(mSpeechBubble); } if (_indicatorGob != null) { GameObject.Destroy(_indicatorGob); } if (_tieGob != null) { GameObject.Destroy(_tieGob); GameObject.Destroy(_tieMesh); // TODO: Kill tie material copy. } }
protected override void _Update(CUserSession UserSession) { if (mCarrierID != -1 && _Gob.activeSelf) { _Gob.SetActive(false); } else if (mCarrierID == -1 && !_Gob.activeSelf) { _Gob.SetActive(true); } // Interpolate to simulated position Vector3 targetPos = new Vector3(mPosition.x, 0.0f, mPosition.y); Vector3 dir = targetPos - _currentPos; float distance = dir.magnitude; // Teleport to position if we are too far away if (distance >= 3.0f) { _currentPos = targetPos; } else { _currentPos = Vector3.Lerp(_currentPos, targetPos, Mathf.Clamp(Time.deltaTime * 10.0f, 0.0f, 1.0f)); } float offset = (float)((mID * 10) % 100); _Gob.transform.position = _currentPos + new Vector3(0.0f, 0.25f, 0.0f); _Gob.transform.localRotation = Quaternion.Euler(0.0f, offset * 40.0f, 0.0f); //_Gob.transform.position = _currentPos + new Vector3(0.0f, Mathf.Sin((Time.time + offset) * 5.0f) * 0.2f + 0.5f, 0.0f); //_Gob.transform.localRotation = Quaternion.Euler(0.0f, (Time.time + offset) * 40.0f, 0.0f); //CDebug.DrawYSquare(targetPos, 0.8f, Color.green); Vector3 pivot = _Gob.transform.position; mBounds = new Bounds(pivot, new Vector3(0.5f, 0.5f, 0.5f)); }
public bool Update(CUserSession UserSession) { if (mState == EState.NEW) { _New(UserSession); mState = EState.UPDATING; } if (mState == EState.UPDATING) { _Update(UserSession); return(true); } if (mState == EState.WAITING) { _Destroy(UserSession); mState = EState.DESTROYED; return(false); } return(true); }
protected override void _New(CUserSession UserSession) { // Check actual prefab _Gob = CGame.AssetManager.GetAsset <CModelAsset>("pickup").mVectorModel.CreateGameObject(); _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); _Gob.GetComponent <MeshRenderer>().material.SetColor("_FloorColor", new Color(150.0f / 255.0f, 150.0f / 255.0f, 150.0f / 255.0f, 1.0f)); /* * GameObject sceneText = new GameObject("sceneText"); * sceneText.transform.SetParent(_Gob.transform); * * TextMesh text = sceneText.AddComponent<TextMesh>(); * text.text = mID.ToString(); * text.characterSize = 0.1f; * text.fontSize = 32; * text.color = new Color(1.0f, 1.0f, 1.0f, 1.0f); * text.anchor = TextAnchor.MiddleCenter; * * //text.font = CGame.ToolkitUI.SceneTextFont; * * sceneText.transform.position = new Vector3(0.0f, 0.26f, 0.0f); * sceneText.transform.rotation = Quaternion.Euler(90, 0, 0); */ }
protected override void _New(CUserSession UserSession) { UserSession.OnResumeAdded(this); }
protected override void _Destroy(CUserSession UserSession) { UserSession.OnResumeRemoved(this); }
protected override void _Update(CUserSession UserSession) { CToolkitUI ui = CGame.ToolkitUI; // TODO: Do this after we have moved the unit -__- Vector3 pivot = _Gob.transform.position; mBounds = new Bounds(pivot + new Vector3(0.0f, 0.5f, 0.0f), new Vector3(1.0f, 1.0f, 1.0f)); if (_carryGOB != null) { if (!mCarryingPickup) { GameObject.Destroy(_carryGOB); } else { if (mWalking) { _carryGOB.transform.localPosition = new Vector3(0.0f, 1.05f + Mathf.Sin(Time.time * 20.0f) * 0.05f, 0.3f); } } } else { if (mCarryingPickup) { _carryGOB = CGame.AssetManager.GetAsset <CModelAsset>("pickup").mVectorModel.CreateGameObject(); _carryGOB.GetComponent <MeshRenderer>().material.SetColor("_FloorColor", new Color(150.0f / 255.0f, 150.0f / 255.0f, 150.0f / 255.0f, 1.0f)); _carryGOB.transform.SetParent(_Gob.transform); _carryGOB.transform.localPosition = new Vector3(0.0f, 1.0f, 0.3f); _carryGOB.transform.localRotation = Quaternion.Euler(-10, 0, 0); } } // Icon Stack /* * { * Vector3 screenPos = Camera.main.WorldToScreenPoint(_Gob.transform.position + new Vector3(0.0f, 1.6f, 0.0f)); * Vector2 bubbleUIPos = CGame.UIManager.ConvertScreenSpaceToUISpace(new Vector2(screenPos.x, screenPos.y)); * ((RectTransform)_iconStackGob.transform).anchoredPosition = bubbleUIPos; * } * if (_bubbleTime > 0.0f) * { * _UIThought.SetActive(true); * _UIThoughtText.text = _thoughtText; * * float y = ((RectTransform)_UIThought.transform).anchoredPosition.y; * // TODO: Safegaurd lerp. * y = Mathf.Lerp(y, _iconStackBaselineTarget, 10.0f * Time.deltaTime); * ((RectTransform)_UIThought.transform).anchoredPosition = new Vector2(0.0f, y); * _bubbleTime -= Time.deltaTime; * } * else * { * _UIThought.SetActive(false); * } * * if (_iconSelectorGob != null) * { * _iconSelectorLerp -= Time.deltaTime * 7.0f; * * if (_iconSelectorLerp < 0.0f) * _iconSelectorLerp = 0.0f; * * ((RectTransform)_iconSelectorGob.transform).anchoredPosition = new Vector2(0.0f, Mathf.Sin(Time.time * 10.0f) * 8.0f - 4.0f + 600.0f * CGame.UIResources.UnitIconDropCurve.Evaluate(1.0f - _iconSelectorLerp)); * } */ /* * if (!mDead) * { * _HealthBar.SetActive(true); * Vector3 screenPos = Camera.main.WorldToScreenPoint(GetVisualPos() + new Vector3(0.0f, 2.0f, 0.0f)); * ((RectTransform)_HealthBar.transform).anchoredPosition = new Vector2((int)screenPos.x, (int)screenPos.y); * _HealthBarFill.transform.localScale = new Vector3(mStamina / mMaxStamina, 1.0f, 1.0f); * } * else * { * _HealthBar.SetActive(false); * } */ /* * if (mPathing) * { * if (mSpeed >= 4.0f) * _footStepAudioTimer += 3.0f * Time.deltaTime; * else if (mSpeed >= 2.0f) * _footStepAudioTimer += 2.2f * Time.deltaTime; * else if (mSpeed > 0.0f) * _footStepAudioTimer += 1.6f * Time.deltaTime; * * if (_footStepAudioTimer > 1.0f) * { * _footStepAudioTimer = 0.0f; * PlaySound(0, 6.0f); * } * * // Walking * * //_Animator.SetFloat("Speed", mSpeed); * } * else * { * _footStepAudioTimer = 0.0f; * //_Animator.SetFloat("Speed", 0.0f); * } */ //_Animator.SetBool("Sitting", mSitting); //_Animator.SetBool("Dead", mDead); /* * if (mFrustrated || mEating) * _Animator.SetLayerWeight(1, 1.0f); * else * _Animator.SetLayerWeight(1, 0.0f); * * _Animator.SetBool("Eating", mEating); * * if (mFrustrated != _oldFrustrated) * { * _oldFrustrated = mFrustrated; * * if (mFrustrated) * _Animator.SetTrigger("FrustrateTrigger"); * } * */ //CDebug.DrawZRect(_unit.mBounds.center, 0.1f, 0.01f * _unit.mStamina, Color.red); // Interpolate to simulated position Vector3 targetPos = new Vector3(mPosition.x, 0.0f, mPosition.y); Vector3 currentPos = _Gob.transform.position; Vector3 dir = targetPos - currentPos; float distance = dir.magnitude; // Teleport to position if we are too far away if (distance >= 3.0f) { currentPos = targetPos; // Reset dynamics on teleport Transform neck = _Gob.transform.FindChild("unit_test/Hips/Spine/Chest/Neck"); Vector3 forward = _Gob.transform.TransformDirection(Vector3.forward); _joints[0] = new SDynamicsJoint(neck.position + forward * 0.1f, true); _joints[1] = new SDynamicsJoint(_joints[0].mPosition + Vector3.down * 0.13f, false); _joints[2] = new SDynamicsJoint(_joints[1].mPosition + Vector3.down * 0.13f, false); _joints[3] = new SDynamicsJoint(_joints[2].mPosition + Vector3.down * 0.13f, false); } else { currentPos = Vector3.Lerp(currentPos, targetPos, Mathf.Clamp(Time.deltaTime * 10.0f, 0.0f, 1.0f)); } _prevRotation = Quaternion.Slerp(_prevRotation, mRotation, 5.0f * Time.deltaTime); //_prevRotation = Quaternion.RotateTowards(_prevRotation, mRotation, 300.0f * Time.deltaTime); _Gob.transform.position = currentPos; _Gob.transform.rotation = _prevRotation; _Animator.speed = 1.0f; if (_Animator.isInitialized) { if (mDead) { _PlayAnimation("dying_1", -1); } else if (mActionAnim != "") { _Animator.speed = mAnimSpeed; _PlayAnimation(mActionAnim, -1, false); } else if (mWalking) { if (mCarryingPickup) { _PlayAnimation("walking_with_item", -1); } else { if (mSpeed > 2.0f) { _PlayAnimation("running_no_item", -1); _Animator.SetFloat("walkSpeed", mSpeed * 0.6f); } else { if (mStamina < 50.0f) { _Animator.SetFloat("walkSpeed", mSpeed * 1.0f); _PlayAnimation("walking_exhausted", -1); } else { _Animator.SetFloat("walkSpeed", mSpeed * 0.5f + 0.5f); _PlayAnimation("walking_no_item", -1); } } } } else if (mAttacking) { _PlayAnimation("combat_bashing", -1); } else { float r = UnityEngine.Random.value; if (r > 0.8f) { _PlayAnimation("idle_standing_action_1", 1.0f); } else if (r > 0.6f) { _PlayAnimation("idle_standing_action_2", 1.0f); } else { _PlayAnimation("idle_standing_general", 5.0f); } } } // Sound if (SoundID > SoundLastPlayedID) { _AudioSource.pitch = CGame.UniversalRandom.GetNextFloat() * 0.5f + 0.75f; _AudioSource.PlayOneShot(CGame.Resources.GetAudioClip(SoundType), SoundVolume); SoundLastPlayedID = SoundID; } if (mAssignedDeskID == -1) { if (_texState != 0) { _texState = 0; _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetTexture("_MainTex", CGame.PrimaryResources.UnitTexTie); } } else { if (_texState == 0) { _texState = 1; //_Gob.transform.GetChild(0).GetChild(0).GetComponent<SkinnedMeshRenderer>().material.SetTexture("_MainTex", CGame.PrimaryResources.UnitTexTieArmband); } } // TODO: Hide briefcase when sitting/using? /* * if (_briefcaseGOB != null) * { * if (mAssignedDeskID == -1) * { * _briefcaseGOB.SetActive(true); * } * else * { * _briefcaseGOB.SetActive(false); * } * } */ if (mOwner == UserSession.mPlayerIndex) { if (_indicatorGob == null) { _indicatorGob = ui.CreateElement(CGame.UIManager.overlayLayer, "indicator"); ui.SetAnchors(_indicatorGob, Vector2.zero, Vector2.zero, new Vector2(0.5f, 0.0f)); ui.SetTransform(_indicatorGob, 50, -200, 56, 65); Image indImg = _indicatorGob.AddComponent <Image>(); indImg.color = new Color(0.2f, 0.2f, 0.2f, 0.5f); indImg.sprite = ui.IndicatorBkg; GameObject indIcon = ui.CreateElement(_indicatorGob, "icon"); ui.SetAnchors(indIcon, new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f), new Vector2(0.5f, 0.5f)); ui.SetTransform(indIcon, 0, 3, 56, 56); indImg = indIcon.AddComponent <Image>(); indImg.color = new Color(1.0f, 1.0f, 1.0f, 1.0f); _indicatorGob.transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); //_indicatorGob.transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); } mThoughtTime += Time.deltaTime; if (mLastThoughtState != mThoughtState) { mThoughtTime = 0.0f; Image indImg = _indicatorGob.transform.GetChild(0).GetComponent <Image>(); mLastThoughtState = mThoughtState; indImg.sprite = ui.IndicatorNoDesk; } if (mThoughtTime < 2.0f) { mThoughtAlpha += Time.deltaTime * 5.0f; } else { mThoughtAlpha -= Time.deltaTime * 5.0f; } mThoughtAlpha = Mathf.Clamp01(mThoughtAlpha); if (mThoughtAlpha > 0.0f) { _indicatorGob.SetActive(true); Vector3 screenPos = Camera.main.WorldToScreenPoint(_Gob.transform.position + new Vector3(0.0f, 1.8f, 0.0f)); ((RectTransform)_indicatorGob.transform).anchoredPosition = new Vector2((int)screenPos.x, (int)screenPos.y); _indicatorGob.GetComponent <Image>().color = new Color(0.2f, 0.2f, 0.2f, 0.5f * mThoughtAlpha); _indicatorGob.transform.GetChild(0).GetComponent <Image>().color = new Color(1.0f, 1.0f, 1.0f, 1.0f * mThoughtAlpha); } else { _indicatorGob.SetActive(false); } } if (mSpeech != "") { if (mSpeechBubble == null) { mSpeechBubble = ui.CreateElement(CGame.UIManager.overlayLayer, "speechBubble"); ui.SetAnchors(mSpeechBubble, Vector2.zero, Vector2.zero, new Vector2(0.5f, 0.0f)); ui.SetTransform(mSpeechBubble, 50, -200, 100, 20); ui.AddImage(mSpeechBubble, new Color(1.0f, 1.0f, 1.0f, 1.0f)); ui.AddHorizontalLayout(mSpeechBubble, new RectOffset(8, 8, 8, 8)); ContentSizeFitter fitter = mSpeechBubble.AddComponent <ContentSizeFitter>(); fitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize; fitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize; GameObject text = ui.CreateElement(mSpeechBubble, "text"); mSpeechBubbleText = text.AddComponent <Text>(); mSpeechBubbleText.font = CGame.GameUIStyle.FontB; mSpeechBubbleText.color = CGame.GameUIStyle.ThemeColorC; mSpeechBubbleText.text = ""; mSpeechTimer = 0; } Vector3 screenPos = Camera.main.WorldToScreenPoint(_Gob.transform.position + new Vector3(0.0f, 2.0f, 0.0f)); ((RectTransform)mSpeechBubble.transform).anchoredPosition = new Vector2((int)screenPos.x, (int)screenPos.y); while (mSpeechTimer >= 0.03f) { mSpeechTimer -= 0.03f; if (mSpeechBubbleText.text != mSpeech) { if (mSpeech.Length < mSpeechBubbleText.text.Length) { mSpeechBubbleText.text = mSpeech[0].ToString(); } else { bool match = true; for (int i = 0; i < mSpeechBubbleText.text.Length; ++i) { if (mSpeechBubbleText.text[i] != mSpeech[i]) { mSpeechBubbleText.text = mSpeech[0].ToString(); match = false; break; } } if (match) { mSpeechBubbleText.text += mSpeech[mSpeechBubbleText.text.Length]; } } } } mSpeechTimer += Time.deltaTime; } else { GameObject.Destroy(mSpeechBubble); mSpeechBubble = null; mSpeechBubbleText = null; } if (mOwner == UserSession.mPlayerIndex) { Vector3 pos = _Gob.transform.position; CPunchOut.UpdateMesh(_punchOutMesh, _worldView, pos.ToWorldVec2(), 8.0f); _punchOut.transform.position = new Vector3(pos.x, 0.0f, pos.z); _punchOut.transform.rotation = Quaternion.identity; if (mUIEmployeeEntry != null) { //mUIEmployeeEntry.mStaminaBar.localScale = new Vector3(mStamina / mStats.mMaxStamina, 1, 1); } } /* * if (mID == 6) * { * CGame.CameraManager.SetTargetPosition(mPosition.ToWorldVec3()); * } */ _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetFloat("_Stam", mStamina / 100.0f); }
protected virtual void _New(CUserSession UserSession) { }
protected override void _New(CUserSession UserSession) { _Gob = mAsset.CreateVisuals((EViewDirection)mRotation); _Gob.name = mAsset.mName; _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); if (mBlueprint) { CUtility.SetLayerRecursively(_Gob.transform, 9); _currentSurfaceColor = Color.white; } else { if (mAsset.mItemType == EItemType.DESK) { _briedcaseGOB = GameObject.CreatePrimitive(PrimitiveType.Cube); _briedcaseGOB.GetComponent <MeshRenderer>().material = CGame.PrimaryResources.FlatMat; _briedcaseGOB.transform.SetParent(_Gob.transform); _briedcaseGOB.transform.localScale = new Vector3(0.15f, 0.3f, 0.45f); _briedcaseGOB.transform.localPosition = new Vector3(0.626f, 0.69f, 1.473f); _briedcaseGOB.transform.rotation = Quaternion.Euler(0.0f, -10.0f, 270.0f); _briedcaseGOB.SetActive(false); } else if (mAsset.mItemType == EItemType.SAFE) { /* * _textGob = new GameObject("sceneText"); * _textGob.transform.SetParent(_Gob.transform); * * _textMesh = _textGob.AddComponent<TextMesh>(); * _textMesh.text = mValue.ToString(); * _textMesh.characterSize = 0.09f; * _textMesh.fontSize = 32; * _textMesh.color = new Color(1.0f, 1.0f, 1.0f, 1.0f); * _textMesh.anchor = TextAnchor.MiddleCenter; * //text.font = CGame.ToolkitUI.SceneTextFont; * * _textGob.transform.localPosition = new Vector3(0.5f, 0.0f, 0.0f); * _textGob.transform.rotation = Quaternion.Euler(90, 0, 0); */ } else if (mAsset.mItemType == EItemType.START) { if (mOwnerID == UserSession.mPlayerIndex) { _punchOut = CPunchOut.Create(out _punchOutMesh); _punchOut.transform.SetParent(_Gob.transform); } } else if (mAsset.mItemType == EItemType.DOOR) { _briedcaseGOB = (GameObject)GameObject.Instantiate(CGame.WorldResources.PadlockPrefab, new Vector3(0.5f, 2.25f, 1.0f), Quaternion.identity); _briedcaseGOB.transform.SetParent(_Gob.transform); } _audioSource = _Gob.AddComponent <AudioSource>(); _audioSource.outputAudioMixerGroup = CGame.UIResources.SoundsMixer; _audioSource.spatialBlend = 1.0f; } }
protected override void _New(CUserSession UserSession) { /* * _iconStackGob = new GameObject("iconStack", typeof(RectTransform)); * _iconStackGob.transform.SetParent(CGame.UIResources.UnitUIPanel.transform); * _iconStackGob.transform.localScale = Vector3.one; * _iconStackGob.GetComponent<RectTransform>().anchorMin = new Vector2(0.0f, 0.0f); * _iconStackGob.GetComponent<RectTransform>().anchorMax = new Vector2(0.0f, 0.0f); * _iconStackGob.GetComponent<RectTransform>().pivot = new Vector2(0.5f, 0.0f); * * _UIThought = GameObject.Instantiate(CGame.UIResources.UnitThought) as GameObject; * _UIThought.transform.SetParent(_iconStackGob.transform); * _UIThought.transform.localScale = Vector3.one; * _UIThought.GetComponent<RectTransform>().anchoredPosition = new Vector2(0.0f, 0.0f); * _UIThoughtIcon = _UIThought.transform.GetChild(0).GetComponent<Image>(); * _UIThoughtText = _UIThought.transform.GetChild(1).GetComponent<Text>(); * _UIThoughtIcon.enabled = true; * _UIThought.SetActive(false); */ _texState = 0; Color playerColor = _worldView.mPlayerViews[mOwner].mColor; if (mIntern) { //_Gob = GameObject.Instantiate(CGame.PrimaryResources.Prefabs[6]) as GameObject; _Gob = GameObject.Instantiate(CGame.PrimaryResources.Prefabs[7]) as GameObject; // Tie Colour _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetColor("_PlayerColor", playerColor); _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetTexture("_MainTex", CGame.PrimaryResources.UnitTexTieSling); _briefcaseGOB = new GameObject(); Transform hand = _Gob.transform.FindChild("unit_test/Hips/"); _briefcaseGOB.transform.SetParent(hand); _briefcaseGOB.transform.localPosition = new Vector3(0.02f, 0.02f, -0.065f); _briefcaseGOB.transform.localScale = Vector3.one; GameObject briefcase = GameObject.CreatePrimitive(PrimitiveType.Cube); briefcase.transform.SetParent(_briefcaseGOB.transform); briefcase.GetComponent <MeshRenderer>().material = CGame.PrimaryResources.FlatMat; briefcase.GetComponent <MeshRenderer>().material.SetColor("_Color", playerColor); briefcase.transform.localScale = new Vector3(0.05f * 0.7f, 0.1f * 0.7f, 0.15f * 0.7f); briefcase.transform.localPosition = new Vector3(0.0f, -0.035f, 0.0f); briefcase.transform.localRotation = Quaternion.Euler(0, 0, 0); _bagJoints = new SDynamicsJoint[2]; _bagJoints[0] = new SDynamicsJoint(hand.position, true); _bagJoints[1] = new SDynamicsJoint(hand.position + Vector3.down * 0.1f, false); } else { _Gob = GameObject.Instantiate(CGame.PrimaryResources.Prefabs[7]) as GameObject; // Tie Colour _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetColor("_PlayerColor", playerColor); _Gob.transform.GetChild(0).GetChild(0).GetComponent <SkinnedMeshRenderer>().material.SetTexture("_MainTex", CGame.PrimaryResources.UnitTexTie); _briefcaseGOB = new GameObject(); Transform hand = _Gob.transform.FindChild("unit_test/Hips/Spine/Chest/R_Clavicle1/R_Up_Arm 1/R_Elbow_Top 1"); _briefcaseGOB.transform.SetParent(hand); _briefcaseGOB.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); _briefcaseGOB.transform.localScale = Vector3.one; GameObject briefcase = GameObject.CreatePrimitive(PrimitiveType.Cube); briefcase.GetComponent <MeshRenderer>().material = CGame.PrimaryResources.FlatMat; briefcase.GetComponent <MeshRenderer>().material.SetColor("_Color", playerColor); briefcase.transform.SetParent(_briefcaseGOB.transform); briefcase.transform.localScale = new Vector3(0.05f, 0.1f, 0.15f); briefcase.transform.localPosition = new Vector3(0.0f, -0.05f, 0.0f); _bagJoints = new SDynamicsJoint[2]; _bagJoints[0] = new SDynamicsJoint(hand.position, true); _bagJoints[1] = new SDynamicsJoint(hand.position + Vector3.down * 0.1f, false); } _Gob.name = "Unit " + mID; _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); _AudioSource = _Gob.GetComponent <AudioSource>(); _Animator = _Gob.GetComponentInChildren <Animator>(); //_Material = _Gob.GetComponentInChildren<SkinnedMeshRenderer>().material; _prevRotation = mRotation; // Punch Out if (mOwner == UserSession.mPlayerIndex) { _punchOut = CPunchOut.Create(out _punchOutMesh); _punchOut.transform.SetParent(_Gob.transform); _punchOut.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); } if (UserSession.mPlayerIndex == mOwner) { UserSession.OnEmployeeAdded(this); } // Dynamics Transform neck = _Gob.transform.FindChild("unit_test/Hips/Spine/Chest/Neck"); Vector3 forward = _Gob.transform.TransformDirection(Vector3.forward); _joints = new SDynamicsJoint[4]; _joints[0] = new SDynamicsJoint(neck.position + forward * 0.1f, true); _joints[1] = new SDynamicsJoint(_joints[0].mPosition + Vector3.down * 0.13f, false); _joints[2] = new SDynamicsJoint(_joints[1].mPosition + Vector3.down * 0.13f, false); _joints[3] = new SDynamicsJoint(_joints[2].mPosition + Vector3.down * 0.13f, false); _tieGob = new GameObject("tie"); _tieGob.transform.SetParent(UserSession.mPrimaryScene.transform); _tieGob.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); MeshRenderer meshRenderer = _tieGob.AddComponent <MeshRenderer>(); MeshFilter meshFilter = _tieGob.AddComponent <MeshFilter>(); _tieMesh = new Mesh(); _tieMesh.MarkDynamic(); meshFilter.mesh = _tieMesh; meshRenderer.material = CGame.PrimaryResources.TieMat; meshRenderer.material.SetColor("_Color", playerColor); }
protected override void _Update(CUserSession UserSession) { _targetSurfaceColor = mSurfaceColor; float colorLerp = 2.0f * Time.deltaTime; colorLerp = Mathf.Clamp(colorLerp, 0.0f, 1.0f); _currentSurfaceColor = Color.Lerp(_currentSurfaceColor, _targetSurfaceColor, colorLerp); SetItemSurfaceColour(mAsset.mItemType, _Gob, _currentSurfaceColor); Vector2 pivot = CItem.PivotRelativeToTile[mRotation]; _Gob.transform.position = new Vector3(mPosition.x, 0.0f, mPosition.y) + new Vector3(pivot.x, 0.0f, pivot.y); _Gob.transform.rotation = CItem.RotationTable[mRotation]; if (mBlueprint) { return; } if (mAsset.mItemType == EItemType.DOOR) { if (mDoorAngle > _doorAngle) { if (_doorAngle == 0.0f) { _audioSource.clip = CGame.PrimaryResources.AudioClips[7]; _audioSource.Play(); //_audioSource.PlayOneShot(CGame.PrimaryResources.AudioClips[7]); //AudioSource.PlayClipAtPoint(CGame.PrimaryResources.AudioClips[7], mPosition.ToWorldVec3(), 1.0f); } _doorAngle += CItemDoor.DOORSPEED * Time.deltaTime; } else if (mDoorAngle < _doorAngle) { if (_doorAngle == 1.0f) { _audioSource.clip = CGame.PrimaryResources.AudioClips[8]; _audioSource.Play(); //_audioSource.PlayOneShot(CGame.PrimaryResources.AudioClips[8]); //AudioSource.PlayClipAtPoint(CGame.PrimaryResources.AudioClips[8], mPosition.ToWorldVec3(), 1.0f); } _doorAngle -= CItemDoor.DOORSPEED * Time.deltaTime; } _doorAngle = Mathf.Clamp(_doorAngle, 0.0f, 1.0f); GameObject door = _Gob.transform.GetChild(0).gameObject; door.transform.rotation = Quaternion.Euler(0.0f, _doorAngle * 90.0f, 0.0f) * CItem.RotationTable[mRotation]; if (mLocked) { _briedcaseGOB.SetActive(true); _briedcaseGOB.transform.Rotate(Vector3.up, 180.0f * Time.deltaTime); } else { _briedcaseGOB.SetActive(false); } } else if (mAsset.mItemType == EItemType.DESK) { if (mAssignedUnitID != -1) { /* * Color playerColor = _worldView.mPlayerViews[_playerIndex].mColor; * _briedcaseGOB.GetComponent<MeshRenderer>().material.SetColor("_Color", playerColor); * _briedcaseGOB.SetActive(true); */ } else { //_briedcaseGOB.SetActive(false); } if (mLastPaperStackUpdateTick != mPaperStackUpdateTick) { RefreshContractVisuals(); mLastPaperStackUpdateTick = mPaperStackUpdateTick; } } else if (mAsset.mItemType == EItemType.START) { if (_doorTarget != mDoorAngle) { if (mDoorAngle == 1.0f) { //_audioSource.PlayOneShot(CGame.PrimaryResources.AudioClips[9]); //AudioSource.PlayClipAtPoint(CGame.PrimaryResources.AudioClips[9], mPosition.ToWorldVec3(), 1.0f); _audioSource.PlayOneShot(CGame.PrimaryResources.AudioClips[9]); } else { _audioSource.PlayOneShot(CGame.PrimaryResources.AudioClips[10]); } //AudioSource.PlayClipAtPoint(CGame.PrimaryResources.AudioClips[10], mPosition.ToWorldVec3(), 1.0f); _doorTarget = mDoorAngle; } if (_doorAngle != mDoorAngle) { _doorAngle = Mathf.Lerp(_doorAngle, mDoorAngle, 2.0f * Time.deltaTime); _Gob.transform.GetChild(1).localScale = new Vector3(1.0f - _doorAngle, 1.0f, 1.0f); _Gob.transform.GetChild(2).localScale = new Vector3(1.0f - _doorAngle, 1.0f, 1.0f); } if (mOwnerID == UserSession.mPlayerIndex) { CPunchOut.UpdateMesh(_punchOutMesh, _worldView, _Gob.transform.position.ToWorldVec2(), 8.0f); } } else if (mAsset.mItemType == EItemType.SAFE) { //_textMesh.text = mValue.ToString(); //_textGob.transform.position = mBounds.center + new Vector3(0.0f, 1.5f, 0.0f); //_textGob.transform.rotation = Quaternion.Euler(0, Time.time * 50.0f, 0); } //if (_itemView.mTaggedUsable && (tp == CEntity.EType.T_ITEM_DESK || tp == CEntity.EType.T_ITEM_FOOD || tp == CEntity.EType.T_ITEM_REST || tp == CEntity.EType.T_ITEM_SAFE)) //CDebug.DrawXRect(_itemView.mBounds.center, 0.5f, 0.5f, Color.blue); //if (_itemView.mOwnerID != -1 && tp == CEntity.EType.T_ITEM_SAFE) //CDebug.DrawXRect(_itemView.mBounds.center, 0.2f, 0.2f, _itemView.mWorld.mPlayers[_itemView.mOwnerID].mColor); //CDebug.DrawZRect(_itemView.mBounds.center, 0.1f, 0.01f * _itemView.mDurability, Color.red); /* * // UI Space Snippet. * Vector3 screenPos = Camera.main.WorldToScreenPoint(_Gob.transform.position + new Vector3(0.0f, 1.6f, 0.0f)); * Vector2 bubbleUIPos = CGame.UIManager.ConvertScreenSpaceToUISpace(new Vector2(screenPos.x, screenPos.y)); * ((RectTransform)_iconStackGob.transform).anchoredPosition = bubbleUIPos; */ }
protected virtual void _Update(CUserSession UserSession) { }
protected virtual void _Destroy(CUserSession UserSession) { }
protected override void _Destroy(CUserSession UserSession) { UserSession.OnContractRemoved(this); }
protected override void _New(CUserSession UserSession) { UserSession.OnContractAdded(this); }
public bool Init(CStartParams Params) { mStartParams = Params; CLevelAsset level = CGame.AssetManager.GetAsset <CLevelAsset>(Params.mLevelName); if (level == null) { Debug.LogError("Could not load level " + Params.mLevelName); return(false); } _world = new CWorld(); if (!_world.mScriptManager.Init(Params.mLevelName + CGame.FIBRE_FILE_EXTENSION)) { _world.mScriptManager.Destroy(); return(false); } _userWorldView = new CUserWorldView(); mPrimaryScene = new GameObject("Primary Scene"); mPrimaryScene.transform.position = Vector3.zero; CGame.UIManager.SetupForGameSession(); SCameraState camState = new SCameraState(); camState.mBackgroundColor = new Color(0.18f, 0.18f, 0.18f, 1.0f); camState.SetViewGame(EViewDirection.VD_FRONT); camState.mLockedToMap = true; if (Params.mPlayType == EPlayType.SINGLE) { level.CreateMap(_world.mMap); _world.InitCompanies(); _world.PopulateWithMetaData(level); _world.PostInit(); _world.mMap.GetLevelGOB().transform.SetParent(mPrimaryScene.transform); CPlayer userPlayer = _world.GetFirstPlayablePlayer(); userPlayer.mHumanInput = true; mUserPlayerIndex = userPlayer.mID; camState.mBackgroundColor = level.mBackgroundColor; //_replay.StartRecording("replay"); _userSession = new CUserSession(this, _userWorldView); _world.mScriptManager.Start(_world); } else if (Params.mPlayType == EPlayType.LOAD) { // TODO: Load all state from file. // Base map stuff is also saved into file. // Session, UI, UserWorldView, World //_DeserializeState(CGame.PersistentDataDirectory + CGame.SAVE_DIRECTORY + StateFileName + CGame.SAVE_FILE_EXTENSION); } else if (Params.mPlayType == EPlayType.HOST) { mUserPlayerIndex = Params.mUserPlayerIndex; // TODO: Load level exactly like singleplayer //if (Net.Host(5000)) Debug.Log("Hosting Game"); } else if (Params.mPlayType == EPlayType.CLIENT) { mUserPlayerIndex = Params.mUserPlayerIndex; // TODO: Load level exactly like singleplayer // if (Net.Connect(Datastore.mConfig.mHostIP, 5000)) Debug.Log("Joined Game"); } else if (Params.mPlayType == EPlayType.REPLAY) { mUserPlayerIndex = Params.mUserPlayerIndex; // TODO: Load level exactly like singleplayer //_DeserializeState(CGame.PersistentDataDirectory + CGame.REPLAYS_DIRECTOY + FileName + CGame.REPLAY_FILE_EXTENSION); _replay = new CReplay(); //_replay.StartPlayback(FileName); } _userWorldView.Init(this, _world, _userSession, mUserPlayerIndex); _simThread = new CSimThread(this); camState.mTargetPosition = _world.mPlayers[mUserPlayerIndex].GetSpawnPos().ToWorldVec3(); CGame.CameraManager.SetCamState(camState); /* * SDecalInfo decalInfo = new SDecalInfo(); * decalInfo.mType = CDecal.EDecalType.TEXT; * decalInfo.mText = "Paperwork"; * decalInfo.mSize = new Vector2(1, 1); * decalInfo.mPosition = new Vector3(13, 0.1f, 11); * decalInfo.mRotation = Quaternion.Euler(90, 0, 0); * decalInfo.mColor = new Color(0.6f, 0.6f, 0.6f, 1.0f); * decalInfo.mVis = CDecal.EDecalVis.LOS; * _world.SpawnDecal(0, decalInfo); * * decalInfo.mType = CDecal.EDecalType.IMAGE; * decalInfo.mPosition = new Vector3(13, 0.1f, 14); * decalInfo.mSize = new Vector2(4, 4); * decalInfo.mRotation = Quaternion.Euler(90, 0, 0); * decalInfo.mVisualId = 1; * //decalInfo.mColor = new Color(0.5f, 0.5f, 0.5f, 1.0f); * _world.SpawnDecal(0, decalInfo); * * decalInfo.mType = CDecal.EDecalType.TEXT; * decalInfo.mText = "Lobby"; * decalInfo.mSize = new Vector2(0.8f, 0.8f); * decalInfo.mPosition = new Vector3(7, 0.1f, 13); * decalInfo.mRotation = Quaternion.Euler(90, 90, 0); * decalInfo.mColor = new Color(1,1,1,1); * decalInfo.mVis = CDecal.EDecalVis.FOW; * _world.SpawnDecal(0, decalInfo); */ //_world.SpawnItem(CGame.AssetManager.GetAsset<CItemAsset>("item_couch_test"), new Vector2(10, 6), 0, 0); /* * for (int i = 0; i < 10; ++i) * { * CResume resume = new CResume(); * resume.Generate(_world, 1, 1); * CUnit entity = _world.SpawnUnit(0, resume, new Vector2(20, 20), 0); * } * //*/ // TODO: Do we need to check a map always has correct spawns for players? //_world.SpawnItem(CGame.AssetManager.GetAsset<CItemAsset>("item_spawn"), new Vector2(12, 16), 0, 0); //_world.SpawnItem(CGame.AssetManager.GetAsset<CItemAsset>("item_spawn"), new Vector2(21, 16), 0, 1); return(true); }
protected override void _New(CUserSession UserSession) { _Gob = GameObject.Instantiate(CGame.PrimaryResources.Prefabs[8]); _Gob.transform.SetParent(UserSession.mPrimaryScene.transform); }