Skip to content
This repository was archived by the owner on Mar 10, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added data/Images and Videos/big-buck-bunny_trailer.ogv
Binary file not shown.
34 changes: 34 additions & 0 deletions data/Images and Videos/envirnment/Scenes/Ai/chat_ai.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[gd_scene format=3 uid="uid://ljv2pphpa4w1"]

[node name="Control" type="Control"]
layout_mode = 3
anchors_preset = 0
offset_left = 604.0
offset_right = 1149.0
offset_bottom = 641.0

[node name="RichTextLabel" type="RichTextLabel" parent="."]
layout_mode = 0
offset_top = 333.0
offset_right = 515.0
offset_bottom = 583.0
text = "Hi there!"
fit_content = true
scroll_following = true

[node name="LineEdit" type="LineEdit" parent="."]
layout_mode = 0
offset_top = 593.0
offset_right = 400.0
offset_bottom = 633.0
placeholder_text = "Ask me anything?"

[node name="Button" type="Button" parent="."]
layout_mode = 0
offset_left = 410.0
offset_top = 593.0
offset_right = 530.0
offset_bottom = 633.0
text = "Send"

[node name="HTTPRequest" type="HTTPRequest" parent="."]
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[remap]

importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dua7skqbgfhnp"
path="res://.godot/imported/big-buck-bunny_trailer.ogg-50fc18b94a3cf9e658e81cc5f7ef56a9.oggvorbisstr"

[deps]

source_file="res://data/Images and Videos/envirnment/Scenes/Levels/tv and vids/big-buck-bunny_trailer.ogg"
dest_files=["res://.godot/imported/big-buck-bunny_trailer.ogg-50fc18b94a3cf9e658e81cc5f7ef56a9.oggvorbisstr"]

[params]

loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
Binary file not shown.
Binary file not shown.
Binary file not shown.
56 changes: 56 additions & 0 deletions data/Images and Videos/envirnment/Scenes/Levels/tv.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
[gd_scene load_steps=7 format=3 uid="uid://dgadx25qutdxu"]

[sub_resource type="BoxMesh" id="BoxMesh_7ldk7"]

[sub_resource type="QuadMesh" id="QuadMesh_ldy45"]

[sub_resource type="ViewportTexture" id="ViewportTexture_otcry"]
viewport_path = NodePath("Node2D/SubViewport")

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3qcq7"]
resource_local_to_scene = true
albedo_texture = SubResource("ViewportTexture_otcry")

[sub_resource type="VideoStreamTheora" id="VideoStreamTheora_vioor"]
file = "res://tv and vids/big-buck-bunny_trailer.ogv"

[sub_resource type="CylinderMesh" id="CylinderMesh_7c4fe"]

[node name="TV" type="Node3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.29839, 0)

[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
transform = Transform3D(2.4267, 0, 0, 0, 2.09183, 0, 0, 0, 0.487183, 0, 0, 0)
mesh = SubResource("BoxMesh_7ldk7")

[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
transform = Transform3D(2.25574, 0, 0, 0, 1.77814, 0, 0, 0, 0.0081138, -0.00263291, 0.0261305, 0.254375)
mesh = SubResource("QuadMesh_ldy45")
surface_material_override/0 = SubResource("StandardMaterial3D_3qcq7")

[node name="Node2D" type="Node2D" parent="."]

[node name="SubViewport" type="SubViewport" parent="Node2D"]
size = Vector2i(150, 75)

[node name="SubViewportContainer" type="SubViewportContainer" parent="Node2D/SubViewport"]
offset_right = 40.0
offset_bottom = 40.0

[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="Node2D/SubViewport/SubViewportContainer"]
layout_mode = 2
stream = SubResource("VideoStreamTheora_vioor")
autoplay = true

[node name="SubViewport" type="SubViewport" parent="Node2D/SubViewport/SubViewportContainer"]
handle_input_locally = false
size = Vector2i(7680, 4320)
render_target_update_mode = 4

[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
transform = Transform3D(0.400779, 0, 0, 0, 0.672341, 0, 0, 0, 0.281836, -0.754772, -1.73713, -0.0336982)
mesh = SubResource("CylinderMesh_7c4fe")

[node name="MeshInstance3D4" type="MeshInstance3D" parent="."]
transform = Transform3D(0.374969, 0, 0, 0, 0.657657, 0, 0, 0, 0.27568, 0.839715, -1.73713, -0.0336982)
mesh = SubResource("CylinderMesh_7c4fe")
145 changes: 145 additions & 0 deletions data/Images and Videos/envirnment/Scenes/Levels/world_1.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
[gd_scene load_steps=18 format=3 uid="uid://2nrq4njde1av"]

[ext_resource type="PackedScene" uid="uid://5vp5pgxuneab" path="res://Scenes/Entities/Players/captain.tscn" id="1_bgyfo"]
[ext_resource type="Script" path="res://Scripts/ui_scripts/camera_controller.gd" id="2_pf6np"]
[ext_resource type="PackedScene" uid="uid://ljv2pphpa4w1" path="res://Scenes/Ai/chat_ai.tscn" id="4_kmb2q"]
[ext_resource type="Script" path="res://Scripts/ai/chat_ai.gd" id="5_gbv0h"]
[ext_resource type="Texture2D" uid="uid://mqh1rdm4lcwa" path="res://assets/images/play2helplogo.jpg" id="5_iaksw"]
[ext_resource type="Texture2D" uid="uid://oljoh3hw7vgh" path="res://assets/images/Untitled design (1).png" id="6_yli6t"]

[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_x6jtg"]
sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)
ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1)

[sub_resource type="Sky" id="Sky_tqpd6"]
sky_material = SubResource("ProceduralSkyMaterial_x6jtg")

[sub_resource type="Environment" id="Environment_qgd7p"]
background_mode = 2
sky = SubResource("Sky_tqpd6")
tonemap_mode = 2

[sub_resource type="PlaneMesh" id="PlaneMesh_ftb4i"]

[sub_resource type="ViewportTexture" id="ViewportTexture_t45fh"]
viewport_path = NodePath("tv7/SubViewport")

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tjxw4"]
resource_local_to_scene = true
albedo_texture = SubResource("ViewportTexture_t45fh")

[sub_resource type="VideoStreamTheora" id="VideoStreamTheora_kgjak"]
file = "res://Scenes/Levels/tv and vids/big-buck-bunny_trailer.ogv"

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fyhx5"]
albedo_texture = ExtResource("5_iaksw")

[sub_resource type="PlaneMesh" id="PlaneMesh_jvcnp"]

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ogx3q"]
albedo_color = Color(5.77569e-07, 0.50039, 0.034299, 1)

[sub_resource type="Environment" id="Environment_s4n68"]
background_mode = 2

[node name="World1" type="Node3D"]

[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_qgd7p")

[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0)
shadow_enabled = true

[node name="captain" parent="." instance=ExtResource("1_bgyfo")]

[node name="cam_gimbal" type="Node3D" parent="."]
script = ExtResource("2_pf6np")

[node name="Camera3D" type="Camera3D" parent="cam_gimbal"]
transform = Transform3D(0.999776, -0.012282, -0.0172079, 0.0154157, 0.980521, 0.19581, 0.0144677, -0.196032, 0.980491, -0.420166, 1.89745, 4.33113)
fov = 101.78

[node name="chat_ai" parent="." instance=ExtResource("4_kmb2q")]
offset_left = 613.0
offset_top = 7.0
offset_right = 1142.0
offset_bottom = 635.0
script = ExtResource("5_gbv0h")

[node name="tv7" type="MeshInstance3D" parent="."]
transform = Transform3D(446.687, 11.9487, 0.404913, -1.07384, 0.107169, -221.361, -343.936, 15.518, 1.21698, -646.948, 219.008, -1035.78)
mesh = SubResource("PlaneMesh_ftb4i")
surface_material_override/0 = SubResource("StandardMaterial3D_tjxw4")

[node name="SubViewport" type="SubViewport" parent="tv7"]
size = Vector2i(640, 360)

[node name="SubViewportContainer" type="SubViewportContainer" parent="tv7/SubViewport"]
offset_right = 40.0
offset_bottom = 40.0

[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="tv7/SubViewport/SubViewportContainer"]
layout_mode = 2
stream = SubResource("VideoStreamTheora_kgjak")
autoplay = true
loop = true

[node name="tv4" type="MeshInstance3D" parent="."]
transform = Transform3D(-349.494, 10.9355, 1.34846, -0.892458, 0.0898451, -266.218, -312.054, -12.2478, -0.748919, -808.707, 208.679, 759.443)
mesh = SubResource("PlaneMesh_ftb4i")
surface_material_override/0 = SubResource("StandardMaterial3D_tjxw4")

[node name="SubViewport" type="SubViewport" parent="tv4"]
size = Vector2i(640, 360)

[node name="SubViewportContainer" type="SubViewportContainer" parent="tv4/SubViewport"]
offset_right = 40.0
offset_bottom = 40.0

[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="tv4/SubViewport/SubViewportContainer"]
layout_mode = 2
stream = SubResource("VideoStreamTheora_kgjak")
autoplay = true
loop = true

[node name="tv6" type="MeshInstance3D" parent="."]
transform = Transform3D(-283.623, -10.2045, -1.68022, 2.67592, 0.0631435, -222.818, 335.603, -8.62445, 0.356676, 882.529, 207.977, 643.371)
mesh = SubResource("PlaneMesh_ftb4i")
surface_material_override/0 = SubResource("StandardMaterial3D_tjxw4")

[node name="SubViewport" type="SubViewport" parent="tv6"]
size = Vector2i(640, 360)

[node name="SubViewportContainer" type="SubViewportContainer" parent="tv6/SubViewport"]
offset_right = 40.0
offset_bottom = 40.0

[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="tv6/SubViewport/SubViewportContainer"]
layout_mode = 2
stream = SubResource("VideoStreamTheora_kgjak")
autoplay = true
loop = true

[node name="CSGMesh3D" type="CSGMesh3D" parent="."]
transform = Transform3D(1131, 0, 0, 0, 1131, 0, 0, 0, 1131, 4.36672, -4.61103, -3.69427)
material_override = SubResource("StandardMaterial3D_fyhx5")
mesh = SubResource("PlaneMesh_jvcnp")
material = SubResource("StandardMaterial3D_ogx3q")

[node name="WorldEnvironment2" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_s4n68")

[node name="Node3D" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.905136, 0, 0, 0, 1, 0, 31.7679, 552.454)

[node name="Sprite3D" type="Sprite3D" parent="Node3D"]
transform = Transform3D(155.164, 0, 0, 0, 77.9459, 0, 0, 0, -0.759755, 86.3433, 197.428, 434.328)
texture = ExtResource("5_iaksw")

[node name="Node3D3" type="Node3D" parent="."]
transform = Transform3D(0.0233104, 0.00143616, 0.70835, 0.00239247, 0.294093, -0.00379126, 0.352882, -0.00208876, -0.0467659, -1389.3, 157.787, -153.078)

[node name="Sprite3D" type="Sprite3D" parent="Node3D3"]
transform = Transform3D(155.164, 0, 0, 0, 77.9459, 0, 0, 0, -0.759755, 86.3433, 197.428, 434.328)
texture = ExtResource("6_yli6t")
107 changes: 107 additions & 0 deletions data/Images and Videos/envirnment/Scripts/ai/chat_ai.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
extends Control

# Replace with your Gemini AI API details
var api_url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key=AIzaSyDGICS7oJGqYttTeHHp7RaYlBKeJHlREGI"

# References to UI nodes
@onready var user_input = $LineEdit
@onready var response_label = $RichTextLabel
@onready var send_button = $Button
@onready var http_request = HTTPRequest.new() # Declare it globally

func _ready():
# Add HTTPRequest to the scene tree if not already added
add_child(http_request)
# Connect the button to send_prompt function
send_button.connect("pressed", Callable(self, "_on_send_button_pressed"))

# Triggered when the send button is pressed
func _on_send_button_pressed():
var user_prompt = user_input.text.strip_edges()
if user_prompt != "":
response_label.text = "Loading..."
send_request({"prompt": user_prompt})
user_input.text = "" # Clear input field
else:
response_label.text = "Please enter a valid prompt."

# Make the HTTP request to Gemini AI
func send_request(payload: Dictionary):
# Disconnect previous signal connection if any
http_request.disconnect("request_completed", Callable(self, "_on_request_completed"))
# Connect the signal for request completion
http_request.connect("request_completed", Callable(self, "_on_request_completed"))

# Prepare the payload structure for the Gemini AI API
var request_body = {
"contents": [
{
"role": "user",
"parts": [
{
"text": "which gemini ai model is free for use for developer?\n"
}
]
},
{
"role": "model",
"parts": [
{
"text": "Unfortunately, there isn't a single, universally recognized 'Gemini AI model' that's completely free for developers..."
}
]
},
{
"role": "user",
"parts": [
{
"text": payload["prompt"]
}
]
}
],
"generationConfig": {
"temperature": 1,
"topK": 40,
"topP": 0.95,
"maxOutputTokens": 8192,
"responseMimeType": "text/plain"
}
}

# Make the HTTP request
var error = http_request.request(
api_url,
["Content-Type: application/json"], # HTTP headers
HTTPClient.METHOD_POST,
JSON.stringify(request_body) # Convert payload to JSON string
)

# Check if the request was successfully initiated
if error != OK:
response_label.text = "Failed to initiate request: " + str(error)

# Handle the response from Gemini AI
func _on_request_completed(_result: int, _response_code: int, _headers: Array, body: PackedByteArray):
var body_text = body.get_string_from_utf8() # Convert the response body to a string

# Check the response code
if _response_code == 200:
var json = JSON.new()
var error = json.parse(body_text)
if error == OK:
var response = json.get_data()

# Print the full response for debugging
print("Full Response: ", response)

# Ensure the response has the expected structure
if response.has("candidates") and response["candidates"].size() > 0:
var ai_response = response["candidates"][0]["content"]["parts"][0]["text"] # Accessing the text part
response_label.text = ai_response # Display only the text in RichTextLabel
else:
response_label.text = "Invalid response structure: 'candidates' not found or empty."
else:
response_label.text = "Error parsing response: " + str(error)
else:
response_label.text = "Failed with response code: " + str(_response_code)
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
extends CharacterBody3D

@onready var player_body = $CharacterArmature
@onready var anim = $AnimationPlayer
@onready var camera = $"../cam_gimbal"
var angular_speed = 10
@export var speed := 40.0
@export var gravity := 4.0

var movement
var direction

func _physics_process(delta):
move(delta)

func move(delta):
movement = Input.get_vector('ui_left', 'ui_right', 'ui_up', 'ui_down')
#direction = (transform.basis * Vector3(movement.x, 0, movement.y)).normalized()
direction = Vector3(movement.x, 0, movement.y).rotated(Vector3.UP, camera.rotation.y).normalized()

if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
player_body.rotation.y = lerp_angle(player_body.rotation.y, atan2(velocity.x, velocity.z), delta * angular_speed)
anim.play("Walk")
else:
velocity.x = move_toward(velocity.x, 0, speed)
velocity.z = move_toward(velocity.z, 0, speed)
anim.play("Idle")
move_and_slide()
Loading