void InitRayCastTarget(PlayerEntity player) { var target = RayCastTargetUtil.AddRayCastTarget(player.RootGo()); PlayerCastData.Make(target, player.entityKey.Value.EntityId); player.hasAddRaycast = true; }
private RayCastTarget MakeCastTarget() { var go = new GameObject(DefaultName); var col = go.AddComponent <BoxCollider>(); col.isTrigger = true; var target = RayCastTargetUtil.AddRayCastTarget(go); go.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast); go.transform.parent = _poolRoot.transform; return(target); }
public void OnLoadSucc(VehicleEntity vehicle, UnityObject unityObj) { var go = unityObj.AsGameObject; AssertUtility.Assert(go != null); //vehicle.gameObject.Value.GetComponent<Rigidbody>().isConstantColliderPose = true; if (!vehicle.hasVehicleType) { vehicle.AddVehicleType((EVehicleType)vehicle.vehicleAssetInfo.VType); } // UnityEngine.Debug.LogError("Client Load Vehicle Successfully!!!"); if (vehicle.HasDynamicData()) { var dataComp = vehicle.GetDynamicData(); go.transform.rotation = dataComp.Rotation; go.transform.position = dataComp.Position.ShiftedVector3(); } else { go.transform.eulerAngles = new Vector3(); go.transform.position = new Vector3(11, 50, 17); } vehicle.AddVehicleComponentsPostInit((EVehicleType)vehicle.vehicleAssetInfo.VType, unityObj, _contexts.player, false); var vehicleTimer = _contexts.session.clientSessionObjects.VehicleTimer; vehicle.SetTimer(vehicleTimer); if (!vehicle.isFlagOffline && !SharedConfig.DynamicPrediction) { vehicle.SetKinematic(true); } if (SharedConfig.DynamicPrediction) { VehicleStateUtility.SetVehicleSyncLatest(vehicle, true); } var target = RayCastTargetUtil.AddRayCastTarget(go); VehicleCastData.Make(target, vehicle.entityKey.Value.EntityId); }
public static RayCastTarget Assemble(GameObject model, Vector3 position, string name, bool needRotation = false) { if (null == model) { Logger.ErrorFormat("model is null !"); return(null); } model.transform.position = position + GetGroundAnchorOffset(model); var colTrans = model.transform.Find(SceneObjectConstant.NormalColliderName); if (null == colTrans) { Logger.ErrorFormat("no normal collider find in {0}", model.name); var colGo = new GameObject(SceneObjectConstant.NormalColliderName); colTrans = colGo.transform; colTrans.parent = model.transform; colTrans.localPosition = Vector3.zero; colTrans.localEulerAngles = Vector3.zero; colTrans.localScale = Vector3.one; var col = colGo.AddComponent <BoxCollider>(); col.isTrigger = true; col.size = Vector3.one; } if (needRotation) { colTrans.Rotate(new Vector3(0, 0, 90)); } var normalCollider = colTrans.GetComponent <BoxCollider>(); if (null == normalCollider) { Logger.ErrorFormat("no box attached to collider go"); return(null); } RayCastTarget target = RayCastTargetUtil.AddRayCastTarget(normalCollider.gameObject); normalCollider.gameObject.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast); normalCollider.enabled = true; return(target); }
protected RayCastTarget AddRaycastTarget(GameObject gameObject) { var colliders = gameObject.GetComponentsInChildren <Collider>(); var colliderCount = colliders.Length; bool noInputCastCollider = true; RayCastTarget target = null; for (int i = 0; i < colliderCount; ++i) { var collider = colliders[i]; if (collider.gameObject.layer == UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast)) { target = RayCastTargetUtil.AddRayCastTarget(collider.gameObject); noInputCastCollider = false; } } if (noInputCastCollider) { _logger.ErrorFormat("Door {0} has no inputraycast collider.", gameObject.name); } return(target); }
public static RayCastTarget Assemble(GameObject model, SceneObjectEntity entity) { model.transform.localRotation = Quaternion.Euler(0, 0, 0); model.transform.position = Vector3.zero; var child = model.transform.Find(SceneObjectConstant.NormalColliderName); BoxCollider boxCollider; if (null == child) { child = new GameObject(SceneObjectConstant.NormalColliderName).transform; child.parent = model.transform; boxCollider = child.gameObject.AddComponent <BoxCollider>(); boxCollider.isTrigger = true; } else { boxCollider = child.gameObject.GetComponent <BoxCollider>(); } boxCollider.center = Vector3.zero; boxCollider.enabled = true; child.gameObject.layer = UnityLayerManager.GetLayerIndex(EUnityLayerName.UserInputRaycast); if (entity.hasWeaponObject && SingletonManager.Get <WeaponResourceConfigManager>().IsC4(entity.weaponObject.ConfigId)) { WeaponAnimationBase.FinishedWeaponAnimation(model); } Bounds bounds = CalculateBounds(model); boxCollider.size = bounds.size; // * model.transform.worldToLocalMatrix; /*if (entity.hasWeaponObject) * { * var config = SingletonManager.Get<WeaponResourceConfigManager>().GetConfigById(entity.weaponObject.ConfigId); * if (config != null && ((EWeaponType_Config) config.Type).CanAutoPick()) * { * if (SingletonManager.Get<WeaponResourceConfigManager>().IsC4(entity.weaponObject.ConfigId)) * { * boxCollider.size = new Vector3(bounds.size.x, 0.4f, bounds.size.z); * } * else * { * boxCollider.size = new Vector3(0.4f, bounds.size.y, bounds.size.z); * } * } * }*/ entity.position.Bounds = bounds; child.localEulerAngles = Vector3.zero; child.localPosition = bounds.center - model.transform.position; child.localScale = Vector3.one; if (entity.hasSize) { model.transform.localScale = Vector3.one * Mathf.Max(1f, entity.size.Value); } else { model.transform.localScale = Vector3.one; } if ((entity.hasWeaponObject && !SingletonManager.Get <WeaponResourceConfigManager>().IsC4(entity.weaponObject.ConfigId) && !SingletonManager.Get <WeaponResourceConfigManager>().IsArmors(entity.weaponObject.ConfigId)) || (entity.hasSimpleItem && entity.simpleItem.Category == (int)ECategory.WeaponPart)) { model.transform.localRotation = Quaternion.Euler(0, 0, -90); entity.position.ModelRotate = true; } else { entity.position.ModelRotate = false; } var target = RayCastTargetUtil.AddRayCastTarget(child.gameObject); return(target); }